[PATCH] gnu: Fix clojure-tools.

  • Open
  • quality assurance status badge
Details
2 participants
  • Ludovic Courtès
  • Rostislav Svoboda
Owner
unassigned
Submitted by
Rostislav Svoboda
Severity
normal
R
R
Rostislav Svoboda wrote on 19 Dec 2024 15:22
(name . Rostislav Svoboda)(address . Rostislav.Svoboda@gmail.com)
71b44c3763ea0a72d756b300fbe36220a6899a5d.1734617873.git.Rostislav.Svoboda@gmail.com
* gnu/packages/clojure.scm (clojure-tools): The AOT compiled JAR must be
included and used by the bin/clojure script.

See also

Change-Id: I3a8221fd415631f191cbf6ddcb0e8ecbd94e389f
---
gnu/packages/clojure.scm | 21 ++++-----------------
1 file changed, 4 insertions(+), 17 deletions(-)

Toggle diff (56 lines)
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index 09674f541e..6146b38753 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -204,18 +204,14 @@ (define-public clojure
(define-public clojure-tools
(package
(name "clojure-tools")
- (version "1.11.1.1413")
+ (version "1.12.0.1488")
(source
(origin
(method url-fetch)
(uri (string-append "https://download.clojure.org/install/clojure-tools-"
version
".tar.gz"))
- (sha256 (base32 "1q0z71ifdxwvyy9gvq8mx8jbygf8cszrlhb3h22walfamnisbhwk"))
- ;; Remove AOT compiled JAR. The other JAR only contains uncompiled
- ;; Clojure source code.
- (snippet
- `(delete-file ,(string-append "clojure-tools-" version ".jar")))))
+ (sha256 (base32 "0hh78b22shj530armm9850cqr85wqdxyqfzx4qf45w5y200bw6dw"))))
(build-system copy-build-system)
(arguments
`(#:install-plan
@@ -223,6 +219,7 @@ (define-public clojure-tools
("example-deps.edn" "lib/clojure/")
("tools.edn" "lib/clojure/")
("exec.jar" "lib/clojure/libexec/")
+ (,(string-append "clojure-tools-" version ".jar") "lib/clojure/libexec/")
("clojure" "bin/")
("clj" "bin/"))
#:modules ((guix build copy-build-system)
@@ -237,17 +234,7 @@ (define-public clojure-tools
(("PREFIX") (string-append (assoc-ref outputs "out") "/lib/clojure")))
(substitute* "clj"
(("BINDIR") (string-append (assoc-ref outputs "out") "/bin"))
- (("rlwrap") (which "rlwrap")))))
- (add-after 'fix-paths 'copy-tools-deps-alpha-jar
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (substitute* "clojure"
- (("\\$install_dir/libexec/clojure-tools-\\$version\\.jar")
- (string-join
- (append-map (match-lambda
- ((label . dir)
- (find-files dir "\\.jar$")))
- inputs)
- ":"))))))))
+ (("rlwrap") (which "rlwrap"))))))))
(inputs (list rlwrap
clojure
clojure-tools-deps

base-commit: 5634bc206d82a867850c86044c423b0a8700f34e
--
2.46.0
L
L
Ludovic Courtès wrote on 25 Dec 2024 22:56
(name . Rostislav Svoboda)(address . rostislav.svoboda@gmail.com)
87h66r2zr3.fsf@gnu.org
Hi Rostislav,

Rostislav Svoboda <rostislav.svoboda@gmail.com> skribis:

Toggle quote (8 lines)
> * gnu/packages/clojure.scm (clojure-tools): The AOT compiled JAR must be
> included and used by the bin/clojure script.
>
> See also
> https://yhetil.org/guix-user/CAOXoXz0fKD+3B+b_y6A8MPYxZcSRDusby6VWTUy8Nnp4Y0fAzQ@mail.gmail.com/
>
> Change-Id: I3a8221fd415631f191cbf6ddcb0e8ecbd94e389f

[...]

Toggle quote (13 lines)
> (source
> (origin
> (method url-fetch)
> (uri (string-append "https://download.clojure.org/install/clojure-tools-"
> version
> ".tar.gz"))
> - (sha256 (base32 "1q0z71ifdxwvyy9gvq8mx8jbygf8cszrlhb3h22walfamnisbhwk"))
> - ;; Remove AOT compiled JAR. The other JAR only contains uncompiled
> - ;; Clojure source code.
> - (snippet
> - `(delete-file ,(string-append "clojure-tools-" version ".jar")))))
> + (sha256 (base32 "0hh78b22shj530armm9850cqr85wqdxyqfzx4qf45w5y200bw6dw"))))

The problem is that in general we don’t want to keep pre-built binaries
like this one. Could we keep this snippet and instead find a way to
ensure that this jar is built from source and installed?

Thanks,
Ludo’.
R
R
Rostislav Svoboda wrote on 26 Dec 2024 15:40
(name . Ludovic Courtès)(address . ludo@gnu.org)
CAEtmmex9BPyXgPM+0B+GHL-K5-tHivrL-mixAfgdkpPyTJDeSQ@mail.gmail.com
Hello Ludo’

Toggle quote (2 lines)
> Could we keep this snippet and instead find a way to ensure that this jar is built from source and installed?

Uff, we're diving into the rabbit hole here. The clojure-tools-*.jar
is built using itself and relies on a considerable number of
configuration settings and jar files. (See below.)

Cheers,
Bost

bost@ecke /tmp$ git clone https://github.com/clojure/brew-install
Clonage dans 'brew-install'...
remote: Enumerating objects: 6984, done.
remote: Counting objects: 100% (1280/1280), done.
remote: Compressing objects: 100% (89/89), done.
remote: Total 6984 (delta 1196), reused 1244 (delta 1171), pack-reused
5704 (from 1)
Réception d'objets: 100% (6984/6984), 854.54 Kio | 6.62 Mio/s, fait.
Résolution des deltas: 100% (3418/3418), fait.
bost@ecke /tmp$ cd brew-install/

bost@ecke /tmp/brew-install$ clj -Sverbose -T:build release
version = 1.12.0.1488
install_dir = /gnu/store/s7basyx1rffp9bnacnr90v6zscx3ch72-clojure-tools-1.12.0.1488/lib/clojure
config_dir = /home/bost/.config/clojure
config_paths = /gnu/store/s7basyx1rffp9bnacnr90v6zscx3ch72-clojure-tools-1.12.0.1488/lib/clojure/deps.edn
/home/bost/.config/clojure/deps.edn deps.edn
cache_dir = .cpcache
cp_file = .cpcache/519643847.cp

Refreshing classpath
clojure-tools/
clojure-tools/clj
clojure-tools/clojure.1
clojure-tools/clj.1
clojure-tools/example-deps.edn
clojure-tools/install.sh
clojure-tools/exec.jar
clojure-tools/tools.edn
clojure-tools/clojure
clojure-tools/deps.edn
clojure-tools/clojure-tools-1.12.0.1488.jar

bost@ecke /tmp/brew-install$ clj -Stree
org.clojure/clojure 1.12.0
. org.clojure/spec.alpha 0.5.238
. org.clojure/core.specs.alpha 0.4.74
org.clojure/tools.deps 0.21.1460
. org.apache.maven.resolver/maven-resolver-api 1.8.2
. org.apache.maven.resolver/maven-resolver-spi 1.8.2
. org.apache.maven.resolver/maven-resolver-api 1.8.2
. org.apache.maven.resolver/maven-resolver-impl 1.8.2
. org.apache.maven.resolver/maven-resolver-api 1.8.2
. org.apache.maven.resolver/maven-resolver-spi 1.8.2
. org.apache.maven.resolver/maven-resolver-named-locks 1.8.2
. org.slf4j/slf4j-api 1.7.36
. org.apache.maven.resolver/maven-resolver-util 1.8.2
. org.apache.commons/commons-lang3 3.12.0
. javax.annotation/javax.annotation-api 1.3.2
. org.slf4j/slf4j-api 1.7.36
. org.apache.maven.resolver/maven-resolver-util 1.8.2
. org.apache.maven.resolver/maven-resolver-api 1.8.2
. org.apache.maven.resolver/maven-resolver-connector-basic 1.8.2
. org.apache.maven.resolver/maven-resolver-api 1.8.2
. org.apache.maven.resolver/maven-resolver-spi 1.8.2
. org.apache.maven.resolver/maven-resolver-util 1.8.2
. org.slf4j/slf4j-api 1.7.36
. org.apache.maven.resolver/maven-resolver-transport-file 1.8.2
. org.apache.maven.resolver/maven-resolver-api 1.8.2
. org.apache.maven.resolver/maven-resolver-spi 1.8.2
. org.slf4j/slf4j-api 1.7.36
. org.apache.maven.resolver/maven-resolver-transport-http 1.8.2
. org.apache.maven.resolver/maven-resolver-api 1.8.2
. org.apache.maven.resolver/maven-resolver-spi 1.8.2
. org.apache.maven.resolver/maven-resolver-util 1.8.2
. org.apache.httpcomponents/httpclient 4.5.13
X org.apache.httpcomponents/httpcore 4.4.13 :older-version
. commons-codec/commons-codec 1.11
. org.apache.httpcomponents/httpcore 4.4.15
. org.slf4j/jcl-over-slf4j 1.7.36
. org.slf4j/slf4j-api 1.7.36
. org.slf4j/slf4j-api 1.7.36
. org.apache.maven/maven-resolver-provider 3.8.8
. org.apache.maven/maven-model 3.8.8
. org.codehaus.plexus/plexus-utils 3.3.1
. org.apache.maven/maven-model-builder 3.8.8
. org.codehaus.plexus/plexus-utils 3.3.1
. org.codehaus.plexus/plexus-interpolation 1.26
. javax.inject/javax.inject 1
. org.apache.maven/maven-model 3.8.8
. org.apache.maven/maven-artifact 3.8.8
. org.apache.maven/maven-builder-support 3.8.8
. org.eclipse.sisu/org.eclipse.sisu.inject 0.3.5
. org.apache.maven/maven-repository-metadata 3.8.8
. org.codehaus.plexus/plexus-utils 3.3.1
X org.apache.maven.resolver/maven-resolver-api 1.6.3 :older-version
X org.apache.maven.resolver/maven-resolver-spi 1.6.3 :older-version
X org.apache.maven.resolver/maven-resolver-util 1.6.3 :older-version
X org.apache.maven.resolver/maven-resolver-impl 1.6.3 :older-version
X org.codehaus.plexus/plexus-utils 3.3.1 :superseded
. javax.inject/javax.inject 1
. org.apache.maven/maven-core 3.8.8
. org.apache.maven/maven-model 3.8.8
. org.apache.maven/maven-settings 3.8.8
. org.codehaus.plexus/plexus-utils 3.3.1
. org.apache.maven/maven-settings-builder 3.8.8
. org.apache.maven/maven-builder-support 3.8.8
. javax.inject/javax.inject 1
. org.codehaus.plexus/plexus-interpolation 1.26
. org.codehaus.plexus/plexus-utils 3.3.1
. org.apache.maven/maven-settings 3.8.8
. org.codehaus.plexus/plexus-sec-dispatcher 2.0
. org.codehaus.plexus/plexus-utils 3.4.1 :newer-version
. org.codehaus.plexus/plexus-cipher 2.0
. javax.inject/javax.inject 1
. javax.inject/javax.inject 1
. org.apache.maven/maven-builder-support 3.8.8
. org.apache.maven/maven-repository-metadata 3.8.8
. org.apache.maven/maven-artifact 3.8.8
. org.codehaus.plexus/plexus-utils 3.3.1
X org.apache.commons/commons-lang3 3.8.1 :older-version
. org.apache.maven/maven-plugin-api 3.8.8
. org.apache.maven/maven-model 3.8.8
. org.apache.maven/maven-artifact 3.8.8
. org.eclipse.sisu/org.eclipse.sisu.plexus 0.3.5
. org.codehaus.plexus/plexus-utils 3.3.1
. org.codehaus.plexus/plexus-classworlds 2.6.0
. org.apache.maven/maven-model-builder 3.8.8
. org.apache.maven/maven-resolver-provider 3.8.8
X org.apache.maven.resolver/maven-resolver-impl 1.6.3 :older-version
X org.apache.maven.resolver/maven-resolver-api 1.6.3 :older-version
X org.apache.maven.resolver/maven-resolver-spi 1.6.3 :older-version
X org.apache.maven.resolver/maven-resolver-util 1.6.3 :older-version
. org.apache.maven.shared/maven-shared-utils 3.3.4
. org.eclipse.sisu/org.eclipse.sisu.plexus 0.3.5
X javax.annotation/javax.annotation-api 1.2 :older-version
. org.eclipse.sisu/org.eclipse.sisu.inject 0.3.5
X org.codehaus.plexus/plexus-component-annotations 1.5.5 :older-version
X org.codehaus.plexus/plexus-classworlds 2.5.2 :older-version
X org.codehaus.plexus/plexus-utils 3.0.24 :older-version
. org.eclipse.sisu/org.eclipse.sisu.inject 0.3.5
. com.google.inject/guice$no_aop 4.2.2
. javax.inject/javax.inject 1
. aopalliance/aopalliance 1.0
X com.google.guava/guava 25.1-android :excluded
. javax.inject/javax.inject 1
. org.codehaus.plexus/plexus-utils 3.3.1
. org.codehaus.plexus/plexus-classworlds 2.6.0
. org.codehaus.plexus/plexus-interpolation 1.26
. org.codehaus.plexus/plexus-component-annotations 2.1.0
X org.apache.commons/commons-lang3 3.8.1 :older-version
. org.slf4j/slf4j-api 1.7.36
. org.clojure/data.xml 0.2.0-alpha9
. org.clojure/tools.gitlibs 2.5.197
. org.clojure/tools.cli 1.1.230
. com.cognitect.aws/api 0.8.692
. org.clojure/data.json 2.5.0
. org.clojure/tools.logging 1.2.4
. com.cognitect/http-client 1.0.127
. org.clojure/core.async 1.6.681
X org.eclipse.jetty/jetty-client 9.4.53.v20231009 :excluded
X org.eclipse.jetty/jetty-http 9.4.53.v20231009 :excluded
X org.eclipse.jetty/jetty-util 9.4.53.v20231009 :excluded
X org.clojure/data.xml 0.2.0-alpha8 :older-version
. org.clojure/core.async 1.6.681
. org.clojure/tools.analyzer.jvm 1.2.3
. org.clojure/tools.analyzer 1.1.1
. org.clojure/core.memoize 1.0.253
. org.clojure/core.cache 1.0.225
. org.clojure/data.priority-map 1.1.0
. org.ow2.asm/asm 9.2
. org.clojure/tools.reader 1.3.6
. org.eclipse.jetty/jetty-http 9.4.53.v20231009
. org.eclipse.jetty/jetty-util 9.4.53.v20231009
. org.eclipse.jetty/jetty-io 9.4.53.v20231009
. org.eclipse.jetty/jetty-util 9.4.53.v20231009
. org.eclipse.jetty/jetty-client 9.4.53.v20231009
. org.eclipse.jetty/jetty-http 9.4.53.v20231009
. org.eclipse.jetty/jetty-io 9.4.53.v20231009
. com.cognitect.aws/endpoints 1.1.12.718
. com.cognitect.aws/s3 868.2.1580.0
. javax.inject/javax.inject 1
org.slf4j/slf4j-nop 1.7.36
. org.slf4j/slf4j-api 1.7.36
?
Your comment

Commenting via the web interface is currently disabled.

To comment on this conversation send an email to 74973@debbugs.gnu.org

To respond to this issue using the mumi CLI, first switch to it
mumi current 74973
Then, you may apply the latest patchset in this issue (with sign off)
mumi am -- -s
Or, compose a reply to this issue
mumi compose
Or, send patches to this issue
mumi send-email *.patch