[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

A tale of two `clojure` scripts: Upstream's vs. Debian's



Howdy!

Just for the record, and while I write my comments to Elana's email on
my proposal on how to proceed, I would like to complement Alex's
statement with my own experience on this.

TL; DR: From my experience, Debian's `clojure` functionality is *a
subset* of upstream's `clj`'s functionality.
(Which, in turn, is a wrapper for the upstream `clojure` script.)
Moreover, Debian's `clojurec`'s functionality is also included in
upstream's `clojure`.

Details below.


On Mon, 16 Aug 2021 at 10:42, Alex Miller <alex@puredanger.com> wrote:
> I assume the existing `clojure` is just a simple wrapper that calls clojure.main.
> The clj/clojure from the brew-install clojure tools do much more than that and are extensively documented as the official Clojure CLI tools.

I assume Alex's referring to the following links:

https://clojure.org/reference/deps_and_cli
https://clojure.org/guides/deps_and_cli


Now, my two cents :-)


Whereas I have repeated I don't consider myself a Clojure expert, I do
some Clojure from time to time. As I normally work on deps-based
projects (a functionality Debian doesn't currently have), I have had
to resort to the official upstream Clojure installer.

I have checked the packaging code from Debian's source package `clojure`.
Shall we compare that to what upstream currently offers?

On the one hand, Debian currently provides two wrappers.
- Debian's `clojure` (wraps `clojure.main` with `rlwrap`).
- Debian's `clojurec` (wraps `java -cp ...` to easily compile Clojure
code - irrelevant for this discussion).

On the other hand, upstream currently provides one script and one wrapper.
- upstream's `clojure` (a script that includes deps-based
functionality, an easy way to compile Clojure code, and more - see the
docs)
- upstream's `clj` (wraps upstream's `clojure` with `rlwrap`)


To sum up:
>From my experience, Debian's `clojure` functionality is *a subset* of
upstream's `clj`'s functionality.
(Which, in turn, is a wrapper for the upstream `clojure` script.)
Moreover, Debian's `clojurec`'s functionality is also included in
upstream's `clojure`.

Of course, everything I state above could be wrong :-)
Please, feel free to correct such statements as you see fit.

(Please, stay tuned for my ideas on how to package all this... and a
possible migration path :-)

Best,
Leandro


Reply to: