diff options
author | Maxim Cournoyer <[email protected]> | 2022-01-25 22:07:13 -0500 |
---|---|---|
committer | Maxim Cournoyer <[email protected]> | 2022-01-25 22:07:13 -0500 |
commit | 1a5302435ff0d2822b823f5a6fe01faa7a85c629 (patch) | |
tree | ac7810c88b560532f22d2bab2e59609cd7305c21 /gnu/packages/java.scm | |
parent | 3ff2ac4980dacf10087e4b42bd9fbc490591900c (diff) | |
parent | 070b8a893febd6e7d8b2b7c8c4dcebacf7845aa9 (diff) |
Merge branch 'master' into staging.
With "conflicts" solved (all in favor of master except git) in:
gnu/local.mk
gnu/packages/databases.scm
gnu/packages/glib.scm
gnu/packages/gnome.scm
gnu/packages/gnupg.scm
gnu/packages/gnuzilla.scm
gnu/packages/graphics.scm
gnu/packages/gstreamer.scm
gnu/packages/gtk.scm
gnu/packages/linux.scm
gnu/packages/machine-learning.scm
gnu/packages/networking.scm
gnu/packages/polkit.scm
gnu/packages/pulseaudio.scm
gnu/packages/rpc.scm
gnu/packages/rust.scm
gnu/packages/version-control.scm
gnu/packages/w3m.scm
Diffstat (limited to 'gnu/packages/java.scm')
-rw-r--r-- | gnu/packages/java.scm | 2617 |
1 files changed, 1183 insertions, 1434 deletions
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index a404250d38..e54d2ed0cb 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2017, 2019, 2021 Tobias Geerinckx-Rice <[email protected]> ;;; Copyright © 2018, 2019 Gábor Boskovits <[email protected]> ;;; Copyright © 2018 Chris Marusich <[email protected]> -;;; Copyright © 2018, 2019, 2020 Efraim Flashner <[email protected]> +;;; Copyright © 2018, 2019, 2020, 2021 Efraim Flashner <[email protected]> ;;; Copyright © 2019, 2020, 2021 Björn Höfling <[email protected]> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <[email protected]> ;;; Copyright © 2020 Raghav Gururajan <[email protected]> @@ -17,6 +17,7 @@ ;;; Copyright © 2021 Vincent Legoll <[email protected]> ;;; Copyright © 2021 Mike Gerwitz <[email protected]> ;;; Copyright © 2021 Pierre Langlois <[email protected]> +;;; Copyright © 2021 Guillaume Le Vaillant <[email protected]> ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ #:use-module (guix svn-download) #:use-module ((guix build utils) #:select (alist-replace)) #:use-module (guix utils) + #:use-module (guix gexp) #:use-module (guix build-system ant) #:use-module (guix build-system gnu) #:use-module (guix build-system maven) @@ -58,6 +60,7 @@ #:use-module (gnu packages elf) #:use-module (gnu packages fontutils) #:use-module (gnu packages gawk) + #:use-module (gnu packages gcc) #:use-module (gnu packages gettext) #:use-module (gnu packages gl) #:use-module (gnu packages ghostscript) ;lcms @@ -82,6 +85,7 @@ #:use-module (gnu packages perl) #:use-module (gnu packages popt) #:use-module (gnu packages kerberos) + #:use-module (gnu packages security-token) #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (gnu packages texinfo) @@ -111,47 +115,9 @@ ;; much more support for Java 1.6 than the latest release, but we need to ;; build 0.99 first to get a working version of javah. ECJ, the development ;; version of GNU Classpath, and the latest version of JamVM make up the -;; second stage JDK with which we can build the OpenJDK with the Icedtea 1.x -;; build framework. We then build the more recent JDKs Icedtea 2.x and -;; Icedtea 3.x. - -(define-public libantlr3c - (package - (name "libantlr3c") - (version "3.4") - (source - (origin - (method url-fetch) - (uri - (string-append "https://www.antlr3.org/download/C/" - name "-" version ".tar.gz")) - (sha256 - (base32 "0lpbnb4dq4azmsvlhp6khq1gy42kyqyjv8gww74g5lm2y6blm4fa")))) - (build-system gnu-build-system) - (arguments - `(#:configure-flags (list "--enable-debuginfo" "--disable-static") - #:phases (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key build target native-inputs inputs outputs - (configure-flags '()) out-of-source? system - #:allow-other-keys) - (let ((configure (assoc-ref %standard-phases 'configure)) - (enable-64bit? (member system '("aarch64-linux" - "x86_64-linux" - "mips64el-linux")))) - (configure #:build build #:target target - #:native-inputs native-inputs - #:inputs inputs #:outputs outputs - #:configure-flags `(,(if enable-64bit? - "--enable-64bit" - '()) - ,@configure-flags) - #:out-of-source? out-of-source?))))))) - (synopsis "ANTLR C Library") - (description "LIBANTLR3C provides run-time C libraries for ANTLR3 (ANother -Tool for Language Recognition v3).") - (home-page "https://www.antlr3.org/") - (license license:bsd-3))) +;; second stage JDK with which we can build the OpenJDK with the Icedtea 2.x +;; build framework. We then build the more recent JDK Icedtea 3.x, and all +;; other versions of OpenJDK. (define jikes (package @@ -172,64 +138,6 @@ defined in The Java Language Specification into the bytecoded instruction set and binary format defined in The Java Virtual Machine Specification.") (license license:ibmpl1.0))) -(define-public drip - ;; Last release is from 2014, with a few important commits afterwards. - (let ((commit "a4bd00df0199e78243847f06cc04ecaea31f8f08")) - (package - (name "drip") - (version (git-version "0.2.4" "1" commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/ninjudd/drip") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0wzmjwfyldr3jn49517xd8yn7dgdk8h88qkga3kjyg1zc375ylg2")))) - (build-system gnu-build-system) - (native-inputs - `(("jdk" ,icedtea "jdk"))) - (arguments - `(#:tests? #f ; No tests. - #:phases - (modify-phases %standard-phases - (delete 'configure) - (add-before 'install 'fix-wrapper - (lambda* (#:key inputs #:allow-other-keys) - (let ((jps (string-append (assoc-ref inputs "jdk") "/bin/jps"))) - (substitute* "bin/drip" - (("jps") jps) - (("brew update && brew upgrade drip") "guix pull && guix install drip") - ;; No need to make: - (("\\(cd -- \"\\$drip_dir\" && make -s\\) \\|\\| exit 1") "") - ;; No need to include source: - (("\\[\\[ -r \\$drip_dir/src/org/flatland/drip/Main\\.java \\]\\]") - "true")) - #t))) - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (share (string-append out "/share/drip"))) - (mkdir-p bin) - (for-each - (lambda (file) - (install-file (string-append "bin/" file) bin)) - '("drip" "drip_daemon" "drip_proxy")) - (install-file "drip.jar" share) - (substitute* (string-append bin "/drip") - (("drip_dir=\\$bin_dir/..") - (string-append "drip_dir=" share))) - #t)))))) - (home-page "https://github.com/ninjudd/drip") - (synopsis "Faster Java Virtual Machine launching") - (description "Drip is a launcher for the Java Virtual Machine that -provides much faster startup times than the @command{java} command. The @command{drip} -script is intended to be a drop-in replacement for the @command{java} command, -only faster.") - (license license:epl1.0)))) - ;; This is the last version of GNU Classpath that can be built without ECJ. (define classpath-bootstrap (package @@ -242,13 +150,13 @@ only faster.") (sha256 (base32 "0i99wf9xd3hw1sj2sazychb9prx8nadxh2clgvk3zlmb28v0jbfz")) - (patches (search-patches "classpath-aarch64-support.patch")))) + (patches (search-patches "classpath-aarch64-support.patch" + "classpath-miscompilation.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list (string-append "JAVAC=" - (assoc-ref %build-inputs "jikes") - "/bin/jikes") + (search-input-file %build-inputs "/bin/jikes")) "--disable-Werror" "--disable-gmp" "--disable-gtk-peer" @@ -259,24 +167,10 @@ only faster.") "--disable-gjdoc") #:phases (modify-phases %standard-phases - ;; XXX: This introduces a memory leak as we remove a call to free up - ;; memory for the file name string. This was necessary because of a - ;; runtime error that would have prevented us from building - ;; ant-bootstrap later. See https://issues.guix.gnu.org/issue/36685 - ;; for the gnarly details. - (add-after 'unpack 'remove-call-to-free - (lambda _ - (substitute* "native/jni/java-io/java_io_VMFile.c" - (("result = cpio_isFileExists.*" m) - (string-append m "\n//"))) - #t)) (add-after 'install 'install-data (lambda _ (invoke "make" "install-data")))))) (native-inputs - `(("jikes" ,jikes) - ("fastjar" ,fastjar) - ("libltdl" ,libltdl) - ("pkg-config" ,pkg-config))) + (list jikes fastjar libltdl pkg-config)) (home-page "https://www.gnu.org/software/classpath/") (synopsis "Essential libraries for Java") (description "GNU Classpath is a project to create core class libraries @@ -301,11 +195,9 @@ language.") (sha256 (base32 "06lhi03l3b0h48pc7x58bk9my2nrcf1flpmglvys3wyad6yraf36")) + ;; Remove precompiled software. (snippet - '(begin - ;; Remove precompiled software. - (delete-file "lib/classes.zip") - #t)))) + '(delete-file "lib/classes.zip")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -324,11 +216,7 @@ language.") (lambda _ (invoke "autoreconf" "-vif")))) '%standard-phases))) (inputs - `(("classpath" ,classpath-bootstrap) - ("jikes" ,jikes) - ("libffi" ,libffi) - ("zip" ,zip) - ("zlib" ,zlib))) + (list classpath-bootstrap jikes libffi zip zlib)) (native-inputs (if (string-prefix? "aarch64" (or (%current-system) (%current-target-system))) @@ -373,19 +261,15 @@ JNI.") (modify-phases %standard-phases (delete 'bootstrap) (delete 'configure) - (replace 'build + (add-before 'build 'define-java-environment-variables (lambda* (#:key inputs #:allow-other-keys) + ;; First, set environment variables (eases debugging on -K). (setenv "JAVA_HOME" (assoc-ref inputs "jamvm")) - (setenv "JAVACMD" - (string-append (assoc-ref inputs "jamvm") - "/bin/jamvm")) - (setenv "JAVAC" - (string-append (assoc-ref inputs "jikes") - "/bin/jikes")) - (setenv "CLASSPATH" - (string-append (assoc-ref inputs "jamvm") - "/lib/rt.jar")) - + (setenv "JAVACMD" (search-input-file inputs "/bin/jamvm")) + (setenv "JAVAC" (search-input-file inputs "/bin/jikes")) + (setenv "CLASSPATH" (search-input-file inputs "/lib/rt.jar")))) + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) ;; Ant complains if this file doesn't exist. (setenv "HOME" "/tmp") (with-output-to-file "/tmp/.ant.properties" @@ -412,7 +296,7 @@ JNI.") (("depends=\"jars,test-jar\"") "depends=\"jars\"")) (invoke "bash" "bootstrap.sh" (string-append "-Ddist.dir=" - (assoc-ref %outputs "out"))))) + (assoc-ref outputs "out"))))) (add-after 'build 'strip-jar-timestamps ;based on ant-build-system (lambda* (#:key outputs #:allow-other-keys) (define (repack-archive jar) @@ -441,14 +325,10 @@ JNI.") (for-each repack-archive (find-files (string-append (assoc-ref %outputs "out") "/lib") - "\\.jar$")) - #t)) + "\\.jar$")))) (delete 'install)))) (native-inputs - `(("jikes" ,jikes) - ("jamvm" ,jamvm-1-bootstrap) - ("unzip" ,unzip) - ("zip" ,zip))) + (list jikes jamvm-1-bootstrap unzip zip)) (home-page "https://ant.apache.org") (synopsis "Build tool for Java") (description @@ -477,24 +357,19 @@ build process and its dependencies, whereas Make uses Makefile format.") ;; bootstrapping the JDK. (build-system gnu-build-system) (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1)) - #:tests? #f ; there are no tests + `(#:tests? #f ; there are no tests #:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key inputs #:allow-other-keys) (setenv "CLASSPATH" (string-join - (cons (string-append (assoc-ref inputs "jamvm") - "/lib/rt.jar") + (cons (search-input-file inputs "/lib/rt.jar") (find-files (string-append (assoc-ref inputs "ant-bootstrap") "/lib") "\\.jar$")) - ":")) - #t)) + ":")))) (replace 'build (lambda* (#:key inputs #:allow-other-keys) ;; The unpack phase enters the "org" directory by mistake. @@ -516,14 +391,9 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"))) (let ((share (string-append (assoc-ref outputs "out") "/share/java/"))) (mkdir-p share) - (install-file "ecj-bootstrap.jar" share) - #t)))))) + (install-file "ecj-bootstrap.jar" share))))))) (native-inputs - `(("ant-bootstrap" ,ant-bootstrap) - ("unzip" ,unzip) - ("jikes" ,jikes) - ("jamvm" ,jamvm-1-bootstrap) - ("fastjar" ,fastjar))) + (list ant-bootstrap unzip jikes jamvm-1-bootstrap fastjar)) (home-page "https://eclipse.org") (synopsis "Eclipse Java development tools core batch compiler") (description "This package provides the Eclipse Java core batch compiler @@ -539,68 +409,62 @@ requirement for all GNU Classpath releases after version 0.93.") (arguments `(#:modules ((guix build utils)) #:builder - (begin - (use-modules (guix build utils)) - (let* ((bin (string-append (assoc-ref %outputs "out") "/bin")) - (target (string-append bin "/javac")) - (guile (string-append (assoc-ref %build-inputs "guile") - "/bin/guile")) - (ecj (string-append (assoc-ref %build-inputs "ecj-bootstrap") - "/share/java/ecj-bootstrap.jar")) - (java (string-append (assoc-ref %build-inputs "jamvm") - "/bin/jamvm")) - (bootcp (let ((jvmlib (string-append (assoc-ref %build-inputs "classpath") - "/share/classpath"))) - (string-append jvmlib "/glibj.zip:" - jvmlib "/tools.zip")))) - (mkdir-p bin) - (with-output-to-file target - (lambda _ - (format #t "#!~a --no-auto-compile\n!#\n" guile) - (write - `(begin (use-modules (ice-9 match) - (ice-9 receive) - (ice-9 hash-table) - (srfi srfi-1) - (srfi srfi-26)) - (define defaults - '(("-bootclasspath" ,bootcp) - ("-source" "1.5") - ("-target" "1.5") - ("-cp" "."))) - (define (main args) - (let ((classpath (getenv "CLASSPATH"))) - (setenv "CLASSPATH" - (string-join (list ,ecj - ,(string-append (assoc-ref %build-inputs "jamvm") - "/lib/rt.jar") - (or classpath "")) - ":"))) - (receive (vm-args other-args) - ;; Separate VM arguments from arguments to ECJ. - (partition (cut string-prefix? "-J" <>) - (fold (lambda (default acc) - (if (member (first default) acc) - acc (append default acc))) - args defaults)) - (apply system* ,java - (append - ;; Remove "-J" prefix - (map (cut string-drop <> 2) vm-args) - '("org.eclipse.jdt.internal.compiler.batch.Main") - (cons "-nowarn" other-args))))) - ;; Entry point - (let ((args (cdr (command-line)))) - (if (null? args) - (format (current-error-port) "javac: no arguments given!\n") - (main args))))))) - (chmod target #o755) - #t)))) - (native-inputs - `(("guile" ,guile-2.2) - ("ecj-bootstrap" ,ecj-bootstrap) - ("jamvm" ,jamvm-1-bootstrap) - ("classpath" ,classpath-bootstrap))) + ,#~(begin + (use-modules (guix build utils)) + (let* ((bin (string-append #$output "/bin")) + (target (string-append bin "/javac")) + (guile (string-append (assoc-ref %build-inputs "guile") + "/bin/guile")) + (ecj (string-append #$(this-package-native-input "ecj-bootstrap") + "/share/java/ecj-bootstrap.jar")) + (java (string-append #$(this-package-native-input "jamvm") + "/bin/jamvm")) + (bootcp (let ((jvmlib (string-append + #$(this-package-native-input "classpath") + "/share/classpath"))) + (string-append jvmlib "/glibj.zip:" + jvmlib "/tools.zip")))) + (mkdir-p bin) + (with-output-to-file target + (lambda _ + (format #t "#!~a --no-auto-compile\n!#\n" guile) + (write + `(begin (use-modules (ice-9 match) + (ice-9 receive) + (ice-9 hash-table) + (srfi srfi-1) + (srfi srfi-26)) + (define defaults + '(("-bootclasspath" ,bootcp) + ("-source" "1.5") + ("-target" "1.5") + ("-cp" "."))) + (define (main args) + (let ((classpath (getenv "CLASSPATH"))) + (setenv "CLASSPATH" + (string-join (list ,ecj (or classpath "")) + ":"))) + (receive (vm-args other-args) + ;; Separate VM arguments from arguments to ECJ. + (partition (cut string-prefix? "-J" <>) + (fold (lambda (default acc) + (if (member (first default) acc) + acc (append default acc))) + args defaults)) + (apply system* ,java + (append + ;; Remove "-J" prefix + (map (cut string-drop <> 2) vm-args) + '("org.eclipse.jdt.internal.compiler.batch.Main") + (cons "-nowarn" other-args))))) + ;; Entry point + (let ((args (cdr (command-line)))) + (if (null? args) + (format (current-error-port) "javac: no arguments given!\n") + (main args))))))) + (chmod target #o755))))) + (native-inputs + (list guile-3.0 ecj-bootstrap jamvm-1-bootstrap classpath-bootstrap)) (description "This package provides a wrapper around the @dfn{Eclipse compiler for Java} (ecj) with a command line interface that is compatible with the standard javac executable."))) @@ -645,13 +509,10 @@ the standard javac executable."))) (add-after 'install 'install-data (lambda _ (invoke "make" "install-data")))))) (native-inputs - `(("ecj-bootstrap" ,ecj-bootstrap) - ("ecj-javac-wrapper" ,ecj-javac-wrapper) - ("fastjar" ,fastjar) - ("jamvm" ,jamvm-1-bootstrap) - ("classpath" ,classpath-bootstrap) - ("libltdl" ,libltdl) - ("pkg-config" ,pkg-config))))) + (list classpath-bootstrap + ecj-bootstrap ecj-javac-wrapper + fastjar jamvm-1-bootstrap + libltdl pkg-config)))) ;; We need this because classpath-bootstrap does not provide all of the tools ;; we need to build classpath-devel. @@ -661,45 +522,42 @@ the standard javac executable."))) (source #f) (build-system trivial-build-system) (arguments - `(#:modules ((guix build utils)) - #:builder - (begin - (use-modules (guix build utils)) - (let* ((bash (assoc-ref %build-inputs "bash")) - (jamvm (assoc-ref %build-inputs "jamvm")) - (classpath (assoc-ref %build-inputs "classpath")) - (bin (string-append (assoc-ref %outputs "out") - "/bin/"))) - (mkdir-p bin) - (for-each (lambda (tool) - (with-output-to-file (string-append bin tool) - (lambda _ - ,@(if (string-prefix? "armhf" (or (%current-system) - (%current-target-system))) - `((format #t "#!~a/bin/sh + (list + #:modules '((guix build utils)) + #:builder + #~(begin + (use-modules (guix build utils)) + (let ((bash #$(this-package-native-input "bash-minimal")) + (jamvm #$(this-package-native-input "jamvm")) + (classpath #$(this-package-native-input "classpath")) + (bin (string-append #$output "/bin/"))) + (mkdir-p bin) + (for-each (lambda (tool) + (with-output-to-file (string-append bin tool) + (lambda _ + #$@(if (string-prefix? "armhf" (or (%current-system) + (%current-target-system))) + `((format #t "#!~a/bin/sh ~a/bin/jamvm -Xnocompact -classpath ~a/share/classpath/tools.zip \ gnu.classpath.tools.~a.~a $@" - bash jamvm classpath tool - (if (string=? "native2ascii" tool) - "Native2ASCII" "Main"))) - `((format #t "#!~a/bin/sh + bash jamvm classpath tool + (if (string=? "native2ascii" tool) + "Native2ASCII" "Main"))) + `((format #t "#!~a/bin/sh ~a/bin/jamvm -Xnocompact -Xnoinlining -classpath ~a/share/classpath/tools.zip \ gnu.classpath.tools.~a.~a $@" - bash jamvm classpath tool - (if (string=? "native2ascii" tool) - "Native2ASCII" "Main")))))) - (chmod (string-append bin tool) #o755)) - (list "javah" - "rmic" - "rmid" - "orbd" - "rmiregistry" - "native2ascii")) - #t)))) - (native-inputs - `(("bash" ,bash) - ("jamvm" ,jamvm-1-bootstrap) - ("classpath" ,classpath-0.99))) + bash jamvm classpath tool + (if (string=? "native2ascii" tool) + "Native2ASCII" "Main")))))) + (chmod (string-append bin tool) #o755)) + (list "javah" + "rmic" + "rmid" + "orbd" + "rmiregistry" + "native2ascii")))))) + (native-inputs + (list bash-minimal jamvm-1-bootstrap classpath-0.99)) (inputs '()) (synopsis "Executables from GNU Classpath") (description "This package provides wrappers around the tools provided by @@ -758,23 +616,15 @@ machine."))) (add-after 'unpack 'remove-unsupported-annotations (lambda _ (substitute* (find-files "java" "\\.java$") - (("@Override") "")) - #t)) + (("@Override") "")))) (add-after 'install 'install-data (lambda _ (invoke "make" "install-data")))))) (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool) - ("gettext" ,gettext-minimal) - ("texinfo" ,texinfo) - ("classpath-jamvm-wrappers" ,classpath-jamvm-wrappers) ; for javah - ("ecj-bootstrap" ,ecj-bootstrap) - ("ecj-javac-wrapper" ,ecj-javac-wrapper) - ("fastjar" ,fastjar) - ("jamvm" ,jamvm-1-bootstrap) - ("libltdl" ,libltdl) - ("pkg-config" ,pkg-config)))))) + (list autoconf automake libltdl libtool gettext-minimal texinfo + pkg-config + classpath-jamvm-wrappers ;for javah + ecj-bootstrap ecj-javac-wrapper fastjar + jamvm-1-bootstrap))))) (define jamvm (package (inherit jamvm-1-bootstrap) @@ -791,11 +641,9 @@ machine."))) (search-patches "jamvm-2.0.0-disable-branch-patching.patch" "jamvm-2.0.0-opcode-guard.patch" "jamvm-2.0.0-aarch64-support.patch")) + ;; Remove precompiled software. (snippet - '(begin - ;; Remove precompiled software. - (delete-file "src/classlib/gnuclasspath/lib/classes.zip") - #t)))) + '(delete-file "src/classlib/gnuclasspath/lib/classes.zip")))) (build-system gnu-build-system) (arguments (substitute-keyword-arguments (package-arguments jamvm-1-bootstrap) @@ -811,364 +659,111 @@ machine."))) (define ecj-javac-wrapper-final (package (inherit ecj-javac-wrapper) (native-inputs - `(("guile" ,guile-2.2) - ("ecj-bootstrap" ,ecj-bootstrap) - ("jamvm" ,jamvm) - ("classpath" ,classpath-devel))))) + (list guile-3.0 ecj-bootstrap jamvm classpath-devel)))) -;; The bootstrap JDK consisting of jamvm, classpath-devel, -;; ecj-javac-wrapper-final cannot build Icedtea 2.x directly, because it's -;; written in Java 7. It can, however, build the unmaintained Icedtea 1.x, -;; which uses Java 6 only. -(define-public icedtea-6 +;; We jump ahead by patching the sources of ECJ 4.2.1 so that our bootstrap +;; JDK can build it. ECJ 4 allows us to skip the build of the first version +;; of icedtea and build icedtea 2.x directly. +(define-public ecj4-bootstrap (package - (name "icedtea") - (version "1.13.13") + (name "ecj-bootstrap") + (version "4.2.1") (source (origin (method url-fetch) - (uri (string-append - "http://icedtea.wildebeest.org/download/source/icedtea6-" - version ".tar.xz")) + (uri (string-append "http://archive.eclipse.org/eclipse/" + "downloads/drops4/R-" version + "-201209141800/ecjsrc-" version ".jar")) (sha256 (base32 - "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg")) - (patches (search-patches - "icedtea-6-extend-hotspot-aarch64-support.patch")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "Makefile.in" - ;; do not leak information about the build host - (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"") - "DISTRIBUTION_ID=\"\\\"guix\\\"\"")) - #t)))) + "1x281p87m14zylvinkiz6gc23ss7pzlx419qjbql11jriwav4qfj")))) + ;; It would be so much easier if we could use the ant-build-system, but we + ;; cannot as we don't have ant at this point. We use ecj for + ;; bootstrapping the JDK. (build-system gnu-build-system) - (outputs '("out" ; Java Runtime Environment - "jdk" ; Java Development Kit - "doc")) ; all documentation (arguments - `(;; There are many failing tests and many are known to fail upstream. - #:tests? #f - - ;; The DSOs use $ORIGIN to refer to each other, but (guix build - ;; gremlin) doesn't support it yet, so skip this phase. - #:validate-runpath? #f - - #:modules ((guix build utils) - (guix build gnu-build-system) - (srfi srfi-19)) - - #:configure-flags - `("--enable-bootstrap" - "--enable-nss" - "--without-rhino" - ,(string-append "--with-parallel-jobs=" - (number->string (parallel-job-count))) - "--disable-downloading" - "--disable-tests" - ,(string-append "--with-ecj=" - (assoc-ref %build-inputs "ecj") - "/share/java/ecj-bootstrap.jar") - ,(string-append "--with-jar=" - (assoc-ref %build-inputs "fastjar") - "/bin/fastjar") - ,(string-append "--with-jdk-home=" - (assoc-ref %build-inputs "classpath")) - ,(string-append "--with-java=" - (assoc-ref %build-inputs "jamvm") - "/bin/jamvm")) + `(#:tests? #f ; there are no tests #:phases (modify-phases %standard-phases (replace 'unpack - (lambda* (#:key source inputs #:allow-other-keys) - (invoke "tar" "xvf" source) - (chdir (string-append "icedtea6-" ,version)) - (mkdir "openjdk") - (copy-recursively (assoc-ref inputs "openjdk-src") "openjdk") - ;; The convenient OpenJDK source bundle is no longer - ;; available for download, so we have to take the sources - ;; from the Mercurial repositories and change the Makefile - ;; to avoid tests for the OpenJDK zip archive. - (with-directory-excursion "openjdk" - (for-each (lambda (part) - (mkdir part) - (copy-recursively - (assoc-ref inputs - (string-append part "-src")) - part)) - '("jdk" "hotspot" "corba" - "langtools" "jaxp" "jaxws"))) - (substitute* "patches/freetypeversion.patch" - (("REQUIRED_FREETYPE_VERSION = 2.2.1") - "REQUIRED_FREETYPE_VERSION = 2.10.1")) - (substitute* "Makefile.in" - (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;") - "echo \"trust me\";") - ;; The contents of the bootstrap directory must be - ;; writeable but when copying from the store they are - ;; not. - (("mkdir -p lib/rt" line) - (string-append line "; chmod -R u+w $(BOOT_DIR)"))) - (invoke "chmod" "-R" "u+w" "openjdk"))) - (add-after 'unpack 'use-classpath + (lambda* (#:key source #:allow-other-keys) + (mkdir "src") + (with-directory-excursion "src" + (invoke "gjar" "-xf" source)) + (chdir "src"))) + (replace 'configure (lambda* (#:key inputs #:allow-other-keys) - (let ((jvmlib (assoc-ref inputs "classpath")) - (jamvm (assoc-ref inputs "jamvm"))) - ;; Classpath does not provide rt.jar. - (substitute* "Makefile.in" - (("\\$\\(SYSTEM_JDK_DIR\\)/jre/lib/rt.jar") - (string-append jvmlib "/share/classpath/glibj.zip"))) - ;; Make sure we can find all classes. - (setenv "CLASSPATH" - (string-append jvmlib "/share/classpath/glibj.zip:" - jvmlib "/share/classpath/tools.zip:" - jamvm "/lib/rt.jar")) - (setenv "JAVACFLAGS" - (string-append "-cp " - jvmlib "/share/classpath/glibj.zip:" - jvmlib "/share/classpath/tools.zip"))) - #t)) - (add-after 'unpack 'patch-patches - (lambda _ - ;; shebang in patches so that they apply cleanly - (substitute* '("patches/jtreg-jrunscript.patch" - "patches/hotspot/hs23/drop_unlicensed_test.patch") - (("#!/bin/sh") (string-append "#!" (which "sh")))) - #t)) - (add-after 'unpack 'patch-paths + (setenv "CLASSPATH" + (string-join + (cons (search-input-file inputs "/lib/rt.jar") + (find-files (string-append + (assoc-ref inputs "ant-bootstrap") + "/lib") + "\\.jar$")) + ":")) + ;; This directive is not supported by our simple bootstrap JDK. + (substitute* (find-files "." "\\.java$") + (("@Override") "")))) + (replace 'build (lambda* (#:key inputs #:allow-other-keys) - ;; buildtree.make generates shell scripts, so we need to replace - ;; the generated shebang - (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make") - (("/bin/sh") (which "bash"))) - - (let ((corebin (string-append - (assoc-ref inputs "coreutils") "/bin/")) - (binbin (string-append - (assoc-ref inputs "binutils") "/bin/")) - (grepbin (string-append - (assoc-ref inputs "grep") "/bin/"))) - (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk" - "openjdk/corba/make/common/shared/Defs-linux.gmk") - (("UNIXCOMMAND_PATH = /bin/") - (string-append "UNIXCOMMAND_PATH = " corebin)) - (("USRBIN_PATH = /usr/bin/") - (string-append "USRBIN_PATH = " corebin)) - (("DEVTOOLS_PATH *= */usr/bin/") - (string-append "DEVTOOLS_PATH = " corebin)) - (("COMPILER_PATH *= */usr/bin/") - (string-append "COMPILER_PATH = " - (assoc-ref inputs "gcc") "/bin/")) - (("DEF_OBJCOPY *=.*objcopy") - (string-append "DEF_OBJCOPY = " (which "objcopy")))) - - ;; fix path to alsa header - (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk" - (("ALSA_INCLUDE=/usr/include/alsa/version.h") - (string-append "ALSA_INCLUDE=" - (assoc-ref inputs "alsa-lib") - "/include/alsa/version.h"))) + ;; We can't compile these yet, but we don't need them at this + ;; point anyway. + (delete-file "org/eclipse/jdt/core/JDTCompilerAdapter.java") + (delete-file-recursively "org/eclipse/jdt/internal/antadapter") - ;; fix hard-coded utility paths - (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk" - "openjdk/corba/make/common/shared/Defs-utils.gmk") - (("ECHO *=.*echo") - (string-append "ECHO = " (which "echo"))) - (("^GREP *=.*grep") - (string-append "GREP = " (which "grep"))) - (("EGREP *=.*egrep") - (string-append "EGREP = " (which "egrep"))) - (("CPIO *=.*cpio") - (string-append "CPIO = " (which "cpio"))) - (("READELF *=.*readelf") - (string-append "READELF = " (which "readelf"))) - (("^ *AR *=.*ar") - (string-append "AR = " (which "ar"))) - (("^ *TAR *=.*tar") - (string-append "TAR = " (which "tar"))) - (("AS *=.*as") - (string-append "AS = " (which "as"))) - (("LD *=.*ld") - (string-append "LD = " (which "ld"))) - (("STRIP *=.*strip") - (string-append "STRIP = " (which "strip"))) - (("NM *=.*nm") - (string-append "NM = " (which "nm"))) - (("^SH *=.*sh") - (string-append "SH = " (which "bash"))) - (("^FIND *=.*find") - (string-append "FIND = " (which "find"))) - (("LDD *=.*ldd") - (string-append "LDD = " (which "ldd"))) - (("NAWK *=.*(n|g)awk") - (string-append "NAWK = " (which "gawk"))) - (("XARGS *=.*xargs") - (string-append "XARGS = " (which "xargs"))) - (("UNZIP *=.*unzip") - (string-append "UNZIP = " (which "unzip"))) - (("ZIPEXE *=.*zip") - (string-append "ZIPEXE = " (which "zip"))) - (("SED *=.*sed") - (string-append "SED = " (which "sed")))) - - ;; Some of these timestamps cause problems as they are more than - ;; 10 years ago, failing the build process. - (substitute* - "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties" - (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN") - (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN") - (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON") - (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")) - #t))) - (add-before 'configure 'set-additional-paths - (lambda* (#:key inputs #:allow-other-keys) - (setenv "CPATH" - (string-append (assoc-ref inputs "libxrender") - "/include/X11/extensions" ":" - (assoc-ref inputs "libxtst") - "/include/X11/extensions" ":" - (assoc-ref inputs "libxinerama") - "/include/X11/extensions" ":" - (or (getenv "CPATH") ""))) - (setenv "ALT_CUPS_HEADERS_PATH" - (string-append (assoc-ref inputs "cups") - "/include")) - (setenv "ALT_FREETYPE_HEADERS_PATH" - (string-append (assoc-ref inputs "freetype") - "/include")) - (setenv "ALT_FREETYPE_LIB_PATH" - (string-append (assoc-ref inputs "freetype") - "/lib")) - #t)) - (add-before 'build 'disable-os-version-check - ;; allow build on linux major version change - (lambda _ - (setenv "DISABLE_HOTSPOT_OS_VERSION_CHECK" "ok") - #t)) + ;; Create a simple manifest to make ecj executable. + (mkdir-p "META-INF") + (with-output-to-file "META-INF/MANIFESTS.MF" + (lambda _ + (display "Manifest-Version: 1.0 +Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"))) + + ;; Compile it all! + (apply invoke "javac" + (find-files "." "\\.java$")) + + ;; Pack it all up! We don't use "jar" here, because + ;; it doesn't produce reproducible zip archives. + ;; XXX: copied from (gnu build install) + (for-each (lambda (file) + (let ((s (lstat file))) + (unless (eq? (stat:type s) 'symlink) + (utime file 0 0 0 0)))) + (find-files "." #:directories? #t)) + + ;; It is important that the manifest appears first. + (apply invoke "zip" "-0" "-X" "ecj-bootstrap.jar" + "META-INF/MANIFESTS.MF" + (delete "./META-INF/MANIFESTS.MF" + (find-files "." ".*" #:directories? #t))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (let ((doc (string-append (assoc-ref outputs "doc") - "/share/doc/icedtea")) - (jre (assoc-ref outputs "out")) - (jdk (assoc-ref outputs "jdk"))) - (copy-recursively "openjdk.build/docs" doc) - (copy-recursively "openjdk.build/j2re-image" jre) - (copy-recursively "openjdk.build/j2sdk-image" jdk)) - #t))))) + (let ((share (string-append (assoc-ref outputs "out") + "/share/java/"))) + (mkdir-p share) + (install-file "ecj-bootstrap.jar" share))))))) (native-inputs - `(("ant" ,ant-bootstrap) - ("alsa-lib" ,alsa-lib) - ("attr" ,attr) - ("classpath" ,classpath-devel) - ("coreutils" ,coreutils) - ("cpio" ,cpio) - ("cups" ,cups) - ("ecj" ,ecj-bootstrap) - ("ecj-javac" ,ecj-javac-wrapper-final) - ("fastjar" ,fastjar) - ("fontconfig" ,fontconfig) - ("freetype" ,freetype) - ("gtk" ,gtk+-2) - ("gawk" ,gawk) - ("giflib" ,giflib) - ("grep" ,grep) - ("jamvm" ,jamvm) - ("lcms" ,lcms) - ("libjpeg" ,libjpeg-turbo) - ("libnsl" ,libnsl) - ("libpng" ,libpng) - ("libtool" ,libtool) - ("libx11" ,libx11) - ("libxcomposite" ,libxcomposite) - ("libxi" ,libxi) - ("libxinerama" ,libxinerama) - ("libxrender" ,libxrender) - ("libxslt" ,libxslt) ;for xsltproc - ("libxt" ,libxt) - ("libxtst" ,libxtst) - ("mit-krb5" ,mit-krb5) - ("nss" ,nss) - ("nss-certs" ,nss-certs) - ("perl" ,perl) - ("pkg-config" ,pkg-config) - ("procps" ,procps) ;for "free", even though I'm not sure we should use it - ("unzip" ,unzip) - ("wget" ,wget) - ("which" ,which) - ("zip" ,zip) - ("zlib" ,zlib) - ("openjdk-src" - ,(origin - (method hg-fetch) - (uri (hg-reference - (url "http://hg.openjdk.java.net/jdk6/jdk6/") - (changeset "jdk6-b41"))) - (sha256 - (base32 - "14q47yfg586fs64w30g8mk92m5dkxsvr36zzh0ra99xk5x0x96mv")))) - ("jdk-src" - ,(origin - (method hg-fetch) - (uri (hg-reference - (url "http://hg.openjdk.java.net/jdk6/jdk6/jdk/") - (changeset "jdk6-b41"))) - (sha256 - (base32 - "165824nhg1k1dx6zs9dny0j49rmk35jw5b13dmz8c77jfajml4v9")))) - ("hotspot-src" - ,(origin - (method hg-fetch) - (uri (hg-reference - (url "http://hg.openjdk.java.net/jdk6/jdk6/hotspot/") - (changeset "jdk6-b41"))) - (sha256 - (base32 - "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd")))) - ("corba-src" - ,(origin - (method hg-fetch) - (uri (hg-reference - (url "http://hg.openjdk.java.net/jdk6/jdk6/corba/") - (changeset "jdk6-b41"))) - (sha256 - (base32 - "1p9g1r9dnax2iwp7yb59qx7m4nmshqhwmrb2b8jj8zgbd9dl2i3q")))) - ("langtools-src" - ,(origin - (method hg-fetch) - (uri (hg-reference - (url "http://hg.openjdk.java.net/jdk6/jdk6/langtools/") - (changeset "jdk6-b41"))) - (sha256 - (base32 - "1x52wd67fynbbd9ild6fb4wvba3f5hhwk03qdjfazd0a1qr37z3d")))) - ("jaxp-src" - ,(origin - (method hg-fetch) - (uri (hg-reference - (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxp/") - (changeset "jdk6-b41"))) - (sha256 - (base32 - "0shlqrvzpr4nrkmv215lbxnby63s3yvbdh1yxcayznsyqwa4nlxm")))) - ("jaxws-src" - ,(origin - (method hg-fetch) - (uri (hg-reference - (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxws/") - (changeset "jdk6-b41"))) - (sha256 - (base32 - "0835lkw8vib1xhp8lxnybhlvzdh699hbi4mclxanydjk63zbpxk0")))))) - (home-page "http://icedtea.classpath.org") - (synopsis "Java development kit") - (description - "This package provides the OpenJDK built with the IcedTea build harness. -This version of the OpenJDK is no longer maintained and is only used for -bootstrapping purposes.") - ;; IcedTea is released under the GPL2 + Classpath exception, which is the - ;; same license as both GNU Classpath and OpenJDK. - (license license:gpl2+))) + (list ant-bootstrap classpath-devel ecj-javac-wrapper-final jamvm + unzip zip)) + (home-page "https://eclipse.org") + (synopsis "Eclipse Java development tools core batch compiler") + (description "This package provides the Eclipse Java core batch compiler +for bootstrapping purposes. The @dfn{Eclipse compiler for Java} (ecj) is a +requirement for all GNU Classpath releases after version 0.93. This version +supports sufficient parts of Java 7 to build Icedtea 2.x.") + (license license:epl1.0))) + +(define ecj4-javac-wrapper + (package + (inherit ecj-javac-wrapper) + (native-inputs + (list guile-3.0 ecj4-bootstrap jamvm classpath-devel)))) + +(define jamvm-with-ecj4 + (package + (inherit jamvm) + (inputs + (modify-inputs (package-inputs jamvm) + (replace "ecj-javac-wrapper" ecj4-javac-wrapper))))) (define-public icedtea-7 (let* ((version "2.6.13") @@ -1217,9 +812,6 @@ bootstrapping purposes.") ;; gremlin) doesn't support it yet, so skip this phase. #:validate-runpath? #f - ;; Apparently, the C locale is needed for some of the tests. - #:locale "C" - #:modules ((guix build utils) (guix build gnu-build-system) (ice-9 match) @@ -1228,9 +820,10 @@ bootstrapping purposes.") (srfi srfi-26)) #:configure-flags - ;; TODO: package pcsc and sctp, and add to inputs - `("--disable-system-pcsc" - "--disable-system-sctp" + ;; TODO: package sctp and add to inputs + `("--disable-system-sctp" + "--enable-system-pcsc" + "--enable-system-lcms" "--enable-bootstrap" "--enable-nss" "--without-rhino" @@ -1239,9 +832,17 @@ bootstrapping purposes.") "--disable-downloading" "--disable-tests" ;they are run in the check phase instead "--with-openjdk-src-dir=./openjdk.src" + ,(string-append "--with-ecj=" + (assoc-ref %build-inputs "ecj4-javac-wrapper") + "/bin/javac") ,(string-append "--with-jdk-home=" - (assoc-ref %build-inputs "jdk"))) - + (assoc-ref %build-inputs "classpath")) + ,(string-append "--with-java=" + (assoc-ref %build-inputs "jamvm") + "/bin/jamvm") + ,(string-append "--with-jar=" + (assoc-ref %build-inputs "classpath") + "/bin/gjar")) #:phases (modify-phases %standard-phases (replace 'unpack @@ -1265,8 +866,20 @@ bootstrapping purposes.") (filter (cut string-suffix? "-drop" <>) (map (match-lambda ((name . _) name)) - inputs)))) - #t))) + inputs))))))) + (add-after 'unpack 'use-classpath + (lambda* (#:key inputs #:allow-other-keys) + (let ((tools (search-input-file inputs "/share/classpath/tools.zip")) + (rt.jar (search-input-file inputs "/lib/rt.jar"))) + ;; GNU Classpath does not provide rt.jar, but jamvm provides + ;; Classpath's glibj.zip as rt.jar, so we just use that. + (substitute* "Makefile.in" + (("\\$\\(SYSTEM_JDK_DIR\\)/jre/lib/rt.jar") rt.jar)) + ;; Make sure we can find all classes. + (setenv "CLASSPATH" + (string-append rt.jar ":" tools)) + (setenv "JAVACFLAGS" + (string-append "-cp " rt.jar ":" tools))))) (add-after 'unpack 'patch-bitrot (lambda _ (substitute* '("patches/boot/revert-6973616.patch" @@ -1277,8 +890,26 @@ bootstrapping purposes.") ;; included. It is provided by the libc instead. (substitute* '("configure" "openjdk.src/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c") - (("attr/xattr.h") "sys/xattr.h")) - #t)) + (("attr/xattr.h") "sys/xattr.h")))) + (add-after 'unpack 'fix-openjdk + (lambda _ + (substitute* "openjdk.src/jdk/make/common/Defs-linux.gmk" + (("CFLAGS_COMMON = -fno-strict-aliasing" all) + (string-append all " -fcommon"))) + (substitute* + '("openjdk.src/jdk/src/solaris/native/java/net/PlainSocketImpl.c" + "openjdk.src/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c") + (("#include <sys/sysctl.h>") + "#include <linux/sysctl.h>")) + ;; It looks like the "h = 31 * h + c" line of the jsum() + ;; function gets miscompiled. After a few iterations of the loop + ;; the result of "31 * h" is always 0x8000000000000000. + ;; Bad optimization maybe... + ;; Transform "31 * h + c" into a convoluted "32 * h + c - h" + ;; as a workaround. + (substitute* "openjdk.src/hotspot/src/share/vm/memory/dump.cpp" + (("h = 31 \\* h \\+ c;") + "jlong h0 = h;\nfor(int i = 0; i < 5; i++) h += h;\nh += c - h0;")))) (add-after 'unpack 'fix-x11-extension-include-path (lambda* (#:key inputs #:allow-other-keys) (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk" @@ -1291,21 +922,20 @@ bootstrapping purposes.") "/include/X11/extensions" " -I" (assoc-ref inputs "libxinerama") "/include/X11/extensions")) - (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") "")) - #t)) + (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") "")))) (add-after 'unpack 'patch-paths - (lambda _ + (lambda* (#:key inputs #:allow-other-keys) ;; buildtree.make generates shell scripts, so we need to replace ;; the generated shebang (substitute* '("openjdk.src/hotspot/make/linux/makefiles/buildtree.make") (("/bin/sh") (which "bash"))) (let ((corebin (string-append - (assoc-ref %build-inputs "coreutils") "/bin/")) + (assoc-ref inputs "coreutils") "/bin/")) (binbin (string-append - (assoc-ref %build-inputs "binutils") "/bin/")) + (assoc-ref inputs "binutils") "/bin/")) (grepbin (string-append - (assoc-ref %build-inputs "grep") "/bin/"))) + (assoc-ref inputs "grep") "/bin/"))) (substitute* '("openjdk.src/jdk/make/common/shared/Defs-linux.gmk" "openjdk.src/corba/make/common/shared/Defs-linux.gmk") (("UNIXCOMMAND_PATH = /bin/") @@ -1316,7 +946,7 @@ bootstrapping purposes.") (string-append "DEVTOOLS_PATH = " corebin)) (("COMPILER_PATH *= */usr/bin/") (string-append "COMPILER_PATH = " - (assoc-ref %build-inputs "gcc") "/bin/")) + (assoc-ref inputs "gcc") "/bin/")) (("DEF_OBJCOPY *=.*objcopy") (string-append "DEF_OBJCOPY = " (which "objcopy")))) @@ -1324,7 +954,7 @@ bootstrapping purposes.") (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk" (("ALSA_INCLUDE=/usr/include/alsa/version.h") (string-append "ALSA_INCLUDE=" - (assoc-ref %build-inputs "alsa-lib") + (assoc-ref inputs "alsa-lib") "/include/alsa/version.h"))) ;; fix hard-coded utility paths @@ -1376,8 +1006,7 @@ bootstrapping purposes.") (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN") (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN") (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON") - (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY"))) - #t)) + (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY"))))) (add-before 'configure 'set-additional-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk" @@ -1405,13 +1034,11 @@ bootstrapping purposes.") "/include")) (setenv "ALT_FREETYPE_LIB_PATH" (string-append (assoc-ref inputs "freetype") - "/lib")) - #t)) + "/lib")))) (add-before 'build 'disable-os-version-check - ;; allow build on linux major version change - (lambda _ - (setenv "DISABLE_HOTSPOT_OS_VERSION_CHECK" "ok") - #t)) + ;; allow build on linux major version change + (lambda _ + (setenv "DISABLE_HOTSPOT_OS_VERSION_CHECK" "ok"))) (add-before 'check 'fix-test-framework (lambda _ ;; Fix PATH in test environment @@ -1423,8 +1050,7 @@ bootstrapping purposes.") (substitute* "openjdk.src/hotspot/test/test_env.sh" (("/bin/rm") (which "rm")) (("/bin/cp") (which "cp")) - (("/bin/mv") (which "mv"))) - #t)) + (("/bin/mv") (which "mv"))))) (add-before 'check 'fix-hotspot-tests (lambda _ (with-directory-excursion "openjdk.src/hotspot/test/" @@ -1437,8 +1063,7 @@ bootstrapping purposes.") "runtime/7110720/Test7110720.sh") (("/bin/rm") (which "rm")) (("/bin/cp") (which "cp")) - (("/bin/mv") (which "mv")))) - #t)) + (("/bin/mv") (which "mv")))))) (add-before 'check 'fix-jdk-tests (lambda _ (with-directory-excursion "openjdk.src/jdk/test/" @@ -1494,33 +1119,31 @@ bootstrapping purposes.") (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java" (("/bin/chmod") (which "chmod"))) (substitute* "java/util/zip/ZipFile/Assortment.java" - (("/bin/sh") (which "sh")))) - #t)) + (("/bin/sh") (which "sh")))))) (replace 'check - (lambda _ + (lambda* (#:key tests? #:allow-other-keys) ;; The "make check-*" targets always return zero, so we need to ;; check for errors in the associated log files to determine ;; whether any tests have failed. - (use-modules (ice-9 rdelim)) - (let* ((error-pattern (make-regexp "^(Error|FAILED):.*")) - (checker (lambda (port) - (let loop () - (let ((line (read-line port))) - (cond - ((eof-object? line) #t) - ((regexp-exec error-pattern line) - (error "test failed")) - (else (loop))))))) - (run-test (lambda (test) - (invoke "make" test) - (call-with-input-file - (string-append "test/" test ".log") - checker)))) - (when #f ; skip tests + (when tests? + (use-modules (ice-9 rdelim)) + (let* ((error-pattern (make-regexp "^(Error|FAILED):.*")) + (checker (lambda (port) + (let loop () + (let ((line (read-line port))) + (cond + ((eof-object? line) #t) + ((regexp-exec error-pattern line) + (error "test failed")) + (else (loop))))))) + (run-test (lambda (test) + (invoke "make" test) + (call-with-input-file + (string-append "test/" test ".log") + checker)))) (run-test "check-hotspot") (run-test "check-langtools") - (run-test "check-jdk")) - #t))) + (run-test "check-jdk"))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((doc (string-append (assoc-ref outputs "doc") @@ -1529,8 +1152,7 @@ bootstrapping purposes.") (jdk (assoc-ref outputs "jdk"))) (copy-recursively "openjdk.build/docs" doc) (copy-recursively "openjdk.build/j2re-image" jre) - (copy-recursively "openjdk.build/j2sdk-image" jdk)) - #t)) + (copy-recursively "openjdk.build/j2sdk-image" jdk)))) ;; Some of the libraries in the lib/amd64 folder link to libjvm.so. ;; But that shared object is located in the server/ folder, so it ;; cannot be found. This phase creates a symbolic link in the @@ -1563,17 +1185,17 @@ bootstrapping purposes.") (string-drop-right (%current-system) 6))))))) (symlink (string-append lib-path "/server/libjvm.so") - (string-append lib-path "/libjvm.so"))) - #t)) + (string-append lib-path "/libjvm.so"))))) ;; By default IcedTea only generates an empty keystore. In order to ;; be able to use certificates in Java programs we need to generate a ;; keystore from a set of certificates. For convenience we use the ;; certificates from the nss-certs package. (add-after 'install 'install-keystore (lambda* (#:key inputs outputs #:allow-other-keys) + (use-modules (ice-9 rdelim)) (let* ((keystore "cacerts") - (certs-dir (string-append (assoc-ref inputs "nss-certs") - "/etc/ssl/certs")) + (certs-dir (search-input-directory inputs + "etc/ssl/certs")) (keytool (string-append (assoc-ref outputs "jdk") "/bin/keytool"))) (define (extract-cert file target) @@ -1633,8 +1255,7 @@ bootstrapping purposes.") "/lib/security")) (install-file keystore (string-append (assoc-ref outputs "jdk") - "/jre/lib/security")) - #t)))))) + "/jre/lib/security")))))))) (native-inputs `(("openjdk-src" ,(drop "openjdk" @@ -1667,10 +1288,14 @@ bootstrapping purposes.") "icedtea-7-hotspot-aarch64-use-c++98.patch")))) ("ant" ,ant-bootstrap) ("attr" ,attr) + ("classpath" ,classpath-devel) ("coreutils" ,coreutils) ("diffutils" ,diffutils) ;for tests + ("ecj4-javac-wrapper" ,ecj4-javac-wrapper) + ("fastjar" ,fastjar) ;only for the configure phase; we actually use gjar ("gawk" ,gawk) ("grep" ,grep) + ("jamvm" ,jamvm-with-ecj4) ("libtool" ,libtool) ("pkg-config" ,pkg-config) ("wget" ,wget) @@ -1678,32 +1303,31 @@ bootstrapping purposes.") ("cpio" ,cpio) ("zip" ,zip) ("unzip" ,unzip) - ("fastjar" ,fastjar) ("libxslt" ,libxslt) ;for xsltproc ("nss-certs" ,nss-certs) ("perl" ,perl) - ("procps" ,procps) ;for "free", even though I'm not sure we should use it - ("jdk" ,icedtea-6 "jdk"))) + ("procps" ,procps))) ;for "free", even though I'm not sure we should use it (inputs - `(("alsa-lib" ,alsa-lib) - ("cups" ,cups) - ("libx11" ,libx11) - ("libxcomposite" ,libxcomposite) - ("libxt" ,libxt) - ("libxtst" ,libxtst) - ("libxi" ,libxi) - ("libxinerama" ,libxinerama) - ("libxrender" ,libxrender) - ("libjpeg" ,libjpeg-turbo) - ("libpng" ,libpng) - ("mit-krb5" ,mit-krb5) - ("nss" ,nss) - ("giflib" ,giflib) - ("fontconfig" ,fontconfig) - ("freetype" ,freetype) - ("lcms" ,lcms) - ("zlib" ,zlib) - ("gtk" ,gtk+-2))) + (list alsa-lib + cups + fontconfig + freetype + giflib + gtk+-2 + lcms + libjpeg-turbo + libpng + libx11 + libxcomposite + libxi + libxinerama + libxrender + libxt + libxtst + mit-krb5 + nss + pcsc-lite + zlib)) (home-page "http://icedtea.classpath.org") (synopsis "Java development kit") (description @@ -1718,7 +1342,7 @@ IcedTea build harness.") (license license:gpl2+)))) (define-public icedtea-8 - (let* ((version "3.7.0") + (let* ((version "3.19.0") (drop (lambda (name hash) (origin (method url-fetch) @@ -1727,7 +1351,7 @@ IcedTea build harness.") "/icedtea8/" version "/" name ".tar.xz")) (sha256 (base32 hash)))))) (package (inherit icedtea-7) - (version "3.7.0") + (version "3.19.0") (source (origin (method url-fetch) (uri (string-append @@ -1735,26 +1359,24 @@ IcedTea build harness.") version ".tar.xz")) (sha256 (base32 - "09yqzn8rpccs7cyv89hhy5zlznpgqw5x3jz0w1ccp0cz1vgs8l5w")) + "1cmms7cb2sav3ywc36ynqmybzx73sl279rm6j8i5nqrmp98ixmpf")) (modules '((guix build utils))) (snippet - '(begin - (substitute* '("configure" - "acinclude.m4") - ;; Do not embed build time - (("(DIST_ID=\"Custom build).*$" _ prefix) - (string-append prefix "\"\n")) - ;; Do not leak information about the build host - (("DIST_NAME=\"\\$build_os\"") - "DIST_NAME=\"guix\"")) - #t)))) + '(substitute* '("configure" + "acinclude.m4") + ;; Do not embed build time + (("(DIST_ID=\"Custom build).*$" _ prefix) + (string-append prefix "\"\n")) + ;; Do not leak information about the build host + (("DIST_NAME=\"\\$build_os\"") + "DIST_NAME=\"guix\""))))) (arguments `(#:imported-modules ((guix build ant-build-system) (guix build syscalls) ,@%gnu-build-system-modules) - #:disallowed-references ((,icedtea-7 "jdk")) + #:disallowed-references ,(list (gexp-input icedtea-7 "jdk")) ,@(substitute-keyword-arguments (package-arguments icedtea-7) ((#:modules modules) @@ -1767,7 +1389,8 @@ IcedTea build harness.") (srfi srfi-26))) ((#:configure-flags flags) `(let ((jdk (assoc-ref %build-inputs "jdk"))) - `( ;;"--disable-bootstrap" + `("CFLAGS=-fcommon" + "CXXFLAGS=-fcommon" "--enable-bootstrap" "--enable-nss" ,(string-append "--with-parallel-jobs=" @@ -1785,6 +1408,7 @@ IcedTea build harness.") (delete 'set-additional-paths) (delete 'patch-patches) (delete 'patch-bitrot) + (delete 'use-classpath) ;; Prevent the keytool from recording the current time when ;; adding certificates at build time. (add-after 'unpack 'patch-keystore @@ -1830,8 +1454,14 @@ new Date();")) "warning: failed to substitute: ~a~%" file)))) (find-files "openjdk.src/jdk/src/solaris/native" - "\\.c|\\.h")) - #t))) + "\\.c|\\.h"))))) + (replace 'fix-openjdk + (lambda _ + (substitute* + '("openjdk.src/jdk/src/solaris/native/java/net/PlainSocketImpl.c" + "openjdk.src/jdk/src/solaris/native/java/net/PlainDatagramSocketImpl.c") + (("#include <sys/sysctl.h>") + "#include <linux/sysctl.h>")))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) (let ((doc (string-append (assoc-ref outputs "doc") @@ -1844,45 +1474,45 @@ new Date();")) ;; Install the nss.cfg file to JRE to enable SSL/TLS ;; support via NSS. (copy-file (string-append jdk "/jre/lib/security/nss.cfg") - (string-append jre "/lib/security/nss.cfg")) - #t))) + (string-append jre "/lib/security/nss.cfg"))))) (add-after 'install 'strip-jar-timestamps (assoc-ref ant:%standard-phases 'strip-jar-timestamps))))))) (native-inputs `(("jdk" ,icedtea-7 "jdk") ("openjdk-src" ,(drop "openjdk" - "1mj6xgmw31i6qd30qi9dmv7160fbcfq5ikz1jwjihdg2793il19p")) + "1l3bzmd3s38scxpwamfhnwbv7vndgjq6hz3bl58437fgl9kgbl69")) ("aarch32-drop" ,(drop "aarch32" - "1wb8k5zm40zld0986dvmlh5xh3gyixbg9h26sl662zy92amhmyyg")) + "0k4dwpi3x3lj41rj32xyxbn76r7cb2g2whh44r1z4iwhw1xd2lpq")) ("corba-drop" ,(drop "corba" - "11ma4zz0599cy70xd219v7a8vin7p96xrhhz3wsaw6cjhkzpagah")) + "0xhh6gf5gh5c6vf1607xcy49wnp5prch2rim13x14wvsn817xf0r")) ("jaxp-drop" ,(drop "jaxp" - "14m1y0z0fbm5z5zjw3vnq85py8dma84bi3f9cw8rhdyc6skk8q4i")) + "043g335rgi5ipl8dp3q2cc3gcfhxk77ipxs43sv344z71bn8xmxr")) ("jaxws-drop" ,(drop "jaxws" - "09andnm6xaasnp963hgx42yiflifiljp9z7z85jrfyc5z8a5whmf")) + "1pc0pv4v2mn2mjc0vp19d94v2150xigyhxsmckqasy647zcm6w0r")) ("jdk-drop" ,(drop "jdk" - "0s6lcpc0zckz2fnq98aqf28nz9y3wbi41a3kyaqqa2abwbkm1zwl")) + "1742lcm55l8zhi522x83v65ccr0rd6511q9rj7crw44x3ymdrhrv")) ("langtools-drop" ,(drop "langtools" - "15wizy123vhk40chl1b4p552jf2pw2hdww0myf11qab425axz4nw")) + "08iz7p2xcddlphipf6gahyabr5cawlnydap12p1n4f0md069b50b")) ("hotspot-drop" ,(drop "hotspot" - "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm")) + "1ffaxfnb3yn1i7crivqigc1r1q0z6cp044i6nfring4z6c8pfhd2")) ("nashorn-drop" ,(drop "nashorn" - "19pzl3ppaw8j6r5cnyp8qiw3hxijh3hdc46l39g5yfhdl4pr4hpa")) + "15fn7cpm2i1npa88h57njxg0f8qkrqhrc30pb54d3hxlx5zyjl94")) ("shenandoah-drop" ,(drop "shenandoah" - "0k33anxdzw1icn072wynfmmdjhsv50hay0j1sfkfxny12rb3vgdy")) + "1jjzjjx1ykyhbc4llh8249dlr8j5g1ki6r7g9baj2mxyb9whc5nq")) ,@(fold alist-delete (package-native-inputs icedtea-7) - '("jdk" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop" - "jdk-drop" "langtools-drop" "hotspot-drop"))))))) + '("openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop" + "jdk-drop" "langtools-drop" "hotspot-drop" + "classpath" "ecj4-javac-wrapper" "jamvm" "fastjar"))))))) (define-public openjdk9 (package @@ -1910,7 +1540,8 @@ new Date();")) ((guix build syscalls) ,@%gnu-build-system-modules) - #:disallowed-references (,icedtea-8 (,icedtea-8 "jdk")) + #:disallowed-references ,(list (gexp-input icedtea-8) + (gexp-input icedtea-8 "jdk")) #:phases (modify-phases %standard-phases @@ -1925,7 +1556,12 @@ new Date();")) (lambda* (#:key inputs outputs #:allow-other-keys) ;; TODO: unbundle libpng and lcms (invoke "bash" "./configure" - (string-append "--with-freetype=" (assoc-ref inputs "freetype")) + ;; Add flags for compilation with gcc >= 10 + ,(string-append "--with-extra-cflags=-fcommon" + " -fno-delete-null-pointer-checks" + " -fno-lifetime-dse") + (string-append "--with-freetype=" + (assoc-ref inputs "freetype")) "--disable-freetype-bundling" "--disable-warnings-as-errors" "--disable-hotspot-gtest" @@ -2099,17 +1735,28 @@ new Date();")) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (invoke "bash" "./configure" - (string-append "--with-freetype=" (assoc-ref inputs "freetype")) + ;; Add flags for compilation with gcc >= 10 + ,(string-append "--with-extra-cflags=-fcommon" + " -fno-delete-null-pointer-checks" + " -fno-lifetime-dse") + (string-append "--with-freetype=" + (assoc-ref inputs "freetype")) "--disable-freetype-bundling" "--disable-warnings-as-errors" "--disable-hotspot-gtest" "--with-giflib=system" "--with-libjpeg=system" "--with-native-debug-symbols=zipped" - (string-append "--prefix=" (assoc-ref outputs "out"))) - #t)))) + (string-append "--prefix=" (assoc-ref outputs "out"))))) + (add-after 'unpack 'disable-warnings-as-errors + (lambda _ + ;; It looks like the "--disable-warnings-as-errors" option of + ;; the 'configure' phase is not working. + (substitute* "make/autoconf/generated-configure.sh" + (("-Werror") "")))))) ((#:disallowed-references _ '()) - `(,openjdk9 (,openjdk9 "jdk"))))) + `(,(gexp-input openjdk9) + ,(gexp-input openjdk9 "jdk"))))) (native-inputs `(("openjdk9" ,openjdk9) ("openjdk9:jdk" ,openjdk9 "jdk") @@ -2121,14 +1768,15 @@ new Date();")) (define-public openjdk11 (package (name "openjdk") - (version "11.28") + (version "11.0.13") (source (origin (method url-fetch) - (uri "http://hg.openjdk.java.net/jdk/jdk/archive/76072a077ee1.tar.bz2") + (uri (string-append "https://openjdk-sources.osci.io/openjdk11/openjdk-" + version "-ga.tar.xz")) (file-name (string-append name "-" version ".tar.bz2")) (sha256 (base32 - "0v705w1s9lrqalzahir78pk397rkk9gfvzq821yv8h3xha0bqi6w")) + "0xavz7msaadprq65p5bhp6sxcyp12p0zlbhb3aaz0cvp21c9pdm9")) (modules '((guix build utils))) (snippet `(begin @@ -2140,12 +1788,17 @@ new Date();")) `(#:imported-modules ((guix build syscalls) ,@%gnu-build-system-modules) - #:disallowed-references (,openjdk10 (,openjdk10 "jdk")) + #:disallowed-references ,(list (gexp-input openjdk10) + (gexp-input openjdk10 "jdk")) #:tests? #f; requires jtreg ;; TODO package jtreg #:configure-flags - `("--disable-option-checking" ; --enable-fast-install default flag errors otherwise + `(;; Add flags for compilation with gcc >= 10 + ,(string-append "--with-extra-cflags=-fcommon" + " -fno-delete-null-pointer-checks" + " -fno-lifetime-dse") + "--disable-option-checking" ; --enable-fast-install default flag errors otherwise "--disable-warnings-as-errors" ;; make validate-runpath pass, see: http://issues.guix.info/issue/32894 "--with-native-debug-symbols=zipped" @@ -2365,6 +2018,7 @@ new Date();")) ("libpng" ,libpng) ("libx11" ,libx11) ("libxext" ,libxext) + ("libxrandr" ,libxrandr) ("libxrender" ,libxrender) ("libxt" ,libxt) ("libxtst" ,libxtst))) @@ -2571,14 +2225,44 @@ new Date();")) ;; The build system copies a few .template files from the ;; source directory into the build directory and then modifies ;; them in-place. So these files have to be writable. - (for-each - (lambda (file) - (invoke "chmod" "u+w" file)) + (for-each make-file-writable (find-files "src/java.base/share/classes/jdk/internal/misc/" - "\\.template$")) - #t)))))) + "\\.template$")))))))) (home-page "https://openjdk.java.net/projects/jdk/16"))) +(define-public openjdk17 + (package + (inherit openjdk16) + (name "openjdk") + (version "17.0.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/openjdk/jdk17u") + (commit (string-append "jdk-" version "-ga")))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1l1jgbz8q7zq66npfg88r0l5xga427vrz35iys09j44b6qllrldd")))) + (native-inputs + `(("autoconf" ,autoconf) + ("openjdk16:jdk" ,openjdk16 "jdk") + ("pkg-config" ,pkg-config) + ("unzip" ,unzip) + ("which" ,which) + ("zip" ,zip))) + (arguments + (substitute-keyword-arguments (package-arguments openjdk16) + ((#:phases phases) + `(modify-phases ,phases + (replace 'fix-java-shebangs + (lambda _ + ;; This file was "fixed" by patch-source-shebangs, but it requires + ;; this exact first line. + (substitute* "make/data/blockedcertsconverter/blocked.certs.pem" + (("^#!.*") "#! java BlockedCertsConverter SHA-256\n")))))))) + (home-page "https://openjdk.java.net/projects/jdk/17"))) + (define-public icedtea icedtea-8) @@ -2603,6 +2287,7 @@ new Date();")) (substitute-keyword-arguments (package-arguments ant-bootstrap) ((#:phases phases) `(modify-phases ,phases + (delete 'define-java-environment-variables) (add-after 'unpack 'remove-scripts ;; Remove bat / cmd scripts for DOS as well as the antRun and runant ;; wrappers. @@ -2675,8 +2360,8 @@ new Date();")) (delete-file-recursively lib) #t))))))) (inputs - `(("java-commons-bcel" ,java-commons-bcel) - ,@(package-inputs ant/java8))))) + (modify-inputs (package-inputs ant/java8) + (prepend java-commons-bcel))))) (define-public ant-junit (package @@ -2707,8 +2392,91 @@ new Date();")) (delete-file-recursively lib) #t))))))) (inputs - `(("java-junit" ,java-junit) - ,@(package-inputs ant/java8))))) + (modify-inputs (package-inputs ant/java8) + (prepend java-junit))))) + +(define-public libantlr3c + (package + (name "libantlr3c") + (version "3.4") + (source + (origin + (method url-fetch) + (uri + (string-append "https://www.antlr3.org/download/C/" + name "-" version ".tar.gz")) + (sha256 + (base32 "0lpbnb4dq4azmsvlhp6khq1gy42kyqyjv8gww74g5lm2y6blm4fa")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list "--enable-debuginfo" + "--disable-static" + ,@(if (target-64bit?) + `("--enable-64bit") + '())))) + (synopsis "ANTLR C Library") + (description "LIBANTLR3C provides run-time C libraries for ANTLR3 (ANother +Tool for Language Recognition v3).") + (home-page "https://www.antlr3.org/") + (license license:bsd-3))) + +(define-public drip + ;; Last release is from 2014, with a few important commits afterwards. + (let ((commit "a4bd00df0199e78243847f06cc04ecaea31f8f08")) + (package + (name "drip") + (version (git-version "0.2.4" "1" commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ninjudd/drip") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0wzmjwfyldr3jn49517xd8yn7dgdk8h88qkga3kjyg1zc375ylg2")))) + (build-system gnu-build-system) + (native-inputs + `(("jdk" ,icedtea "jdk"))) + (arguments + `(#:tests? #f ; No tests. + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'install 'fix-wrapper + (lambda* (#:key inputs #:allow-other-keys) + (let ((jps (search-input-file inputs "/bin/jps"))) + (substitute* "bin/drip" + (("jps") jps) + (("brew update && brew upgrade drip") "guix pull && guix install drip") + ;; No need to make: + (("\\(cd -- \"\\$drip_dir\" && make -s\\) \\|\\| exit 1") "") + ;; No need to include source: + (("\\[\\[ -r \\$drip_dir/src/org/flatland/drip/Main\\.java \\]\\]") + "true")) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (share (string-append out "/share/drip"))) + (mkdir-p bin) + (for-each + (lambda (file) + (install-file (string-append "bin/" file) bin)) + '("drip" "drip_daemon" "drip_proxy")) + (install-file "drip.jar" share) + (substitute* (string-append bin "/drip") + (("drip_dir=\\$bin_dir/..") + (string-append "drip_dir=" share))) + #t)))))) + (home-page "https://github.com/ninjudd/drip") + (synopsis "Faster Java Virtual Machine launching") + (description "Drip is a launcher for the Java Virtual Machine that +provides much faster startup times than the @command{java} command. The @command{drip} +script is intended to be a drop-in replacement for the @command{java} command, +only faster.") + (license license:epl1.0)))) (define-public java-openjfx-build (package @@ -2746,11 +2514,9 @@ new Date();")) "buildSrc/src/main/java/com/sun/scenario/effect/compiler" "buildSrc/src/main/antlr/JSL.g")))))) (inputs - `(("antlr3" ,antlr3) - ("java-stringtemplate" ,java-stringtemplate))) + (list antlr3 java-stringtemplate)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://openjfx.io") (synopsis "Graphical application toolkit in Java") (description "OpenJFX is a client application platform for desktop, @@ -2786,7 +2552,7 @@ distribution.") (delete-file "com/sun/javafx/runtime/VersionInfoTest.java")) #t))))) (propagated-inputs - `(("java-openjfx-build" ,java-openjfx-build))) + (list java-openjfx-build)) (description "OpenJFX is a client application platform for desktop, mobile and embedded systems built on Java. Its goal is to produce a modern, efficient, and fully featured toolkit for developing rich client @@ -2881,8 +2647,7 @@ distribution."))) (string-append target new-name)))) (find-files "netbeans" "\\.so$")))))))) (propagated-inputs - `(("java-openjfx-base" ,java-openjfx-base) - ("java-swt" ,java-swt))) + (list java-openjfx-base java-swt)) ;; XXX: for unknown reasons ;; modules/graphics/src/main/native-prism-sw/JNativeSurface.c is missing ;; in this revision. @@ -3040,9 +2805,9 @@ debugging, etc.") #t)))) (arguments `(#:make-flags ; bootstrap from javacc-4 - (list (string-append "-Dbootstrap-jar=" - (assoc-ref %build-inputs "javacc") - "/share/java/javacc.jar")) + ,#~(list (string-append "-Dbootstrap-jar=" + #$(this-package-native-input "javacc") + "/share/java/javacc.jar")) #:test-target "test" #:phases (modify-phases %standard-phases @@ -3068,7 +2833,7 @@ debugging, etc.") #t)))))) (native-inputs - `(("javacc" ,javacc-4))))) + (list javacc-4)))) ;; This is the last 3.x release of ECJ (define-public java-ecj-3 @@ -3136,7 +2901,7 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n" #t)) (replace 'install (install-jars "."))))) (native-inputs - `(("unzip" ,unzip))))) + (list unzip)))) (define-public java-ecj (package (inherit java-ecj-3) @@ -3219,19 +2984,22 @@ Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n" (lambda* (#:key inputs #:allow-other-keys) (substitute* "build/build.xml" (("\\$\\{lib\\}/testng/testng-jdk15.jar") - (string-append (assoc-ref inputs "java-testng") - "/share/java/java-testng.jar")) + (search-input-file inputs + "/share/java/java-testng.jar")) (("\\$\\{lib\\}/commons-lang/commons-lang.jar") - (string-append (assoc-ref inputs "java-commons-lang") - "/share/java/commons-lang-" - ,(package-version java-commons-lang) ".jar")) + (search-input-file inputs + (string-append + "/share/java/commons-lang-" + ,(package-version java-commons-lang) + ".jar"))) (("\\$\\{lib\\}/commons-io/commons-io.jar") - (string-append (assoc-ref inputs "java-commons-io") - "/lib/m2/commons-io/commons-io/" - ,(package-version java-commons-io) - "/commons-io-" - ,(package-version java-commons-io) - ".jar")) + (search-input-file inputs + (string-append + "/lib/m2/commons-io/commons-io/" + ,(package-version java-commons-io) + "/commons-io-" + ,(package-version java-commons-io) + ".jar"))) ;; Remove dependency on svn (("<build-info.*") "") (("\\$\\{revision.number\\}") @@ -3365,11 +3133,9 @@ libraries from the SIS division at ETH Zurich like jHDF5.") (add-after 'unpack 'unpack-build-resources (lambda* (#:key inputs #:allow-other-keys) (mkdir-p "../build_resources") - (invoke "tar" "xf" (assoc-ref inputs "build-resources") - "-C" "../build_resources" - "--strip-components=1") - (mkdir-p "../build_resources/lib") - #t)) + (copy-recursively (assoc-ref inputs "build-resources") + "../build_resources") + (mkdir-p "../build_resources/lib"))) (add-after 'unpack-build-resources 'fix-dependencies (lambda* (#:key inputs #:allow-other-keys) ;; FIXME: There should be a more convenient abstraction for @@ -3404,8 +3170,7 @@ libraries from the SIS division at ETH Zurich like jHDF5.") (rename-file "build-common.xml.new" "build-common.xml")) (substitute* "build/build.xml" (("\\$\\{lib\\}/cisd-base/cisd-base.jar") - (string-append (assoc-ref inputs "java-cisd-base") - "/share/java/sis-base.jar")) + (search-input-file inputs "/share/java/sis-base.jar")) ;; Remove dependency on svn (("<build-info.*") "") (("\\$\\{revision.number\\}") @@ -3417,7 +3182,7 @@ libraries from the SIS division at ETH Zurich like jHDF5.") #t)) (replace 'install (install-jars "targets/dist"))))) (inputs - `(("java-cisd-base" ,java-cisd-base))) + (list java-cisd-base)) (native-inputs `(("ecj" ,java-ecj-3.5) ("build-resources" @@ -3507,29 +3272,32 @@ libraries from the SIS division at ETH Zurich like jHDF5.") (lambda* (#:key inputs #:allow-other-keys) (substitute* "../build_resources/ant/build-common.xml" (("../libraries/testng/testng-jdk15.jar") - (string-append (assoc-ref inputs "java-testng") - "/share/java/java-testng.jar"))) + (search-input-file inputs + "/share/java/java-testng.jar"))) (substitute* "build/build.xml" (("\\$\\{lib\\}/sis-base/sis-base.jar") - (string-append (assoc-ref inputs "java-cisd-base") - "/share/java/sis-base.jar")) + (search-input-file inputs + "/share/java/sis-base.jar")) (("\\$\\{lib\\}/cisd-args4j/cisd-args4j.jar") - (string-append (assoc-ref inputs "java-cisd-args4j") - "/share/java/cisd-args4j.jar")) + (search-input-file inputs + "/share/java/cisd-args4j.jar")) (("\\$\\{lib\\}/commons-lang/commons-lang.jar") - (string-append (assoc-ref inputs "java-commons-lang") - "/share/java/commons-lang-" - ,(package-version java-commons-lang) ".jar")) + (search-input-file inputs + (string-append + "/share/java/commons-lang-" + ,(package-version java-commons-lang) + ".jar"))) (("\\$\\{lib\\}/commons-io/commons-io.jar") - (string-append (assoc-ref inputs "java-commons-io") - "/lib/m2/commons-io/commons-io/" - ,(package-version java-commons-io) - "/commons-io-" - ,(package-version java-commons-io) - ".jar")) + (search-input-file inputs + (string-append + "/lib/m2/commons-io/commons-io/" + ,(package-version java-commons-io) + "/commons-io-" + ,(package-version java-commons-io) + ".jar"))) (("\\$\\{lib\\}/testng/testng-jdk15.jar") - (string-append (assoc-ref inputs "java-testng") - "/share/java/java-testng.jar")) + (search-input-file inputs + "/share/java/java-testng.jar")) (("\\$\\{lib\\}/junit4/junit.jar") (car (find-files (assoc-ref inputs "java-junit") "jar$"))) (("\\$\\{lib\\}/jmock/hamcrest/hamcrest-core.jar") @@ -3586,12 +3354,12 @@ libraries from the SIS division at ETH Zurich like jHDF5.") (replace 'install (install-jars "targets/dist"))))) (inputs - `(("java-cisd-base" ,java-cisd-base) - ("java-cisd-args4j" ,java-cisd-args4j) - ("java-commons-lang" ,java-commons-lang) - ("java-commons-io" ,java-commons-io) - ("hdf5" ,hdf5-1.8) - ("zlib" ,zlib))) + (list java-cisd-base + java-cisd-args4j + java-commons-lang + java-commons-io + hdf5-1.8 + zlib)) (native-inputs `(("jdk" ,icedtea-8) ("java-testng" ,java-testng) @@ -3636,8 +3404,8 @@ HDF5 files, building on the libraries provided by the HDF Group.") `(#:tests? #f ; there is no test target #:build-target "compile" #:make-flags - (list "-Dbuild.compiler=javac1.8" - (string-append "-Ddist=" (assoc-ref %outputs "out"))) + ,#~(list "-Dbuild.compiler=javac1.8" + (string-append "-Ddist=" #$output)) #:phases (modify-phases %standard-phases (replace 'install @@ -3688,7 +3456,7 @@ API and version 2.1 of the Java ServerPages API.") "http/LocalStrings_fr.properties"))) #t))))) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://javaee.github.io/servlet-spec/") (synopsis "Java servlet API") (description "Java Servlet is the foundation web specification in the @@ -3768,8 +3536,7 @@ specification.") ("mesa" ,mesa) ("glu" ,glu))) (native-inputs - `(("pkg-config" ,pkg-config) - ("unzip" ,unzip))) + (list pkg-config unzip)) (home-page "https://www.eclipse.org/swt/") (synopsis "Widget toolkit for Java") (description @@ -3950,9 +3717,9 @@ documentation tools.") target)) #t))))) (inputs - `(("java-asm-bootstrap" ,java-asm-bootstrap))) + (list java-asm-bootstrap)) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://code.google.com/archive/p/jarjar/") (synopsis "Repackage Java libraries") (description @@ -4049,7 +3816,7 @@ private Method[] allMethods = getSortedMethods();"))) `(("java-qdox-1.12" ,java-qdox-1.12) ("java-jarjar" ,java-jarjar))) (propagated-inputs - `(("java-hamcrest-parent-pom" ,java-hamcrest-parent-pom))) + (list java-hamcrest-parent-pom)) (home-page "http://hamcrest.org/") (synopsis "Library of matchers for building test expressions") (description @@ -4102,8 +3869,7 @@ testing frameworks, mocking libraries and UI validation rules.") (replace 'install (install-from-pom "pom/hamcrest-library.pom")))))) (propagated-inputs - `(("java-hamcrest-core" ,java-hamcrest-core) - ("java-hamcrest-parent-pom" ,java-hamcrest-parent-pom))))) + (list java-hamcrest-core java-hamcrest-parent-pom)))) (define-public java-junit (package @@ -4140,9 +3906,9 @@ testing frameworks, mocking libraries and UI validation rules.") (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("java-hamcrest-core" ,java-hamcrest-core))) + (list java-hamcrest-core)) (native-inputs - `(("java-hamcrest-library" ,java-hamcrest-library))) + (list java-hamcrest-library)) (home-page "https://junit.org/junit4/") (synopsis "Test framework for Java") (description @@ -4171,11 +3937,9 @@ sharing common test data, and test runners for running tests.") #:test-dir "src/test" #:test-exclude (list "**/SuperclassTest.java"))) (inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-assertj" ,java-assertj))) + (list java-junit java-hamcrest-core java-assertj)) (home-page "https://github.com/Pragmatists/JUnitParams") (synopsis "Parameterised test support for JUnit") (description "The JUnitParams project adds a new runner to JUnit and @@ -4236,10 +4000,9 @@ cli/shell/BourneShell.java" #t)) (replace 'install (install-from-pom "pom.xml"))))) (native-inputs - `(("java-hamcrest-core" ,java-hamcrest-core) - ("java-junit" ,java-junit))) + (list java-hamcrest-core java-junit)) (propagated-inputs - `(("plexus-parent-pom" ,plexus-parent-pom-5.1))) + (list plexus-parent-pom-5.1)) (home-page "https://codehaus-plexus.github.io/plexus-utils/") (synopsis "Common utilities for the Plexus framework") (description "This package provides various Java utility classes for the @@ -4284,8 +4047,7 @@ more.") (propagated-inputs `(("plexus-parent-pom-5.1" ,plexus-parent-pom-5.1))) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://codehaus-plexus.github.io/plexus-interpolation/") (synopsis "Java components for interpolating ${} strings and the like") (description "Plexus interpolator is a modular, flexible interpolation @@ -4321,7 +4083,7 @@ these two libraries to vary independently of one another.") (propagated-inputs `(("plexus-parent-pom-5.1" ,plexus-parent-pom-5.1))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://codehaus-plexus.github.io/plexus-classworlds/") (synopsis "Java class loader framework") (description "Plexus classworlds replaces the native @code{ClassLoader} @@ -4423,11 +4185,9 @@ implementation.") #t)) (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("java-plexus-utils" ,java-plexus-utils-3.3.0) - ("java-commons-io" ,java-commons-io) - ("plexus-parent-pom" ,plexus-parent-pom-5.1))) + (list java-plexus-utils-3.3.0 java-commons-io plexus-parent-pom-5.1)) (inputs - `(("java-jsr305" ,java-jsr305))) + (list java-jsr305)) (native-inputs `(("junit" ,java-junit) ("hamcrest" ,java-hamcrest-core) @@ -4481,11 +4241,8 @@ reusing it in maven.") #t)) (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("java-plexus-utils" ,java-plexus-utils-3.3.0) - ("java-plexus-io" ,java-plexus-io) - ("java-iq80-snappy" ,java-iq80-snappy) - ("java-commons-compress" ,java-commons-compress) - ("plexus-parent-pom" ,plexus-parent-pom-6.1))) + (list java-plexus-utils-3.3.0 java-plexus-io java-iq80-snappy + java-commons-compress plexus-parent-pom-6.1)) (inputs `(("java-jsr305" ,java-jsr305) ("java-plexus-container-default" @@ -4567,7 +4324,7 @@ archives (jar).") (replace 'install (install-from-pom "plexus-component-annotations/pom.xml"))))) (propagated-inputs - `(("java-plexus-containers-parent-pom" ,java-plexus-containers-parent-pom))) + (list java-plexus-containers-parent-pom)) (inputs '()) (native-inputs '()) (synopsis "Plexus descriptors generator") @@ -4609,9 +4366,7 @@ from source tags and class annotations."))) ("java-jdom2" ,java-jdom2) ("java-asm" ,java-asm))) (native-inputs - `(("java-junit" ,java-junit) - ("java-guava" ,java-guava) - ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect))) + (list java-junit java-guava java-geronimo-xbean-reflect)) (synopsis "Inversion-of-control container for Maven") (description "The Plexus project provides a full software stack for creating and executing software projects. Based on the Plexus container, the @@ -4655,12 +4410,11 @@ provides the Maven plugin generating the component metadata."))) #t)) (replace 'install (install-from-pom "pom.xml"))))) (inputs - `(("java-cdi-api" ,java-cdi-api) - ("java-javax-inject" ,java-javax-inject))) + (list java-cdi-api java-javax-inject)) (propagated-inputs - `(("java-sonatype-spice-parent-pom" ,java-sonatype-spice-parent-pom-15))) + (list java-sonatype-spice-parent-pom-15)) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://github.com/sonatype/plexus-cipher") (synopsis "Encryption/decryption Component") (description "Plexus-cipher contains a component to deal with encryption @@ -4708,15 +4462,12 @@ and decryption.") (replace 'install (install-from-pom "plexus-java/pom.xml"))))) (propagated-inputs - `(("java-asm" ,java-asm) - ("java-qdox" ,java-qdox-2-M9) - ("java-javax-inject" ,java-javax-inject) - ("plexus-parent-pom" ,plexus-parent-pom-4.0))) + (list java-asm java-qdox-2-M9 java-javax-inject + plexus-parent-pom-4.0)) (inputs - `(("java-plexus-component-annotations" ,java-plexus-component-annotations))) + (list java-plexus-component-annotations)) (native-inputs - `(("java-plexus-component-metadata" ,java-plexus-component-metadata) - ("java-junit" ,java-junit))) + (list java-plexus-component-metadata java-junit)) (home-page "https://codehaus-plexus.github.io/plexus-languages/plexus-java") (synopsis "Shared language features for Java") (description "This package contains shared language features of the Java @@ -4750,7 +4501,7 @@ language, for the plexus project.") ("java-plexus-compiler-pom" ,java-plexus-compiler-pom) ("java-plexus-util" ,java-plexus-utils))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://github.com/codehaus-plexus/plexus-compiler") (synopsis "Plexus Compilers component's API to manipulate compilers") (description "This package contains the API used by components to manipulate @@ -4832,12 +4583,10 @@ compilers.") (replace 'install (install-from-pom "plexus-compiler-manager/pom.xml"))))) (propagated-inputs - `(("java-plexus-compiler-api" ,java-plexus-compiler-api) - ("java-plexus-compiler-pom" ,java-plexus-compiler-pom) - ("java-plexus-container-default" ,java-plexus-container-default))) + (list java-plexus-compiler-api java-plexus-compiler-pom + java-plexus-container-default)) (native-inputs - `(("unzip" ,unzip) - ("java-plexus-component-metadata" ,java-plexus-component-metadata))) + (list unzip java-plexus-component-metadata)) (synopsis "Compiler management for Plexus Compiler component") (description "Plexus Compiler is a Plexus component to use different compilers through a uniform API. This component chooses the compiler @@ -4881,9 +4630,8 @@ implementation to use in a project."))) (replace 'install (install-from-pom "plexus-compilers/plexus-compiler-javac/pom.xml"))))) (propagated-inputs - `(("java-plexus-compiler-api" ,java-plexus-compiler-api) - ("java-plexus-utils" ,java-plexus-utils) - ("java-plexus-container-default" ,java-plexus-container-default))) + (list java-plexus-compiler-api java-plexus-utils + java-plexus-container-default)) (synopsis "Javac Compiler support for Plexus Compiler component") (description "This package contains the Javac Compiler support for Plexus Compiler component."))) @@ -4941,10 +4689,9 @@ packages.") (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("java-plexus-utils" ,java-plexus-utils) - ("plexus-components-pom-1.1.20" ,plexus-components-pom-1.1.20))) + (list java-plexus-utils plexus-components-pom-1.1.20)) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://github.com/codehaus-plexus/plexus-digest") (synopsis "Hash function utilities for Java") (description "This package is a plexus component that contains hash @@ -5019,9 +4766,8 @@ function utilities.") #t)) (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("java-plexus-utils" ,java-plexus-utils) - ("java-plexus-cipher" ,java-plexus-cipher) - ("java-sonatype-spice-parent-pom" ,java-sonatype-spice-parent-pom-12))) + (list java-plexus-utils java-plexus-cipher + java-sonatype-spice-parent-pom-12)) (native-inputs `(("java-modello-core" ,java-modello-core) ;; for modello: @@ -5064,13 +4810,10 @@ This component decrypts a string passed to it.") #:jdk ,icedtea-8 #:test-dir "src/test")) (inputs - `(("java-commons-cli" ,java-commons-cli) - ("java-plexus-container-default" ,java-plexus-container-default) - ("java-plexus-classworlds" ,java-plexus-classworlds))) + (list java-commons-cli java-plexus-container-default + java-plexus-classworlds)) (native-inputs - `(("java-plexus-utils" ,java-plexus-utils) - ("java-junit" ,java-junit) - ("java-guava" ,java-guava))) + (list java-plexus-utils java-junit java-guava)) (home-page "https://codehaus-plexus.github.io/plexus-cli") (synopsis "CLI building library for plexus") (description "This package is a library to help creating CLI around @@ -5127,8 +4870,7 @@ which behaves as if all files were just created.</description>\n (replace 'install (install-from-pom "pom.xml"))))) (inputs - `(("java-plexus-utils" ,java-plexus-utils) - ("java-plexus-container-default" ,java-plexus-container-default))) + (list java-plexus-utils java-plexus-container-default)) (home-page "https://github.com/sonatype/sisu-build-api/") (synopsis "Base build API for maven") (description "This package contains the base build API for maven and @@ -5172,14 +4914,11 @@ project and determining what files need to be rebuilt.") (("src/test") "modello-core/src/test"))) #t))))) (propagated-inputs - `(("java-plexus-utils" ,java-plexus-utils) - ("java-plexus-container-default" ,java-plexus-container-default) - ("java-sisu-build-api" ,java-sisu-build-api))) + (list java-plexus-utils java-plexus-container-default + java-sisu-build-api)) (native-inputs - `(("java-junit" ,java-junit) - ("java-plexus-classworlds" ,java-plexus-classworlds) - ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect) - ("java-guava" ,java-guava))) + (list java-junit java-plexus-classworlds java-geronimo-xbean-reflect + java-guava)) (home-page "https://codehaus-plexus.github.io/modello/") (synopsis "Framework for code generation from a simple model") (description "Modello is a framework for code generation from a simple model. @@ -5220,7 +4959,7 @@ XSD and documentation.") "build/classes") #t))))) (inputs - `(("java-modello-core" ,java-modello-core))) + (list java-modello-core)) (synopsis "Modello Java Plugin") (description "Modello Java Plugin generates Java objects for the model."))) @@ -5250,8 +4989,7 @@ XSD and documentation.") (("src/test") "modello-plugins/modello-plugin-xml/src/test"))) #t))))) (propagated-inputs - `(("java-modello-core" ,java-modello-core) - ("java-modello-plugins-java" ,java-modello-plugins-java))) + (list java-modello-core java-modello-plugins-java)) (synopsis "Modello XML Plugin") (description "Modello XML Plugin contains shared code for every plugins working on XML representation of the model."))) @@ -5266,10 +5004,8 @@ working on XML representation of the model."))) #:tests? #f; no tests #:jdk ,icedtea-8)) (inputs - `(("java-plexus-utils" ,java-plexus-utils) - ("java-plexus-compiler-api" ,java-plexus-compiler-api) - ("java-plexus-compiler-javac" ,java-plexus-compiler-javac) - ("java-plexus-container-default" ,java-plexus-container-default))) + (list java-plexus-utils java-plexus-compiler-api + java-plexus-compiler-javac java-plexus-container-default)) (synopsis "Modello test package") (description "The modello test package contains the basis to create Modello generator unit-tests, including sample models and xml files to test @@ -5295,13 +5031,11 @@ every feature for every plugin."))) "build/classes") #t))))) (propagated-inputs - `(("java-modello-core" ,java-modello-core) - ("java-modello-plugins-java" ,java-modello-plugins-java) - ("java-modello-plugins-xml" ,java-modello-plugins-xml))) + (list java-modello-core java-modello-plugins-java + java-modello-plugins-xml)) (native-inputs - `(("java-xmlunit" ,java-xmlunit) - ("java-modello-test" ,java-modello-test) - ,@(package-native-inputs java-modello-core))) + (modify-inputs (package-native-inputs java-modello-core) + (prepend java-xmlunit java-modello-test))) (synopsis "Modello XPP3 Plugin") (description "The modello XPP3 plugin generates XML readers and writers based on the XPP3 API (XML Pull Parser)."))) @@ -5358,9 +5092,9 @@ on the XPP3 API (XML Pull Parser)."))) (replace 'install (install-from-pom "archive/asm.pom"))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (propagated-inputs - `(("java-org-ow2-parent-pom" ,java-org-ow2-parent-pom-1.3))) + (list java-org-ow2-parent-pom-1.3)) (home-page "https://asm.ow2.io/") (synopsis "Very small and fast Java bytecode manipulation framework") (description "ASM is an all purpose Java bytecode manipulation and @@ -5389,7 +5123,7 @@ complex transformations and code analysis tools.") (delete 'build) (delete 'configure) (replace 'install - (install-pom-file (assoc-ref %build-inputs "source")))))) + ,#~(install-pom-file #$source))))) (home-page "https://ow2.org") (synopsis "Ow2.org parent pom") (description "This package contains the parent pom for projects from ow2.org, @@ -5440,7 +5174,7 @@ including java-asm.") ;; tests depend on junit5 #:tests? #f)) (inputs - `(("java-asm" ,java-asm-8))))) + (list java-asm-8)))) (define-public java-asm-analysis-8 (package @@ -5453,8 +5187,7 @@ including java-asm.") ;; tests depend on junit5 #:tests? #f)) (inputs - `(("java-asm" ,java-asm-8) - ("java-asm-tree" ,java-asm-tree-8))))) + (list java-asm-8 java-asm-tree-8)))) (define-public java-asm-util-8 (package @@ -5467,9 +5200,7 @@ including java-asm.") ;; tests depend on junit5 #:tests? #f)) (inputs - `(("java-asm" ,java-asm-8) - ("java-asm-analysis" ,java-asm-analysis-8) - ("java-asm-tree" ,java-asm-tree-8))))) + (list java-asm-8 java-asm-analysis-8 java-asm-tree-8)))) (define-public java-cglib (package @@ -5499,8 +5230,7 @@ including java-asm.") (add-after 'unpack 'chdir (lambda _ (chdir "cglib") #t))))) (inputs - `(("java-asm" ,java-asm) - ("java-junit" ,java-junit))) + (list java-asm java-junit)) (home-page "https://github.com/cglib/cglib/") (synopsis "Java byte code generation library") (description "The byte code generation library CGLIB is a high level API @@ -5526,8 +5256,7 @@ to generate and transform Java byte code.") #:source-dir "main/src/" #:test-dir "main/src/test/")) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "http://objenesis.org/") (synopsis "Bypass the constructor when creating an object") (description "Objenesis is a small Java library that serves one purpose: @@ -5588,12 +5317,9 @@ constructor on object instantiation.") (delete-file "tests2/EasyMockPropertiesTest.java")) #t))))) (inputs - `(("java-asm" ,java-asm) - ("java-cglib" ,java-cglib) - ("java-objenesis" ,java-objenesis))) + (list java-asm java-cglib java-objenesis)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://easymock.org/") (synopsis "Java library providing mock objects for unit tests") (description "EasyMock is a Java library that provides an easy way to use @@ -5652,10 +5378,7 @@ The jMock library (base32 "12b7l22g3nrjvf2dzcw3z03fpd2chrgp0d8xkvn8w55rwb57pax6")))) (inputs - `(("java-hamcrest-all" ,java-hamcrest-all) - ("java-asm" ,java-asm) - ("java-bsh" ,java-bsh) - ("java-junit" ,java-junit))) + (list java-hamcrest-all java-asm java-bsh java-junit)) (native-inputs `(("cglib" ,java-cglib))) (arguments @@ -5696,15 +5419,15 @@ The jMock library (string-append "jmock-legacy/src/test/java/" file)) #t)))))) (inputs - `(("java-hamcrest-all" ,java-hamcrest-all) - ("java-objenesis" ,java-objenesis) - ("java-cglib" ,java-cglib) - ("java-jmock" ,java-jmock) - ("java-asm" ,java-asm) - ("java-bsh" ,java-bsh) - ("java-junit" ,java-junit))) + (list java-hamcrest-all + java-objenesis + java-cglib + java-jmock + java-asm + java-bsh + java-junit)) (native-inputs - `(("java-jmock-junit4" ,java-jmock-junit4))))) + (list java-jmock-junit4)))) (define-public java-hamcrest-all (package (inherit java-hamcrest-core) @@ -5755,16 +5478,16 @@ The jMock library (not (string-suffix? "-sources.jar" name))))))) #t))))))) (inputs - `(("java-junit" ,java-junit) - ("java-jmock" ,java-jmock-1) - ;; This is necessary because of what seems to be a race condition. - ;; This package would sometimes fail to build because hamcrest-core.jar - ;; could not be found, even though it is built as part of this package. - ;; Adding java-hamcrest-core appears to fix this problem. See - ;; https://debbugs.gnu.org/31390 for more information. - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-easymock" ,java-easymock) - ,@(package-inputs java-hamcrest-core))))) + (modify-inputs (package-inputs java-hamcrest-core) + (prepend java-junit + java-jmock-1 + ;; This is necessary because of what seems to be a race condition. + ;; This package would sometimes fail to build because hamcrest-core.jar + ;; could not be found, even though it is built as part of this package. + ;; Adding java-hamcrest-core appears to fix this problem. See + ;; https://debbugs.gnu.org/31390 for more information. + java-hamcrest-core + java-easymock))))) (define-public java-jopt-simple (package @@ -5838,12 +5561,12 @@ overly clever.") `(#:build-target "jar" #:test-target "test" #:make-flags - (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core")) - (junit (assoc-ref %build-inputs "java-junit"))) - (list (string-append "-Djunit.jar=" - (car (find-files junit "jar$"))) - (string-append "-Dhamcrest.jar=" - (car (find-files hamcrest ".*.jar$"))))) + ,#~(let ((hamcrest #$(this-package-native-input "java-hamcrest-core")) + (junit #$(this-package-native-input "java-junit"))) + (list (string-append "-Djunit.jar=" + (car (find-files junit "jar$"))) + (string-append "-Dhamcrest.jar=" + (car (find-files hamcrest ".*.jar$"))))) #:phases (modify-phases %standard-phases ;; We want to build the jar in the build phase and run the tests @@ -5852,14 +5575,12 @@ overly clever.") (lambda _ (substitute* "build.xml" (("name=\"jar\" depends=\"test\"") - "name=\"jar\" depends=\"compile\"")) - #t)) + "name=\"jar\" depends=\"compile\"")))) ;; There is no install target. (replace 'install (install-from-pom "pom.xml"))))) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://commons.apache.org/math/") (synopsis "Apache Commons mathematics library") (description "Commons Math is a library of lightweight, self-contained @@ -5900,11 +5621,9 @@ available in the Java programming language or Commons Lang.") ;; respectively. (delete-file-recursively "jmh-archetypes")))))) (propagated-inputs - `(("java-jopt-simple" ,java-jopt-simple-4) - ("java-commons-math3" ,java-commons-math3))) + (list java-jopt-simple-4 java-commons-math3)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://openjdk.java.net/projects/code-tools/jmh/") (synopsis "Benchmark harness for the JVM") (description "JMH is a Java harness for building, running, and analysing @@ -5928,23 +5647,21 @@ targeting the JVM.") (arguments `(#:test-target "test" #:make-flags - (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core")) - (junit (assoc-ref %build-inputs "java-junit")) - (easymock (assoc-ref %build-inputs "java-easymock"))) - (list (string-append "-Djunit.jar=" - (car (find-files junit "jar$"))) - (string-append "-Dhamcrest.jar=" - (car (find-files hamcrest "jar$"))) - (string-append "-Deasymock.jar=" easymock - "/share/java/easymock.jar"))) + ,#~(let ((hamcrest #$(this-package-native-input "java-hamcrest-core")) + (junit #$(this-package-native-input "java-junit")) + (easymock #$(this-package-native-input "java-easymock"))) + (list (string-append "-Djunit.jar=" + (car (find-files junit "jar$"))) + (string-append "-Dhamcrest.jar=" + (car (find-files hamcrest "jar$"))) + (string-append "-Deasymock.jar=" easymock + "/share/java/easymock.jar"))) #:phases (modify-phases %standard-phases (replace 'install (install-jars "target"))))) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-easymock" ,java-easymock))) + (list java-junit java-hamcrest-core java-easymock)) (home-page "https://commons.apache.org/collections/") (synopsis "Collections framework") (description "The Java Collections Framework is the recognised standard @@ -6068,19 +5785,18 @@ setter and getter method.") (arguments `(#:test-target "test" #:make-flags - (list (string-append "-Djunit.jar=" - (car (find-files (assoc-ref %build-inputs "java-junit") - "jar$")))) + ,#~(list (string-append "-Djunit.jar=" + (car (find-files #$(this-package-native-input "java-junit") + "jar$")))) #:phases (modify-phases %standard-phases (add-after 'build 'build-javadoc ant-build-javadoc) (replace 'install (install-from-pom "pom.xml")) (add-after 'install 'install-doc (install-javadoc "target/apidocs"))))) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (propagated-inputs - `(("apache-commons-parent-pom" ,apache-commons-parent-pom-39))) + (list apache-commons-parent-pom-39)) (home-page "https://commons.apache.org/io/") (synopsis "Common useful IO related classes") (description "Commons-IO contains utility classes, stream implementations, @@ -6103,9 +5819,9 @@ file filters and endian classes.") (arguments `(#:test-target "test" #:make-flags - (list (string-append "-Dmaven.junit.jar=" - (car (find-files (assoc-ref %build-inputs "java-junit") - "jar$")))) + ,#~(list (string-append "-Dmaven.junit.jar=" + (car (find-files #$(this-package-native-input "java-junit") + "jar$")))) #:phases (modify-phases %standard-phases (add-before 'build 'delete-network-tests @@ -6118,7 +5834,7 @@ file filters and endian classes.") (delete 'check) (replace 'install (install-jars "target"))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://commons.apache.org/proper/commons-exec/") (synopsis "Common program execution related classes") (description "Commons-Exec simplifies executing external processes.") @@ -6139,11 +5855,11 @@ file filters and endian classes.") (arguments `(#:test-target "test" #:make-flags - (list (string-append "-Dmaven.junit.jar=" - (car (find-files (assoc-ref %build-inputs "java-junit") - "jar$"))) - "-Dmaven.compiler.source=1.7" - "-Dmaven.compiler.target=1.7") + ,#~(list (string-append "-Dmaven.junit.jar=" + (car (find-files #$(this-package-native-input "java-junit") + "jar$"))) + "-Dmaven.compiler.source=1.7" + "-Dmaven.compiler.target=1.7") #:phases (modify-phases %standard-phases (add-before 'build 'delete-network-tests @@ -6163,8 +5879,7 @@ file filters and endian classes.") (delete 'check) (replace 'install (install-jars "target"))))) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))))) + (list java-junit java-hamcrest-core)))) (define-public java-commons-lang (package @@ -6196,7 +5911,7 @@ time/FastDateFormatTest.java" (replace 'install (install-jars "target")) (add-after 'install 'install-doc (install-javadoc "target/apidocs"))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://commons.apache.org/lang/") (synopsis "Extension of the java.lang package") (description "The Commons Lang components contains a set of Java classes @@ -6242,7 +5957,7 @@ included: (modify-phases %standard-phases (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("apache-commons-parent-pom" ,apache-commons-parent-pom-48))) + (list apache-commons-parent-pom-48)) (home-page "https://commons.apache.org/lang/") (synopsis "Extension of the java.lang package") (description "The Commons Lang components contains a set of Java classes @@ -6312,9 +6027,9 @@ in the @code{java.lang} package. The following classes are included: #t)) (replace 'install (install-jars "build"))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (inputs - `(("java-commons-logging-minimal" ,java-commons-logging-minimal))) + (list java-commons-logging-minimal)) (home-page "https://commons.apache.org/proper/commons-bsf") (synopsis "Bean Scripting Framework") (description "The Bean Scripting Framework (BSF) is a set of Java classes @@ -6350,9 +6065,9 @@ these scripting language engines.") ("java-jdom" ,java-jdom) ("java-commons-beanutils" ,java-commons-beanutils))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://commons.apache.org/jxpath/") - (synopsis "Simple interpreter of an expression language called XPath.") + (synopsis "Simple interpreter of an expression language called XPath") (description "The org.apache.commons.jxpath package defines a simple interpreter of an expression language called XPath. JXPath applies XPath expressions to graphs of objects of all kinds: JavaBeans, Maps, Servlet @@ -6377,12 +6092,9 @@ contexts, DOM etc, including mixtures thereof.") (list "**/PerformanceTest.java"))) (build-system ant-build-system) (inputs - `(("java-cglib" ,java-cglib))) + (list java-cglib)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-asm" ,java-asm) - ("java-objenesis" ,java-objenesis))) + (list java-junit java-hamcrest-core java-asm java-objenesis)) (home-page "https://commons.apache.org/proper/commons-pool/") (synopsis "Object-pooling API in Java") (description "The commons-pool package provides an object-pooling API @@ -6411,7 +6123,7 @@ creating new pool implementations.") ("java-commons-logging" ,java-commons-logging-minimal) ("java-jboss-transaction-api-spec" ,java-jboss-transaction-api-spec))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (build-system ant-build-system) (home-page "https://commons.apache.org/proper/commons-dbcp/") (synopsis "Database Connection Pool for Java") @@ -6453,12 +6165,10 @@ reduce that load.") (delete-file "admin/servlet/JCSAdminServlet.java")) #t))))) (propagated-inputs - `(("java-classpathx-servletapi" ,java-classpathx-servletapi) - ("java-commons-logging-minimal" ,java-commons-logging-minimal) - ("java-commons-httpclient" ,java-commons-httpclient) - ("java-commons-dbcp" ,java-commons-dbcp))) + (list java-classpathx-servletapi java-commons-logging-minimal + java-commons-httpclient java-commons-dbcp)) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://commons.apache.org/proper/commons-jcs/") (synopsis "Distributed caching system in Java") (description "JCS is a distributed caching system written in Java. It @@ -6576,9 +6286,9 @@ It provides packages in the @code{javax.annotations} namespace.") #t)) (replace 'install (install-from-pom "guava/pom.xml"))))) (inputs - `(("java-jsr305" ,java-jsr305))) + (list java-jsr305)) (propagated-inputs - `(("java-guava-parent-pom" ,java-guava-parent-pom))) + (list java-guava-parent-pom)) (home-page "https://github.com/google/guava") (synopsis "Google core libraries for Java") (description "Guava is a set of core libraries that includes new @@ -6701,10 +6411,7 @@ used with any logging implementation at runtime.") (("import org.mockito.cglib") "import net.sf.cglib"))) #t))))) (inputs - `(("java-junit" ,java-junit) - ("java-objenesis" ,java-objenesis) - ("java-cglib" ,java-cglib) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-objenesis java-cglib java-hamcrest-core)) (home-page "http://mockito.org") (synopsis "Mockito is a mock library for Java") (description "Mockito is a mocking library for Java which lets you write @@ -6732,11 +6439,9 @@ it records all mock invocations, including methods arguments.") (add-after 'unpack 'chdir (lambda _ (chdir "httpcore") #t))))) (inputs - `(("java-commons-logging-minimal" ,java-commons-logging-minimal) - ("java-commons-lang3" ,java-commons-lang3))) + (list java-commons-logging-minimal java-commons-lang3)) (native-inputs - `(("java-junit" ,java-junit) - ("java-mockito" ,java-mockito-1))) + (list java-junit java-mockito-1)) (home-page "https://hc.apache.org/httpcomponents-core-4.4.x/index.html") (synopsis "Low level HTTP transport components") (description "HttpCore is a set of low level HTTP transport components @@ -6758,9 +6463,8 @@ This package provides the blocking I/O model library.") (add-after 'unpack 'chdir (lambda _ (chdir "httpcore-nio") #t))))) (inputs - `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) - ("java-hamcrest-core" ,java-hamcrest-core) - ,@(package-inputs java-httpcomponents-httpcore))) + (modify-inputs (package-inputs java-httpcomponents-httpcore) + (prepend java-httpcomponents-httpcore java-hamcrest-core))) (description "HttpCore is a set of low level HTTP transport components that can be used to build custom client and server side HTTP services with a minimal footprint. HttpCore supports two I/O models: blocking I/O model based @@ -6780,10 +6484,9 @@ NIO."))) (add-after 'unpack 'chdir (lambda _ (chdir "httpcore-ab") #t))))) (inputs - `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) - ("java-commons-cli" ,java-commons-cli) - ("java-hamcrest-core" ,java-hamcrest-core) - ,@(package-inputs java-httpcomponents-httpcore))) + (modify-inputs (package-inputs java-httpcomponents-httpcore) + (prepend java-httpcomponents-httpcore java-commons-cli + java-hamcrest-core))) (synopsis "Apache HttpCore benchmarking tool") (description "This package provides the HttpCore benchmarking tool. It is an Apache AB clone based on HttpCore."))) @@ -6808,12 +6511,12 @@ an Apache AB clone based on HttpCore."))) (add-after 'unpack 'chdir (lambda _ (chdir "httpclient") #t))))) (inputs - `(("java-commons-logging-minimal" ,java-commons-logging-minimal) - ("java-commons-codec" ,java-commons-codec) - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) - ("java-mockito" ,java-mockito-1) - ("java-junit" ,java-junit))) + (list java-commons-logging-minimal + java-commons-codec + java-hamcrest-core + java-httpcomponents-httpcore + java-mockito-1 + java-junit)) (home-page "https://hc.apache.org/httpcomponents-client-ga/") (synopsis "HTTP client library for Java") (description "Although the @code{java.net} package provides basic @@ -6834,10 +6537,8 @@ standards and recommendations.") (add-after 'unpack 'chdir (lambda _ (chdir "httpmime") #t))))) (inputs - `(("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient) - ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore) - ("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))))) + (list java-httpcomponents-httpclient java-httpcomponents-httpcore + java-junit java-hamcrest-core)))) (define-public java-commons-net (package @@ -6858,8 +6559,7 @@ standards and recommendations.") #:tests? #f #:jar-name "commons-net.jar")) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://commons.apache.org/net/") (synopsis "Client library for many basic Internet protocols") (description "The Apache Commons Net library implements the client side of @@ -6886,7 +6586,7 @@ fundamental protocol access, not higher-level abstractions.") (modify-phases %standard-phases (replace 'install (install-jars "dist"))))) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "http://www.jcraft.com/jsch/") (synopsis "Pure Java implementation of SSH2") (description "JSch is a pure Java implementation of SSH2. JSch allows you @@ -6929,11 +6629,9 @@ programs.") #t)) (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("java-xz" ,java-xz) - ("apache-commons-parent-pom" ,apache-commons-parent-pom-41))) + (list java-xz apache-commons-parent-pom-41)) (native-inputs - `(("java-junit" ,java-junit) - ("java-mockito" ,java-mockito-1))) + (list java-junit java-mockito-1)) (home-page "https://commons.apache.org/proper/commons-compress/") (synopsis "Java library for working with compressed files") (description "The Apache Commons Compress library defines an API for @@ -7022,7 +6720,7 @@ components.") `(#:tests? #f ; no tests #:jar-name "osgi-core.jar")) (inputs - `(("java-osgi-annotation" ,java-osgi-annotation))) + (list java-osgi-annotation)) (home-page "https://www.osgi.org") (synopsis "Core module of OSGi framework") (description @@ -7049,8 +6747,7 @@ the OSGi Core module.") `(#:tests? #f ; no tests #:jar-name "osgi-service-event.jar")) (inputs - `(("java-osgi-annotation" ,java-osgi-annotation) - ("java-osgi-core" ,java-osgi-core))) + (list java-osgi-annotation java-osgi-core)) (home-page "https://www.osgi.org") (synopsis "OSGi service event module") (description @@ -7077,7 +6774,7 @@ the OSGi @code{org.osgi.service.event} module.") `(#:tests? #f ; no tests included #:jar-name "eclipse-equinox-osgi.jar")) (inputs - `(("java-osgi-annotation" ,java-osgi-annotation))) + (list java-osgi-annotation)) (home-page "http://www.eclipse.org/equinox/") (synopsis "Eclipse Equinox OSGi framework") (description "This package provides an implementation of the OSGi Core @@ -7102,7 +6799,7 @@ specification.") `(#:tests? #f ; no tests included #:jar-name "eclipse-equinox-common.jar")) (inputs - `(("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-osgi)) (home-page "http://www.eclipse.org/equinox/") (synopsis "Common Eclipse runtime") (description "This package provides the common Eclipse runtime.") @@ -7126,8 +6823,7 @@ specification.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-jobs.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-common java-eclipse-osgi)) (home-page "http://www.eclipse.org/equinox/") (synopsis "Eclipse jobs mechanism") (description "This package provides the Eclipse jobs mechanism.") @@ -7151,9 +6847,8 @@ specification.") `(#:tests? #f ; no tests included #:jar-name "eclipse-equinox-registry.jar")) (inputs - `(("java-eclipse-core-jobs" ,java-eclipse-core-jobs) - ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-core-jobs java-eclipse-equinox-common + java-eclipse-osgi)) (home-page "http://www.eclipse.org/equinox/") (synopsis "Eclipse extension registry support") (description "This package provides support for the Eclipse extension @@ -7178,10 +6873,8 @@ registry.") `(#:tests? #f ; no tests included #:jar-name "eclipse-equinox-app.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-osgi" ,java-eclipse-osgi) - ("java-osgi-service-event" ,java-osgi-service-event))) + (list java-eclipse-equinox-common java-eclipse-equinox-registry + java-eclipse-osgi java-osgi-service-event)) (home-page "http://www.eclipse.org/equinox/") (synopsis "Equinox application container") (description "This package provides the Equinox application container for @@ -7206,9 +6899,8 @@ Eclipse.") `(#:tests? #f ; no tests included #:jar-name "eclipse-equinox-preferences.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-common java-eclipse-equinox-registry + java-eclipse-osgi)) (home-page "http://www.eclipse.org/equinox/") (synopsis "Eclipse preferences mechanism") (description "This package provides the Eclipse preferences mechanism with @@ -7233,10 +6925,8 @@ the module @code{org.eclipse.equinox.preferences}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-contenttype.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-common java-eclipse-equinox-preferences + java-eclipse-equinox-registry java-eclipse-osgi)) (home-page "http://www.eclipse.org/") (synopsis "Eclipse content mechanism") (description "This package provides the Eclipse content mechanism in the @@ -7261,13 +6951,13 @@ the module @code{org.eclipse.equinox.preferences}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-runtime.jar")) (inputs - `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) - ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) - ("java-eclipse-equinox-app" ,java-eclipse-equinox-app) - ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-core-contenttype + java-eclipse-core-jobs + java-eclipse-equinox-app + java-eclipse-equinox-common + java-eclipse-equinox-registry + java-eclipse-equinox-preferences + java-eclipse-osgi)) (home-page "https://www.eclipse.org/") (synopsis "Eclipse core runtime") (description "This package provides the Eclipse core runtime with the @@ -7292,9 +6982,8 @@ module @code{org.eclipse.core.runtime}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-filesystem.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-common java-eclipse-equinox-registry + java-eclipse-osgi)) (home-page "https://www.eclipse.org/") (synopsis "Eclipse core file system") (description "This package provides the Eclipse core file system with the @@ -7319,11 +7008,9 @@ module @code{org.eclipse.core.filesystem}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-expressions.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-common java-eclipse-equinox-registry + java-eclipse-equinox-preferences java-eclipse-core-runtime + java-eclipse-osgi)) (home-page "https://www.eclipse.org/") (synopsis "Eclipse core expression language") (description "This package provides the Eclipse core expression language @@ -7348,11 +7035,9 @@ with the @code{org.eclipse.core.expressions} module.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-variables.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-common java-eclipse-equinox-registry + java-eclipse-equinox-preferences java-eclipse-core-runtime + java-eclipse-osgi)) (home-page "https://www.eclipse.org/platform") (synopsis "Eclipse core variables") (description "This package provides the Eclipse core variables module @@ -7377,14 +7062,14 @@ with the @code{org.eclipse.core.expressions} module.") `(#:tests? #f ; no tests included #:jar-name "eclipse-ant-core.jar")) (inputs - `(("java-eclipse-equinox-app" ,java-eclipse-equinox-app) - ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) - ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) - ("java-eclipse-core-variables" ,java-eclipse-core-variables) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-app + java-eclipse-equinox-common + java-eclipse-equinox-registry + java-eclipse-equinox-preferences + java-eclipse-core-contenttype + java-eclipse-core-runtime + java-eclipse-core-variables + java-eclipse-osgi)) (home-page "https://www.eclipse.org/platform") (synopsis "Ant build tool core libraries") (description "This package provides the ant build tool core libraries with @@ -7409,16 +7094,16 @@ the module @code{org.eclipse.ant.core}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-resources.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) - ("java-eclipse-core-expressions" ,java-eclipse-core-expressions) - ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem) - ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) - ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) - ("java-eclipse-ant-core" ,java-eclipse-ant-core) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-equinox-common + java-eclipse-equinox-preferences + java-eclipse-equinox-registry + java-eclipse-core-contenttype + java-eclipse-core-expressions + java-eclipse-core-filesystem + java-eclipse-core-jobs + java-eclipse-core-runtime + java-eclipse-ant-core + java-eclipse-osgi)) (home-page "https://www.eclipse.org/") (synopsis "Eclipse core resource management") (description "This package provides the Eclipse core resource management @@ -7443,10 +7128,8 @@ module @code{org.eclipse.core.resources}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-compare-core.jar")) (inputs - `(("java-eclipse-core-runtime" ,java-eclipse-core-runtime) - ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-osgi" ,java-eclipse-osgi) - ("java-icu4j" ,java-icu4j))) + (list java-eclipse-core-runtime java-eclipse-equinox-common + java-eclipse-osgi java-icu4j)) (home-page "https://www.eclipse.org/") (synopsis "Eclipse core compare support") (description "This package provides the Eclipse core compare support @@ -7471,16 +7154,16 @@ module @code{org.eclipse.compare.core}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-team-core.jar")) (inputs - `(("java-eclipse-compare-core" ,java-eclipse-compare-core) - ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) - ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem) - ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) - ("java-eclipse-core-resources" ,java-eclipse-core-resources) - ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) - ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-osgi" ,java-eclipse-osgi))) + (list java-eclipse-compare-core + java-eclipse-core-contenttype + java-eclipse-core-filesystem + java-eclipse-core-jobs + java-eclipse-core-resources + java-eclipse-core-runtime + java-eclipse-equinox-common + java-eclipse-equinox-registry + java-eclipse-equinox-preferences + java-eclipse-osgi)) (home-page "https://www.eclipse.org/platform") (synopsis "Eclipse team support core") (description "This package provides the Eclipse team support core module @@ -7505,7 +7188,7 @@ module @code{org.eclipse.compare.core}.") `(#:tests? #f ; no tests included #:jar-name "eclipse-core-commands.jar")) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common))) + (list java-eclipse-equinox-common)) (home-page "https://www.eclipse.org/platform") (synopsis "Eclipse core commands") (description "This package provides Eclipse core commands in the module @@ -7557,9 +7240,8 @@ module @code{org.eclipse.compare.core}.") "Positions.put(category, new ArrayList<Position>());")) #t))))) (inputs - `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-core-commands" ,java-eclipse-core-commands) - ("java-icu4j" ,java-icu4j))) + (list java-eclipse-equinox-common java-eclipse-core-commands + java-icu4j)) (home-page "http://www.eclipse.org/platform") (synopsis "Eclipse text library") (description "Platform Text is part of the Platform UI project and @@ -7602,17 +7284,17 @@ and contributes the Eclipse default text editor.") (find-files "." ".*.(props|properties|rsc)"))) #t))))) (inputs - `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype) - ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem) - ("java-eclipse-core-jobs" ,java-eclipse-core-jobs) - ("java-eclipse-core-resources" ,java-eclipse-core-resources) - ("java-eclipse-core-runtime" ,java-eclipse-core-runtime) - ("java-eclipse-equinox-app" ,java-eclipse-equinox-app) - ("java-eclipse-equinox-common" ,java-eclipse-equinox-common) - ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences) - ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry) - ("java-eclipse-osgi" ,java-eclipse-osgi) - ("java-eclipse-text" ,java-eclipse-text))) + (list java-eclipse-core-contenttype + java-eclipse-core-filesystem + java-eclipse-core-jobs + java-eclipse-core-resources + java-eclipse-core-runtime + java-eclipse-equinox-app + java-eclipse-equinox-common + java-eclipse-equinox-preferences + java-eclipse-equinox-registry + java-eclipse-osgi + java-eclipse-text)) (home-page "https://www.eclipse.org/jdt") (synopsis "Java development tools core libraries") (description "This package provides the core libraries of the Eclipse Java @@ -7638,7 +7320,7 @@ development tools.") #:jar-name "eclipse-jdt-compiler-apt.jar" #:jdk ,openjdk11)) (inputs - `(("java-eclipse-jdt-core" ,java-eclipse-jdt-core))) + (list java-eclipse-jdt-core)) (home-page "https://www.eclipse.org/jdt/apt/") (synopsis "Annotation processing tool") (description "APT stands for Annotation Processing Tool. APT provides a @@ -7684,7 +7366,7 @@ definition intended to be inherited by other packages.") (copy-recursively "org.eclipse.lsp4j.debug/src/main/xtend-gen" "org.eclipse.lsp4j.debug/src/main/java")))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (inputs `(("java-gson" ,java-gson-2.8.6) ("java-eclipse-lsp4j-generaor" ,java-eclipse-lsp4j-generator) @@ -7706,7 +7388,7 @@ LSP4J Java bindings for the Debug Server Protocol."))) #:tests? #f; no tests #:source-dir "org.eclipse.lsp4j.generator/src/main/java")) (inputs - `(("java-eclipse-lsp4j-jsonrpc" ,java-eclipse-lsp4j-jsonrpc))) + (list java-eclipse-lsp4j-jsonrpc)) (synopsis "Eclipse LSP4J Generator") (description "Eclipse LSP4J provides Java bindings for the Language Server Protocol and the Debug Adapter Protocol. This package contains its @@ -7722,9 +7404,9 @@ LSP4J code generator for Language Server Protocol classes."))) #:source-dir "org.eclipse.lsp4j.jsonrpc/src/main/java" #:test-dir "org.eclipse.lsp4j.jsonrpc/src/test")) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (inputs - `(("java-gson" ,java-gson-2.8.6))) + (list java-gson-2.8.6)) (synopsis "Java JSON-RPC implementation") (description "Eclipse LSP4J provides Java bindings for the Language Server Protocol and the Debug Adapter Protocol. This package contains its @@ -7740,10 +7422,9 @@ JSON-RPC implementation."))) #:source-dir "org.eclipse.lsp4j.jsonrpc.debug/src/main/java" #:test-dir "org.eclipse.lsp4j.jsonrpc.debug/src/test")) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (inputs - `(("java-eclipse-lsp4j-jsonrpc" ,java-eclipse-lsp4j-jsonrpc) - ("java-gson" ,java-gson-2.8.6))) + (list java-eclipse-lsp4j-jsonrpc java-gson-2.8.6)) (synopsis "Java JSON-RPC implementation (debug protocol)") (description "Eclipse LSP4J provides Java bindings for the Language Server Protocol and the Debug Adapter Protocol. This package contains its @@ -7770,9 +7451,9 @@ JSON-RPC implementation's debug protocol."))) #:source-dir "org.eclipse.xtext.xbase.lib/src" #:test-dir "org.eclipse.xtext.xbase.lib.tests/src")) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (inputs - `(("java-guava" ,java-guava))) + (list java-guava)) (home-page "https://www.eclipse.org/Xtext/") (synopsis "Eclipse Xbase Runtime Library") (description "This package contains runtime libraries for Xbase languages @@ -7808,21 +7489,20 @@ JavaMail API.") (define-public java-log4j-api (package (name "java-log4j-api") - (version "2.4.1") + (version "2.17.0") (source (origin (method url-fetch) (uri (string-append "mirror://apache/logging/log4j/" version "/apache-log4j-" version "-src.tar.gz")) (sha256 (base32 - "0j5p9gik0jysh37nlrckqbky12isy95cpwg2gv5fas1rcdqbraxd")))) + "1bn9hrxyvw2d29z7mcd0frcqa8mbxmq59zb6b930zibkq68n1g01")))) (build-system ant-build-system) (arguments `(#:tests? #f ; tests require unpackaged software #:jar-name "log4j-api.jar" #:make-flags - (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out") - "/share/java")) + ,#~(list (string-append "-Ddist.dir=" #$output "/share/java")) #:phases (modify-phases %standard-phases (add-after 'unpack 'enter-dir @@ -7834,9 +7514,8 @@ JavaMail API.") (add-after 'enter-dir 'delete-tests (lambda _ (delete-file-recursively "src/test") #t))))) (inputs - `(("java-osgi-core" ,java-osgi-core) - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-junit" ,java-junit))) + (list java-osgi-core java-hamcrest-core java-junit)) + (properties '((cpe-name . "log4j"))) (home-page "https://logging.apache.org/log4j/2.x/") (synopsis "API module of the Log4j logging framework for Java") (description @@ -7854,7 +7533,11 @@ Java.") ("java-log4j-api" ,java-log4j-api) ("java-mail" ,java-mail) ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec) + ("java-conversant-disruptor" ,java-conversant-disruptor) ("java-lmax-disruptor" ,java-lmax-disruptor) + ("java-jctools-core" ,java-jctools-core-1) + ("java-stax2-api" ,java-stax2-api) + ("java-jansi" ,java-jansi) ("java-kafka" ,java-kafka-clients) ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence) ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) @@ -7878,8 +7561,7 @@ Java.") #:jar-name "log4j-core.jar" #:jdk ,icedtea-8 #:make-flags - (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out") - "/share/java")) + ,#~(list (string-append "-Ddist.dir=" #$output "/share/java")) #:phases (modify-phases %standard-phases (add-after 'unpack 'enter-dir @@ -7902,6 +7584,7 @@ logging framework for Java."))) (inputs `(("log4j-api" ,java-log4j-api) ("log4j-core" ,java-log4j-core) + ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec) ("osgi-core" ,java-osgi-core) ("eclipse-osgi" ,java-eclipse-osgi) ("java-lmax-disruptor" ,java-lmax-disruptor))))) @@ -7926,8 +7609,7 @@ logging framework for Java."))) (replace 'install (install-from-pom "pom.xml"))))) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://commons.apache.org/cli/") (synopsis "Command line arguments and options parsing library") (description "The Apache Commons CLI library provides an API for parsing @@ -7984,10 +7666,9 @@ This is a part of the Apache Commons Project.") "return;")))) (replace 'install (install-from-pom "pom.xml"))))) (native-inputs - `(("java-commons-lang3" ,java-commons-lang3) - ("java-junit" ,java-junit))) + (list java-commons-lang3 java-junit)) (propagated-inputs - `(("apache-commons-parent-pom" ,apache-commons-parent-pom-50))) + (list apache-commons-parent-pom-50)) (home-page "https://commons.apache.org/codec/") (synopsis "Common encoders and decoders such as Base64, Hex, Phonetic and URLs") (description "The codec package contains simple encoder and decoders for @@ -8018,7 +7699,7 @@ This is a part of the Apache Commons Project.") (replace 'install (install-jars "dist")) (add-after 'install 'install-doc (install-javadoc "dist/docs/api"))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://commons.apache.org/daemon/") (synopsis "Library to launch Java applications as daemons") (description "The Daemon package from Apache Commons can be used to @@ -8048,8 +7729,7 @@ This is a part of the Apache Commons Project.") (build-system ant-build-system) (arguments `(#:jar-name "javaewah.jar")) (inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://github.com/lemire/javaewah") (synopsis "Compressed alternative to the Java @code{BitSet} class") (description "This is a word-aligned compressed variant of the Java @@ -8107,10 +7787,9 @@ more efficient storage-wise than an uncompressed bitmap (as implemented in the (replace 'install (install-from-pom "slf4j-api/pom.xml"))))) (propagated-inputs - `(("java-slf4j-parent" ,java-slf4j-parent))) + (list java-slf4j-parent)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://www.slf4j.org/") (synopsis "Simple logging facade for Java") (description "The Simple Logging Facade for Java (SLF4J) serves as a @@ -8145,6 +7824,7 @@ time.") `(#:jar-name "slf4j-simple.jar" #:source-dir "slf4j-simple/src/main" #:test-dir "slf4j-simple/src/test" + #:test-exclude (list "**/*SimpleLoggerMultithreadedInitializationTest.java") #:phases (modify-phases %standard-phases ;; The tests need some test classes from slf4j-api @@ -8160,10 +7840,9 @@ time.") (replace 'install (install-from-pom "slf4j-simple/pom.xml"))))) (propagated-inputs - `(("java-slf4j-api" ,java-slf4j-api))) + (list java-slf4j-api)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://www.slf4j.org/") (synopsis "Simple implementation of simple logging facade for Java") (description "SLF4J binding for the Simple implementation, which outputs @@ -8657,9 +8336,9 @@ import org.antlr.grammar.v2.ANTLRTreePrinter;")) #:source-dir "org.abego.treelayout/src/main/java" #:test-dir "org.abego.treelayout/src/test")) (inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (native-inputs - `(("java-hamcrest-core" ,java-hamcrest-core))) + (list java-hamcrest-core)) (home-page "http://treelayout.sourceforge.net") (synopsis "Tree Layout Algorithm in Java") (description "TreeLayout creates tree layouts for arbitrary trees. It is @@ -8849,14 +8528,14 @@ sources by ANTLR.") (invoke "antlr3" "SourceGenTriggers.g")) #t))))) (inputs - `(("antlr3" ,antlr3) - ("java-antlr4-runtime" ,java-antlr4-runtime) - ("java-icu4j" ,java-icu4j) - ("java-jsonp-api" ,java-jsonp-api) - ("java-stringtemplate" ,java-stringtemplate) - ("java-treelayout" ,java-treelayout))) + (list antlr3 + java-antlr4-runtime + java-icu4j + java-jsonp-api + java-stringtemplate + java-treelayout)) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (synopsis "Parser and lexer generator in Java") (description "ANTLR (ANother Tool for Language Recognition) is a powerful parser generator for reading, processing, executing, or translating structured @@ -8886,7 +8565,7 @@ parse trees."))) (chmod "build.xml" #o644) #t)))))) (inputs - `(("java-treelayout" ,java-treelayout))))) + (list java-treelayout)))) (define-public antlr4-4.1 (package @@ -9065,7 +8744,7 @@ the runtime library of ANTLR."))) "dir=\"${test.home}\"")) #t))))) (native-inputs - `(("java-junit" ,java-junit))))) + (list java-junit)))) (define-public java-microemulator-cldc (package @@ -9478,7 +9157,7 @@ and service platform for the Java programming language.") `(#:jar-name "osgi-service-log.jar" #:tests? #f)); no tests (inputs - `(("java-osgi-framework" ,java-osgi-framework))) + (list java-osgi-framework)) (home-page "https://www.osgi.org") (synopsis "Provides methods for bundles to write messages to the log") (description @@ -10129,8 +9808,7 @@ Processor. It also includes the default implementation of handler types (copy-recursively "src/main/resources" "build/classes") #t))))) (inputs - `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) - ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core))) + (list java-fasterxml-jackson-annotations java-fasterxml-jackson-core)) (home-page "https://github.com/FasterXML/jackson-databind") (synopsis "Data-binding functionality and tree-model for the Jackson Data Processor") (description "This package contains the general-purpose data-binding @@ -10178,11 +9856,10 @@ configuration.") (copy-recursively "jaxb/src/main/resources" "build/classes") #t))))) (inputs - `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) - ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core) - ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind))) + (list java-fasterxml-jackson-annotations java-fasterxml-jackson-core + java-fasterxml-jackson-databind)) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://github.com/FasterXML/jackson-modules-base") (synopsis "Jaxb annotations jackson module") (description "This package is the jaxb annotations module for jackson.") @@ -10223,13 +9900,10 @@ configuration.") (("@projectartifactid@") "jackson-module-mrbean"))) #t))))) (inputs - `(("java-asm" ,java-asm) - ("java-fasterxml-jackson-annotations" - ,java-fasterxml-jackson-annotations) - ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core) - ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind))) + (list java-asm java-fasterxml-jackson-annotations + java-fasterxml-jackson-core java-fasterxml-jackson-databind)) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://github.com/FasterXML/jackson-modules-base") (synopsis "POJO type materialization for Java") (description "This package implements POJO type materialization. @@ -10293,10 +9967,8 @@ of deserialization.") (("@projectartifactid@") "jackson-dataformat-yaml"))) #t))))) (inputs - `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) - ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core) - ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind) - ("java-snakeyaml" ,java-snakeyaml))) + (list java-fasterxml-jackson-annotations java-fasterxml-jackson-core + java-fasterxml-jackson-databind java-snakeyaml)) (native-inputs `(("junit" ,java-junit) ("hamcrest" ,java-hamcrest-core) @@ -10525,9 +10197,9 @@ the subsequent value resolution at any given level.") #t)) (replace 'install (install-jars "dist"))))) (inputs - `(("java-asm" ,java-asm))) + (list java-asm)) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://github.com/nhatminhle/cofoja") (synopsis "Contracts for Java") (description "Contracts for Java, or Cofoja for short, is a contract @@ -10640,12 +10312,12 @@ the dependency is said to be unsatisfied, and the application is broken.") (replace 'install (install-from-pom "core/pom.xml"))))) (propagated-inputs - `(("java-aopalliance" ,java-aopalliance) - ("java-asm" ,java-asm) - ("java-cglib" ,java-cglib) - ("java-guava" ,java-guava) - ("java-javax-inject" ,java-javax-inject) - ("java-guice-parent-pom" ,java-guice-parent-pom))) + (list java-aopalliance + java-asm + java-cglib + java-guava + java-javax-inject + java-guice-parent-pom)) (home-page "https://github.com/google/guice") (synopsis "Lightweight dependency injection framework") (description "Guice is a lightweight dependency injection framework for @@ -10854,11 +10526,9 @@ annotations.") (replace 'install (install-from-pom "pom.xml"))))) (inputs - `(("java-classpathx-servletapi" ,java-classpathx-servletapi) - ("java-commons-bsf" ,java-commons-bsf))) + (list java-classpathx-servletapi java-commons-bsf)) (native-inputs - `(("java-junit" ,java-junit) - ("javacc" ,javacc-3))) + (list java-junit javacc-3)) (home-page "http://beanshell.org/") (synopsis "Lightweight Scripting for Java") (description "BeanShell is a small, free, embeddable Java source @@ -10943,15 +10613,15 @@ those in Perl and JavaScript.") "**/MessageFormatter_format_Test.java" "**/internal/*/*_assert*_Test.java"))) (inputs - `(("java-fest-util" ,java-fest-util))) + (list java-fest-util)) (native-inputs - `(("java-junit" ,java-junit) - ("java-fest-test" ,java-fest-test) - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-mockito" ,java-mockito-1) - ("java-cglib" ,java-cglib) - ("java-objenesis" ,java-objenesis) - ("java-asm" ,java-asm))) + (list java-junit + java-fest-test + java-hamcrest-core + java-mockito-1 + java-cglib + java-objenesis + java-asm)) (home-page "https://github.com/alexruiz/fest-assert-2.x") (synopsis "FEST fluent assertions") (description "FEST-Assert provides a fluent interface for assertions.") @@ -11075,9 +10745,7 @@ to use.") "org.testng.TestNG" "-testclass" "build/test-classes/com/neilalexander/jnacl/NaClTest.class")))))) (native-inputs - `(("java-testng" ,java-testng) - ("java-fest-util" ,java-fest-util) - ("java-fest-assert" ,java-fest-assert))) + (list java-testng java-fest-util java-fest-assert)) (home-page "https://github.com/neilalexander/jnacl") (synopsis "Java implementation of NaCl") (description "Pure Java implementation of the NaCl: Networking and @@ -11181,13 +10849,11 @@ configuration and string construction.") (invoke "java" "javacc" "Parser.jj")) #t))))) (inputs - `(("java-commons-logging-minimal" ,java-commons-logging-minimal))) + (list java-commons-logging-minimal)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core) - ("javacc" ,javacc-4))) + (list java-junit java-hamcrest-core javacc-4)) (home-page "https://commons.apache.org/proper/commons-jexl/") - (synopsis "Java Expression Language ") + (synopsis "Java Expression Language") (description "JEXL is a library intended to facilitate the implementation of dynamic and scripting features in applications and frameworks written in Java. JEXL implements an Expression Language based on some extensions to the @@ -11271,7 +10937,7 @@ algorithms and xxHash hashing algorithm.") (replace 'install (install-jars "build/artifacts/jdk1.5/jars"))))) (inputs - `(("java-javax-mail" ,java-javax-mail))) + (list java-javax-mail)) (native-inputs `(("unzip" ,unzip) ("junit" ,java-junit) @@ -11286,15 +10952,16 @@ programming language.") (define-public java-lmax-disruptor (package (name "java-lmax-disruptor") - (version "3.3.7") + (version "3.4.4") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/LMAX-Exchange/disruptor/" - "archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/LMAX-Exchange/disruptor") + (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "17da2gwj5abnlsfgn2xqjk5lgzbg4vkb0hdv2dvc8r2fx4bi7w3g")))) + "02c5kp3n8a73dq9ay7ar53s1k3x61z9yzc5ikqb03m6snr1wpfqn")))) (build-system ant-build-system) (arguments `(#:jar-name "java-lmax-disruptor.jar" @@ -11318,6 +10985,67 @@ for high performance inter-thread communication that avoids the need for message queues or resource locking.") (license license:asl2.0))) +(define-public java-conversant-disruptor + (package + (name "java-conversant-disruptor") + (version "1.2.19") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/conversant/disruptor") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0gx1dm7sfg7pa05cs4qby10gfcplai5b5lf1f7ik1a76dh3vhl0g")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "java-conversant-disruptor.jar" + #:source-dir "src/main/java" + #:phases + (modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "src/main/resources" "build/classes"))) + (add-before 'build 'remove-module + (lambda _ + (delete-file "src/main/java/module-info.java")))))) + (native-inputs + (list java-junit)) + (home-page "https://github.com/conversant/disruptor") + (synopsis "High performance intra-thread communication") + (description "Conversant Disruptor is the highest performing intra-thread +transfer mechanism available in Java. Conversant Disruptor is an implementation +of this type of ring buffer that has almost no overhead and that exploits a +particularly simple design.") + (license license:asl2.0))) + +(define-public java-jctools-core-1 + (package + (name "java-jctools-core") + (version "1.2.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JCTools/JCTools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "105my29nwd4djvdllmq8s3jdzbyplbkxzwmddxiiilb4yqr1pghb")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "java-jctools-core.jar" + #:source-dir "jctools-core/src/main/java" + #:test-dir "jctools-core/src/test")) + (native-inputs + (list java-junit java-hamcrest-all)) + (home-page "https://github.com/JCTools/JCTools") + (synopsis "Concurrency tools for Java") + (description "This library implements concurrent data structures that are +not natively available in Java.") + (license license:asl2.0))) + (define-public java-commons-bcel (package (name "java-commons-bcel") @@ -11409,7 +11137,7 @@ streams, etc.") #:source-dir "powermock-reflect/src/main/java" #:test-dir "powermock-reflect/src/test")) (inputs - `(("java-objenesis" ,java-objenesis))) + (list java-objenesis)) (native-inputs `(("junit" ,java-junit) ("cglib" ,java-cglib) @@ -11589,6 +11317,8 @@ application components to create, send, receive, and read messages.") "**/DurationFilterTest.java" "**/MailHandlerTest.java" "**/GetLocalAddressTest.java" + ;; SSLHandshakeException: No appropriate protocol + "**/WriteTimeoutSocketTest.java" ;; FIXME: both end with: ;; java.lang.ClassNotFoundException: ;; javax.mail.internet.MimeMultipartParseTest @@ -11599,16 +11329,13 @@ application components to create, send, receive, and read messages.") (add-before 'configure 'move-version.java (lambda _ (copy-file "mail/src/main/resources/javax/mail/Version.java" - "mail/src/main/java/javax/mail/Version.java") - #t)) + "mail/src/main/java/javax/mail/Version.java"))) (add-before 'build 'copy-resources (lambda _ (copy-recursively "mail/src/main/resources/META-INF" - "build/classes/META-INF") - #t))))) + "build/classes/META-INF")))))) (native-inputs - `(("junit" ,java-junit) - ("hamcrest" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://javaee.github.io/javamail/") (synopsis "Mail-related functionality in Java") (description "The JavaMail API provides a platform-independent and @@ -11653,7 +11380,7 @@ protocol-independent framework to build mail and messaging applications.") "**/RouterSpecTest.java" "**/ProxyTest.java"))) (inputs - `(("java-jnacl" ,java-jnacl))) + (list java-jnacl)) (native-inputs `(("java-hamcrest-core" ,java-hamcrest-core) ("junit" ,java-junit))) @@ -11665,14 +11392,14 @@ protocol-independent framework to build mail and messaging applications.") (define-public java-kafka-clients (package (name "java-kafka-clients") - (version "1.0.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (string-append "mirror://apache/kafka/" version "/kafka-" version "-src.tgz")) (sha256 (base32 - "1yxmnsmliwm7671q5yy9bl4jdqyyn00n26cggz9brwczx80w1vfq")))) + "1jn62q7z383nwhzv4ippsddf98sa1gnkszjjncj4ii3r8rzgw566")))) (build-system ant-build-system) (arguments `(#:jar-name "java-kafka-clients.jar" @@ -11685,29 +11412,32 @@ protocol-independent framework to build mail and messaging applications.") "**/IntegrationTest.java" ;; Requires network "**/ClientUtilsTest.java" + ;; This test fails on i686 + "**/SerializationTest.java" + ;; "protocol is disabled or cipher suites are inappropriate" + "**/SslTransportLayerTest.java" ;; End with errors that seem related to our powermock "**/KafkaProducerTest.java" "**/BufferPoolTest.java" ;; Undeterministic failure, seems to affect mostly ci "**/GarbageCollectedMemoryPoolTest.java"))) (inputs - `(("java-slf4j-api" ,java-slf4j-api) - ("java-lz4" ,java-lz4))) - (native-inputs - `(("junit" ,java-junit) - ("hamcrest" ,java-hamcrest-all) - ("objenesis" ,java-objenesis) - ("asm" ,java-asm) - ("cglib" ,java-cglib) - ("javassist" ,java-jboss-javassist) - ("snappy" ,java-snappy) - ("easymock" ,java-easymock) - ("powermock" ,java-powermock-core) - ("powermock-easymock" ,java-powermock-api-easymock) - ("powermock-junit4-common" ,java-powermock-modules-junit4-common) - ("powermock-junit4" ,java-powermock-modules-junit4) - ("powermock-support" ,java-powermock-api-support) - ("java-bouncycastle" ,java-bouncycastle))) + (list java-slf4j-api java-lz4)) + (native-inputs + (list java-asm + java-bouncycastle + java-cglib + java-easymock + java-hamcrest-all + java-jboss-javassist + java-junit + java-objenesis + java-powermock-api-easymock + java-powermock-api-support + java-powermock-core + java-powermock-modules-junit4 + java-powermock-modules-junit4-common + java-snappy)) (home-page "https://kafka.apache.org") (synopsis "Distributed streaming platform") (description "Kafka is a distributed streaming platform, which means: @@ -11785,7 +11515,7 @@ outputting XML data from Java code.") ("log4j-core" ,java-log4j-core) ("logging" ,java-commons-logging-minimal))) (propagated-inputs - `(("java-geronimo-parent-pom" ,java-geronimo-parent-pom))) + (list java-geronimo-parent-pom)) (native-inputs `(("junit" ,java-junit))) (home-page "https://geronimo.apache.org/maven/xbean/3.6/xbean-reflect/") @@ -11901,7 +11631,7 @@ public Bundle getBundle()")) #:source-dir "xbean-asm-util/src/main/java" #:tests? #f)); no tests (inputs - `(("java-asm" ,java-asm))) + (list java-asm)) (native-inputs '()))) (define-public java-geronimo-xbean-finder @@ -11913,15 +11643,14 @@ public Bundle getBundle()")) #:source-dir "xbean-finder/src/main/java" #:test-dir "xbean-finder/src/test")) (inputs - `(("java-slf4j-api" ,java-slf4j-api) - ("java-asm" ,java-asm) - ("java-geronimo-xbean-bundleutils" ,java-geronimo-xbean-bundleutils) - ("java-geronimo-xbean-asm-util" ,java-geronimo-xbean-asm-util) - ("java-osgi-service-packageadmin" ,java-osgi-service-packageadmin) - ("java-osgi-framework" ,java-osgi-framework))) + (list java-slf4j-api + java-asm + java-geronimo-xbean-bundleutils + java-geronimo-xbean-asm-util + java-osgi-service-packageadmin + java-osgi-framework)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))))) + (list java-junit java-hamcrest-core)))) (define-public java-gson (package @@ -11940,8 +11669,7 @@ public Bundle getBundle()")) #:source-dir "gson/src/main/java" #:test-dir "gson/src/test")) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://github.com/google/gson") (synopsis "Java serialization/deserialization library from/to JSON") (description "Gson is a Java library that can be used to convert Java @@ -12024,9 +11752,7 @@ including pre-existing objects that you do not have source-code of.") (replace 'install (install-from-pom "hawtjni-runtime/pom.xml"))))) (inputs - `(("java-commons-cli" ,java-commons-cli) - ("java-asm" ,java-asm) - ("java-geronimo-xbean-finder" ,java-geronimo-xbean-finder))) + (list java-commons-cli java-asm java-geronimo-xbean-finder)) (home-page "https://fusesource.github.io/hawtjni/") (synopsis "JNI code generator") (description "HawtJNI is a code generator that produces the JNI code needed @@ -12091,7 +11817,7 @@ that is part of the SWT Tools project.") (replace 'install (install-from-pom "pom.xml"))))) (propagated-inputs - `(("java-hawtjni" ,java-hawtjni))) + (list java-hawtjni)) (home-page "https://fusesource.github.io/jansi/") (synopsis "Native library for jansi") (description "This package provides the native library for jansi, a small @@ -12102,17 +11828,81 @@ console output.") (define-public java-jansi (package (name "java-jansi") - (version "1.16") + (version "2.4.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/fusesource/jansi/archive/" - "jansi-project-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/fusesource/jansi") + (commit (string-append "jansi-" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "11kh3144i3fzp21dpy8zg52mjmsr214k7km9p8ly0rqk2px0qq2z")))) + "1s6fva06990798b5fyxqzr30zwyj1byq5wrm54j2larcydaryggf")) + (modules '((guix build utils))) + (snippet + ;; contains pre-compiled libraries + '(delete-file-recursively + "src/main/resources/org/fusesource/jansi/internal")))) (build-system ant-build-system) (arguments `(#:jar-name "jansi.jar" + #:source-dir "src/main/java" + #:test-dir "src/test" + #:tests? #f; require junit 3 + #:phases + (modify-phases %standard-phases + (add-before 'build 'build-native + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "src/main/native" + (for-each + (lambda (cfile) + (let ((cfile (basename cfile)) + (ofile (string-append (basename cfile ".c") ".o"))) + (invoke ,(cc-for-target) "-c" cfile "-o" ofile + (string-append "-I" (assoc-ref inputs "jdk") + "/include/linux") + "-fPIC" "-O2"))) + (find-files "." "\\.c$")) + (apply invoke ,(cc-for-target) "-o" "libjansi.so" "-shared" + (find-files "." "\\.o$"))))) + (add-before 'build 'install-native + (lambda _ + (let ((dir (string-append "build/classes/org/fusesource/" + "jansi/internal/native/" + ,(match (or (%current-target-system) (%current-system)) + ("i686-linux" "Linux/x86") + ("x86_64-linux" "Linux/x86_64") + ("armhf-linux" "Linux/armv7") + ("aarch64-linux" "Linux/arm64") + ("mips64el-linux" "Linux/mips64") + (_ "unknown-kernel"))))) + (install-file "src/main/native/libjansi.so" dir)))) + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively "src/main/resources" "build/classes"))) + (replace 'install + (install-from-pom "pom.xml"))))) + (home-page "https://fusesource.github.io/jansi/") + (synopsis "Portable ANSI escape sequences") + (description "Jansi is a Java library that allows you to use ANSI escape +sequences to format your console output which works on every platform.") + (license license:asl2.0))) + +(define-public java-jansi-1 + (package + (inherit java-jansi) + (version "1.16") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fusesource/jansi") + (commit (string-append "jansi-project-" version)))) + (file-name (git-file-name "jansi" version)) + (sha256 + (base32 + "0ikk0x352gh30b42qn1jd89xwsjj0mavrc5kms7fss15bd8vsayx")))) + (arguments + `(#:jar-name "jansi.jar" #:source-dir "jansi/src/main/java" #:test-dir "jansi/src/test" #:phases @@ -12138,15 +11928,9 @@ console output.") (replace 'install (install-from-pom "jansi/pom.xml"))))) (propagated-inputs - `(("java-jansi-native" ,java-jansi-native))) + (list java-jansi-native)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) - (home-page "https://fusesource.github.io/jansi/") - (synopsis "Portable ANSI escape sequences") - (description "Jansi is a Java library that allows you to use ANSI escape -sequences to format your console output which works on every platform.") - (license license:asl2.0))) + (list java-junit java-hamcrest-core)))) (define-public java-jboss-el-api-spec (package @@ -12174,7 +11958,7 @@ sequences to format your console output which works on every platform.") (replace 'install (install-from-pom "pom.xml"))))) (inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://github.com/jboss/jboss-el-api_spec") (synopsis "JSR-341 expression language 3.0 API") (description "This package contains an implementation of the JSR-341 @@ -12245,13 +12029,10 @@ specific events.") (replace 'install (install-from-pom "api/pom.xml"))))) (propagated-inputs - `(("java-javax-inject" ,java-javax-inject) - ("java-jboss-el-api-spec" ,java-jboss-el-api-spec) - ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec) - ("java-weld-parent-pom" ,java-weld-parent-pom))) + (list java-javax-inject java-jboss-el-api-spec + java-jboss-interceptors-api-spec java-weld-parent-pom)) (native-inputs - `(("java-testng" ,java-testng) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-testng java-hamcrest-core)) (home-page "http://cdi-spec.org/") (synopsis "Contexts and Dependency Injection APIs") (description "Java-cdi-api contains the required APIs for Contexts and @@ -12278,10 +12059,9 @@ Dependency Injection (CDI).") ;; Contains only interfaces and base classes (no test) #:test-exclude (list "**/test*/**.java"))) (inputs - `(("java-guava" ,java-guava))) + (list java-guava)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (home-page "https://www.joda.org/joda-convert/") (synopsis "Conversion between Objects and Strings") (description "Joda-Convert provides a small set of classes to aid @@ -12345,11 +12125,9 @@ wider problem of Object to Object transformation.") (copy-recursively "src/test/resources" "build/test-classes") #t))))) (inputs - `(("java-joda-convert" ,java-joda-convert))) + (list java-joda-convert)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core) - ("tzdata" ,tzdata))) + (list java-junit java-hamcrest-core tzdata)) (home-page "https://www.joda.org/joda-time/") (synopsis "Replacement for the Java date and time classes") (description "Joda-Time is a replacement for the Java date and time @@ -12398,8 +12176,7 @@ classes prior to Java SE 8.") #t)) (replace 'install (install-jars "build"))))) (inputs - `(("java-apache-xml-commons-resolver" ,java-apache-xml-commons-resolver) - ("java-jaxp" ,java-jaxp))) + (list java-apache-xml-commons-resolver java-jaxp)) (home-page "https://xerces.apache.org/xerces2-j/") (synopsis "Validating XML parser for Java with DOM level 3 support") (description "The Xerces2 Java parser is the reference implementation of @@ -12458,7 +12235,7 @@ the DOM level 3 load/save API's are in use.") (find-files "build" "^jakarta-regexp-.*\\.jar$")) #t)))))) (home-page "https://attic.apache.org/projects/jakarta-regexp.html") - (synopsis "Regular expression parser generator for Java.") + (synopsis "Regular expression parser generator for Java") (description "@code{jakarta-regexp} is an old regular expression parser generator for Java.") (license license:asl2.0))) @@ -12486,7 +12263,7 @@ generator for Java.") (copy-recursively "src/main/resources" "build/classes") #t))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://jline.github.io") (synopsis "Console input handling library") (description "JLine is a Java library for handling console input. It is @@ -12509,23 +12286,22 @@ features that bring it on par with the Z shell line editor.") `(#:jdk ,icedtea-8 ,@(package-arguments java-jline))) (inputs - `(("java-jansi" ,java-jansi) - ("java-jansi-native" ,java-jansi-native))) - (native-inputs - `(("java-powermock-modules-junit4" ,java-powermock-modules-junit4) - ("java-powermock-modules-junit4-common" ,java-powermock-modules-junit4-common) - ("java-powermock-api-easymock" ,java-powermock-api-easymock) - ("java-powermock-api-support" ,java-powermock-api-support) - ("java-powermock-core" ,java-powermock-core) - ("java-powermock-reflect" ,java-powermock-reflect) - ("java-easymock" ,java-easymock) - ("java-jboss-javassist" ,java-jboss-javassist) - ("java-objenesis" ,java-objenesis) - ("java-asm" ,java-asm) - ("java-hamcrest-core" ,java-hamcrest-core) - ("java-cglib" ,java-cglib) - ("java-junit" ,java-junit) - ("java-hawtjni" ,java-hawtjni))))) + (list java-jansi-1 java-jansi-native)) + (native-inputs + (list java-powermock-modules-junit4 + java-powermock-modules-junit4-common + java-powermock-api-easymock + java-powermock-api-support + java-powermock-core + java-powermock-reflect + java-easymock + java-jboss-javassist + java-objenesis + java-asm + java-hamcrest-core + java-cglib + java-junit + java-hawtjni)))) (define-public java-jline-terminal (package @@ -12572,7 +12348,7 @@ features that bring it on par with the Z shell line editor.") (string-append build "/jar/" jar-name) (find-files "."))))))))) (inputs - `(("ncurses" ,ncurses))); infocmp + (list ncurses)); infocmp (home-page "https://github.com/jline/jline3") (synopsis "Java JLine Terminal API and implementations") (description "JLine is a Java library for handling console input. It is @@ -12610,10 +12386,9 @@ This package includes the @var{Terminal} API and implementations.") ;; conflicts with build directory generated by ant-build-system (delete-file "build")))))) (native-inputs - `(("java-junit" ,java-junit) - ("java-easymock" ,java-easymock))) + (list java-junit java-easymock)) (inputs - `(("java-jline-terminal" ,java-jline-terminal))) + (list java-jline-terminal)) (home-page "https://github.com/jline/jline3") (synopsis "Java JLine line reader") (description "JLine is a Java library for handling console input. It is @@ -12682,8 +12457,7 @@ against expected outcomes.") #:source-dir "xmlunit-legacy/src/main/java" #:test-dir "xmlunit-legacy/src/test")) (inputs - `(("java-xmlunit" ,java-xmlunit) - ("java-junit" ,java-junit))) + (list java-xmlunit java-junit)) (native-inputs `(("java-mockito-1" ,java-mockito-1))))) @@ -12715,8 +12489,7 @@ against expected outcomes.") (copy-recursively (assoc-ref inputs "resources") "test-resources") #t))))) (inputs - `(("java-xmlunit" ,java-xmlunit) - ("java-junit" ,java-junit))))) + (list java-xmlunit java-junit)))) (define-public java-openchart2 (package @@ -12748,9 +12521,7 @@ against expected outcomes.") #t)) (replace 'install (install-jars "."))))) (native-inputs - `(("unzip" ,unzip) - ("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list unzip java-junit java-hamcrest-core)) (home-page "https://approximatrix.com/products/openchart2/") (synopsis "Simple plotting for Java") (description "Openchart2 provides a simple, yet powerful, interface for @@ -12841,12 +12612,12 @@ authentication, HTTP state management, and HTTP connection management.") "commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs")) #t))))) (inputs - `(("java-commons-collections4" ,java-commons-collections4) - ("java-commons-compress" ,java-commons-compress) - ("java-commons-httpclient" ,java-commons-httpclient) - ("java-commons-logging-minimal" ,java-commons-logging-minimal) - ("java-commons-net" ,java-commons-net) - ("java-jsch" ,java-jsch))) + (list java-commons-collections4 + java-commons-compress + java-commons-httpclient + java-commons-logging-minimal + java-commons-net + java-jsch)) (home-page "https://commons.apache.org/proper/commons-vfs/") (synopsis "Java file system library") (description "Commons VFS provides a single API for accessing various @@ -12920,7 +12691,7 @@ from ORO, Inc.") (lambda* (#:key inputs #:allow-other-keys) (substitute* "build.xml" ;; Since we removed the bundled ant.jar, give the correct path - (("lib/ant.jar") (string-append (assoc-ref inputs "ant") "/lib/ant.jar")) + (("lib/ant.jar") (search-input-file inputs "/lib/ant.jar")) ;; We removed generated native libraries. We can only rebuild one ;; so don't fail if we can't find a native library for another architecture. (("zipfileset") "zipfileset erroronmissingarchive=\"false\"")) @@ -12939,12 +12710,9 @@ from ORO, Inc.") (replace 'install (install-jars "build"))))) (inputs - `(("libffi" ,libffi) - ("libx11" ,libx11) - ("libxt" ,libxt))) + (list libffi libx11 libxt)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list gcc-7 java-junit java-hamcrest-core)) (home-page "https://github.com/java-native-access/jna") (synopsis "Access to native shared libraries from Java") (description "JNA provides Java programs easy access to native shared @@ -12974,8 +12742,7 @@ Java method invocation.") (lambda* (#:key inputs #:allow-other-keys) (substitute* "nbproject/project.properties" (("../../build/jna.jar") - (string-append (assoc-ref inputs "java-native-access") - "/share/java/jna.jar")) + (search-input-file inputs "/share/java/jna.jar")) (("../../lib/hamcrest-core-.*.jar") (car (find-files (assoc-ref inputs "java-hamcrest-core") "jar$"))) @@ -12986,7 +12753,7 @@ Java method invocation.") (replace 'install (install-jars "dist"))))) (inputs - `(("java-native-access" ,java-native-access))) + (list java-native-access)) (synopsis "Cross-platform mappings for jna") (description "java-native-access-platform has cross-platform mappings and mappings for a number of commonly used platform functions, including a @@ -13026,7 +12793,7 @@ will be allowed to use these programs for authentication.") #:source-dir "jsch-agent-proxy-sshagent/src/main/java" #:tests? #f)); no tests (inputs - `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core))) + (list java-jsch-agentproxy-core)) (synopsis "Proxy to ssh-agent") (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent and Pageant included in Putty. This component contains the code for a proxy to @@ -13041,8 +12808,7 @@ ssh-agent."))) #:source-dir "jsch-agent-proxy-usocket-jna/src/main/java" #:tests? #f)); no tests (inputs - `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core) - ("java-native-access" ,java-native-access))) + (list java-jsch-agentproxy-core java-native-access)) (synopsis "USocketFactory implementation using JNA") (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent and Pageant included in Putty. This component contains an implementation of @@ -13057,9 +12823,8 @@ USocketFactory using @dfn{JNA} (Java Native Access)."))) #:source-dir "jsch-agent-proxy-pageant/src/main/java" #:tests? #f)); no tests (inputs - `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core) - ("java-native-access" ,java-native-access) - ("java-native-access-platform" ,java-native-access-platform))) + (list java-jsch-agentproxy-core java-native-access + java-native-access-platform)) (synopsis "Proxy to pageant") (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent and Pageant included in Putty. This component contains the code for a proxy to @@ -13074,7 +12839,7 @@ pageant."))) #:source-dir "jsch-agent-proxy-usocket-nc/src/main/java" #:tests? #f)); no tests (inputs - `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core))) + (list java-jsch-agentproxy-core)) (synopsis "USocketFactory implementation using netcat") (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent and Pageant included in Putty. This component contains an implementation of @@ -13089,11 +12854,9 @@ USocketFactory using netcat."))) #:source-dir "jsch-agent-proxy-connector-factory/src/main/java" #:tests? #f)); no tests (inputs - `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core) - ("java-jsch-agentproxy-sshagent" ,java-jsch-agentproxy-sshagent) - ("java-jsch-agentproxy-usocket-jna" ,java-jsch-agentproxy-usocket-jna) - ("java-jsch-agentproxy-pageant" ,java-jsch-agentproxy-pageant) - ("java-jsch-agentproxy-usocket-nc" ,java-jsch-agentproxy-usocket-nc))) + (list java-jsch-agentproxy-core java-jsch-agentproxy-sshagent + java-jsch-agentproxy-usocket-jna java-jsch-agentproxy-pageant + java-jsch-agentproxy-usocket-nc)) (synopsis "Connector factory for jsch agent proxy") (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent and Pageant included in Putty. This component contains a connector factory."))) @@ -13107,8 +12870,7 @@ and Pageant included in Putty. This component contains a connector factory."))) #:source-dir "jsch-agent-proxy-jsch/src/main/java" #:tests? #f)); no tests (inputs - `(("java-jsch" ,java-jsch) - ("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core))) + (list java-jsch java-jsch-agentproxy-core)) (synopsis "JSch integration library for agentproxy") (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent and Pageant included in Putty. This component contains a library to use @@ -13186,18 +12948,18 @@ jsch-agent-proxy with JSch."))) (chmod ivy #o755) #t)))))) (inputs - `(("java-bouncycastle" ,java-bouncycastle) - ("java-commons-cli" ,java-commons-cli) - ("java-commons-collections" ,java-commons-collections) - ("java-commons-httpclient" ,java-commons-httpclient) - ("java-commons-lang" ,java-commons-lang) - ("java-commons-vfs" ,java-commons-vfs) - ("java-jakarta-oro" ,java-jakarta-oro) - ("java-jsch" ,java-jsch) - ("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core) - ("java-jsch-agentproxy-connector-factory" ,java-jsch-agentproxy-connector-factory) - ("java-jsch-agentproxy-jsch" ,java-jsch-agentproxy-jsch) - ("java-junit" ,java-junit))) + (list java-bouncycastle + java-commons-cli + java-commons-collections + java-commons-httpclient + java-commons-lang + java-commons-vfs + java-jakarta-oro + java-jsch + java-jsch-agentproxy-core + java-jsch-agentproxy-connector-factory + java-jsch-agentproxy-jsch + java-junit)) (home-page "https://ant.apache.org/ivy") (synopsis "Dependency manager for the Java programming language") (description "Ivy is a tool for managing (recording, tracking, resolving @@ -13238,20 +13000,19 @@ and reporting) project dependencies. It is characterized by the following: (replace 'install (install-from-pom "org.eclipse.sisu.inject/pom.xml"))))) (propagated-inputs - `(("java-guice" ,java-guice) - ("java-sisu-inject-parent-pom" ,java-sisu-inject-parent-pom))) - (inputs - `(("java-guice-servlet" ,java-guice-servlet) - ("java-javax-inject" ,java-javax-inject) - ("java-javaee-servletapi" ,java-javaee-servletapi) - ("java-junit" ,java-junit) - ("java-slf4j-api" ,java-slf4j-api) - ("java-jsr305" ,java-jsr305) - ("java-jsr250" ,java-jsr250) - ("java-cdi-api" ,java-cdi-api) - ("java-osgi-framework" ,java-osgi-framework) - ("java-osgi-util-tracker" ,java-osgi-util-tracker) - ("java-testng" ,java-testng))) + (list java-guice java-sisu-inject-parent-pom)) + (inputs + (list java-guice-servlet + java-javax-inject + java-javaee-servletapi + java-junit + java-slf4j-api + java-jsr305 + java-jsr250 + java-cdi-api + java-osgi-framework + java-osgi-util-tracker + java-testng)) (home-page "https://www.eclipse.org/sisu/") (synopsis "Classpath scanning, auto-binding, and dynamic auto-wiring") (description "Sisu is a modular JSR330-based container that supports @@ -13341,23 +13102,23 @@ OSGi Service Registry is a goal of this project.") (replace 'install (install-from-pom "org.eclipse.sisu.plexus/pom.xml"))))) (propagated-inputs - `(("java-plexus-classworlds" ,java-plexus-classworlds) - ("java-plexus-utils" ,java-plexus-utils) - ("java-plexus-component-annotations" ,java-plexus-component-annotations) - ("java-cdi-api" ,java-cdi-api) - ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) - ("java-sisu-plexus-parent-pom" ,java-sisu-plexus-parent-pom))) - (inputs - `(("java-osgi-framework" ,java-osgi-framework) - ("java-slf4j-api" ,java-slf4j-api) - ("java-javax-inject" ,java-javax-inject) - ("java-guice" ,java-guice) - ("java-guava" ,java-guava) - ("java-aopalliance" ,java-aopalliance) - ("java-asm" ,java-asm) - ("java-cglib" ,java-cglib))) - (native-inputs - `(("java-junit" ,java-junit))) + (list java-plexus-classworlds + java-plexus-utils + java-plexus-component-annotations + java-cdi-api + java-eclipse-sisu-inject + java-sisu-plexus-parent-pom)) + (inputs + (list java-osgi-framework + java-slf4j-api + java-javax-inject + java-guice + java-guava + java-aopalliance + java-asm + java-cglib)) + (native-inputs + (list java-junit)) (home-page "https://www.eclipse.org/sisu/") (synopsis "Plexus support for the sisu container") (description "Sisu is a modular JSR330-based container that supports @@ -13425,10 +13186,9 @@ and @code{ISimpleCompiler} interfaces.") (chdir "janino") #t))))) (inputs - `(("java-commons-compiler" ,java-commons-compiler))) + (list java-commons-compiler)) (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) + (list java-junit java-hamcrest-core)) (description "Janino is a Java compiler. Janino can compile a set of source files to a set of class files like @code{javac}, but also compile a Java expression, block, class body or source file in memory, load the bytecode @@ -13526,11 +13286,10 @@ This module lays the groundwork for the other two modules.") (invoke "ant" "jar") #t))))) (inputs - `(("java-logback-core" ,java-logback-core) - ("java-slf4j-api" ,java-slf4j-api) - ,@(package-inputs java-logback-core))) + (modify-inputs (package-inputs java-logback-core) + (prepend java-logback-core java-slf4j-api))) (native-inputs - `(("groovy" ,groovy))) + (list groovy)) (description "Logback is intended as a successor to the popular log4j project. This module can be assimilated to a significantly improved version of log4j. Moreover, @code{logback-classic} natively implements the slf4j API so that you @@ -13570,10 +13329,8 @@ such as log4j or @code{java.util.logging} (JUL)."))) (find-files "." "\\.properties$"))) #t))))) (inputs - `(("java-classpathx-servletapi" ,java-classpathx-servletapi) - ("java-javaewah" ,java-javaewah) - ("java-jsch" ,java-jsch) - ("java-slf4j-api" ,java-slf4j-api))) + (list java-classpathx-servletapi java-javaewah java-jsch + java-slf4j-api)) (home-page "https://eclipse.org/jgit/") (synopsis "Java library implementing the Git version control system") (description "JGit is a lightweight, pure Java library implementing the @@ -13608,9 +13365,7 @@ network protocols, and core version control algorithms.") (("wordinbits") "WORD_IN_BITS")) #t)))))) (inputs - `(("java-javaewah" ,java-javaewah) - ("java-jsch" ,java-jsch) - ("java-slf4j-api" ,java-slf4j-api))))) + (list java-javaewah java-jsch java-slf4j-api)))) (define-public abcl (package @@ -13629,7 +13384,7 @@ network protocols, and core version control algorithms.") "abcl-fix-build-xml.patch")))) (build-system ant-build-system) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (arguments `(#:build-target "abcl.jar" #:test-target "abcl.test" @@ -13724,7 +13479,7 @@ and allows building a Java object model for JSON text using API classes "build/classes") #t))))) (propagated-inputs - `(("java-jsonp-api" ,java-jsonp-api))) + (list java-jsonp-api)) (description "JSON Processing (JSON-P) is a Java API to process (e.g. parse, generate, transform and query) JSON messages. This package contains a reference implementation of that API."))) @@ -13764,7 +13519,7 @@ a reference implementation of that API."))) (string-append (assoc-ref outputs "out") "/share/doc/java-xmp")) #t))))) (native-inputs - `(("unzip" ,unzip))) + (list unzip)) (home-page "https://www.adobe.com/devnet/xmp.html") (synopsis "Extensible Metadat Platform (XMP) support in Java") (description "Adobe's Extensible Metadata Platform (XMP) is a labeling @@ -13821,7 +13576,7 @@ library and the API is similar.") "spi/Messages_ru.properties"))) #t))))) (native-inputs - `(("java-junit" ,java-junit))) + (list java-junit)) (home-page "https://args4j.kohsuke.org/") (synopsis "Command line parser library") (description "Args4j is a small Java class library that makes it easy to @@ -13854,10 +13609,9 @@ parse command line options/arguments in your CUI application.") (("/java\">") "\">")) #t))))) (propagated-inputs - `(("java-xmp" ,java-xmp))) + (list java-xmp)) (native-inputs - `(("java-hamcrest-core" ,java-hamcrest-core) - ("java-junit" ,java-junit))) + (list java-hamcrest-core java-junit)) (home-page "https://github.com/drewnoakes/metadata-extractor") (synopsis "Extract metadata from image and video files") (description "Metadata-extractor is a straightforward Java library for @@ -13904,7 +13658,7 @@ IPTC, XMP, ICC and more formats.") (replace 'install (install-jars "dist"))))) (native-inputs - `(("javacc" ,javacc))) + (list javacc)) (home-page "https://github.com/blackears/svgSalamander") (synopsis "SVG engine for Java") (description "SVG Salamander is an SVG engine for Java that's designed @@ -13933,8 +13687,7 @@ rich interactive menus to charts and graphcs to complex animations.") #:source-dir "src/main/java" #:tests? #f)); no tests (inputs - `(("java-cdi-api" ,java-cdi-api) - ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec))) + (list java-cdi-api java-jboss-interceptors-api-spec)) (home-page "https://github.com/jboss/jboss-transaction-api_spec") (synopsis "Generic transaction management API in Java") (description "Java-jboss-transaction-api-spec implements the Transactions @@ -14075,11 +13828,9 @@ can be interpreted by IDEs and static analysis tools to improve code analysis.") (replace 'install (install-jars "build/jar"))))) (inputs - `(("java-guava" ,java-guava) - ("java-jboss-javassist" ,java-jboss-javassist) - ("java-jsonp-api" ,java-jsonp-api))) + (list java-guava java-jboss-javassist java-jsonp-api)) (native-inputs - `(("javacc" ,javacc))) + (list javacc)) (home-page "http://javaparser.org/") (synopsis "Parser for Java") (description @@ -14163,15 +13914,14 @@ can be interpreted by IDEs and static analysis tools to improve code analysis.") "/test-model/pcal") "\\.cfg$")))) (replace 'install - (lambda* (#:key inputs #:allow-other-keys) - (let* ((share (string-append %output "/share/java")) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((share (string-append (assoc-ref outputs "out") "/share/java")) (jar-name "tla2tools.jar"); set in project.properties (jar (string-append ,tlatools "/dist/" jar-name)) (java-cp (string-append share "/" jar-name)) - (bin (string-append %output "/bin")) - (java (string-append (assoc-ref inputs "jdk") - "/bin/java"))) + (bin (string-append (assoc-ref outputs "out") "/bin")) + (java (search-input-file inputs "/bin/java"))) (install-file jar share) (mkdir-p bin) ;; Generate wrapper scripts for bin/, which invoke common @@ -14196,16 +13946,15 @@ can be interpreted by IDEs and static analysis tools to improve code analysis.") ("tlc2" . "tlc2.TLC") ("tlc2-repl" . "tlc2.REPL")))))))))) (native-inputs - `(("java-junit" ,java-junit) - ("java-easymock" ,java-easymock))) + (list java-junit java-easymock)) (inputs - `(("java-javax-mail" ,java-javax-mail) - ("java-gson" ,java-gson-2.8.6) - ("java-jline-terminal" ,java-jline-terminal) - ("java-jline-reader" ,java-jline-reader) - ("java-eclipse-lsp4j-jsonrpc" ,java-eclipse-lsp4j-jsonrpc) - ("java-eclipse-lsp4j-jsonrpc-debug" ,java-eclipse-lsp4j-jsonrpc-debug) - ("java-eclipse-lsp4j-debug" ,java-eclipse-lsp4j-debug))) + (list java-javax-mail + java-gson-2.8.6 + java-jline-terminal + java-jline-reader + java-eclipse-lsp4j-jsonrpc + java-eclipse-lsp4j-jsonrpc-debug + java-eclipse-lsp4j-debug)) (home-page "https://lamport.azurewebsites.net/tla/tools.html") (synopsis "TLA+ tools (analyzer, TLC, TLATeX, PlusCal translator)") (description "TLA+ is a high-level language for modeling programs and |