summaryrefslogtreecommitdiff
path: root/gnu/packages/clojure.scm
diff options
context:
space:
mode:
authorMathieu Lirzin <mthl@gnu.org>2026-01-28 04:54:20 +0100
committerJulien Lepiller <julien@lepiller.eu>2026-02-09 19:21:52 +0100
commit1481959db7372d7cc919fe77155030b3b3f67339 (patch)
tree0f0444765cc437bf79e814604372431dfbc7528f /gnu/packages/clojure.scm
parent9ccc91ae1f00983af695b6aa189cd589ff77c990 (diff)
gnu: clojure-tools: Add coreutils-minimal and openjdk inputs.
* gnu/packages/clojure.scm (clojure-tools) [inputs]: Add coreutils-minimal, openjdk and guile-3.0/pinned. [arguments]: Wrap PATH and JAVA_HOME in ‘clojure’ executable. Do not reference openjdk in generated classpath. Change-Id: Ia6ed624df29d2ee42f08c6e1ae3d64719b0f7474 Signed-off-by: Julien Lepiller <julien@lepiller.eu>
Diffstat (limited to 'gnu/packages/clojure.scm')
-rw-r--r--gnu/packages/clojure.scm71
1 files changed, 38 insertions, 33 deletions
diff --git a/gnu/packages/clojure.scm b/gnu/packages/clojure.scm
index a7e04bb9c08..a61e8d9f714 100644
--- a/gnu/packages/clojure.scm
+++ b/gnu/packages/clojure.scm
@@ -24,17 +24,19 @@
24 24
25(define-module (gnu packages clojure) 25(define-module (gnu packages clojure)
26 #:use-module (gnu packages) 26 #:use-module (gnu packages)
27 #:use-module (gnu packages base)
28 #:use-module (gnu packages guile)
27 #:use-module (gnu packages java) 29 #:use-module (gnu packages java)
28 #:use-module (gnu packages maven) 30 #:use-module (gnu packages maven)
29 #:use-module (gnu packages readline) 31 #:use-module (gnu packages readline)
32 #:use-module (guix gexp)
30 #:use-module ((guix licenses) #:prefix license:) 33 #:use-module ((guix licenses) #:prefix license:)
31 #:use-module (guix packages) 34 #:use-module (guix packages)
32 #:use-module (guix download) 35 #:use-module (guix download)
33 #:use-module (guix git-download) 36 #:use-module (guix git-download)
34 #:use-module (guix build-system ant) 37 #:use-module (guix build-system ant)
35 #:use-module (guix build-system copy) 38 #:use-module (guix build-system copy)
36 #:use-module (guix build-system clojure) 39 #:use-module (guix build-system clojure))
37 #:use-module (ice-9 match))
38 40
39(define-public clojure-spec-alpha 41(define-public clojure-spec-alpha
40 (package 42 (package
@@ -390,41 +392,44 @@ designs.")
390 `(delete-file ,(string-append "clojure-tools-" version ".jar"))))) 392 `(delete-file ,(string-append "clojure-tools-" version ".jar")))))
391 (build-system copy-build-system) 393 (build-system copy-build-system)
392 (arguments 394 (arguments
393 `(#:install-plan 395 (list #:install-plan #~'(("deps.edn" "lib/clojure/")
394 '(("deps.edn" "lib/clojure/") 396 ("example-deps.edn" "lib/clojure/")
395 ("example-deps.edn" "lib/clojure/") 397 ("tools.edn" "lib/clojure/")
396 ("tools.edn" "lib/clojure/") 398 ("exec.jar" "lib/clojure/libexec/")
397 ("exec.jar" "lib/clojure/libexec/") 399 ("clojure" "bin/")
398 ("clojure" "bin/") 400 ("clj" "bin/"))
399 ("clj" "bin/")) 401 #:phases
400 #:modules ((guix build copy-build-system) 402 #~(modify-phases %standard-phases
401 (guix build utils) 403 (add-before 'install 'fix-paths
402 (srfi srfi-1) 404 (lambda _
403 (ice-9 match)) 405 (substitute* "clj"
404 #:phases 406 (("BINDIR") (string-append #$output "/bin")))
405 (modify-phases %standard-phases 407 (substitute* "clojure"
406 (add-after 'unpack 'fix-paths 408 (("PREFIX") (string-append #$output "/lib/clojure")))
407 (lambda* (#:key outputs #:allow-other-keys) 409 (let ((coreutils #$(this-package-input "coreutils-minimal"))
408 (substitute* "clojure" 410 (jre #$(this-package-input "openjdk")))
409 (("PREFIX") (string-append (assoc-ref outputs "out") "/lib/clojure"))) 411 (wrap-script "clojure"
410 (substitute* "clj" 412 `("JAVA_HOME" = (,jre))
411 (("BINDIR") (string-append (assoc-ref outputs "out") "/bin")) 413 `("PATH" = (,(string-append coreutils "/bin")))))))
412 (("rlwrap") (which "rlwrap"))))) 414 (add-after 'fix-paths 'copy-tools-deps-alpha-jar
413 (add-after 'fix-paths 'copy-tools-deps-alpha-jar 415 (lambda* (#:key inputs #:allow-other-keys)
414 (lambda* (#:key inputs outputs #:allow-other-keys) 416 (substitute* "clojure"
415 (substitute* "clojure" 417 (("\\$install_dir/libexec/clojure-tools-\\$version\\.jar")
416 (("\\$install_dir/libexec/clojure-tools-\\$version\\.jar") 418 (let* ((selected (assq-remove! inputs "openjdk"))
417 (string-join 419 (input-dirs (map cdr selected))
418 (append-map (match-lambda 420 (jars (apply append
419 ((label . dir) 421 (map (lambda (dir)
420 (find-files dir "\\.jar$"))) 422 (find-files dir "\\.jar$"))
421 inputs) 423 input-dirs))))
422 ":")))))))) 424 (string-join jars ":")))))))))
423 (inputs (list rlwrap 425 (inputs (list rlwrap
426 coreutils-minimal
424 clojure 427 clojure
425 clojure-tools-deps 428 clojure-tools-deps
429 guile-3.0/pinned
426 java-commons-logging-minimal 430 java-commons-logging-minimal
427 java-slf4j-nop)) 431 java-slf4j-nop
432 openjdk))
428 (home-page "https://clojure.org/releases/tools") 433 (home-page "https://clojure.org/releases/tools")
429 (synopsis "CLI tools for the Clojure programming language") 434 (synopsis "CLI tools for the Clojure programming language")
430 (description "The Clojure command line tools can be used to start a 435 (description "The Clojure command line tools can be used to start a