[PATCH] Add leiningen

  • Open
  • quality assurance status badge
Details
5 participants
  • Przemys?aw Kami?ski
  • Charlie Ritter
  • Ludovic Courtès
  • Nils Gillmann
  • Pjotr Prins
Owner
unassigned
Submitted by
Charlie Ritter
Severity
normal
C
C
Charlie Ritter wrote on 24 Apr 2018 17:44
(address . guix-patches@gnu.org)
cuck1swsj5z.fsf@posteo.net
From eac978c99ef288926530dcdee64cc9e3b7b8fe32 Mon Sep 17 00:00:00 2001
From: Charlie Ritter <chewzerita@posteo.net>
Date: Tue, 24 Apr 2018 11:42:39 -0400
Subject: [PATCH] gnu: Add leiningen.

* gnu/packages/java.scm (leiningen): New variable.
---
gnu/packages/java.scm | 33 +++++++++++++++++++++++++++++++++
1 file changed, 33 insertions(+)

Toggle diff (53 lines)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 500f27dcf..ffbd40890 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2018 Charlie Ritter <chewzerita@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1861,6 +1862,38 @@ designs.")
license:asl2.0
license:cpl1.0)))))
+(define-public leiningen
+ (package
+ (name "leiningen")
+ (version "2.8.1")
+ (source (origin
+ (method url-fetch/tarbomb)
+ (uri (string-append
+ "https://github.com/technomancy/"
+ name "/archive/" version ".tar.gz"))
+ (sha256
+ (base32
+ "0hjjszxqhc9sh31dpirak3c5ws90z41ypcc16y4s1q35ydlajv3w"))))
+ (build-system ant-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (delete 'configure)
+ (delete 'build)
+ (delete 'check)
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (install-file (string-append
+ ,name "-" ,version "/bin/lein")
+ (string-append
+ (assoc-ref outputs "out") "/bin")))))))
+ (home-page "https://leiningen.org")
+ (synopsis "Automating Clojure projects without setting your hair on fire")
+ (description "Leiningen is the easiest way to use Clojure. With a focus
+on project automation and declarative configuration, it gets out of your way
+and lets you focus on your code.")
+ (license license:epl1.0)))
+
(define-public javacc
(package
(name "javacc")
--
2.17.0
-----BEGIN PGP SIGNATURE-----

iQEzBAEBCAAdFiEEiNLX4rpUkGUHqgmts0r+M/VPj+8FAlrfUPkACgkQs0r+M/VP
j+/UgAgAkYLqqXLOb5LKbRPGArJtelH//6g927vhN4IApkEeYG9f2vU85bAfpxi+
+dcJYJknWaVCRDkQ9FY508BFiVqrYVhzSvcB/f6sLE3pMKPvX4sA4/bGCM1TTuH/
AfXmSiv4dkEgI2ad+m/0w+YpdeYDDMyG2O0utC84l7OvgK4PdaQAS6bfIDWkZjAZ
vccSRbhmL3LRIraXr9GT0Rx35QIsYjEyTUjQ2Sc07jkofKfWtAdr+8uz+QVaCFCX
RIZwWMDqy3+xowO5xVJ5z8Qy0SINkX5qaJkLneaVFNB0onOyDVo/h4FIIV/whRHB
orNMFhx63p0PyzemESrdf9V12u3BbQ==
=wkAx
-----END PGP SIGNATURE-----

L
L
Ludovic Courtès wrote on 25 Apr 2018 22:54
(name . Charlie Ritter)(address . chewzerita@posteo.net)(address . 31250@debbugs.gnu.org)
87k1svovm6.fsf@gnu.org
Hello,

Charlie Ritter <chewzerita@posteo.net> skribis:

Toggle quote (7 lines)
> From eac978c99ef288926530dcdee64cc9e3b7b8fe32 Mon Sep 17 00:00:00 2001
> From: Charlie Ritter <chewzerita@posteo.net>
> Date: Tue, 24 Apr 2018 11:42:39 -0400
> Subject: [PATCH] gnu: Add leiningen.
>
> * gnu/packages/java.scm (leiningen): New variable.

Good to see the family of package managers *and* Lisps grow in Guix.
:-)

Toggle quote (22 lines)
> + (source (origin
> + (method url-fetch/tarbomb)
> + (uri (string-append
> + "https://github.com/technomancy/"
> + name "/archive/" version ".tar.gz"))
> + (sha256
> + (base32
> + "0hjjszxqhc9sh31dpirak3c5ws90z41ypcc16y4s1q35ydlajv3w"))))
> + (build-system ant-build-system)
> + (arguments
> + `(#:phases
> + (modify-phases %standard-phases
> + (delete 'configure)
> + (delete 'build)
> + (delete 'check)
> + (replace 'install
> + (lambda* (#:key outputs #:allow-other-keys)
> + (install-file (string-append
> + ,name "-" ,version "/bin/lein")
> + (string-append
> + (assoc-ref outputs "out") "/bin")))))))

Unfortunately installing the ‘lein’ script alone won’t cut it. The
issue is that, AIUI, the script downloads and installs pre-built Jars on
a first run (through its ‘self_install’ function).

The policy for Guix is to build things from source. So we would have to
provide Leiningen and its dependencies as packages built from source,
and to remove the auto-download functionality from the script.

That’s obviously more work. WDYT?

Thanks,
Ludo’.
N
N
Nils Gillmann wrote on 26 Apr 2018 14:41
(name . Ludovic Courtès)(address . ludo@gnu.org)
20180426124132.u62mcbnxflxvjsti@abyayala
Ludovic Courtès transcribed 1.7K bytes:
Toggle quote (11 lines)
> Hello,
>
> Charlie Ritter <chewzerita@posteo.net> skribis:
>
> > From eac978c99ef288926530dcdee64cc9e3b7b8fe32 Mon Sep 17 00:00:00 2001
> > From: Charlie Ritter <chewzerita@posteo.net>
> > Date: Tue, 24 Apr 2018 11:42:39 -0400
> > Subject: [PATCH] gnu: Add leiningen.
> >
> > * gnu/packages/java.scm (leiningen): New variable.

Nice!

Toggle quote (29 lines)
> Good to see the family of package managers *and* Lisps grow in Guix.
> :-)
>
> > + (source (origin
> > + (method url-fetch/tarbomb)
> > + (uri (string-append
> > + "https://github.com/technomancy/"
> > + name "/archive/" version ".tar.gz"))
> > + (sha256
> > + (base32
> > + "0hjjszxqhc9sh31dpirak3c5ws90z41ypcc16y4s1q35ydlajv3w"))))
> > + (build-system ant-build-system)
> > + (arguments
> > + `(#:phases
> > + (modify-phases %standard-phases
> > + (delete 'configure)
> > + (delete 'build)
> > + (delete 'check)
> > + (replace 'install
> > + (lambda* (#:key outputs #:allow-other-keys)
> > + (install-file (string-append
> > + ,name "-" ,version "/bin/lein")
> > + (string-append
> > + (assoc-ref outputs "out") "/bin")))))))
>
> Unfortunately installing the ‘lein’ script alone won’t cut it. The
> issue is that, AIUI, the script downloads and installs pre-built Jars on
> a first run (through its ‘self_install’ function).

Yes, that's why my attempt at leiningen has been "sleeping" for a long time now...

Toggle quote (4 lines)
> The policy for Guix is to build things from source. So we would have to
> provide Leiningen and its dependencies as packages built from source,
> and to remove the auto-download functionality from the script.

But this is on first run, not during the installation as far as I remember.
So in my opinion that's not an immediate blocker for the initial package.
The obvious fix afterwards is to apply the building from source.

Toggle quote (7 lines)
> That’s obviously more work. WDYT?
>
> Thanks,
> Ludo’.
>
>
>
P
P
Pjotr Prins wrote on 27 Apr 2018 07:16
(name . Nils Gillmann)(address . ng0@n0.is)
20180427051633.fmszqyynlhvtjqt7@thebird.nl
On Thu, Apr 26, 2018 at 12:41:32PM +0000, Nils Gillmann wrote:
Toggle quote (8 lines)
> > The policy for Guix is to build things from source. So we would have to
> > provide Leiningen and its dependencies as packages built from source,
> > and to remove the auto-download functionality from the script.
>
> But this is on first run, not during the installation as far as I remember.
> So in my opinion that's not an immediate blocker for the initial package.
> The obvious fix afterwards is to apply the building from source.

We also packaged tools like conda that download binaries when run.

Adding Leiningen may accelerate using Clojure from Guix and support
will get better over time. Every time Rich Hickey talks about
deployment I am thinking he should be introduced to Guix.

Thanks for this!

Pj.
L
L
Ludovic Courtès wrote on 28 Apr 2018 22:44
(name . Pjotr Prins)(address . pjotr.public12@thebird.nl)
87bme3awnw.fsf@gnu.org
Pjotr Prins <pjotr.public12@thebird.nl> skribis:

Toggle quote (11 lines)
> On Thu, Apr 26, 2018 at 12:41:32PM +0000, Nils Gillmann wrote:
>> > The policy for Guix is to build things from source. So we would have to
>> > provide Leiningen and its dependencies as packages built from source,
>> > and to remove the auto-download functionality from the script.
>>
>> But this is on first run, not during the installation as far as I remember.
>> So in my opinion that's not an immediate blocker for the initial package.
>> The obvious fix afterwards is to apply the building from source.
>
> We also packaged tools like conda that download binaries when run.

True, that’s not great, and Leiningen may actually do the same thing as
part of its normal job…

I think it’s good to estimate how difficult it would be to build
Leiningen from source, and then we can decide what to do.

Ludo’.
L
L
Ludovic Courtès wrote on 5 May 2018 22:27
control message for bug #31250
(address . control@debbugs.gnu.org)
87h8nlrgq1.fsf@gnu.org
tags 31250 moreinfo
P
P
Przemys?aw Kami?ski wrote on 26 Jul 2023 15:21
[PATCH] Add leiningen
(address . 31250@debbugs.gnu.org)
87r0oukduz.fsf@intrepidus.pl
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA256

Hello,

I did take a look at what Nix does and apparently one should use
lein-pkg instead of lein and perform some regexp replaces.

Here's what I have, but it doesn't work since my Guix knowledge is too
small (I added comments where appropriate, also I think it's better to
use Codeberg than GitHub):

```
(use-modules (guix)
(guix download)
((guix licenses) #:prefix license:)
(guix packages)
(guix build-system ant)
(guix build-system copy)
(gnu packages clojure)
(gnu packages wget))


(define-public leiningen-jar-standalone
;; 1. fetch https://codeberg.org/attachments/43cebda5-a7c2-405b-b641-5143a00051b5(leiningen-2.10.0-standalone.jar)
(package
(name "leiningen-jar-standalone")
(version "2.10.0")
(source (origin
(method url-fetch)
(file-name (string-append "leiningen-" version "-standalone.jar"))
(sha256
(base32
"0d5vmpyp9ddxpj1s5c60fv2f5iimz1chbgfhchlaqxa0sfx9jwnj"))))
(build-system copy-build-system)
(home-page "https://leiningen.org")
(synopsis "Automating Clojure projects without setting your hair on fire")
(description "Leiningen is the easiest way to use Clojure. With a focus
on project automation and declarative configuration, it gets out of your way
and lets you focus on your code.")
(license license:epl1.0)))


(define-public leiningen
(package
(name "leiningen")
(version "2.10.0")
(source (origin
(method url-fetch/tarbomb)
(uri (string-append
name "/archive/" version ".tar.gz"))
(sha256
(base32
"0hxp8qlxcn7svskvvhalyk0ajaqd56nma03vq96w7d2ajghdn13b"))))
(build-system ant-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'build)
(delete 'check)
;; TODO
;; 2. replace 'LEIN_JAR=/usr/share/java/leiningen-$LEIN_VERSION-standalone.jar' "LEIN_JAR=$out/share/$JARNAME"
;; 3 . wrapProgram $out/bin/lein
;; --prefix PATH ":" "${lib.makeBinPath [ rlwrap coreutils ]}"
;; --set LEIN_GPG ${gnupg}/bin/gpg
;; --set JAVA_CMD ${jdk}/bin/java
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(install-file (string-append
,name "/bin/lein-pkg")
(string-append
(assoc-ref outputs "out") "/bin/lein")))))))
(native-inputs (list leiningen-jar-standalone))
;; (build-inputs (list clojure clojure-tools))
(home-page "https://leiningen.org")
(synopsis "Automating Clojure projects without setting your hair on fire")
(description "Leiningen is the easiest way to use Clojure. With a focus
on project automation and declarative configuration, it gets out of your way
and lets you focus on your code.")
(license license:epl1.0)))

leiningen
```
-----BEGIN PGP SIGNATURE-----

iIMEARYIACsWIQQeBFZmqKTSqjEi1nTzlEDXxNbhWAUCZMEd1A0cY2dlbmllQHBt
Lm1lAAoJEPOUQNfE1uFYOFwBAJ2bDsW2vrysvvcWLgwpOCpz0wKvNGYSdFA/9ZJv
aNsOAQCBI3BQxW7ZDU4moGSaw/27n1k6oKP90PVID8J+RojHDg==
=5cDc
-----END PGP SIGNATURE-----
Attachment: signature.asc
?