1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
3 ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
4 ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
5 ;;; Copyright © 2017, 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
6 ;;; Copyright © 2017-2020 Julien Lepiller <julien@lepiller.eu>
7 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
8 ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
9 ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
10 ;;; Copyright © 2018, 2019 Gábor Boskovits <boskovits@gmail.com>
11 ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
12 ;;; Copyright © 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
13 ;;; Copyright © 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
14 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
15 ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org>
16 ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
18 ;;; This file is part of GNU Guix.
20 ;;; GNU Guix is free software; you can redistribute it and/or modify it
21 ;;; under the terms of the GNU General Public License as published by
22 ;;; the Free Software Foundation; either version 3 of the License, or (at
23 ;;; your option) any later version.
25 ;;; GNU Guix is distributed in the hope that it will be useful, but
26 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
27 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
28 ;;; GNU General Public License for more details.
30 ;;; You should have received a copy of the GNU General Public License
31 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
33 (define-module (gnu packages java)
34 #:use-module ((guix licenses) #:prefix license:)
35 #:use-module (guix packages)
36 #:use-module (guix download)
37 #:use-module (guix hg-download)
38 #:use-module (guix git-download)
39 #:use-module (guix svn-download)
40 #:use-module (guix utils)
41 #:use-module (guix build-system ant)
42 #:use-module (guix build-system gnu)
43 #:use-module (guix build-system trivial)
44 #:use-module (gnu packages)
45 #:use-module (gnu packages attr)
46 #:use-module (gnu packages autotools)
47 #:use-module (gnu packages base)
48 #:use-module (gnu packages bash)
49 #:use-module (gnu packages certs)
50 #:use-module (gnu packages cpio)
51 #:use-module (gnu packages cups)
52 #:use-module (gnu packages compression)
53 #:use-module (gnu packages elf)
54 #:use-module (gnu packages fontutils)
55 #:use-module (gnu packages gawk)
56 #:use-module (gnu packages gettext)
57 #:use-module (gnu packages gl)
58 #:use-module (gnu packages ghostscript) ;lcms
59 #:use-module (gnu packages gnome)
60 #:use-module (gnu packages groovy)
61 #:use-module (gnu packages gtk)
62 #:use-module (gnu packages guile)
63 #:use-module (gnu packages icu4c)
64 #:use-module (gnu packages image)
65 #:use-module (gnu packages java-compression)
66 #:use-module (gnu packages libffi)
67 #:use-module (gnu packages linux) ;alsa
68 #:use-module (gnu packages maths)
69 #:use-module (gnu packages maven)
70 #:use-module (gnu packages maven-parent-pom)
71 #:use-module (gnu packages nss)
72 #:use-module (gnu packages onc-rpc)
73 #:use-module (gnu packages web)
74 #:use-module (gnu packages wget)
75 #:use-module (gnu packages pkg-config)
76 #:use-module (gnu packages perl)
77 #:use-module (gnu packages popt)
78 #:use-module (gnu packages kerberos)
79 #:use-module (gnu packages xml)
80 #:use-module (gnu packages xorg)
81 #:use-module (gnu packages texinfo)
82 #:use-module ((srfi srfi-1) #:select (fold alist-delete))
83 #:use-module (srfi srfi-11)
84 #:use-module (ice-9 match))
88 ;;; Java bootstrap toolchain.
91 ;; The Java bootstrap begins with Jikes, a Java compiler written in C++. We
92 ;; use it to build a simple version of GNU Classpath, the Java standard
93 ;; library. We chose version 0.93 because it is the last version that can be
94 ;; built with Jikes. With Jikes and this version of GNU Classpath we can
95 ;; build JamVM, a Java Virtual Machine. We build version 1.5.1 because it is
96 ;; the last version of JamVM that works with a version of GNU classpath that
97 ;; does not require ECJ. These three packages make up the bootstrap JDK.
99 ;; This is sufficient to build an older version of Ant, which is needed to
100 ;; build an older version of ECJ, an incremental Java compiler, both of which
101 ;; are written in Java.
103 ;; ECJ is needed to build the latest release (0.99) and the development
104 ;; version of GNU Classpath. The development version of GNU Classpath has
105 ;; much more support for Java 1.6 than the latest release, but we need to
106 ;; build 0.99 first to get a working version of javah. ECJ, the development
107 ;; version of GNU Classpath, and the latest version of JamVM make up the
108 ;; second stage JDK with which we can build the OpenJDK with the Icedtea 1.x
109 ;; build framework. We then build the more recent JDKs Icedtea 2.x and
112 (define-public libantlr3c
120 (string-append "https://www.antlr3.org/download/C/"
121 name "-" version ".tar.gz"))
123 (base32 "0lpbnb4dq4azmsvlhp6khq1gy42kyqyjv8gww74g5lm2y6blm4fa"))))
124 (build-system gnu-build-system)
126 `(#:configure-flags (list "--enable-debuginfo" "--disable-static")
127 #:phases (modify-phases %standard-phases
129 (lambda* (#:key build target native-inputs inputs outputs
130 (configure-flags '()) out-of-source? system
132 (let ((configure (assoc-ref %standard-phases 'configure))
133 (enable-64bit? (member system '("aarch64-linux"
136 (configure #:build build #:target target
137 #:native-inputs native-inputs
138 #:inputs inputs #:outputs outputs
139 #:configure-flags `(,(if enable-64bit?
143 #:out-of-source? out-of-source?)))))))
144 (synopsis "ANTLR C Library")
145 (description "LIBANTLR3C provides run-time C libraries for ANTLR3 (ANother
146 Tool for Language Recognition v3).")
147 (home-page "https://www.antlr3.org/")
148 (license license:bsd-3)))
156 (uri (string-append "mirror://sourceforge/jikes/Jikes/"
157 version "/jikes-" version ".tar.bz2"))
160 "1qqldrp74pzpy5ly421srqn30qppmm9cvjiqdngk8hf47dv2rc0c"))))
161 (build-system gnu-build-system)
162 (home-page "http://jikes.sourceforge.net/")
163 (synopsis "Compiler for the Java language")
164 (description "Jikes is a compiler that translates Java source files as
165 defined in The Java Language Specification into the bytecoded instruction set
166 and binary format defined in The Java Virtual Machine Specification.")
167 (license license:ibmpl1.0)))
170 ;; Last release is from 2014, with a few important commits afterwards.
171 (let ((commit "a4bd00df0199e78243847f06cc04ecaea31f8f08"))
174 (version (git-version "0.2.4" "1" commit))
178 (url "https://github.com/ninjudd/drip")
180 (file-name (git-file-name name version))
183 "0wzmjwfyldr3jn49517xd8yn7dgdk8h88qkga3kjyg1zc375ylg2"))))
184 (build-system gnu-build-system)
186 `(("jdk" ,icedtea "jdk")))
188 `(#:tests? #f ; No tests.
190 (modify-phases %standard-phases
192 (add-before 'install 'fix-wrapper
193 (lambda* (#:key inputs #:allow-other-keys)
194 (let ((jps (string-append (assoc-ref inputs "jdk") "/bin/jps")))
195 (substitute* "bin/drip"
197 (("brew update && brew upgrade drip") "guix pull && guix install drip")
199 (("\\(cd -- \"\\$drip_dir\" && make -s\\) \\|\\| exit 1") "")
200 ;; No need to include source:
201 (("\\[\\[ -r \\$drip_dir/src/org/flatland/drip/Main\\.java \\]\\]")
205 (lambda* (#:key outputs #:allow-other-keys)
206 (let* ((out (assoc-ref outputs "out"))
207 (bin (string-append out "/bin"))
208 (share (string-append out "/share/drip")))
212 (install-file (string-append "bin/" file) bin))
213 '("drip" "drip_daemon" "drip_proxy"))
214 (install-file "drip.jar" share)
215 (substitute* (string-append bin "/drip")
216 (("drip_dir=\\$bin_dir/..")
217 (string-append "drip_dir=" share)))
219 (home-page "https://github.com/ninjudd/drip")
220 (synopsis "Faster Java Virtual Machine launching")
221 (description "Drip is a launcher for the Java Virtual Machine that
222 provides much faster startup times than the @command{java} command. The @command{drip}
223 script is intended to be a drop-in replacement for the @command{java} command,
225 (license license:epl1.0))))
227 ;; This is the last version of GNU Classpath that can be built without ECJ.
228 (define classpath-bootstrap
234 (uri (string-append "mirror://gnu/classpath/classpath-"
238 "0i99wf9xd3hw1sj2sazychb9prx8nadxh2clgvk3zlmb28v0jbfz"))
239 (patches (search-patches "classpath-aarch64-support.patch"))))
240 (build-system gnu-build-system)
243 (list (string-append "JAVAC="
244 (assoc-ref %build-inputs "jikes")
249 "--disable-gconf-peer"
255 (modify-phases %standard-phases
256 ;; XXX: This introduces a memory leak as we remove a call to free up
257 ;; memory for the file name string. This was necessary because of a
258 ;; runtime error that would have prevented us from building
259 ;; ant-bootstrap later. See https://issues.guix.gnu.org/issue/36685
260 ;; for the gnarly details.
261 (add-after 'unpack 'remove-call-to-free
263 (substitute* "native/jni/java-io/java_io_VMFile.c"
264 (("result = cpio_isFileExists.*" m)
265 (string-append m "\n//")))
267 (add-after 'install 'install-data
268 (lambda _ (invoke "make" "install-data"))))))
273 ("pkg-config" ,pkg-config)))
274 (home-page "https://www.gnu.org/software/classpath/")
275 (synopsis "Essential libraries for Java")
276 (description "GNU Classpath is a project to create core class libraries
277 for use with runtimes, compilers and tools for the Java programming
279 ;; GPLv2 or later, with special linking exception.
280 (license license:gpl2+)))
282 ;; This is the last version of JamVM that works with a version of GNU
283 ;; classpath that does not require ECJ.
284 (define jamvm-1-bootstrap
290 (uri (string-append "mirror://sourceforge/jamvm/jamvm/"
291 "JamVM%20" version "/jamvm-"
293 (patches (search-patches "jamvm-arm.patch"))
296 "06lhi03l3b0h48pc7x58bk9my2nrcf1flpmglvys3wyad6yraf36"))
299 ;; Remove precompiled software.
300 (delete-file "lib/classes.zip")
302 (build-system gnu-build-system)
305 (list (string-append "--with-classpath-install-dir="
306 (assoc-ref %build-inputs "classpath"))
307 "--disable-int-caching"
308 "--enable-runtime-reloc-checks"
311 `(("classpath" ,classpath-bootstrap)
316 (home-page "http://jamvm.sourceforge.net/")
317 (synopsis "Small Java Virtual Machine")
318 (description "JamVM is a Java Virtual Machine conforming to the JVM
319 specification edition 2 (blue book). It is extremely small. However, unlike
320 other small VMs it supports the full spec, including object finalisation and
322 (license license:gpl2+)))
324 (define ant-bootstrap
326 (name "ant-bootstrap")
327 ;; The 1.10.x series requires Java 8. 1.9.0 and later use generics, which
328 ;; are not supported. The 1.8.x series is the last to use only features
329 ;; supported by Jikes.
333 (uri (string-append "mirror://apache/"
334 "ant/source/apache-ant-"
335 version "-src.tar.bz2"))
338 "1cg0lga887qz5iizh6mlkxp01lciymrhmp7wzxpl6zpnldxmzrjx"))))
339 (build-system gnu-build-system)
341 `(#:imported-modules ((guix build syscalls)
342 ,@%gnu-build-system-modules)
343 #:modules ((srfi srfi-1)
344 (guix build gnu-build-system)
346 (guix build syscalls))
347 #:tests? #f ; no "check" target
349 (modify-phases %standard-phases
353 (lambda* (#:key inputs #:allow-other-keys)
354 (setenv "JAVA_HOME" (assoc-ref inputs "jamvm"))
356 (string-append (assoc-ref inputs "jamvm")
359 (string-append (assoc-ref inputs "jikes")
362 (string-append (assoc-ref inputs "jamvm")
365 ;; Ant complains if this file doesn't exist.
366 (setenv "HOME" "/tmp")
367 (with-output-to-file "/tmp/.ant.properties"
368 (lambda _ (display "")))
370 ;; Use jikes instead of javac for <javac ...> tags in build.xml
371 (setenv "ANT_OPTS" "-Dbuild.compiler=jikes")
373 ;; jikes produces lots of warnings, but they are not very
374 ;; interesting, so we silence them.
375 (setenv "$BOOTJAVAC_OPTS" "-nowarn")
377 ;; Without these JamVM options the build may freeze.
378 (substitute* "bootstrap.sh"
379 (("^\"\\$\\{JAVACMD\\}\" " m)
380 ,@(if (string-prefix? "armhf" (or (%current-system)
381 (%current-target-system)))
382 `((string-append m "-Xnocompact "))
383 `((string-append m "-Xnocompact -Xnoinlining ")))))
385 ;; Disable tests because we are bootstrapping and thus don't have
386 ;; any of the dependencies required to build and run the tests.
387 (substitute* "build.xml"
388 (("depends=\"jars,test-jar\"") "depends=\"jars\""))
389 (invoke "bash" "bootstrap.sh"
390 (string-append "-Ddist.dir="
391 (assoc-ref %outputs "out")))))
392 (add-after 'build 'strip-jar-timestamps ;based on ant-build-system
393 (lambda* (#:key outputs #:allow-other-keys)
394 (define (repack-archive jar)
395 (let* ((dir (mkdtemp! "jar-contents.XXXXXX"))
396 (manifest (string-append dir "/META-INF/MANIFESTS.MF")))
397 (with-directory-excursion dir
398 (invoke "unzip" jar))
400 ;; XXX: copied from (gnu build install)
401 (for-each (lambda (file)
402 (let ((s (lstat file)))
403 (unless (eq? (stat:type s) 'symlink)
404 (utime file 0 0 0 0))))
405 (find-files dir #:directories? #t))
406 ;; It is important that the manifest appears first.
407 (with-directory-excursion dir
408 (let* ((files (find-files "." ".*" #:directories? #t))
409 ;; To ensure that the reference scanner can
410 ;; detect all store references in the jars
411 ;; we disable compression with the "-0" option.
412 (command (if (file-exists? manifest)
413 `("zip" "-0" "-X" ,jar ,manifest
415 `("zip" "-0" "-X" ,jar ,@files))))
416 (apply invoke command)))))
417 (for-each repack-archive
419 (string-append (assoc-ref %outputs "out") "/lib")
425 ("jamvm" ,jamvm-1-bootstrap)
428 (home-page "https://ant.apache.org")
429 (synopsis "Build tool for Java")
431 "Ant is a platform-independent build tool for Java. It is similar to
432 make but is implemented using the Java language, requires the Java platform,
433 and is best suited to building Java projects. Ant uses XML to describe the
434 build process and its dependencies, whereas Make uses Makefile format.")
435 (license license:asl2.0)))
437 ;; Version 3.2.2 is the last version without a dependency on a full-fledged
438 ;; compiler for Java 1.5.
439 (define ecj-bootstrap
441 (name "ecj-bootstrap")
445 (uri (string-append "http://archive.eclipse.org/eclipse/"
446 "downloads/drops/R-" version
447 "-200702121330/ecjsrc.zip"))
450 "05hj82kxd23qaglsjkaqcj944riisjha7acf7h3ljhrjyljx8307"))))
451 ;; It would be so much easier if we could use the ant-build-system, but we
452 ;; cannot as we don't have ant at this point. We use ecj for
453 ;; bootstrapping the JDK.
454 (build-system gnu-build-system)
456 `(#:modules ((guix build gnu-build-system)
459 #:tests? #f ; there are no tests
461 (modify-phases %standard-phases
463 (lambda* (#:key inputs #:allow-other-keys)
466 (cons (string-append (assoc-ref inputs "jamvm")
468 (find-files (string-append
469 (assoc-ref inputs "ant-bootstrap")
475 (lambda* (#:key inputs #:allow-other-keys)
476 ;; The unpack phase enters the "org" directory by mistake.
479 ;; Create a simple manifest to make ecj executable.
480 (with-output-to-file "manifest"
482 (display "Manifest-Version: 1.0
483 Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n")))
486 (and (apply invoke "jikes"
487 (find-files "." "\\.java$"))
488 (invoke "fastjar" "cvfm"
489 "ecj-bootstrap.jar" "manifest" "."))))
491 (lambda* (#:key outputs #:allow-other-keys)
492 (let ((share (string-append (assoc-ref outputs "out")
495 (install-file "ecj-bootstrap.jar" share)
498 `(("ant-bootstrap" ,ant-bootstrap)
501 ("jamvm" ,jamvm-1-bootstrap)
502 ("fastjar" ,fastjar)))
503 (home-page "https://eclipse.org")
504 (synopsis "Eclipse Java development tools core batch compiler")
505 (description "This package provides the Eclipse Java core batch compiler
506 for bootstrapping purposes. The @dfn{Eclipse compiler for Java} (ecj) is a
507 requirement for all GNU Classpath releases after version 0.93.")
508 (license license:epl1.0)))
510 (define ecj-javac-wrapper
511 (package (inherit ecj-bootstrap)
512 (name "ecj-javac-wrapper")
514 (build-system trivial-build-system)
516 `(#:modules ((guix build utils))
519 (use-modules (guix build utils))
520 (let* ((bin (string-append (assoc-ref %outputs "out") "/bin"))
521 (target (string-append bin "/javac"))
522 (guile (string-append (assoc-ref %build-inputs "guile")
524 (ecj (string-append (assoc-ref %build-inputs "ecj-bootstrap")
525 "/share/java/ecj-bootstrap.jar"))
526 (java (string-append (assoc-ref %build-inputs "jamvm")
528 (bootcp (let ((jvmlib (string-append (assoc-ref %build-inputs "classpath")
529 "/share/classpath")))
530 (string-append jvmlib "/glibj.zip:"
531 jvmlib "/tools.zip"))))
533 (with-output-to-file target
535 (format #t "#!~a --no-auto-compile\n!#\n" guile)
537 `(begin (use-modules (ice-9 match)
543 '(("-bootclasspath" ,bootcp)
548 (let ((classpath (getenv "CLASSPATH")))
550 (string-join (list ,ecj
551 ,(string-append (assoc-ref %build-inputs "jamvm")
555 (receive (vm-args other-args)
556 ;; Separate VM arguments from arguments to ECJ.
557 (partition (cut string-prefix? "-J" <>)
558 (fold (lambda (default acc)
559 (if (member (first default) acc)
560 acc (append default acc)))
564 ;; Remove "-J" prefix
565 (map (cut string-drop <> 2) vm-args)
566 '("org.eclipse.jdt.internal.compiler.batch.Main")
567 (cons "-nowarn" other-args)))))
569 (let ((args (cdr (command-line))))
571 (format (current-error-port) "javac: no arguments given!\n")
576 `(("guile" ,guile-2.2)
577 ("ecj-bootstrap" ,ecj-bootstrap)
578 ("jamvm" ,jamvm-1-bootstrap)
579 ("classpath" ,classpath-bootstrap)))
580 (description "This package provides a wrapper around the @dfn{Eclipse
581 compiler for Java} (ecj) with a command line interface that is compatible with
582 the standard javac executable.")))
584 ;; The classpath-bootstrap was built without a virtual machine, so it does not
585 ;; provide a wrapper for javah. We cannot build the development version of
586 ;; Classpath without javah.
587 (define classpath-0.99
588 (package (inherit classpath-bootstrap)
592 (uri (string-append "mirror://gnu/classpath/classpath-"
596 "1j7cby4k66f1nvckm48xcmh352b1d1b33qk7l6hi7dp9i9zjjagr"))
597 (patches (search-patches "classpath-aarch64-support.patch"))))
600 (list (string-append "--with-ecj-jar="
601 (assoc-ref %build-inputs "ecj-bootstrap")
602 "/share/java/ecj-bootstrap.jar")
603 (string-append "JAVAC="
604 (assoc-ref %build-inputs "ecj-javac-wrapper")
606 (string-append "JAVA="
607 (assoc-ref %build-inputs "jamvm")
610 "ac_cv_prog_java_works=yes" ; trust me
614 "--disable-gconf-peer"
620 (modify-phases %standard-phases
621 (add-after 'install 'install-data
622 (lambda _ (invoke "make" "install-data"))))))
624 `(("ecj-bootstrap" ,ecj-bootstrap)
625 ("ecj-javac-wrapper" ,ecj-javac-wrapper)
627 ("jamvm" ,jamvm-1-bootstrap)
628 ("classpath" ,classpath-bootstrap)
630 ("pkg-config" ,pkg-config)))))
632 ;; We need this because classpath-bootstrap does not provide all of the tools
633 ;; we need to build classpath-devel.
634 (define classpath-jamvm-wrappers
635 (package (inherit classpath-0.99)
636 (name "classpath-jamvm-wrappers")
638 (build-system trivial-build-system)
640 `(#:modules ((guix build utils))
643 (use-modules (guix build utils))
644 (let* ((bash (assoc-ref %build-inputs "bash"))
645 (jamvm (assoc-ref %build-inputs "jamvm"))
646 (classpath (assoc-ref %build-inputs "classpath"))
647 (bin (string-append (assoc-ref %outputs "out")
650 (for-each (lambda (tool)
651 (with-output-to-file (string-append bin tool)
653 ,@(if (string-prefix? "armhf" (or (%current-system)
654 (%current-target-system)))
655 `((format #t "#!~a/bin/sh
656 ~a/bin/jamvm -Xnocompact -classpath ~a/share/classpath/tools.zip \
657 gnu.classpath.tools.~a.~a $@"
658 bash jamvm classpath tool
659 (if (string=? "native2ascii" tool)
660 "Native2ASCII" "Main")))
661 `((format #t "#!~a/bin/sh
662 ~a/bin/jamvm -Xnocompact -Xnoinlining -classpath ~a/share/classpath/tools.zip \
663 gnu.classpath.tools.~a.~a $@"
664 bash jamvm classpath tool
665 (if (string=? "native2ascii" tool)
666 "Native2ASCII" "Main"))))))
667 (chmod (string-append bin tool) #o755))
677 ("jamvm" ,jamvm-1-bootstrap)
678 ("classpath" ,classpath-0.99)))
680 (synopsis "Executables from GNU Classpath")
681 (description "This package provides wrappers around the tools provided by
682 the GNU Classpath library. They are executed by the JamVM virtual
685 ;; The last release of GNU Classpath is 0.99 and it happened in 2012. Since
686 ;; then Classpath has gained much more support for Java 1.6.
687 (define-public classpath-devel
688 (let ((commit "e7c13ee0cf2005206fbec0eca677f8cf66d5a103")
690 (package (inherit classpath-bootstrap)
691 (version (string-append "0.99-" revision "." (string-take commit 9)))
695 (url "https://git.savannah.gnu.org/git/classpath.git")
697 (file-name (string-append "classpath-" version "-checkout"))
700 "1v2rww76ww322mpg3s12a1kkc6gkp31bm9gcxs532h0wq285fiw4"))))
703 ;; Ensure that the initial heap size is smaller than the maximum
704 ;; size. By default only Xmx is set, which can lead to invalid
705 ;; memory settings on some machines with a lot of memory.
706 '("JAVAC_MEM_OPT=-J-Xms512M -J-Xmx768M")
708 (list (string-append "--with-ecj-jar="
709 (assoc-ref %build-inputs "ecj-bootstrap")
710 "/share/java/ecj-bootstrap.jar")
711 (string-append "--with-javac="
712 (assoc-ref %build-inputs "ecj-javac-wrapper")
714 (string-append "JAVA="
715 (assoc-ref %build-inputs "jamvm")
718 "ac_cv_prog_java_works=yes" ; trust me
722 "--disable-gconf-peer"
728 (modify-phases %standard-phases
729 ;; XXX The bootstrap phase executes autogen.sh, which fails after
730 ;; complaining about the lack of gettext.
732 (lambda _ (invoke "autoreconf" "-vif")))
733 (add-after 'unpack 'remove-unsupported-annotations
735 (substitute* (find-files "java" "\\.java$")
738 (add-after 'install 'install-data
739 (lambda _ (invoke "make" "install-data"))))))
741 `(("autoconf" ,autoconf)
742 ("automake" ,automake)
744 ("gettext" ,gettext-minimal)
746 ("classpath-jamvm-wrappers" ,classpath-jamvm-wrappers) ; for javah
747 ("ecj-bootstrap" ,ecj-bootstrap)
748 ("ecj-javac-wrapper" ,ecj-javac-wrapper)
750 ("jamvm" ,jamvm-1-bootstrap)
752 ("pkg-config" ,pkg-config))))))
755 (package (inherit jamvm-1-bootstrap)
759 (uri (string-append "mirror://sourceforge/jamvm/jamvm/"
760 "JamVM%20" version "/jamvm-"
764 "1nl0zxz8y5x8gwsrm7n32bry4dx8x70p8z3s9jbdvs8avyb8whkn"))
766 (search-patches "jamvm-2.0.0-disable-branch-patching.patch"))
769 ;; Remove precompiled software.
770 (delete-file "src/classlib/gnuclasspath/lib/classes.zip")
772 (build-system gnu-build-system)
775 (list (string-append "--with-classpath-install-dir="
776 (assoc-ref %build-inputs "classpath")))))
778 `(("classpath" ,classpath-devel)
779 ("ecj-javac-wrapper" ,ecj-javac-wrapper)
783 (define ecj-javac-wrapper-final
784 (package (inherit ecj-javac-wrapper)
786 `(("guile" ,guile-2.2)
787 ("ecj-bootstrap" ,ecj-bootstrap)
789 ("classpath" ,classpath-devel)))))
791 ;; The bootstrap JDK consisting of jamvm, classpath-devel,
792 ;; ecj-javac-wrapper-final cannot build Icedtea 2.x directly, because it's
793 ;; written in Java 7. It can, however, build the unmaintained Icedtea 1.x,
794 ;; which uses Java 6 only.
795 (define-public icedtea-6
802 "http://icedtea.wildebeest.org/download/source/icedtea6-"
806 "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
807 (modules '((guix build utils)))
810 (substitute* "Makefile.in"
811 ;; do not leak information about the build host
812 (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
813 "DISTRIBUTION_ID=\"\\\"guix\\\"\""))
815 (build-system gnu-build-system)
816 (outputs '("out" ; Java Runtime Environment
817 "jdk" ; Java Development Kit
818 "doc")) ; all documentation
820 `(;; There are many failing tests and many are known to fail upstream.
823 ;; The DSOs use $ORIGIN to refer to each other, but (guix build
824 ;; gremlin) doesn't support it yet, so skip this phase.
825 #:validate-runpath? #f
827 #:modules ((guix build utils)
828 (guix build gnu-build-system)
832 `("--enable-bootstrap"
835 "--with-parallel-jobs"
836 "--disable-downloading"
838 ,(string-append "--with-ecj="
839 (assoc-ref %build-inputs "ecj")
840 "/share/java/ecj-bootstrap.jar")
841 ,(string-append "--with-jar="
842 (assoc-ref %build-inputs "fastjar")
844 ,(string-append "--with-jdk-home="
845 (assoc-ref %build-inputs "classpath"))
846 ,(string-append "--with-java="
847 (assoc-ref %build-inputs "jamvm")
850 (modify-phases %standard-phases
852 (lambda* (#:key source inputs #:allow-other-keys)
853 (invoke "tar" "xvf" source)
854 (chdir (string-append "icedtea6-" ,version))
856 (copy-recursively (assoc-ref inputs "openjdk-src") "openjdk")
857 ;; The convenient OpenJDK source bundle is no longer
858 ;; available for download, so we have to take the sources
859 ;; from the Mercurial repositories and change the Makefile
860 ;; to avoid tests for the OpenJDK zip archive.
861 (with-directory-excursion "openjdk"
862 (for-each (lambda (part)
866 (string-append part "-src"))
869 "langtools" "jaxp" "jaxws")))
870 (with-directory-excursion "openjdk"
871 (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
872 (rename-file "hg-checkout" "hotspot"))
873 (substitute* "patches/freetypeversion.patch"
874 (("REQUIRED_FREETYPE_VERSION = 2.2.1")
875 "REQUIRED_FREETYPE_VERSION = 2.10.1"))
876 (substitute* "Makefile.in"
877 (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;")
878 "echo \"trust me\";")
879 ;; The contents of the bootstrap directory must be
880 ;; writeable but when copying from the store they are
882 (("mkdir -p lib/rt" line)
883 (string-append line "; chmod -R u+w $(BOOT_DIR)")))
884 (invoke "chmod" "-R" "u+w" "openjdk")))
885 (add-after 'unpack 'use-classpath
886 (lambda* (#:key inputs #:allow-other-keys)
887 (let ((jvmlib (assoc-ref inputs "classpath"))
888 (jamvm (assoc-ref inputs "jamvm")))
889 ;; Classpath does not provide rt.jar.
890 (substitute* "Makefile.in"
891 (("\\$\\(SYSTEM_JDK_DIR\\)/jre/lib/rt.jar")
892 (string-append jvmlib "/share/classpath/glibj.zip")))
893 ;; Make sure we can find all classes.
895 (string-append jvmlib "/share/classpath/glibj.zip:"
896 jvmlib "/share/classpath/tools.zip:"
897 jamvm "/lib/rt.jar"))
899 (string-append "-cp "
900 jvmlib "/share/classpath/glibj.zip:"
901 jvmlib "/share/classpath/tools.zip")))
903 (add-after 'unpack 'patch-patches
905 ;; shebang in patches so that they apply cleanly
906 (substitute* '("patches/jtreg-jrunscript.patch"
907 "patches/hotspot/hs23/drop_unlicensed_test.patch")
908 (("#!/bin/sh") (string-append "#!" (which "sh"))))
910 (add-after 'unpack 'patch-paths
911 (lambda* (#:key inputs #:allow-other-keys)
912 ;; buildtree.make generates shell scripts, so we need to replace
913 ;; the generated shebang
914 (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make")
915 (("/bin/sh") (which "bash")))
917 (let ((corebin (string-append
918 (assoc-ref inputs "coreutils") "/bin/"))
919 (binbin (string-append
920 (assoc-ref inputs "binutils") "/bin/"))
921 (grepbin (string-append
922 (assoc-ref inputs "grep") "/bin/")))
923 (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk"
924 "openjdk/corba/make/common/shared/Defs-linux.gmk")
925 (("UNIXCOMMAND_PATH = /bin/")
926 (string-append "UNIXCOMMAND_PATH = " corebin))
927 (("USRBIN_PATH = /usr/bin/")
928 (string-append "USRBIN_PATH = " corebin))
929 (("DEVTOOLS_PATH *= */usr/bin/")
930 (string-append "DEVTOOLS_PATH = " corebin))
931 (("COMPILER_PATH *= */usr/bin/")
932 (string-append "COMPILER_PATH = "
933 (assoc-ref inputs "gcc") "/bin/"))
934 (("DEF_OBJCOPY *=.*objcopy")
935 (string-append "DEF_OBJCOPY = " (which "objcopy"))))
937 ;; fix path to alsa header
938 (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk"
939 (("ALSA_INCLUDE=/usr/include/alsa/version.h")
940 (string-append "ALSA_INCLUDE="
941 (assoc-ref inputs "alsa-lib")
942 "/include/alsa/version.h")))
944 ;; fix hard-coded utility paths
945 (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk"
946 "openjdk/corba/make/common/shared/Defs-utils.gmk")
948 (string-append "ECHO = " (which "echo")))
950 (string-append "GREP = " (which "grep")))
952 (string-append "EGREP = " (which "egrep")))
954 (string-append "CPIO = " (which "cpio")))
955 (("READELF *=.*readelf")
956 (string-append "READELF = " (which "readelf")))
958 (string-append "AR = " (which "ar")))
960 (string-append "TAR = " (which "tar")))
962 (string-append "AS = " (which "as")))
964 (string-append "LD = " (which "ld")))
966 (string-append "STRIP = " (which "strip")))
968 (string-append "NM = " (which "nm")))
970 (string-append "SH = " (which "bash")))
972 (string-append "FIND = " (which "find")))
974 (string-append "LDD = " (which "ldd")))
975 (("NAWK *=.*(n|g)awk")
976 (string-append "NAWK = " (which "gawk")))
978 (string-append "XARGS = " (which "xargs")))
980 (string-append "UNZIP = " (which "unzip")))
982 (string-append "ZIPEXE = " (which "zip")))
984 (string-append "SED = " (which "sed"))))
986 ;; Some of these timestamps cause problems as they are more than
987 ;; 10 years ago, failing the build process.
989 "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties"
990 (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN")
991 (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN")
992 (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON")
993 (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY"))
995 (add-before 'configure 'set-additional-paths
996 (lambda* (#:key inputs #:allow-other-keys)
998 (string-append (assoc-ref inputs "libxrender")
999 "/include/X11/extensions" ":"
1000 (assoc-ref inputs "libxtst")
1001 "/include/X11/extensions" ":"
1002 (assoc-ref inputs "libxinerama")
1003 "/include/X11/extensions" ":"
1004 (or (getenv "CPATH") "")))
1005 (setenv "ALT_CUPS_HEADERS_PATH"
1006 (string-append (assoc-ref inputs "cups")
1008 (setenv "ALT_FREETYPE_HEADERS_PATH"
1009 (string-append (assoc-ref inputs "freetype")
1011 (setenv "ALT_FREETYPE_LIB_PATH"
1012 (string-append (assoc-ref inputs "freetype")
1015 (add-before 'build 'disable-os-version-check
1016 ;; allow build on linux major version change
1018 (setenv "DISABLE_HOTSPOT_OS_VERSION_CHECK" "ok")
1021 (lambda* (#:key outputs #:allow-other-keys)
1022 (let ((doc (string-append (assoc-ref outputs "doc")
1023 "/share/doc/icedtea"))
1024 (jre (assoc-ref outputs "out"))
1025 (jdk (assoc-ref outputs "jdk")))
1026 (copy-recursively "openjdk.build/docs" doc)
1027 (copy-recursively "openjdk.build/j2re-image" jre)
1028 (copy-recursively "openjdk.build/j2sdk-image" jdk))
1031 `(("ant" ,ant-bootstrap)
1032 ("alsa-lib" ,alsa-lib)
1034 ("classpath" ,classpath-devel)
1035 ("coreutils" ,coreutils)
1038 ("ecj" ,ecj-bootstrap)
1039 ("ecj-javac" ,ecj-javac-wrapper-final)
1040 ("fastjar" ,fastjar)
1041 ("fontconfig" ,fontconfig)
1042 ("freetype" ,freetype)
1049 ("libjpeg" ,libjpeg-turbo)
1052 ("libtool" ,libtool)
1054 ("libxcomposite" ,libxcomposite)
1056 ("libxinerama" ,libxinerama)
1057 ("libxrender" ,libxrender)
1058 ("libxslt" ,libxslt) ;for xsltproc
1060 ("libxtst" ,libxtst)
1061 ("mit-krb5" ,mit-krb5)
1063 ("nss-certs" ,nss-certs)
1065 ("pkg-config" ,pkg-config)
1066 ("procps" ,procps) ;for "free", even though I'm not sure we should use it
1076 (url "http://hg.openjdk.java.net/jdk6/jdk6/")
1077 (changeset "jdk6-b41")))
1080 "14q47yfg586fs64w30g8mk92m5dkxsvr36zzh0ra99xk5x0x96mv"))))
1085 (url "http://hg.openjdk.java.net/jdk6/jdk6/jdk/")
1086 (changeset "jdk6-b41")))
1089 "165824nhg1k1dx6zs9dny0j49rmk35jw5b13dmz8c77jfajml4v9"))))
1094 (url "http://hg.openjdk.java.net/jdk6/jdk6/hotspot/")
1095 (changeset "jdk6-b41")))
1098 "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))
1100 (search-patches "icedtea-6-hotspot-gcc-segfault-workaround.patch"))))
1105 (url "http://hg.openjdk.java.net/jdk6/jdk6/corba/")
1106 (changeset "jdk6-b41")))
1109 "1p9g1r9dnax2iwp7yb59qx7m4nmshqhwmrb2b8jj8zgbd9dl2i3q"))))
1114 (url "http://hg.openjdk.java.net/jdk6/jdk6/langtools/")
1115 (changeset "jdk6-b41")))
1118 "1x52wd67fynbbd9ild6fb4wvba3f5hhwk03qdjfazd0a1qr37z3d"))))
1123 (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxp/")
1124 (changeset "jdk6-b41")))
1127 "0shlqrvzpr4nrkmv215lbxnby63s3yvbdh1yxcayznsyqwa4nlxm"))))
1132 (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxws/")
1133 (changeset "jdk6-b41")))
1136 "0835lkw8vib1xhp8lxnybhlvzdh699hbi4mclxanydjk63zbpxk0"))))))
1137 (home-page "http://icedtea.classpath.org")
1138 (synopsis "Java development kit")
1140 "This package provides the OpenJDK built with the IcedTea build harness.
1141 This version of the OpenJDK is no longer maintained and is only used for
1142 bootstrapping purposes.")
1143 ;; IcedTea is released under the GPL2 + Classpath exception, which is the
1144 ;; same license as both GNU Classpath and OpenJDK.
1145 (license license:gpl2+)))
1147 (define-public icedtea-7
1148 (let* ((version "2.6.13")
1149 (drop (lambda (name hash)
1153 "http://icedtea.classpath.org/download/drops"
1154 "/icedtea7/" version "/" name ".tar.bz2"))
1155 (sha256 (base32 hash))))))
1162 "http://icedtea.wildebeest.org/download/source/icedtea-"
1166 "1w331rdqx1dcx2xb0fmjmrkdc71xqn20fxsgw8by4xhiblh88khh"))
1167 (modules '((guix build utils)))
1170 (substitute* "Makefile.in"
1171 ;; do not leak information about the build host
1172 (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
1173 "DISTRIBUTION_ID=\"\\\"guix\\\"\""))
1175 (build-system gnu-build-system)
1176 (outputs '("out" ; Java Runtime Environment
1177 "jdk" ; Java Development Kit
1178 "doc")) ; all documentation
1180 `(;; There are many test failures. Some are known to
1181 ;; fail upstream, others relate to not having an X
1182 ;; server running at test time, yet others are a
1183 ;; complete mystery to me.
1185 ;; hotspot: passed: 241; failed: 45; error: 2
1186 ;; langtools: passed: 1,934; failed: 26
1190 ;; The DSOs use $ORIGIN to refer to each other, but (guix build
1191 ;; gremlin) doesn't support it yet, so skip this phase.
1192 #:validate-runpath? #f
1194 ;; Apparently, the C locale is needed for some of the tests.
1197 #:modules ((guix build utils)
1198 (guix build gnu-build-system)
1205 ;; TODO: package pcsc and sctp, and add to inputs
1206 `("--disable-system-pcsc"
1207 "--disable-system-sctp"
1208 "--enable-bootstrap"
1211 "--disable-downloading"
1212 "--disable-tests" ;they are run in the check phase instead
1213 "--with-openjdk-src-dir=./openjdk.src"
1214 ,(string-append "--with-jdk-home="
1215 (assoc-ref %build-inputs "jdk")))
1218 (modify-phases %standard-phases
1220 (lambda* (#:key source inputs #:allow-other-keys)
1221 (let ((target (string-append "icedtea-" ,version))
1222 (unpack (lambda* (name #:optional dir)
1224 (string-drop-right name 5))))
1227 (assoc-ref inputs name)
1229 "--strip-components=1")))))
1231 (invoke "tar" "xvf" source
1232 "-C" target "--strip-components=1")
1234 (unpack "openjdk-src" "openjdk.src")
1235 (with-directory-excursion "openjdk.src"
1237 (filter (cut string-suffix? "-drop" <>)
1242 (add-after 'unpack 'patch-bitrot
1244 (substitute* '("patches/boot/revert-6973616.patch"
1245 "openjdk.src/jdk/make/common/shared/Defs-versions.gmk")
1246 (("REQUIRED_FREETYPE_VERSION = 2.2.1")
1247 "REQUIRED_FREETYPE_VERSION = 2.10.1"))
1248 ;; As of attr 2.4.48 this header is no longer
1249 ;; included. It is provided by the libc instead.
1250 (substitute* '("configure"
1251 "openjdk.src/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c")
1252 (("attr/xattr.h") "sys/xattr.h"))
1254 (add-after 'unpack 'fix-x11-extension-include-path
1255 (lambda* (#:key inputs #:allow-other-keys)
1256 (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
1257 (((string-append "\\$\\(firstword \\$\\(wildcard "
1258 "\\$\\(OPENWIN_HOME\\)"
1259 "/include/X11/extensions\\).*$"))
1260 (string-append (assoc-ref inputs "libxrender")
1261 "/include/X11/extensions"
1262 " -I" (assoc-ref inputs "libxtst")
1263 "/include/X11/extensions"
1264 " -I" (assoc-ref inputs "libxinerama")
1265 "/include/X11/extensions"))
1266 (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") ""))
1268 (add-after 'unpack 'patch-paths
1270 ;; buildtree.make generates shell scripts, so we need to replace
1271 ;; the generated shebang
1272 (substitute* '("openjdk.src/hotspot/make/linux/makefiles/buildtree.make")
1273 (("/bin/sh") (which "bash")))
1275 (let ((corebin (string-append
1276 (assoc-ref %build-inputs "coreutils") "/bin/"))
1277 (binbin (string-append
1278 (assoc-ref %build-inputs "binutils") "/bin/"))
1279 (grepbin (string-append
1280 (assoc-ref %build-inputs "grep") "/bin/")))
1281 (substitute* '("openjdk.src/jdk/make/common/shared/Defs-linux.gmk"
1282 "openjdk.src/corba/make/common/shared/Defs-linux.gmk")
1283 (("UNIXCOMMAND_PATH = /bin/")
1284 (string-append "UNIXCOMMAND_PATH = " corebin))
1285 (("USRBIN_PATH = /usr/bin/")
1286 (string-append "USRBIN_PATH = " corebin))
1287 (("DEVTOOLS_PATH *= */usr/bin/")
1288 (string-append "DEVTOOLS_PATH = " corebin))
1289 (("COMPILER_PATH *= */usr/bin/")
1290 (string-append "COMPILER_PATH = "
1291 (assoc-ref %build-inputs "gcc") "/bin/"))
1292 (("DEF_OBJCOPY *=.*objcopy")
1293 (string-append "DEF_OBJCOPY = " (which "objcopy"))))
1295 ;; fix path to alsa header
1296 (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
1297 (("ALSA_INCLUDE=/usr/include/alsa/version.h")
1298 (string-append "ALSA_INCLUDE="
1299 (assoc-ref %build-inputs "alsa-lib")
1300 "/include/alsa/version.h")))
1302 ;; fix hard-coded utility paths
1303 (substitute* '("openjdk.src/jdk/make/common/shared/Defs-utils.gmk"
1304 "openjdk.src/corba/make/common/shared/Defs-utils.gmk")
1306 (string-append "ECHO = " (which "echo")))
1308 (string-append "GREP = " (which "grep")))
1309 (("EGREP *=.*egrep")
1310 (string-append "EGREP = " (which "egrep")))
1312 (string-append "CPIO = " (which "cpio")))
1313 (("READELF *=.*readelf")
1314 (string-append "READELF = " (which "readelf")))
1316 (string-append "AR = " (which "ar")))
1318 (string-append "TAR = " (which "tar")))
1320 (string-append "AS = " (which "as")))
1322 (string-append "LD = " (which "ld")))
1323 (("STRIP *=.*strip")
1324 (string-append "STRIP = " (which "strip")))
1326 (string-append "NM = " (which "nm")))
1328 (string-append "SH = " (which "bash")))
1330 (string-append "FIND = " (which "find")))
1332 (string-append "LDD = " (which "ldd")))
1333 (("NAWK *=.*(n|g)awk")
1334 (string-append "NAWK = " (which "gawk")))
1335 (("XARGS *=.*xargs")
1336 (string-append "XARGS = " (which "xargs")))
1337 (("UNZIP *=.*unzip")
1338 (string-append "UNZIP = " (which "unzip")))
1340 (string-append "ZIPEXE = " (which "zip")))
1342 (string-append "SED = " (which "sed"))))
1344 ;; Some of these timestamps cause problems as they are more than
1345 ;; 10 years ago, failing the build process.
1347 "openjdk.src/jdk/src/share/classes/java/util/CurrencyData.properties"
1348 (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN")
1349 (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN")
1350 (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON")
1351 (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")))
1353 (add-before 'configure 'set-additional-paths
1354 (lambda* (#:key inputs #:allow-other-keys)
1355 (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
1356 (("ALSA_INCLUDE=/usr/include/alsa/version.h")
1357 (string-append "ALSA_INCLUDE="
1358 (assoc-ref inputs "alsa-lib")
1359 "/include/alsa/version.h")))
1362 (string-append (assoc-ref inputs "libxcomposite")
1363 "/include/X11/extensions" ":"
1364 (assoc-ref inputs "libxrender")
1365 "/include/X11/extensions" ":"
1366 (assoc-ref inputs "libxtst")
1367 "/include/X11/extensions" ":"
1368 (assoc-ref inputs "libxinerama")
1369 "/include/X11/extensions" ":"
1370 (or (getenv "CPATH") "")))
1371 (setenv "ALT_OBJCOPY" (which "objcopy"))
1372 (setenv "ALT_CUPS_HEADERS_PATH"
1373 (string-append (assoc-ref inputs "cups")
1375 (setenv "ALT_FREETYPE_HEADERS_PATH"
1376 (string-append (assoc-ref inputs "freetype")
1378 (setenv "ALT_FREETYPE_LIB_PATH"
1379 (string-append (assoc-ref inputs "freetype")
1382 (add-before 'build 'disable-os-version-check
1383 ;; allow build on linux major version change
1385 (setenv "DISABLE_HOTSPOT_OS_VERSION_CHECK" "ok")
1387 (add-before 'check 'fix-test-framework
1389 ;; Fix PATH in test environment
1390 (substitute* "test/jtreg/com/sun/javatest/regtest/Main.java"
1391 (("PATH=/bin:/usr/bin")
1392 (string-append "PATH=" (getenv "PATH"))))
1393 (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java"
1394 (("/usr/bin/env") (which "env")))
1395 (substitute* "openjdk.src/hotspot/test/test_env.sh"
1396 (("/bin/rm") (which "rm"))
1397 (("/bin/cp") (which "cp"))
1398 (("/bin/mv") (which "mv")))
1400 (add-before 'check 'fix-hotspot-tests
1402 (with-directory-excursion "openjdk.src/hotspot/test/"
1403 (substitute* "jprt.config"
1404 (("PATH=\"\\$\\{path4sdk\\}\"")
1405 (string-append "PATH=" (getenv "PATH")))
1406 (("make=/usr/bin/make")
1407 (string-append "make=" (which "make"))))
1408 (substitute* '("runtime/6626217/Test6626217.sh"
1409 "runtime/7110720/Test7110720.sh")
1410 (("/bin/rm") (which "rm"))
1411 (("/bin/cp") (which "cp"))
1412 (("/bin/mv") (which "mv"))))
1414 (add-before 'check 'fix-jdk-tests
1416 (with-directory-excursion "openjdk.src/jdk/test/"
1417 (substitute* "com/sun/jdi/JdbReadTwiceTest.sh"
1418 (("/bin/pwd") (which "pwd")))
1419 (substitute* "com/sun/jdi/ShellScaffold.sh"
1420 (("/bin/kill") (which "kill")))
1421 (substitute* "start-Xvfb.sh"
1422 ;;(("/usr/bin/X11/Xvfb") (which "Xvfb"))
1423 (("/usr/bin/nohup") (which "nohup")))
1424 (substitute* "javax/security/auth/Subject/doAs/Test.sh"
1425 (("/bin/rm") (which "rm")))
1426 (substitute* "tools/launcher/MultipleJRE.sh"
1427 (("echo \"#!/bin/sh\"")
1428 (string-append "echo \"#!" (which "rm") "\""))
1429 (("/usr/bin/zip") (which "zip")))
1430 (substitute* "com/sun/jdi/OnThrowTest.java"
1431 (("#!/bin/sh") (string-append "#!" (which "sh"))))
1432 (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java"
1433 (("/usr/bin/uptime") (which "uptime")))
1434 (substitute* "java/lang/ProcessBuilder/Basic.java"
1435 (("/usr/bin/env") (which "env"))
1436 (("/bin/false") (which "false"))
1437 (("/bin/true") (which "true"))
1438 (("/bin/cp") (which "cp"))
1439 (("/bin/sh") (which "sh")))
1440 (substitute* "java/lang/ProcessBuilder/FeelingLucky.java"
1441 (("/bin/sh") (which "sh")))
1442 (substitute* "java/lang/ProcessBuilder/Zombies.java"
1443 (("/usr/bin/perl") (which "perl"))
1444 (("/bin/ps") (which "ps"))
1445 (("/bin/true") (which "true")))
1446 (substitute* "java/lang/Runtime/exec/ConcurrentRead.java"
1447 (("/usr/bin/tee") (which "tee")))
1448 (substitute* "java/lang/Runtime/exec/ExecWithDir.java"
1449 (("/bin/true") (which "true")))
1450 (substitute* "java/lang/Runtime/exec/ExecWithInput.java"
1451 (("/bin/cat") (which "cat")))
1452 (substitute* "java/lang/Runtime/exec/ExitValue.java"
1453 (("/bin/sh") (which "sh"))
1454 (("/bin/true") (which "true"))
1455 (("/bin/kill") (which "kill")))
1456 (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java"
1457 (("/usr/bin/echo") (which "echo")))
1458 (substitute* "java/lang/Runtime/exec/LotsOfOutput.java"
1459 (("/usr/bin/cat") (which "cat")))
1460 (substitute* "java/lang/Runtime/exec/SleepyCat.java"
1461 (("/bin/cat") (which "cat"))
1462 (("/bin/sleep") (which "sleep"))
1463 (("/bin/sh") (which "sh")))
1464 (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java"
1465 (("/bin/cat") (which "cat")))
1466 (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java"
1467 (("/bin/chmod") (which "chmod")))
1468 (substitute* "java/util/zip/ZipFile/Assortment.java"
1469 (("/bin/sh") (which "sh"))))
1473 ;; The "make check-*" targets always return zero, so we need to
1474 ;; check for errors in the associated log files to determine
1475 ;; whether any tests have failed.
1476 (use-modules (ice-9 rdelim))
1477 (let* ((error-pattern (make-regexp "^(Error|FAILED):.*"))
1478 (checker (lambda (port)
1480 (let ((line (read-line port)))
1482 ((eof-object? line) #t)
1483 ((regexp-exec error-pattern line)
1484 (error "test failed"))
1486 (run-test (lambda (test)
1487 (invoke "make" test)
1488 (call-with-input-file
1489 (string-append "test/" test ".log")
1491 (when #f ; skip tests
1492 (run-test "check-hotspot")
1493 (run-test "check-langtools")
1494 (run-test "check-jdk"))
1497 (lambda* (#:key outputs #:allow-other-keys)
1498 (let ((doc (string-append (assoc-ref outputs "doc")
1499 "/share/doc/icedtea"))
1500 (jre (assoc-ref outputs "out"))
1501 (jdk (assoc-ref outputs "jdk")))
1502 (copy-recursively "openjdk.build/docs" doc)
1503 (copy-recursively "openjdk.build/j2re-image" jre)
1504 (copy-recursively "openjdk.build/j2sdk-image" jdk))
1506 ;; Some of the libraries in the lib/amd64 folder link to libjvm.so.
1507 ;; But that shared object is located in the server/ folder, so it
1508 ;; cannot be found. This phase creates a symbolic link in the
1509 ;; lib/amd64 folder so that the other libraries can find it.
1512 ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
1514 ;; FIXME: Find the bug in the build system, so that this symlink is
1516 (add-after 'install 'install-libjvm
1517 (lambda* (#:key inputs outputs #:allow-other-keys)
1518 (let* ((lib-path (string-append (assoc-ref outputs "out")
1519 ;; See 'INSTALL_ARCH_DIR' in
1521 ,(match (%current-system)
1530 ;; We need a catch-all, dropping
1531 ;; '-linux' works in most cases.
1536 (%current-system) 6)))))))
1537 (symlink (string-append lib-path "/server/libjvm.so")
1538 (string-append lib-path "/libjvm.so")))
1540 ;; By default IcedTea only generates an empty keystore. In order to
1541 ;; be able to use certificates in Java programs we need to generate a
1542 ;; keystore from a set of certificates. For convenience we use the
1543 ;; certificates from the nss-certs package.
1544 (add-after 'install 'install-keystore
1545 (lambda* (#:key inputs outputs #:allow-other-keys)
1546 (let* ((keystore "cacerts")
1547 (certs-dir (string-append (assoc-ref inputs "nss-certs")
1549 (keytool (string-append (assoc-ref outputs "jdk")
1551 (define (extract-cert file target)
1552 (call-with-input-file file
1554 (call-with-output-file target
1556 (let loop ((line (read-line in 'concat))
1559 ((eof-object? line) #t)
1560 ((string-prefix? "-----BEGIN" line)
1562 (loop (read-line in 'concat) #t))
1563 ((string-prefix? "-----END" line)
1567 (when copying? (display line out))
1568 (loop (read-line in 'concat) copying?)))))))))
1569 (define (import-cert cert)
1570 (format #t "Importing certificate ~a\n" (basename cert))
1571 (let ((temp "tmpcert"))
1572 (extract-cert cert temp)
1573 (let ((port (open-pipe* OPEN_WRITE keytool
1575 "-alias" (basename cert)
1576 "-keystore" keystore
1577 "-storepass" "changeit"
1579 (display "yes\n" port)
1580 (when (not (zero? (status:exit-val (close-pipe port))))
1581 (format #t "failed to import ~a\n" cert)))
1582 (delete-file temp)))
1584 ;; This is necessary because the certificate directory contains
1585 ;; files with non-ASCII characters in their names.
1586 (setlocale LC_ALL "en_US.utf8")
1587 (setenv "LC_ALL" "en_US.utf8")
1589 (for-each import-cert (find-files certs-dir "\\.pem$"))
1590 (mkdir-p (string-append (assoc-ref outputs "out")
1592 (mkdir-p (string-append (assoc-ref outputs "jdk")
1593 "/jre/lib/security"))
1595 ;; The cacerts files we are going to overwrite are chmod'ed as
1596 ;; read-only (444) in icedtea-8 (which derives from this
1597 ;; package). We have to change this so we can overwrite them.
1598 (chmod (string-append (assoc-ref outputs "out")
1599 "/lib/security/" keystore) #o644)
1600 (chmod (string-append (assoc-ref outputs "jdk")
1601 "/jre/lib/security/" keystore) #o644)
1603 (install-file keystore
1604 (string-append (assoc-ref outputs "out")
1606 (install-file keystore
1607 (string-append (assoc-ref outputs "jdk")
1608 "/jre/lib/security"))
1613 "0l34ikyf62hbzlf9032alzkkqvf7bpmckz4gvirvph755w7gka8l"))
1616 "050gv2jbg1pi6qkn8w18bwpbklfa5b0kymjvan9pncddbj8m84fz"))
1619 "1k6yldwnxfzdg5926r1nlfv8d1r1j7rlp2nkz6gqh05vgyamnfhl"))
1622 "110j7jlz47x2gg6f7653x12mssan5kvj9l9h1m1c8c92drfxbqyk"))
1625 "0d1mca38ksxvdskp9im3pp7fdijhj1n3lwq9w13r9s4v3qyskgdd"))
1628 "0nq5236fzxn3p6x8cgncl56mzcmsj07q9gymysnws4c8byc6n0qj"))
1633 "http://icedtea.classpath.org/downloads/drops"
1634 "/icedtea7/" version "/hotspot.tar.bz2"))
1637 "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws"))
1638 (patches (search-patches
1639 "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
1640 ("ant" ,ant-bootstrap)
1642 ("coreutils" ,coreutils)
1643 ("diffutils" ,diffutils) ;for tests
1646 ("libtool" ,libtool)
1647 ("pkg-config" ,pkg-config)
1653 ("fastjar" ,fastjar)
1654 ("libxslt" ,libxslt) ;for xsltproc
1655 ("nss-certs" ,nss-certs)
1657 ("procps" ,procps) ;for "free", even though I'm not sure we should use it
1658 ("jdk" ,icedtea-6 "jdk")))
1660 `(("alsa-lib" ,alsa-lib)
1663 ("libxcomposite" ,libxcomposite)
1665 ("libxtst" ,libxtst)
1667 ("libxinerama" ,libxinerama)
1668 ("libxrender" ,libxrender)
1669 ("libjpeg" ,libjpeg-turbo)
1671 ("mit-krb5" ,mit-krb5)
1674 ("fontconfig" ,fontconfig)
1675 ("freetype" ,freetype)
1679 (home-page "http://icedtea.classpath.org")
1680 (synopsis "Java development kit")
1682 "This package provides the Java development kit OpenJDK built with the
1683 IcedTea build harness.")
1685 ;; 'configure' lists "mips" and "mipsel", but not "mips64el'.
1686 (supported-systems (delete "mips64el-linux" %supported-systems))
1688 ;; IcedTea is released under the GPL2 + Classpath exception, which is the
1689 ;; same license as both GNU Classpath and OpenJDK.
1690 (license license:gpl2+))))
1692 (define-public icedtea-8
1693 (let* ((version "3.7.0")
1694 (drop (lambda (name hash)
1698 "http://icedtea.classpath.org/download/drops"
1699 "/icedtea8/" version "/" name ".tar.xz"))
1700 (sha256 (base32 hash))))))
1701 (package (inherit icedtea-7)
1706 "http://icedtea.wildebeest.org/download/source/icedtea-"
1710 "09yqzn8rpccs7cyv89hhy5zlznpgqw5x3jz0w1ccp0cz1vgs8l5w"))
1711 (modules '((guix build utils)))
1714 (substitute* '("configure"
1716 ;; Do not embed build time
1717 (("(DIST_ID=\"Custom build).*$" _ prefix)
1718 (string-append prefix "\"\n"))
1719 ;; Do not leak information about the build host
1720 (("DIST_NAME=\"\\$build_os\"")
1721 "DIST_NAME=\"guix\""))
1724 `(#:imported-modules
1725 ((guix build ant-build-system)
1726 (guix build syscalls)
1727 ,@%gnu-build-system-modules)
1728 ,@(substitute-keyword-arguments (package-arguments icedtea-7)
1729 ((#:modules modules)
1730 `((guix build utils)
1731 (guix build gnu-build-system)
1732 ((guix build ant-build-system) #:prefix ant:)
1737 ((#:configure-flags flags)
1738 `(let ((jdk (assoc-ref %build-inputs "jdk")))
1739 `( ;;"--disable-bootstrap"
1740 "--enable-bootstrap"
1742 "--disable-downloading"
1743 "--disable-system-pcsc"
1744 "--disable-system-sctp"
1745 "--disable-tests" ;they are run in the check phase instead
1746 "--with-openjdk-src-dir=./openjdk.src"
1747 ,(string-append "--with-jdk-home=" jdk))))
1749 `(modify-phases ,phases
1750 (delete 'fix-x11-extension-include-path)
1751 (delete 'patch-paths)
1752 (delete 'set-additional-paths)
1753 (delete 'patch-patches)
1754 (delete 'patch-bitrot)
1755 ;; Prevent the keytool from recording the current time when
1756 ;; adding certificates at build time.
1757 (add-after 'unpack 'patch-keystore
1759 (substitute* "openjdk.src/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java"
1760 (("date = new Date\\(\\);")
1762 date = (System.getenv(\"SOURCE_DATE_EPOCH\") != null) ?\
1763 new Date(Long.parseLong(System.getenv(\"SOURCE_DATE_EPOCH\"))) :\
1766 (add-after 'unpack 'patch-jni-libs
1767 ;; Hardcode dynamically loaded libraries.
1769 (let* ((library-path (search-path-as-string->list
1770 (getenv "LIBRARY_PATH")))
1771 (find-library (lambda (name)
1774 (string-append "lib" name ".so")))))
1777 (catch 'decoding-error
1780 (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
1782 (format #f "\"~a\"" (find-library name)))
1783 (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
1784 (format #f "\"~a\"" (find-library name)))))
1786 ;; Those are safe to skip.
1787 (format (current-error-port)
1788 "warning: failed to substitute: ~a~%"
1790 (find-files "openjdk.src/jdk/src/solaris/native"
1794 (lambda* (#:key outputs #:allow-other-keys)
1795 (let ((doc (string-append (assoc-ref outputs "doc")
1796 "/share/doc/icedtea"))
1797 (jre (assoc-ref outputs "out"))
1798 (jdk (assoc-ref outputs "jdk")))
1799 (copy-recursively "openjdk.build/docs" doc)
1800 (copy-recursively "openjdk.build/images/j2re-image" jre)
1801 (copy-recursively "openjdk.build/images/j2sdk-image" jdk)
1802 ;; Install the nss.cfg file to JRE to enable SSL/TLS
1804 (copy-file (string-append jdk "/jre/lib/security/nss.cfg")
1805 (string-append jre "/lib/security/nss.cfg"))
1807 (add-after 'install 'strip-jar-timestamps
1808 (assoc-ref ant:%standard-phases 'strip-jar-timestamps)))))))
1810 `(("jdk" ,icedtea-7 "jdk")
1813 "1mj6xgmw31i6qd30qi9dmv7160fbcfq5ikz1jwjihdg2793il19p"))
1816 "1wb8k5zm40zld0986dvmlh5xh3gyixbg9h26sl662zy92amhmyyg"))
1819 "11ma4zz0599cy70xd219v7a8vin7p96xrhhz3wsaw6cjhkzpagah"))
1822 "14m1y0z0fbm5z5zjw3vnq85py8dma84bi3f9cw8rhdyc6skk8q4i"))
1825 "09andnm6xaasnp963hgx42yiflifiljp9z7z85jrfyc5z8a5whmf"))
1828 "0s6lcpc0zckz2fnq98aqf28nz9y3wbi41a3kyaqqa2abwbkm1zwl"))
1831 "15wizy123vhk40chl1b4p552jf2pw2hdww0myf11qab425axz4nw"))
1836 "http://icedtea.classpath.org/download/drops"
1837 "/icedtea8/" version "/hotspot.tar.xz"))
1840 "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
1841 (patches (search-patches
1842 "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
1845 "19pzl3ppaw8j6r5cnyp8qiw3hxijh3hdc46l39g5yfhdl4pr4hpa"))
1848 "0k33anxdzw1icn072wynfmmdjhsv50hay0j1sfkfxny12rb3vgdy"))
1849 ,@(fold alist-delete (package-native-inputs icedtea-7)
1850 '("jdk" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop"
1851 "jdk-drop" "langtools-drop" "hotspot-drop")))))))
1853 (define-public openjdk9
1859 (uri "https://hg.openjdk.java.net/jdk/jdk/archive/3cc80be736f2.tar.bz2")
1860 (file-name (string-append name "-" version ".tar.bz2"))
1863 "01ihmyf7k5z17wbr7xig7y40l9f01d5zjgkcmawn1102hw5kchpq"))
1864 (modules '((guix build utils)))
1867 (for-each delete-file
1868 (find-files "." ".*.(bin|exe|jar)$"))
1870 (build-system gnu-build-system)
1871 (outputs '("out" "jdk" "doc"))
1873 `(#:tests? #f; require jtreg
1874 #:make-flags '("all")
1876 ((guix build syscalls)
1877 ,@%gnu-build-system-modules)
1879 (modify-phases %standard-phases
1880 (add-after 'patch-source-shebangs 'fix-java-shebangs
1882 ;; This file was "fixed" by patch-source-shebangs, but it requires
1883 ;; this exact first line.
1884 (substitute* "jdk/make/data/blacklistedcertsconverter/blacklisted.certs.pem"
1885 (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
1888 (lambda* (#:key inputs outputs #:allow-other-keys)
1889 ;; TODO: unbundle libpng and lcms
1890 (invoke "bash" "./configure"
1891 (string-append "--with-freetype=" (assoc-ref inputs "freetype"))
1892 "--disable-freetype-bundling"
1893 "--disable-warnings-as-errors"
1894 "--disable-hotspot-gtest"
1895 "--with-giflib=system"
1896 "--with-libjpeg=system"
1897 (string-append "--prefix=" (assoc-ref outputs "out")))
1899 (add-before 'build 'write-source-revision-file
1901 (with-output-to-file ".src-rev"
1903 (display ,version)))
1906 (lambda* (#:key make-flags parallel-build? #:allow-other-keys)
1907 (apply invoke "make"
1908 `(,@(if parallel-build?
1909 (list (string-append "JOBS="
1910 (number->string (parallel-job-count))))
1913 ;; Some of the libraries in the lib/ folder link to libjvm.so.
1914 ;; But that shared object is located in the server/ folder, so it
1915 ;; cannot be found. This phase creates a symbolic link in the
1916 ;; lib/ folder so that the other libraries can find it.
1919 ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
1921 ;; FIXME: Find the bug in the build system, so that this symlink is
1923 (add-after 'install 'install-libjvm
1924 (lambda* (#:key inputs outputs #:allow-other-keys)
1925 (let* ((lib-out (string-append (assoc-ref outputs "out")
1927 (lib-jdk (string-append (assoc-ref outputs "jdk")
1929 (symlink (string-append lib-jdk "/server/libjvm.so")
1930 (string-append lib-jdk "/libjvm.so"))
1931 (symlink (string-append lib-out "/server/libjvm.so")
1932 (string-append lib-out "/libjvm.so")))
1935 (lambda* (#:key outputs #:allow-other-keys)
1936 (let ((out (assoc-ref outputs "out"))
1937 (jdk (assoc-ref outputs "jdk"))
1938 (doc (assoc-ref outputs "doc"))
1939 (images (car (find-files "build" ".*-server-release"
1940 #:directories? #t))))
1941 (copy-recursively (string-append images "/images/jdk") jdk)
1942 (copy-recursively (string-append images "/images/jre") out)
1943 (copy-recursively (string-append images "/images/docs") doc))
1945 (add-after 'install 'strip-zip-timestamps
1946 (lambda* (#:key outputs #:allow-other-keys)
1947 (use-modules (guix build syscalls))
1948 (for-each (lambda (zip)
1949 (let ((dir (mkdtemp! "zip-contents.XXXXXX")))
1950 (with-directory-excursion dir
1951 (invoke "unzip" zip))
1953 (for-each (lambda (file)
1954 (let ((s (lstat file)))
1955 (unless (eq? (stat:type s) 'symlink)
1956 (format #t "reset ~a~%" file)
1957 (utime file 0 0 0 0))))
1958 (find-files dir #:directories? #t))
1959 (with-directory-excursion dir
1960 (let ((files (find-files "." ".*" #:directories? #t)))
1961 (apply invoke "zip" "-0" "-X" zip files)))))
1962 (find-files (assoc-ref outputs "doc") ".*.zip$"))
1965 `(("alsa-lib" ,alsa-lib)
1967 ("fontconfig" ,fontconfig)
1968 ("freetype" ,freetype)
1972 ("libjpeg" ,libjpeg-turbo)
1976 ("libxcomposite" ,libxcomposite)
1978 ("libxinerama" ,libxinerama)
1979 ("libxrender" ,libxrender)
1981 ("libxtst" ,libxtst)))
1983 `(("icedtea-8" ,icedtea-8)
1984 ("icedtea-8:jdk" ,icedtea-8 "jdk")
1985 ;; XXX: The build system fails with newer versions of GNU Make.
1986 ("make@4.2" ,gnu-make-4.2)
1990 (home-page "https://openjdk.java.net/projects/jdk9/")
1991 (synopsis "Java development kit")
1993 "This package provides the Java development kit OpenJDK.")
1994 (license license:gpl2+)))
1996 (define-public openjdk10
2003 (uri "http://hg.openjdk.java.net/jdk/jdk/archive/6fa770f9f8ab.tar.bz2")
2004 (file-name (string-append name "-" version ".tar.bz2"))
2007 "0zywq2203b4hx4jms9vbwvjcj1d3k2v3qpx4s33729fkpmid97r4"))
2008 (patches (search-patches
2009 "openjdk-10-idlj-reproducibility.patch"))
2010 (modules '((guix build utils)))
2013 (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
2016 (substitute-keyword-arguments (package-arguments openjdk9)
2018 `(modify-phases ,phases
2019 (replace 'fix-java-shebangs
2021 ;; This file was "fixed" by patch-source-shebangs, but it requires
2022 ;; this exact first line.
2023 (substitute* "make/data/blacklistedcertsconverter/blacklisted.certs.pem"
2024 (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
2027 (lambda* (#:key inputs outputs #:allow-other-keys)
2028 (invoke "bash" "./configure"
2029 (string-append "--with-freetype=" (assoc-ref inputs "freetype"))
2030 "--disable-freetype-bundling"
2031 "--disable-warnings-as-errors"
2032 "--disable-hotspot-gtest"
2033 "--with-giflib=system"
2034 "--with-libjpeg=system"
2035 "--with-native-debug-symbols=zipped"
2036 (string-append "--prefix=" (assoc-ref outputs "out")))
2039 `(("openjdk9" ,openjdk9)
2040 ("openjdk9:jdk" ,openjdk9 "jdk")
2041 ("make@4.2" ,gnu-make-4.2)
2046 (define-public openjdk11
2052 (uri "http://hg.openjdk.java.net/jdk/jdk/archive/76072a077ee1.tar.bz2")
2053 (file-name (string-append name "-" version ".tar.bz2"))
2056 "0v705w1s9lrqalzahir78pk397rkk9gfvzq821yv8h3xha0bqi6w"))
2057 (modules '((guix build utils)))
2060 (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
2062 (build-system gnu-build-system)
2063 (outputs '("out" "jdk" "doc"))
2065 `(#:imported-modules
2066 ((guix build syscalls)
2067 (ice-9 binary-ports)
2069 ,@%gnu-build-system-modules)
2070 #:tests? #f; requires jtreg
2071 ;; TODO package jtreg
2073 `("--disable-option-checking" ; --enable-fast-install default flag errors otherwise
2074 "--disable-warnings-as-errors"
2075 ;; make validate-runpath pass, see: http://issues.guix.info/issue/32894
2076 "--with-native-debug-symbols=zipped"
2077 ;; do not use the bundled libraries
2078 "--with-giflib=system"
2079 "--with-lcms=system"
2080 "--with-libjpeg=system"
2081 "--with-libpng=system"
2082 "--with-version-pre="
2083 ;; allow the build system to locate the system freetype
2084 ,(string-append "--with-freetype-include="
2085 (assoc-ref %build-inputs "freetype") "/include")
2086 ,(string-append "--with-freetype-lib="
2087 (assoc-ref %build-inputs "freetype") "/lib"))
2089 (modify-phases %standard-phases
2090 (add-after 'patch-source-shebangs 'fix-java-shebangs
2092 ;; This file was "fixed" by patch-source-shebangs, but it requires
2093 ;; this exact first line.
2094 (substitute* "make/data/blacklistedcertsconverter/blacklisted.certs.pem"
2095 (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
2097 (add-before 'build 'write-source-revision-file
2099 (with-output-to-file ".src-rev"
2101 (display ,version)))
2104 (lambda* (#:key parallel-build? make-flags #:allow-other-keys)
2105 (apply invoke "make" "all"
2106 `(,@(if parallel-build?
2107 (list (string-append "JOBS="
2108 (number->string (parallel-job-count))))
2111 ;; jdk 11 does not build jre by default any more
2112 ;; building it anyways
2113 ;; for further information see:
2114 ;; https://github.com/AdoptOpenJDK/openjdk-build/issues/356
2115 (add-after 'build 'build-jre
2116 (lambda* (#:key parallel-build? make-flags #:allow-other-keys)
2117 (apply invoke "make" "legacy-jre-image"
2118 `(,@(if parallel-build?
2119 (list (string-append "JOBS="
2120 (number->string (parallel-job-count))))
2124 (lambda* (#:key outputs #:allow-other-keys)
2125 (let ((out (assoc-ref outputs "out"))
2126 (jdk (assoc-ref outputs "jdk"))
2127 (doc (assoc-ref outputs "doc"))
2128 (images (car (find-files "build" ".*-server-release"
2129 #:directories? #t))))
2130 (copy-recursively (string-append images "/images/jdk") jdk)
2131 (copy-recursively (string-append images "/images/jre") out)
2132 (copy-recursively (string-append images "/images/docs") doc))
2134 ;; Some of the libraries in the lib/ folder link to libjvm.so.
2135 ;; But that shared object is located in the server/ folder, so it
2136 ;; cannot be found. This phase creates a symbolic link in the
2137 ;; lib/ folder so that the other libraries can find it.
2140 ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
2142 ;; FIXME: Find the bug in the build system, so that this symlink is
2144 (add-after 'install 'install-libjvm
2145 (lambda* (#:key inputs outputs #:allow-other-keys)
2146 (let* ((lib-out (string-append (assoc-ref outputs "out")
2148 (lib-jdk (string-append (assoc-ref outputs "jdk")
2150 (symlink (string-append lib-jdk "/server/libjvm.so")
2151 (string-append lib-jdk "/libjvm.so"))
2152 (symlink (string-append lib-out "/server/libjvm.so")
2153 (string-append lib-out "/libjvm.so")))
2155 (add-after 'install 'strip-character-data-timestamps
2156 (lambda* (#:key outputs #:allow-other-keys)
2157 (use-modules (guix build syscalls))
2158 (let ((archive (string-append
2159 (assoc-ref outputs "jdk") "/lib/src.zip"))
2160 (dir (mkdtemp! "zip-contents.XXXXXX")))
2161 (with-directory-excursion dir
2162 (invoke "unzip" archive))
2163 (delete-file archive)
2164 (with-directory-excursion dir
2165 (let ((char-data-files (find-files "." "CharacterData.*")))
2166 (for-each (lambda (file)
2168 (((string-append "This file was generated "
2169 "AUTOMATICALLY from a template "
2171 (string-append "This file was generated "
2172 "AUTOMATICALLY from a template "
2175 (with-directory-excursion dir
2176 (let ((files (find-files "." ".*" #:directories? #t)))
2177 (apply invoke "zip" "-0" "-X" archive files))))))
2178 (add-after 'strip-character-data-timestamps 'strip-archive-timestamps
2179 (lambda* (#:key outputs #:allow-other-keys)
2180 (use-modules (guix build syscalls)
2181 (ice-9 binary-ports)
2183 (letrec ((repack-archive
2185 (let ((dir (mkdtemp! "zip-contents.XXXXXX")))
2186 (with-directory-excursion dir
2187 (invoke "unzip" archive))
2188 (delete-file archive)
2189 (for-each (compose repack-archive canonicalize-path)
2190 (find-files dir "(ct.sym|.*.jar)$"))
2191 (let ((reset-file-timestamp
2193 (let ((s (lstat file)))
2194 (unless (eq? (stat:type s) 'symlink)
2195 (format #t "reset ~a~%" file)
2196 (utime file 0 0 0 0))))))
2197 (for-each reset-file-timestamp
2198 (find-files dir #:directories? #t)))
2199 (with-directory-excursion dir
2200 (let ((files (find-files "." ".*" #:directories? #t)))
2201 (apply invoke "zip" "-0" "-X" archive files)))))))
2202 (for-each repack-archive
2203 (find-files (assoc-ref outputs "doc") ".*.zip$"))
2204 (for-each repack-archive
2205 (find-files (assoc-ref outputs "jdk")
2206 ".*.(zip|jar|diz)$"))
2207 (repack-archive (string-append (assoc-ref outputs "jdk") "/lib/ct.sym"))
2210 (call-with-input-file file-name
2212 (let ((header #vu8(#x4a #x4d #x01 #x00)))
2213 (if (equal? (get-bytevector-n
2214 file (bytevector-length header))
2216 (let* ((header-length (bytevector-length header))
2217 (temp-file (mkstemp!
2219 "temp-file.XXXXXX")))
2220 (temp-filename (port-filename temp-file))
2222 (- (stat:size (stat file))
2224 (sendfile temp-file file content-length header-length)
2225 (delete-file file-name)
2226 (close-port temp-file)
2227 (repack-archive (canonicalize-path temp-filename))
2228 (call-with-output-file file-name
2230 (put-bytevector file header)
2231 (call-with-input-file temp-filename
2235 (stat:size (stat temp-file)) 0)))))))))))))
2236 (for-each repack-jmod
2237 (find-files (assoc-ref outputs "jdk") ".*.jmod$")))
2239 (add-after 'install 'remove-timestamp-from-api-summary
2240 (lambda* (#:key outputs #:allow-other-keys)
2241 (substitute* (string-append (assoc-ref outputs "doc")
2242 "/api/overview-summary.html")
2243 (("Generated by javadoc \\(11-internal\\).*$")
2244 "Generated by javadoc (11-internal) -->\n"))
2247 `(("alsa-lib" ,alsa-lib)
2249 ("fontconfig" ,fontconfig)
2250 ("freetype" ,freetype)
2253 ("libjpeg" ,libjpeg-turbo)
2256 ("libxext" ,libxext)
2257 ("libxrender" ,libxrender)
2259 ("libxtst" ,libxtst)))
2261 `(("autoconf" ,autoconf)
2262 ("openjdk10" ,openjdk10)
2263 ("openjdk10:jdk" ,openjdk10 "jdk")
2264 ("make" ,gnu-make-4.2)
2265 ("pkg-config" ,pkg-config)
2269 (home-page "https://openjdk.java.net/projects/jdk/11/")
2270 (synopsis "Java development kit")
2272 "This package provides the Java development kit OpenJDK.")
2273 (license license:gpl2+)))
2275 (define-public openjdk12
2282 (uri "http://hg.openjdk.java.net/jdk/jdk/archive/0276cba45aac.tar.bz2")
2283 (file-name (string-append name "-" version ".tar.bz2"))
2286 "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"))
2287 (modules '((guix build utils)))
2290 (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
2293 `(("alsa-lib" ,alsa-lib)
2295 ("fontconfig" ,fontconfig)
2296 ("freetype" ,freetype)
2299 ("libjpeg" ,libjpeg-turbo)
2302 ("libxext" ,libxext)
2303 ("libxrandr" ,libxrandr)
2304 ("libxrender" ,libxrender)
2306 ("libxtst" ,libxtst)))
2308 `(("autoconf" ,autoconf)
2309 ("openjdk11" ,openjdk11)
2310 ("openjdk11:jdk" ,openjdk11 "jdk")
2311 ("make@4.2" ,gnu-make-4.2)
2312 ("pkg-config" ,pkg-config)
2316 (home-page "https://openjdk.java.net/projects/jdk/12")))
2318 (define-public openjdk13
2325 (uri "http://hg.openjdk.java.net/jdk/jdk13/archive/9c250a7600e1.tar.bz2")
2326 (file-name (string-append name "-" version ".tar.bz2"))
2329 "0v0ljvx5dyzp96dw4z4ksw3pvasil7783mgnmd1wk9gads5ab8iq"))
2330 (modules '((guix build utils)))
2333 (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
2336 `(("alsa-lib" ,alsa-lib)
2338 ("fontconfig" ,fontconfig)
2339 ("freetype" ,freetype)
2342 ("libjpeg" ,libjpeg-turbo)
2345 ("libxext" ,libxext)
2346 ("libxrandr" ,libxrandr)
2347 ("libxrender" ,libxrender)
2349 ("libxtst" ,libxtst)))
2351 `(("autoconf" ,autoconf)
2352 ("openjdk12:jdk" ,openjdk12 "jdk")
2353 ("make@4.2" ,gnu-make-4.2)
2354 ("pkg-config" ,pkg-config)
2358 (home-page "https://openjdk.java.net/projects/jdk/13")))
2360 (define-public openjdk14
2367 (uri "http://hg.openjdk.java.net/jdk/jdk14/archive/bc54620a3848.tar.bz2")
2368 (file-name (string-append name "-" version ".tar.bz2"))
2371 "0z485pk7r1xpw8004g4nrwrzj17sabgx8yfdbxwfvzkjp8qyajch"))
2372 (modules '((guix build utils)))
2375 ;; The m4 macro uses 'help' to search for builtins, which is
2376 ;; not available in bash-minimal
2377 (substitute* "make/autoconf/basics.m4"
2378 (("if help") "if command -v"))
2379 (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
2382 `(("alsa-lib" ,alsa-lib)
2384 ("fontconfig" ,fontconfig)
2385 ("freetype" ,freetype)
2388 ("libjpeg" ,libjpeg-turbo)
2391 ("libxext" ,libxext)
2392 ("libxrandr" ,libxrandr)
2393 ("libxrender" ,libxrender)
2395 ("libxtst" ,libxtst)))
2397 `(("autoconf" ,autoconf)
2398 ("make@4.2" ,gnu-make-4.2)
2399 ("openjdk13:jdk" ,openjdk13 "jdk")
2400 ("pkg-config" ,pkg-config)
2404 (home-page "https://openjdk.java.net/projects/jdk/14")))
2406 (define-public icedtea icedtea-8)
2409 (define-public ant/java8
2410 (package (inherit ant-bootstrap)
2415 (uri (string-append "mirror://apache/ant/source/apache-ant-"
2416 version "-src.tar.gz"))
2419 "10p3dh77lkzzzcy32dk9azljixzadp46fggjfbvgkl8mmb8cxxv8"))
2420 (modules '((guix build utils)))
2423 (for-each delete-file
2424 (find-files "lib/optional" "\\.jar$"))
2427 (substitute-keyword-arguments (package-arguments ant-bootstrap)
2429 `(modify-phases ,phases
2430 (add-after 'unpack 'remove-scripts
2431 ;; Remove bat / cmd scripts for DOS as well as the antRun and runant
2434 (for-each delete-file
2435 (find-files "src/script"
2436 "(.*\\.(bat|cmd)|runant.*|antRun.*)"))
2439 (lambda* (#:key inputs outputs #:allow-other-keys)
2440 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
2442 ;; Disable tests to avoid dependency on hamcrest-core, which needs
2443 ;; Ant to build. This is necessary in addition to disabling the
2444 ;; "check" phase, because the dependency on "test-jar" would always
2445 ;; result in the tests to be run.
2446 (substitute* "build.xml"
2447 (("depends=\"jars,test-jar\"") "depends=\"jars\""))
2448 (invoke "bash" "bootstrap.sh"
2449 (string-append "-Ddist.dir="
2450 (assoc-ref outputs "out")))))))))
2452 `(("jdk" ,icedtea-8 "jdk")
2454 ("unzip" ,unzip)))))
2456 ;; The 1.9.x series is the last that can be built with GCJ. The 1.10.x series
2459 (package (inherit ant/java8)
2463 (uri (string-append "mirror://apache/ant/source/apache-ant-"
2464 version "-src.tar.gz"))
2467 "1k28mka0m3isy9yr8gz84kz1f3f879rwaxrd44vdn9xbfwvwk86n"))))
2469 `(("jdk" ,icedtea-7 "jdk")
2471 ("unzip" ,unzip)))))
2473 (define-public ant-apache-bcel
2476 (name "ant-apache-bcel")
2478 (substitute-keyword-arguments (package-arguments ant/java8)
2480 `(modify-phases ,phases
2481 (add-after 'unpack 'link-bcel
2482 (lambda* (#:key inputs #:allow-other-keys)
2483 (for-each (lambda (file)
2485 (string-append "lib/optional/"
2487 (find-files (assoc-ref inputs "java-commons-bcel")
2490 (add-after 'build 'install
2491 (lambda* (#:key outputs #:allow-other-keys)
2492 (let* ((out (assoc-ref outputs "out"))
2493 (share (string-append out "/share/java"))
2494 (bin (string-append out "/bin"))
2495 (lib (string-append out "/lib")))
2497 (install-file (string-append lib "/ant-apache-bcel.jar") share)
2498 (delete-file-recursively bin)
2499 (delete-file-recursively lib)
2502 `(("java-commons-bcel" ,java-commons-bcel)
2503 ,@(package-inputs ant/java8)))))
2505 (define-public ant-junit
2510 (substitute-keyword-arguments (package-arguments ant/java8)
2512 `(modify-phases ,phases
2513 (add-after 'unpack 'link-junit
2514 (lambda* (#:key inputs #:allow-other-keys)
2515 (for-each (lambda (file)
2517 (string-append "lib/optional/"
2519 (find-files (assoc-ref inputs "java-junit")
2522 (add-after 'build 'install
2523 (lambda* (#:key outputs #:allow-other-keys)
2524 (let* ((out (assoc-ref outputs "out"))
2525 (share (string-append out "/share/java"))
2526 (bin (string-append out "/bin"))
2527 (lib (string-append out "/lib")))
2529 (install-file (string-append lib "/ant-junit.jar") share)
2530 (delete-file-recursively bin)
2531 (delete-file-recursively lib)
2534 `(("java-junit" ,java-junit)
2535 ,@(package-inputs ant/java8)))))
2537 (define-public java-openjfx-build
2539 (name "java-openjfx-build")
2540 ;; This is a java-8 version
2545 (url "http://hg.openjdk.java.net/openjfx/8u-dev/rt")
2546 (changeset (string-append
2547 (string-join (string-split version #\.) "u")
2549 (file-name (string-append name "-" version "-checkout"))
2550 (modules '((guix build utils)))
2553 ;; Delete included gradle jar
2554 (delete-file-recursively "gradle/wrapper")
2558 "0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))
2559 (patches (search-patches "java-openjfx-build-jdk_version.patch"))))
2560 (build-system ant-build-system)
2562 `(#:jar-name "java-openjfx.jar"
2563 #:source-dir "buildSrc/src/main/java"
2564 #:test-dir "buildSrc/src/test"
2566 (modify-phases %standard-phases
2567 (add-before 'configure 'generate-jsl-parser
2569 (invoke "antlr3" "-o"
2570 "buildSrc/src/main/java/com/sun/scenario/effect/compiler"
2571 "buildSrc/src/main/antlr/JSL.g"))))))
2573 `(("antlr3" ,antlr3)
2574 ("java-stringtemplate" ,java-stringtemplate)))
2576 `(("java-junit" ,java-junit)
2577 ("java-hamcrest-core" ,java-hamcrest-core)))
2578 (home-page "https://openjfx.io")
2579 (synopsis "Graphical application toolkit in Java")
2580 (description "OpenJFX is a client application platform for desktop,
2581 mobile and embedded systems built on Java. Its goal is to produce a
2582 modern, efficient, and fully featured toolkit for developing rich client
2583 applications. This package contains base classes for the OpenJFX
2584 distribution and helper classes for building other parts of the
2586 (license license:gpl2))) ;gpl2 only, with classpath exception
2588 (define-public java-openjfx-base
2589 (package (inherit java-openjfx-build)
2590 (name "java-openjfx-base")
2592 `(#:jar-name "java-openjfx-base.jar"
2593 #:source-dir "modules/base/src/main/java:modules/base/src/main/java8:modules/base/src/main/version-info"
2594 #:test-dir "modules/base/src/test"
2596 (modify-phases %standard-phases
2597 (add-before 'check 'remove-empty-file
2599 (with-directory-excursion "modules/base/src/test/java"
2600 ;; These files are completely commented, but junit expects them to
2601 ;; contain a class, so tests fail.
2603 "com/sun/javafx/property/adapter/PropertyDescriptorTest.java")
2605 "com/sun/javafx/property/adapter/ReadOnlyPropertyDescriptorTest.java")
2606 (delete-file "javafx/beans/property/PropertiesTest.java")
2608 "javafx/beans/property/adapter/ReadOnlyJavaBeanPropertyBuilder_General_Test.java")
2610 (delete-file "com/sun/javafx/runtime/VersionInfoTest.java"))
2613 `(("java-openjfx-build" ,java-openjfx-build)))
2614 (description "OpenJFX is a client application platform for desktop,
2615 mobile and embedded systems built on Java. Its goal is to produce a
2616 modern, efficient, and fully featured toolkit for developing rich client
2617 applications. This package contains base classes for the OpenJFX
2620 (define-public java-openjfx-graphics
2621 (package (inherit java-openjfx-build)
2622 (name "java-openjfx-graphics")
2624 `(#:jar-name "java-openjfx-graphics.jar"
2625 #:source-dir "modules/graphics/src/main/java"
2626 #:tests? #f; require X
2627 #:test-dir "modules/graphics/src/test"))
2629 `(("java-openjfx-base" ,java-openjfx-base)
2630 ("java-swt" ,java-swt)))
2631 (description "OpenJFX is a client application platform for desktop,
2632 mobile and embedded systems built on Java. Its goal is to produce a
2633 modern, efficient, and fully featured toolkit for developing rich client
2634 applications. This package contains graphics-related classes for the
2635 OpenJFX distribution.")))
2637 (define-public java-openjfx-media
2638 (package (inherit java-openjfx-build)
2639 (name "java-openjfx-media")
2641 `(("java-openjxf-graphics" ,java-openjfx-graphics)))
2643 `(#:jar-name "java-openjfx-media.jar"
2644 #:source-dir "modules/media/src/main/java"
2645 #:tests? #f)); no tests
2646 (description "OpenJFX is a client application platform for desktop,
2647 mobile and embedded systems built on Java. Its goal is to produce a
2648 modern, efficient, and fully featured toolkit for developing rich client
2649 applications. This package contains media-related classes for the
2650 OpenJFX distribution.")))
2652 (define-public javacc-4
2659 (url "https://github.com/javacc/javacc")
2660 (commit "release_41")))
2661 (file-name (string-append "javacc-" version "-checkout"))
2664 "07ysav7j8r1c6h8qxrgqk6lwdp74ly0ad1935lragxml0qqc3ka0"))
2665 (modules '((guix build utils)))
2666 ;; delete bundled jars
2667 (snippet '(begin (delete-file-recursively "lib") #t))))
2668 (build-system ant-build-system)
2670 ;; /tmp/guix-build-javacc-4.1.drv-0/source/test/javacodeLA/build.xml:60:
2675 (modify-phases %standard-phases
2676 ;; Delete tests to avoid build failure (we don't run them anyway).
2677 (add-after 'unpack 'delete-tests
2679 (for-each delete-file
2680 '("src/org/javacc/JavaCCTestCase.java"
2681 "src/org/javacc/parser/ExpansionTest.java"
2682 "src/org/javacc/parser/OptionsTest.java"
2683 "src/org/javacc/jjtree/JJTreeOptionsTest.java"))
2684 (for-each delete-file-recursively
2685 '("src/org/javacc/parser/test"
2686 "src/org/javacc/jjdoc/test"))
2688 (replace 'install (install-jars "bin/lib")))))
2689 (home-page "https://javacc.org/")
2690 (synopsis "Java parser generator")
2691 (description "Java Compiler Compiler (JavaCC) is the most popular parser
2692 generator for use with Java applications. A parser generator is a tool that
2693 reads a grammar specification and converts it to a Java program that can
2694 recognize matches to the grammar. In addition to the parser generator itself,
2695 JavaCC provides other standard capabilities related to parser generation such
2696 as tree building (via a tool called JJTree included with JavaCC), actions,
2698 (license license:bsd-3)))
2700 ;; javacc-3, as javacc-4 is not properly bootstrapped: is contains a javacc.jar
2701 ;; in the bootstrap/ directory.
2702 (define-public javacc-3
2709 (url "https://github.com/javacc/javacc")
2710 (commit "release_32")))
2711 (file-name (string-append "javacc-" version "-checkout"))
2714 "1pyf1xyh8gk83nxqn2v2mdws32l68ydznha41cxa4l2kkbq1v1g3"))))
2718 (modify-phases %standard-phases
2719 (add-before 'build 'set-java-version
2724 (("debug=") "source=\"1.4\" debug=")))
2725 (find-files "." "build.xml"))
2727 (replace 'install (install-jars "bin/lib")))))))
2729 (define-public javacc
2737 (url "https://github.com/javacc/javacc")
2739 (file-name (git-file-name "javacc" version))
2741 (base32 "18kkak3gda93gr25jrgy6q00g0jr8i24ri2wk4kybz1v234fxx9i"))
2742 (modules '((guix build utils)))
2743 ;; Delete bundled jars.
2744 (snippet '(begin (for-each delete-file-recursively
2745 '("bootstrap" "lib"))
2748 `(#:make-flags ; bootstrap from javacc-4
2749 (list (string-append "-Dbootstrap-jar="
2750 (assoc-ref %build-inputs "javacc")
2751 "/share/java/javacc.jar"))
2752 #:test-target "test"
2754 (modify-phases %standard-phases
2755 (replace 'install (install-jars "target"))
2756 (add-after 'install 'install-bin
2757 (lambda* (#:key outputs inputs #:allow-other-keys)
2758 (let* ((out (assoc-ref outputs "out"))
2759 (dir (string-append out "/share/java"))
2760 (bin (string-append out "/bin"))
2761 (javacc (string-append bin "/javacc")))
2763 (with-output-to-file javacc
2766 (string-append "#!/bin/sh\n"
2767 (assoc-ref inputs "jdk") "/bin/java"
2768 " -cp " dir "/javacc.jar" " `basename $0`" " $*"))))
2769 (chmod javacc #o755)
2770 ;; symlink to different names to affect the first argument and
2771 ;; change the behavior of the jar file.
2772 (symlink javacc (string-append bin "/jjdoc"))
2773 (symlink javacc (string-append bin "/jjtree"))
2777 `(("javacc" ,javacc-4)))))
2779 ;; This is the last 3.x release of ECJ
2780 (define-public java-ecj-3
2786 (uri (string-append "http://archive.eclipse.org/eclipse/"
2787 "downloads/drops/R-" version
2788 "-201301310800/ecjsrc-" version ".jar"))
2791 "01mdj14jw11g1jfnki4fi8229p0c6zzckd38zqy2w4m3cjcvsx04"))))
2792 (build-system ant-build-system)
2794 `(#:tests? #f ; none included
2795 #:jdk ,icedtea-7 ; doesn't build with JDK8+
2796 #:make-flags (list "-f" "src/build.xml")
2797 #:build-target "build"
2799 (modify-phases %standard-phases
2800 (add-after 'unpack 'fix-manifest
2802 ;; Record the main class to make ecj executable.
2803 (with-atomic-file-replacement "src/META-INF/MANIFEST.MF"
2805 (display "Manifest-Version: 1.0
2806 Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
2809 (replace 'install (install-jars ".")))))
2810 (home-page "https://eclipse.org")
2811 (synopsis "Eclipse Java development tools core batch compiler")
2812 (description "This package provides the Eclipse Java core batch compiler.")
2813 (license license:epl1.0)))
2815 ;; This is needed for java-cisd-args4j
2816 (define-public java-ecj-3.5
2817 (package (inherit java-ecj-3)
2820 (method url-fetch/zipbomb)
2821 (uri (string-append "http://archive.eclipse.org/eclipse/"
2822 "downloads/drops/R-" version
2823 "-200909170800/ecjsrc-" version ".zip"))
2826 "1vnl2mavisc567bip736xzsvvbjif5279wc4a7pbdik5wlir8qr7"))))
2827 (build-system ant-build-system)
2829 `(#:tests? #f ; none included
2830 #:jdk ,icedtea-7 ; doesn't build with JDK8+
2831 #:build-target "build"
2833 (modify-phases %standard-phases
2834 (add-after 'unpack 'fix-manifest
2836 ;; Record the main class to make ecj executable.
2837 (with-atomic-file-replacement "META-INF/MANIFEST.MF"
2840 (display "Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
2843 (replace 'install (install-jars ".")))))
2845 `(("unzip" ,unzip)))))
2847 (define-public java-ecj
2848 (package (inherit java-ecj-3)
2854 "http://archive.eclipse.org/eclipse/downloads/drops4/R-"
2856 "-201703010400/ecjsrc-"
2861 "11cfgsdgznja1pvlxkjbqykxd7pcd5655vkm7s44xmahmap15gpl"))))
2863 `(#:tests? #f ; none included
2864 #:build-target "build"
2866 (modify-phases %standard-phases
2867 (add-after 'unpack 'fix-build.xml
2869 (substitute* "src/build.xml"
2873 (add-after 'unpack 'fix-prop
2875 (substitute* "src/build.xml"
2876 (("^.*properties.*$")
2877 "<include name=\"**/*.properties\"/>
2878 <include name=\"**/*.props\"/>"))
2880 (add-before 'build 'chdir
2884 (replace 'install (install-jars ".")))))))
2886 (define-public java-cisd-base
2887 (let ((revision 38938)
2888 (base-version "14.12.0"))
2890 (name "java-cisd-base")
2891 (version (string-append base-version "-" (number->string revision)))
2895 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
2896 "base/tags/release/"
2897 (version-major+minor base-version)
2898 ".x/" base-version "/base/"))
2899 (revision revision)))
2900 (file-name (string-append "java-cisd-base-" version "-checkout"))
2903 "1i5adyf7nzclb0wydgwa1az04qliid8035vpahaandmkmigbnxiy"))
2904 (modules '((guix build utils)))
2907 ;; Delete included gradle jar
2908 (delete-file-recursively "gradle/wrapper")
2909 ;; Delete pre-built native libraries
2910 (delete-file-recursively "libs")
2912 (build-system ant-build-system)
2914 `(#:make-flags '("-file" "build/build.xml")
2915 #:test-target "jar-test"
2918 (modify-phases %standard-phases
2919 (add-after 'unpack 'unpack-build-resources
2920 (lambda* (#:key inputs #:allow-other-keys)
2921 (copy-recursively (assoc-ref inputs "build-resources")
2922 "../build_resources")
2924 (add-after 'unpack-build-resources 'fix-dependencies
2925 (lambda* (#:key inputs #:allow-other-keys)
2926 (substitute* "build/build.xml"
2927 (("\\$\\{lib\\}/testng/testng-jdk15.jar")
2928 (string-append (assoc-ref inputs "java-testng")
2929 "/share/java/java-testng.jar"))
2930 (("\\$\\{lib\\}/commons-lang/commons-lang.jar")
2931 (string-append (assoc-ref inputs "java-commons-lang")
2932 "/share/java/commons-lang-"
2933 ,(package-version java-commons-lang) ".jar"))
2934 (("\\$\\{lib\\}/commons-io/commons-io.jar")
2935 (string-append (assoc-ref inputs "java-commons-io")
2936 "/lib/m2/commons-io/commons-io/"
2937 ,(package-version java-commons-io)
2939 ,(package-version java-commons-io)
2941 ;; Remove dependency on svn
2942 (("<build-info.*") "")
2943 (("\\$\\{revision.number\\}")
2944 ,(number->string revision))
2945 (("\\$\\{version.number\\}") ,base-version))
2946 ;; Remove dependency on classycle
2947 (substitute* "../build_resources/ant/build-common.xml"
2948 (("<taskdef name=\"dependency-checker.*") "")
2949 (("classname=\"classycle.*") "")
2950 (("classpath=\"\\$\\{lib\\}/classycle.*") ""))
2952 ;; A few tests fail because of the lack of a proper /etc/groups and
2953 ;; /etc/passwd file in the build container.
2954 (add-after 'unpack 'disable-broken-tests
2956 (substitute* "sourceTest/java/ch/systemsx/cisd/base/AllTests.java"
2957 (("Unix.isOperational\\(\\)") "false"))
2959 ;; These decorators are almost useless and pull in an unpackaged
2961 (add-after 'unpack 'remove-useless-decorators
2963 (substitute* "source/java/ch/systemsx/cisd/base/unix/Unix.java"
2965 (("import ch.rinn.restrictions.Private;") ""))
2966 (substitute* "sourceTest/java/ch/systemsx/cisd/base/unix/UnixTests.java"
2968 (("import ch.rinn.restrictions.Friend;") ""))
2970 (add-before 'configure 'build-native-code
2971 (lambda* (#:key inputs #:allow-other-keys)
2972 (let ((jdk (assoc-ref inputs "jdk"))
2973 (dir ,(match (%current-system)
2976 ((or "armhf-linux" "aarch64-linux")
2978 ((or "x86_64-linux")
2980 (_ "unknown-Linux"))))
2981 (with-directory-excursion "source/c"
2982 (invoke "gcc" "-shared" "-O3" "-fPIC" "unix.c"
2983 (string-append "-I" jdk "/include")
2984 (string-append "-I" jdk "/include/linux")
2986 (invoke "gcc" "-shared" "-O3" "-fPIC"
2987 "-DMACHINE_BYTE_ORDER=1"
2995 (string-append "-I" jdk "/include")
2996 (string-append "-I" jdk "/include/linux")
2997 "-o" "libnativedata.so"))
2998 (install-file "source/c/libunix.so"
2999 (string-append "libs/native/unix/" dir))
3000 (install-file "source/c/libnativedata.so"
3001 (string-append "libs/native/nativedata/" dir))
3003 ;; In the "check" phase we only build the test executable.
3004 (add-after 'check 'run-tests
3006 (invoke "java" "-jar" "targets/dist/sis-base-test.jar")
3007 (delete-file "targets/dist/sis-base-test.jar")
3009 (replace 'install (install-jars "targets/dist")))))
3011 `(("jdk" ,icedtea-8)
3012 ("java-commons-lang" ,java-commons-lang)
3013 ("java-commons-io" ,java-commons-io)
3014 ("java-testng" ,java-testng)
3019 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
3020 "base/tags/release/"
3021 (version-major+minor base-version)
3023 "/build_resources/"))
3024 (revision revision)))
3027 "0b6335gkm4x895rac6kfg9d3rpq0sy19ph4zpg2gyw6asfsisjhk"))))))
3028 (home-page "http://svnsis.ethz.ch")
3029 (synopsis "Utility classes for libraries from ETH Zurich")
3030 (description "This library supplies some utility classes needed for
3031 libraries from the SIS division at ETH Zurich like jHDF5.")
3032 ;; The C sources are under a non-copyleft license, which looks like a
3033 ;; variant of the BSD licenses. The whole package is under the ASL2.0.
3034 (license (list license:asl2.0
3035 (license:non-copyleft "file://source/c/COPYING"))))))
3037 (define-public java-cisd-args4j
3038 (let ((revision 39162)
3039 (base-version "9.11.2"))
3041 (name "java-cisd-args4j")
3042 (version (string-append base-version "-" (number->string revision)))
3046 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
3047 "args4j/tags/release/"
3048 (version-major+minor base-version)
3049 ".x/" base-version "/args4j/"))
3050 (revision revision)))
3051 (file-name (string-append "java-cisd-args4j-" version "-checkout"))
3054 "0hhqznjaivq7ips7mkwas78z42s6djsm20rrs7g1zd59rcsakxn2"))))
3055 (build-system ant-build-system)
3057 `(#:make-flags '("-file" "build/build.xml")
3058 #:tests? #f ; there are no tests
3059 ;; There are weird build failures with JDK8, such as: "The type
3060 ;; java.io.ObjectInputStream cannot be resolved. It is indirectly
3061 ;; referenced from required .class files"
3063 #:modules ((guix build ant-build-system)
3065 (guix build java-utils)
3070 (modify-phases %standard-phases
3071 (add-after 'unpack 'unpack-build-resources
3072 (lambda* (#:key inputs #:allow-other-keys)
3073 (mkdir-p "../build_resources")
3074 (invoke "tar" "xf" (assoc-ref inputs "build-resources")
3075 "-C" "../build_resources"
3076 "--strip-components=1")
3077 (mkdir-p "../build_resources/lib")
3079 (add-after 'unpack-build-resources 'fix-dependencies
3080 (lambda* (#:key inputs #:allow-other-keys)
3081 ;; FIXME: There should be a more convenient abstraction for
3082 ;; editing XML files.
3083 (with-directory-excursion "../build_resources/ant/"
3084 (chmod "build-common.xml" #o664)
3085 (call-with-output-file "build-common.xml.new"
3089 (with-input-from-file "build-common.xml"
3090 (lambda _ (xml->sxml #:trim-whitespace? #t)))
3091 `(;; Remove dependency on classycle and custom ant tasks
3092 (taskdef . ,(lambda (tag . kids)
3093 (let ((name ((sxpath '(name *text*)) kids)))
3094 (if (or (member "build-info" name)
3095 (member "dependency-checker" name)
3096 (member "build-java-subprojects" name)
3097 (member "project-classpath" name))
3100 (typedef . ,(lambda (tag . kids)
3101 (let ((name ((sxpath '(name *text*)) kids)))
3102 (if (member "recursive-jar" name)
3105 (build-java-subprojects . ,(lambda _ '()))
3106 ;; Ignore everything else
3107 (*default* . ,(lambda (tag . kids) `(,tag ,@kids)))
3108 (*text* . ,(lambda (_ txt) txt))))
3110 (rename-file "build-common.xml.new" "build-common.xml"))
3111 (substitute* "build/build.xml"
3112 (("\\$\\{lib\\}/cisd-base/cisd-base.jar")
3113 (string-append (assoc-ref inputs "java-cisd-base")
3114 "/share/java/sis-base.jar"))
3115 ;; Remove dependency on svn
3116 (("<build-info.*") "")
3117 (("\\$\\{revision.number\\}")
3118 ,(number->string revision))
3119 (("\\$\\{version.number\\}") ,base-version)
3120 ;; Don't use custom ant tasks.
3121 (("recursive-jar") "jar")
3122 (("<project-classpath.*") ""))
3124 (replace 'install (install-jars "targets/dist")))))
3126 `(("java-cisd-base" ,java-cisd-base)))
3128 `(("ecj" ,java-ecj-3.5)
3133 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
3134 "args4j/tags/release/"
3135 (version-major+minor base-version)
3137 "/build_resources/"))
3138 (revision revision)))
3141 "056cam4k8pll7ass31sy6gwn8g8719njc41yf4l02b0342nilkyf"))
3142 (modules '((guix build utils)))
3143 ;; Delete bundled pre-built jars.
3145 '(begin (delete-file-recursively "lib/") #t))))))
3146 (home-page "http://svnsis.ethz.ch")
3147 (synopsis "Command line parser library")
3148 (description "This package provides a parser for command line arguments.")
3149 (license license:asl2.0))))
3151 (define-public java-cisd-jhdf5
3152 (let ((revision 39162)
3153 (base-version "14.12.6"))
3155 (name "java-cisd-jhdf5")
3156 (version (string-append base-version "-" (number->string revision)))
3160 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
3161 "jhdf5/tags/release/"
3162 (version-major+minor base-version)
3163 ".x/" base-version "/jhdf5/"))
3164 (revision revision)))
3165 (file-name (string-append "java-cisd-jhdf5-" version "-checkout"))
3168 "13i17s2hn0q9drdqvp8csy7770p3hdbh9rp30ihln2ldkfawdmz0"))
3169 (modules '((guix build utils)))
3172 ;; Delete included gradle jar
3173 (delete-file-recursively "gradle/wrapper")
3174 ;; Delete pre-built native libraries
3175 (delete-file-recursively "libs")
3177 (build-system ant-build-system)
3179 `(#:make-flags '("-file" "build/build.xml")
3180 #:build-target "jar-all"
3181 #:test-target "jar-test"
3184 (modify-phases %standard-phases
3185 ;; FIXME: this build phase fails.
3186 (delete 'generate-jar-indices)
3187 ;; Don't erase results from the build phase when building tests.
3188 (add-after 'unpack 'separate-test-target-from-clean
3190 (substitute* "build/build.xml"
3191 (("\"jar-test\" depends=\"clean, ")
3192 "\"jar-test\" depends=\""))
3194 (add-after 'unpack 'unpack-build-resources
3195 (lambda* (#:key inputs #:allow-other-keys)
3196 (copy-recursively (assoc-ref inputs "build-resources")
3197 "../build_resources")
3198 (delete-file-recursively "../build_resources/lib/")
3199 (mkdir-p "../build_resources/lib")
3200 ;; Remove dependency on classycle
3201 (substitute* "../build_resources/ant/build-common.xml"
3202 (("<taskdef name=\"dependency-checker.*") "")
3203 (("classname=\"classycle.*") "")
3204 (("classpath=\"\\$\\{lib\\}/classycle.*") ""))
3205 ;; Remove dependency on svn
3206 (substitute* "build/build.xml"
3207 (("<build-info.*") "")
3208 (("\\$\\{revision.number\\}")
3209 ,(number->string revision))
3210 (("\\$\\{version.number\\}") ,base-version))
3212 (add-after 'unpack-build-resources 'fix-dependencies
3213 (lambda* (#:key inputs #:allow-other-keys)
3214 (substitute* "../build_resources/ant/build-common.xml"
3215 (("../libraries/testng/testng-jdk15.jar")
3216 (string-append (assoc-ref inputs "java-testng")
3217 "/share/java/java-testng.jar")))
3218 (substitute* "build/build.xml"
3219 (("\\$\\{lib\\}/sis-base/sis-base.jar")
3220 (string-append (assoc-ref inputs "java-cisd-base")
3221 "/share/java/sis-base.jar"))
3222 (("\\$\\{lib\\}/cisd-args4j/cisd-args4j.jar")
3223 (string-append (assoc-ref inputs "java-cisd-args4j")
3224 "/share/java/cisd-args4j.jar"))
3225 (("\\$\\{lib\\}/commons-lang/commons-lang.jar")
3226 (string-append (assoc-ref inputs "java-commons-lang")
3227 "/share/java/commons-lang-"
3228 ,(package-version java-commons-lang) ".jar"))
3229 (("\\$\\{lib\\}/commons-io/commons-io.jar")
3230 (string-append (assoc-ref inputs "java-commons-io")
3231 "/lib/m2/commons-io/commons-io/"
3232 ,(package-version java-commons-io)
3234 ,(package-version java-commons-io)
3236 (("\\$\\{lib\\}/testng/testng-jdk15.jar")
3237 (string-append (assoc-ref inputs "java-testng")
3238 "/share/java/java-testng.jar"))
3239 (("\\$\\{lib\\}/junit4/junit.jar")
3240 (car (find-files (assoc-ref inputs "java-junit") "jar$")))
3241 (("\\$\\{lib\\}/jmock/hamcrest/hamcrest-core.jar")
3242 (car (find-files (assoc-ref inputs "java-hamcrest-core")
3244 ;; Remove dependency on ch.rinn.restrictions
3245 (with-directory-excursion "source/java/ch/systemsx/cisd/hdf5/"
3246 (substitute* '("BitSetConversionUtils.java"
3248 (("import ch.rinn.restrictions.Private;") "")
3250 (with-directory-excursion "sourceTest/java/ch/systemsx/cisd/hdf5/"
3251 (substitute* '("BitSetConversionTest.java"
3252 "h5ar/HDF5ArchiverTest.java")
3253 (("import ch.rinn.restrictions.Friend;") "")
3255 ;; Remove leftovers from removing @Friend
3256 (substitute* "h5ar/HDF5ArchiverTest.java"
3257 (("\\{ HDF5Archiver.class, IdCache.class, LinkRecord.class \\}\\)")
3260 (add-before 'configure 'build-native-library
3261 (lambda* (#:key inputs #:allow-other-keys)
3262 (let ((jdk (assoc-ref inputs "jdk"))
3263 (hdf5 (assoc-ref inputs "hdf5"))
3264 (dir ,(match (%current-system)
3267 ((or "armhf-linux" "aarch64-linux")
3269 ((or "x86_64-linux")
3271 (_ "unknown-Linux"))))
3272 (with-directory-excursion "source/c"
3273 (apply invoke `("gcc" "-shared" "-O3"
3275 "-Wl,--exclude-libs,ALL"
3276 ,@(find-files "jhdf5" "\\.c$")
3277 ,@(find-files "hdf-java" "\\.c$")
3278 ,(string-append "-I" hdf5 "/include")
3279 ,(string-append "-I" jdk "/include")
3280 ,(string-append "-I" jdk "/include/linux")
3281 ,(string-append hdf5 "/lib/libhdf5.a")
3282 "-o" "libjhdf5.so" "-lz")))
3283 (install-file "source/c/libjhdf5.so"
3284 (string-append "libs/native/jhdf5/" dir))
3286 ;; In the "check" phase we only build the test executable.
3287 (add-after 'check 'run-tests
3289 (invoke "java" "-jar" "targets/dist/sis-jhdf5-test.jar")
3290 (delete-file "targets/dist/sis-jhdf5-test.jar")
3293 (install-jars "targets/dist")))))
3295 `(("java-cisd-base" ,java-cisd-base)
3296 ("java-cisd-args4j" ,java-cisd-args4j)
3297 ("java-commons-lang" ,java-commons-lang)
3298 ("java-commons-io" ,java-commons-io)
3302 `(("jdk" ,icedtea-8)
3303 ("java-testng" ,java-testng)
3304 ("java-junit" ,java-junit)
3305 ("java-jmock" ,java-jmock)
3306 ("java-hamcrest-core" ,java-hamcrest-core)
3311 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
3312 "jhdf5/tags/release/"
3313 (version-major+minor base-version)
3315 "/build_resources/"))
3316 (revision revision)))
3319 "0b6335gkm4x895rac6kfg9d3rpq0sy19ph4zpg2gyw6asfsisjhk"))))))
3320 (home-page "https://wiki-bsse.ethz.ch/display/JHDF5/")
3321 (synopsis "Java binding for HDF5")
3322 (description "JHDF5 is a high-level API in Java for reading and writing
3323 HDF5 files, building on the libraries provided by the HDF Group.")
3324 ;; The C sources are under a non-copyleft license, which looks like a
3325 ;; variant of the BSD licenses. The whole package is under the ASL2.0.
3326 (license (list license:asl2.0
3327 (license:non-copyleft "file://source/c/COPYING"))))))
3329 (define-public java-classpathx-servletapi
3331 (name "java-classpathx-servletapi")
3335 (uri (string-append "mirror://gnu/classpathx/servletapi/"
3336 "servletapi-" version ".tar.gz"))
3339 "07d8h051siga2f33fra72hk12sbq1bxa4jifjg0qj0vfazjjff0x"))))
3340 (build-system ant-build-system)
3342 `(#:tests? #f ; there is no test target
3343 #:build-target "compile"
3345 (list "-Dbuild.compiler=javac1.8"
3346 (string-append "-Ddist=" (assoc-ref %outputs "out")))
3348 (modify-phases %standard-phases
3350 (lambda* (#:key make-flags #:allow-other-keys)
3351 (apply invoke `("ant" "dist" ,@make-flags)))))))
3352 (home-page "https://www.gnu.org/software/classpathx/")
3353 (synopsis "Java servlet API implementation")
3354 (description "This is the GNU servlet API distribution, part of the
3355 ClasspathX project. It provides implementations of version 3.0 of the servlet
3356 API and version 2.1 of the Java ServerPages API.")
3357 (license license:gpl3+)))
3359 (define-public java-javaee-servletapi
3361 (name "java-javaee-servletapi")
3366 (url "https://github.com/javaee/servlet-spec")
3368 (file-name (git-file-name name version))
3371 "0s03lj8w5an70lkqbjycgfrfk0kc07vbfav91jzk87gh3awf9ksl"))))
3372 (build-system ant-build-system)
3374 `(#:jar-name "javax-servletapi.jar"
3377 #:source-dir "src/main/java"
3379 (modify-phases %standard-phases
3380 (add-before 'build 'copy-resources
3382 (mkdir-p "build/classes/javax/servlet/http")
3383 (let ((from-prefix "src/main/java/javax/servlet/")
3384 (to-prefix "build/classes/javax/servlet/"))
3385 (for-each (lambda (f)
3386 (copy-file (string-append from-prefix f)
3387 (string-append to-prefix f)))
3388 (list "LocalStrings_ja.properties"
3389 "LocalStrings.properties"
3390 "LocalStrings_fr.properties"
3391 "http/LocalStrings_es.properties"
3392 "http/LocalStrings_ja.properties"
3393 "http/LocalStrings.properties"
3394 "http/LocalStrings_fr.properties")))
3397 `(("unzip" ,unzip)))
3398 (home-page "https://javaee.github.io/servlet-spec/")
3399 (synopsis "Java servlet API")
3400 (description "Java Servlet is the foundation web specification in the
3401 Java Enterprise Platform. Developers can build web applications using the
3402 Servlet API to interact with the request/response workflow. This project
3403 provides information on the continued development of the Java Servlet
3405 ;; Main code is dual-licensed by Oracle under either GLP2 or CDDL 1.1.
3406 ;; Some files are licensed under ASL 2.0.
3407 (license (list license:asl2.0 license:gpl2 license:cddl1.1))))
3409 (define-public java-swt
3414 ;; The types of many variables and procedures differ in the sources
3415 ;; dependent on whether the target architecture is a 32-bit system or a
3416 ;; 64-bit system. Instead of patching the sources on demand in a build
3417 ;; phase we download either the 32-bit archive (which mostly uses "int"
3418 ;; types) or the 64-bit archive (which mostly uses "long" types).
3419 (let ((hash32 "09q0cbh90d90q3a7dx9430kc4m6bijrkr4lajrmzzvi0jjdpq4v9")
3420 (hash64 "17k5hs75a87ssmc5xhwdfdm2gn4zba0r837l2455za01krnkaa2q")
3423 (let-values (((hash file)
3424 (match (or (%current-target-system) (%current-system))
3425 ("x86_64-linux" (values hash64 file64))
3426 (_ (values hash32 file32)))))
3430 "http://download.eclipse.org/eclipse/downloads/drops4/"
3431 "R-" version "-201710090410/swt-" version
3432 "-gtk-linux-" file ".zip"))
3433 (sha256 (base32 hash))))))
3434 (build-system ant-build-system)
3436 `(#:jar-name "swt.jar"
3438 #:tests? #f ; no "check" target
3440 (modify-phases %standard-phases
3442 (lambda* (#:key source #:allow-other-keys)
3444 (invoke "unzip" source "-d" "swt")
3447 (invoke "unzip" "src.zip" "-d" "src")))
3448 ;; The classpath contains invalid icecat jars. Since we don't need
3449 ;; anything other than the JDK on the classpath, we can simply unset
3451 (add-after 'configure 'unset-classpath
3452 (lambda _ (unsetenv "CLASSPATH") #t))
3453 (add-before 'build 'build-native
3454 (lambda* (#:key inputs outputs #:allow-other-keys)
3455 (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
3456 ;; Build shared libraries. Users of SWT have to set the system
3457 ;; property swt.library.path to the "lib" directory of this
3460 (setenv "OUTPUT_DIR" lib)
3461 (with-directory-excursion "src"
3462 (invoke "bash" "build.sh")))))
3463 (add-after 'install 'install-native
3464 (lambda* (#:key outputs #:allow-other-keys)
3465 (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
3466 (for-each (lambda (file)
3467 (install-file file lib))
3468 (find-files "." "\\.so$"))
3472 ("libxtst" ,libxtst)
3477 `(("pkg-config" ,pkg-config)
3479 (home-page "https://www.eclipse.org/swt/")
3480 (synopsis "Widget toolkit for Java")
3482 "SWT is a widget toolkit for Java designed to provide efficient, portable
3483 access to the user-interface facilities of the operating systems on which it
3485 ;; SWT code is licensed under EPL1.0
3486 ;; Gnome and Gtk+ bindings contain code licensed under LGPLv2.1
3487 ;; Cairo bindings contain code under MPL1.1
3488 ;; XULRunner 1.9 bindings contain code under MPL2.0
3493 license:lgpl2.1+))))
3495 ;; java-hamcrest-core uses qdox version 1.12. We package this version instead
3496 ;; of the latest release.
3497 (define-public java-qdox-1.12
3503 (uri (string-append "https://repo1.maven.org/maven2/"
3504 "com/thoughtworks/qdox/qdox/" version
3505 "/qdox-" version "-sources.jar"))
3508 "0hlfbqq2avf5s26wxkksqmkdyk6zp9ggqn37c468m96mjv0n9xfl"))))
3509 (build-system ant-build-system)
3511 `(;; Tests require junit
3513 #:jar-name "qdox.jar"
3515 (modify-phases %standard-phases
3517 (lambda* (#:key source #:allow-other-keys)
3519 (with-directory-excursion "src"
3520 (invoke "jar" "-xf" source))))
3521 ;; At this point we don't have junit, so we must remove the API
3523 (add-after 'unpack 'delete-tests
3525 (delete-file-recursively "src/com/thoughtworks/qdox/junit")
3527 (home-page "https://github.com/codehaus/qdox")
3528 (synopsis "Parse definitions from Java source files")
3530 "QDox is a high speed, small footprint parser for extracting
3531 class/interface/method definitions from source files complete with JavaDoc
3532 @code{@@tags}. It is designed to be used by active code generators or
3533 documentation tools.")
3534 (license license:asl2.0)))
3536 (define-public java-qdox
3539 ; Newer version exists, but this version is required by java-plexus-component-metadata
3543 ;; 2.0-M4, -M5 at https://github.com/paul-hammant/qdox
3544 ;; Older releases at https://github.com/codehaus/qdox/
3545 ;; Note: The release at maven is pre-generated. The release at
3546 ;; github requires jflex.
3547 (uri (string-append "https://repo1.maven.org/maven2/"
3548 "com/thoughtworks/qdox/qdox/" version
3549 "/qdox-" version "-sources.jar"))
3552 "10xxrcaicq6axszcr2jpygisa4ch4sinyx5q7kqqxv4lknrmxp5x"))))
3553 (build-system ant-build-system)
3555 `(#:jar-name "qdox.jar"
3556 #:tests? #f; no tests
3558 ((guix build ant-build-system)
3559 (guix build java-utils)
3563 (modify-phases %standard-phases
3564 (add-before 'install 'create-pom
3566 (with-output-to-file "pom.xml"
3570 (modelVersion "4.0.0")
3572 (groupId "com.thoughtworks.qdox")
3574 (version ,,version))))))
3577 (install-from-pom "pom.xml")))))
3578 (home-page "https://github.com/codehaus/qdox")
3579 (synopsis "Parse definitions from Java source files")
3580 (description "QDox is a high speed, small footprint parser for extracting
3581 class/interface/method definitions from source files complete with JavaDoc
3582 @code{@@tags}. It is designed to be used by active code generators or
3583 documentation tools.")
3584 (license license:asl2.0)))
3586 (define-public java-qdox-2-M9
3589 (version "2.0-M9"); required by plexus-java
3592 ;; 2.0-M4, -M5 at https://github.com/paul-hammant/qdox
3593 ;; Older releases at https://github.com/codehaus/qdox/
3594 ;; Note: The release at maven is pre-generated. The release at
3595 ;; github requires jflex.
3596 (uri (string-append "https://repo1.maven.org/maven2/"
3597 "com/thoughtworks/qdox/qdox/" version
3598 "/qdox-" version "-sources.jar"))
3601 "1s2jnmx2dkwnaha12lcj26aynywgwa8sslc47z82wx8xai13y4fg"))))))
3603 (define-public java-jarjar
3605 (name "java-jarjar")
3610 "https://storage.googleapis.com/google-code-archive-downloads/v2/"
3611 "code.google.com/jarjar/jarjar-src-" version ".zip"))
3614 "1v8irhni9cndcw1l1wxqgry013s2kpj0qqn57lj2ji28xjq8ndjl"))
3615 (modules '((guix build utils)))
3618 ;; Delete bundled thirds-party jar archives.
3619 (delete-file-recursively "lib")
3620 (delete-file "src/test/enumtest.jar")
3621 ;; the CLASSPATH needs this directory, create an empty one
3624 (build-system ant-build-system)
3626 `(;; Tests require junit, which ultimately depends on this package.
3628 #:build-target "jar"
3630 (modify-phases %standard-phases
3631 (add-before 'build 'do-not-use-bundled-asm
3632 (lambda* (#:key inputs #:allow-other-keys)
3633 (substitute* "build.xml"
3634 (("<path id=\"path.build\">")
3635 (string-append "<path id=\"path.build\"><fileset dir=\""
3636 (assoc-ref inputs "java-asm-bootstrap")
3637 "/lib/m2\" includes=\"**/*.jar\"/>"))
3638 (("<zipfileset src=\"lib/asm-4.0.jar\"/>") "")
3639 (("lib/asm-commons-4.0.jar")
3640 (car (find-files (assoc-ref inputs "java-asm-bootstrap")
3642 (("<include name=\"org/objectweb/asm/commons/Remap\\*\\.class\"/>")
3643 (string-append "<include name=\"org/objectweb/asm/"
3644 "commons/Remap*.class\"/>"
3645 "<include name=\"org/objectweb/asm/*.class\"/>"
3646 "<include name=\"org/objectweb/asm/"
3647 "signature/*.class\"/>"
3648 "<include name=\"org/objectweb/asm/"
3649 "commons/SignatureRemapper.class\"/>")))
3651 (add-before 'build 'remove-maven-dependency
3653 ;; We do not need to build jarjar as a maven plugin just yet, so
3654 ;; remove this file. Maven requires jarjar (but not that plugin),
3655 ;; so removing it improves the bootstrap.
3656 (delete-file "src/main/com/tonicsystems/jarjar/JarJarMojo.java")
3659 (lambda* (#:key outputs #:allow-other-keys)
3660 (let ((target (string-append (assoc-ref outputs "out")
3662 (install-file (string-append "dist/jarjar-" ,version ".jar")
3666 `(("java-asm-bootstrap" ,java-asm-bootstrap)))
3668 `(("unzip" ,unzip)))
3669 (home-page "https://code.google.com/archive/p/jarjar/")
3670 (synopsis "Repackage Java libraries")
3672 "Jar Jar Links is a utility that makes it easy to repackage Java
3673 libraries and embed them into your own distribution. Jar Jar Links includes
3674 an Ant task that extends the built-in @code{jar} task.")
3675 (license license:asl2.0)))
3677 (define-public java-hamcrest-core
3679 (name "java-hamcrest-core")
3684 (url "https://github.com/hamcrest/JavaHamcrest/")
3685 (commit (string-append "hamcrest-java-" version))))
3686 (file-name (git-file-name name version))
3689 "16fxxkrd31ahqvcaby30jgh3z1i0zxh51m24hxgz0z2agxj6bc63"))
3690 (modules '((guix build utils)))
3693 ;; Delete bundled thirds-party jar archives.
3694 (delete-file-recursively "lib")
3696 (build-system ant-build-system)
3698 `(#:tests? #f ; Tests require junit
3699 #:modules ((guix build ant-build-system)
3700 (guix build java-utils)
3703 #:make-flags (list (string-append "-Dversion=" ,version))
3704 #:test-target "unit-test"
3705 #:build-target "core"
3707 (modify-phases %standard-phases
3708 ;; Disable unit tests, because they require junit, which requires
3709 ;; hamcrest-core. We also give a fixed value to the "Built-Date"
3710 ;; attribute from the manifest for reproducibility.
3711 (add-before 'configure 'patch-build.xml
3713 (substitute* "build.xml"
3714 (("unit-test, ") "")
3715 (("\\$\\{build.timestamp\\}") "guix"))
3717 ;; Java's "getMethods()" returns methods in an unpredictable order.
3718 ;; To make the output of the generated code deterministic we must
3719 ;; sort the array of methods.
3720 (add-after 'unpack 'make-method-order-deterministic
3722 (substitute* "hamcrest-generator/src/main/java/org/hamcrest/generator/ReflectiveFactoryReader.java"
3723 (("import java\\.util\\.Iterator;" line)
3724 (string-append line "\n"
3725 "import java.util.Arrays; import java.util.Comparator;"))
3726 (("allMethods = cls\\.getMethods\\(\\);" line)
3727 (string-append "_" line
3729 private Method[] getSortedMethods() {
3730 Arrays.sort(_allMethods, new Comparator<Method>() {
3732 public int compare(Method a, Method b) {
3733 return a.toString().compareTo(b.toString());
3739 private Method[] allMethods = getSortedMethods();")))
3741 (add-before 'build 'do-not-use-bundled-qdox
3742 (lambda* (#:key inputs #:allow-other-keys)
3743 (substitute* "build.xml"
3744 (("lib/generator/qdox-1.12.jar")
3745 (string-append (assoc-ref inputs "java-qdox-1.12")
3746 "/share/java/qdox.jar")))
3748 ;; build.xml searches for .jar files in this directoy, which
3749 ;; we remove from the source archive.
3750 (add-before 'build 'create-dummy-directories
3752 (mkdir-p "lib/integration")
3754 (add-before 'build 'create-pom
3756 (substitute* "pom/hamcrest-core.pom"
3757 (("@VERSION@") ,version))
3760 (install-from-pom "pom/hamcrest-core.pom")))))
3762 `(("java-qdox-1.12" ,java-qdox-1.12)
3763 ("java-jarjar" ,java-jarjar)))
3765 `(("java-hamcrest-parent-pom" ,java-hamcrest-parent-pom)))
3766 (home-page "http://hamcrest.org/")
3767 (synopsis "Library of matchers for building test expressions")
3769 "This package provides a library of matcher objects (also known as
3770 constraints or predicates) allowing @code{match} rules to be defined
3771 declaratively, to be used in other frameworks. Typical scenarios include
3772 testing frameworks, mocking libraries and UI validation rules.")
3773 (license license:bsd-2)))
3775 (define java-hamcrest-parent-pom
3777 (inherit java-hamcrest-core)
3778 (name "java-hamcrest-parent-pom")
3779 (propagated-inputs '())
3784 (modify-phases %standard-phases
3788 (substitute* "pom/hamcrest-parent.pom"
3789 (("@VERSION@") ,(package-version java-hamcrest-core)))
3792 (install-pom-file "pom/hamcrest-parent.pom")))))))
3794 (define-public java-hamcrest-library
3796 (inherit java-hamcrest-core)
3797 (name "java-hamcrest-library")
3799 (substitute-keyword-arguments (package-arguments java-hamcrest-core)
3800 ((#:build-target _) "library")
3802 `(modify-phases ,phases
3803 (add-after 'unpack 'patch-classpath-for-integration
3804 (lambda* (#:key inputs #:allow-other-keys)
3805 (substitute* "build.xml"
3806 (("build/hamcrest-core-\\$\\{version\\}\\.jar")
3807 (car (find-files (assoc-ref inputs "java-hamcrest-core")
3810 (replace 'create-pom
3812 (substitute* "pom/hamcrest-library.pom"
3813 (("@VERSION@") ,(package-version java-hamcrest-core)))
3816 (install-from-pom "pom/hamcrest-library.pom"))))))
3818 `(("java-hamcrest-core" ,java-hamcrest-core)
3819 ("java-hamcrest-parent-pom" ,java-hamcrest-parent-pom)))))
3821 (define-public java-junit
3828 (url "https://github.com/junit-team/junit/")
3829 (commit (string-append "r" version))))
3830 (file-name (git-file-name name version))
3833 "1j8avi91px1z8rjc89cfikwrvfifdmmsarwiyrcnr59ynvpz0v8h"))
3834 (modules '((guix build utils)))
3837 ;; Delete bundled jar archives.
3838 (delete-file-recursively "lib")
3840 (build-system ant-build-system)
3842 `(#:jar-name "junit.jar"
3843 #:source-dir "src/main/java"
3844 #:test-dir "src/test"
3845 #:test-exclude (list "**/SimpleTest.java" "**/StackTracesTest.java"
3846 "**/RuleChainTest.java" "**/TestWatchmanTest.java")
3848 (modify-phases %standard-phases
3849 (add-before 'check 'copy-test-resources
3851 (copy-recursively "src/test/resources" "build/test-classes")
3854 (install-from-pom "pom.xml")))))
3856 `(("java-hamcrest-core" ,java-hamcrest-core)))
3858 `(("java-hamcrest-library" ,java-hamcrest-library)))
3859 (home-page "https://junit.org/junit4/")
3860 (synopsis "Test framework for Java")
3862 "JUnit is a simple framework to write repeatable tests for Java projects.
3863 JUnit provides assertions for testing expected results, test fixtures for
3864 sharing common test data, and test runners for running tests.")
3865 (license license:epl1.0)))
3867 (define-public java-junitparams
3869 (name "java-junitparams")
3874 (url "https://github.com/Pragmatists/JUnitParams")
3875 (commit (string-append "JUnitParams-" version))))
3876 (file-name (git-file-name name version))
3879 "0rb52xdfp99invyjrras3w0bf0a81cz30yd47rkkiyqcqj0y1q9b"))))
3880 (build-system ant-build-system)
3882 `(#:jar-name "junitparams.jar"
3883 #:source-dir "src/main/java"
3884 #:test-dir "src/test"
3885 #:test-exclude (list "**/SuperclassTest.java")))
3887 `(("java-junit" ,java-junit)))
3889 `(("java-junit" ,java-junit)
3890 ("java-hamcrest-core" ,java-hamcrest-core)
3891 ("java-assertj" ,java-assertj)))
3892 (home-page "https://github.com/Pragmatists/JUnitParams")
3893 (synopsis "Parameterised test support for JUnit")
3894 (description "The JUnitParams project adds a new runner to JUnit and
3895 provides much easier and readable parametrised tests for JUnit.")
3896 (license license:asl2.0)))
3898 (define-public java-plexus-utils
3900 (name "java-plexus-utils")
3901 ;; sisu-build-api needs this version, later versions don't work
3906 (url "https://github.com/codehaus-plexus/plexus-utils")
3907 (commit (string-append "plexus-utils-" version))))
3908 (file-name (git-file-name name version))
3911 "1w169glixyk94jbczj8jzg897lsab46jihiaa3dhw0p06g35va8b"))))
3912 (build-system ant-build-system)
3913 ;; FIXME: The default build.xml does not include a target to install
3916 `(#:jar-name "plexus-utils.jar"
3917 #:source-dir "src/main"
3919 (modify-phases %standard-phases
3920 (add-after 'unpack 'fix-reference-to-/bin-and-/usr
3922 (substitute* "src/main/java/org/codehaus/plexus/util/\
3923 cli/shell/BourneShell.java"
3924 (("/bin/sh") (which "sh"))
3925 (("/usr/") (getcwd)))
3927 (add-after 'unpack 'fix-or-disable-broken-tests
3929 (with-directory-excursion "src/test/java/org/codehaus/plexus/util"
3930 (substitute* '("cli/CommandlineTest.java"
3931 "cli/shell/BourneShellTest.java")
3932 (("/bin/sh") (which "sh"))
3933 (("/bin/echo") (which "echo")))
3935 ;; This test depends on MavenProjectStub, but we don't have
3936 ;; a package for Maven.
3937 (delete-file "introspection/ReflectionValueExtractorTest.java")
3939 ;; FIXME: The command line tests fail, maybe because they use
3941 (delete-file "cli/CommandlineTest.java")
3943 ;; These tests require openjdk jmh, which is not packaged yet
3944 (for-each delete-file (find-files "." "PerfTest.java$")))
3946 (add-before 'build 'copy-resources
3948 (copy-recursively "src/main/resources" "build/classes")
3950 (replace 'install (install-from-pom "pom.xml")))))
3952 `(("java-hamcrest-core" ,java-hamcrest-core)
3953 ("java-junit" ,java-junit)))
3955 `(("plexus-parent-pom" ,plexus-parent-pom-5.1)))
3956 (home-page "https://codehaus-plexus.github.io/plexus-utils/")
3957 (synopsis "Common utilities for the Plexus framework")
3958 (description "This package provides various Java utility classes for the
3959 Plexus framework to ease working with strings, files, command lines, XML and
3961 (license license:asl2.0)))
3963 (define-public java-plexus-utils-3.3.0
3965 (inherit java-plexus-utils)
3970 (url "https://github.com/codehaus-plexus/plexus-utils")
3971 (commit (string-append "plexus-utils-" version))))
3972 (file-name (git-file-name "java-plexus-utils" version))
3975 "0d0fq21rzjy0j55kcp8w9k1rbq9rwr0r7cc8239p9jbz54vihp0g"))))))
3977 (define-public java-plexus-interpolation
3979 (name "java-plexus-interpolation")
3984 (url "https://github.com/codehaus-plexus/plexus-interpolation")
3985 (commit (string-append "plexus-interpolation-" version))))
3986 (file-name (git-file-name name version))
3989 "1rahjmhywf6d5m32qzlc9izawyvcd71abfm9k03f13rs2xmfxzlh"))))
3990 (build-system ant-build-system)
3992 `(#:jar-name "plexus-interpolation.jar"
3993 #:source-dir "src/main"
3995 (modify-phases %standard-phases
3996 (replace 'install (install-from-pom "pom.xml")))))
3998 `(("plexus-parent-pom-5.1" ,plexus-parent-pom-5.1)))
4000 `(("java-junit" ,java-junit)
4001 ("java-hamcrest-core" ,java-hamcrest-core)))
4002 (home-page "https://codehaus-plexus.github.io/plexus-interpolation/")
4003 (synopsis "Java components for interpolating ${} strings and the like")
4004 (description "Plexus interpolator is a modular, flexible interpolation
4005 framework for the expression language style commonly seen in Maven, Plexus,
4006 and other related projects.
4008 It has its foundation in the @code{org.codehaus.plexus.utils.interpolation}
4009 package within @code{plexus-utils}, but has been separated in order to allow
4010 these two libraries to vary independently of one another.")
4011 (license license:asl2.0)))
4013 (define-public java-plexus-classworlds
4015 (name "java-plexus-classworlds")
4020 (url "https://github.com/codehaus-plexus/plexus-classworlds")
4021 (commit (string-append "plexus-classworlds-" version))))
4022 (file-name (git-file-name name version))
4025 "034k2hgvj1saalwbnzrbg4n0zgzwcpz1lhlb8q4kgglsp9pmm03s"))))
4026 (build-system ant-build-system)
4028 `(#:jar-name "plexus-classworlds.jar"
4029 #:source-dir "src/main"
4030 #:tests? #f;; FIXME: we need to generate some resources as in pom.xml
4032 (modify-phases %standard-phases
4033 (replace 'install (install-from-pom "pom.xml")))))
4035 `(("plexus-parent-pom-5.1" ,plexus-parent-pom-5.1)))
4037 `(("java-junit" ,java-junit)))
4038 (home-page "https://codehaus-plexus.github.io/plexus-classworlds/")
4039 (synopsis "Java class loader framework")
4040 (description "Plexus classworlds replaces the native @code{ClassLoader}
4041 mechanism of Java. It is especially useful for dynamic loading of application
4043 (license license:asl2.0)))
4045 (define java-plexus-container-default-bootstrap
4047 (name "java-plexus-container-default-bootstrap")
4052 (url "https://github.com/codehaus-plexus/plexus-containers")
4053 (commit (string-append "plexus-containers-" version))))
4054 (file-name (git-file-name name version))
4057 "1316hrp5vqfv0aw7miq2fp0wwy833h66h502h29vnh5sxj27x228"))))
4058 (build-system ant-build-system)
4060 `(#:jar-name "container-default.jar"
4061 #:source-dir "plexus-container-default/src/main/java"
4062 #:test-dir "plexus-container-default/src/test"
4063 #:tests? #f; requires plexus-archiver, which depends on this package
4065 (modify-phases %standard-phases
4066 (add-before 'build 'fix-google-collections
4068 ;; Google collections are now replaced with guava
4069 (substitute* "plexus-container-default/pom.xml"
4070 (("google-collections") "guava")
4071 (("com.google.collections") "com.google.guava"))
4073 (add-before 'build 'copy-resources
4076 "plexus-container-default/src/main/resources/"
4080 (install-from-pom "plexus-container-default/pom.xml")))))
4082 `(("java-plexus-worldclass" ,java-plexus-classworlds)
4083 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
4084 ("java-plexus-utils" ,java-plexus-utils)
4085 ("java-junit" ,java-junit)
4086 ("java-guava" ,java-guava)
4087 ("java-plexus-containers-parent-pom" ,java-plexus-containers-parent-pom)))
4088 (home-page "https://github.com/codehaus-plexus/plexus-containers")
4089 (synopsis "Inversion-of-control container")
4090 (description "Plexus-default-container is Plexus' inversion-of-control
4091 (@dfn{IoC}) container. It is composed of its public API and its default
4093 (license license:asl2.0)))
4095 (define java-plexus-containers-parent-pom
4097 (inherit java-plexus-container-default-bootstrap)
4098 (name "java-plexus-containers-parent-pom")
4102 (modify-phases %standard-phases
4106 (install-pom-file "pom.xml")))))
4108 `(("plexus-parent-pom" ,plexus-parent-pom-4.0)))))
4110 (define-public java-plexus-io
4112 (name "java-plexus-io")
4117 (url "https://github.com/codehaus-plexus/plexus-io")
4118 (commit (string-append "plexus-io-" version))))
4119 (file-name (git-file-name name version))
4122 "1r3wqfpbxq8vp4p914i8p88r0994rmcjw02hz14n11cfb6gsyvlr"))))
4123 (build-system ant-build-system)
4125 `(#:jar-name "plexus-io.jar"
4126 #:source-dir "src/main/java"
4127 #:test-dir "src/test"
4129 (modify-phases %standard-phases
4130 (add-before 'build 'copy-resources
4132 (mkdir-p "build/classes")
4133 (copy-recursively "src/main/resources" "build/classes")
4134 (mkdir-p "build/test-classes")
4135 (copy-recursively "src/test/resources" "build/test-classes")
4137 (replace 'install (install-from-pom "pom.xml")))))
4139 `(("java-plexus-utils" ,java-plexus-utils-3.3.0)
4140 ("java-commons-io" ,java-commons-io)
4141 ("plexus-parent-pom" ,plexus-parent-pom-5.1)))
4143 `(("java-jsr305" ,java-jsr305)))
4145 `(("junit" ,java-junit)
4146 ("hamcrest" ,java-hamcrest-core)
4147 ("guava" ,java-guava)
4148 ("classworlds" ,java-plexus-classworlds)
4149 ("xbean" ,java-geronimo-xbean-reflect)
4150 ("container-default" ,java-plexus-container-default-bootstrap)))
4151 (home-page "https://github.com/codehaus-plexus/plexus-io")
4152 (synopsis "I/O plexus components")
4153 (description "Plexus IO is a set of plexus components, which are designed
4154 for use in I/O operations. This implementation using plexus components allows
4155 reusing it in maven.")
4156 (license license:asl2.0)))
4158 (define-public java-plexus-archiver
4160 (name "java-plexus-archiver")
4164 (uri (string-append "https://github.com/codehaus-plexus/plexus-archiver"
4165 "/archive/plexus-archiver-" version ".tar.gz"))
4168 "144n971r3lfrx3l12nf2scm80x4xdvgbkk4bjpa4vcvvdrll6qys"))))
4169 (build-system ant-build-system)
4171 `(#:jar-name "plexus-archiver.jar"
4172 #:source-dir "src/main/java"
4173 #:test-dir "src/test"
4174 #:test-exclude (list "**/Abstract*.java" "**/Base*.java")
4176 (modify-phases %standard-phases
4177 (add-before 'check 'remove-failing
4179 ;; Requires an older version of plexus container
4181 "src/test/java/org/codehaus/plexus/archiver/DuplicateFilesTest.java")
4183 (add-before 'check 'fix-test-building
4185 (substitute* "build.xml"
4186 (("srcdir=\"src/test\"") "srcdir=\"src/test/java\""))
4188 (add-before 'build 'copy-resources
4190 (mkdir-p "build/classes")
4191 (copy-recursively "src/main/resources" "build/classes")
4192 (mkdir-p "build/test-classes")
4193 (copy-recursively "src/test/resources" "build/test-classes")
4195 (replace 'install (install-from-pom "pom.xml")))))
4197 `(("java-plexus-utils" ,java-plexus-utils-3.3.0)
4198 ("java-plexus-io" ,java-plexus-io)
4199 ("java-iq80-snappy" ,java-iq80-snappy)
4200 ("java-commons-compress" ,java-commons-compress)
4201 ("plexus-parent-pom" ,plexus-parent-pom-6.1)))
4203 `(("java-jsr305" ,java-jsr305)
4204 ("java-plexus-container-default"
4205 ,java-plexus-container-default-bootstrap)))
4207 `(("java-hamcrest-core" ,java-hamcrest-core)
4208 ("junit" ,java-junit)
4209 ("classworld" ,java-plexus-classworlds)
4210 ("xbean" ,java-geronimo-xbean-reflect)
4212 ("guava" ,java-guava)))
4213 (home-page "https://github.com/codehaus-plexus/plexus-archiver")
4214 (synopsis "Archiver component of the Plexus project")
4215 (description "Plexus-archiver contains a component to deal with project
4217 (license license:asl2.0)))
4219 (define-public java-plexus-container-default
4221 (inherit java-plexus-container-default-bootstrap)
4222 (name "java-plexus-container-default")
4224 `(#:jar-name "container-default.jar"
4225 #:source-dir "plexus-container-default/src/main/java"
4226 #:test-dir "plexus-container-default/src/test"
4227 #:test-exclude (list ;"**/*Test.java"
4229 ;; Requires plexus-hierarchy
4230 "**/PlexusHierarchyTest.java"
4232 "**/ComponentRealmCompositionTest.java"
4233 "**/PlexusContainerTest.java")
4235 (modify-phases %standard-phases
4236 (add-before 'build 'fix-google-collections
4238 ;; Google collections are now replaced with guava
4239 (substitute* "plexus-container-default/pom.xml"
4240 (("google-collections") "guava")
4241 (("com.google.collections") "com.google.guava"))
4243 (add-before 'build 'copy-resources
4246 "plexus-container-default/src/main/resources/"
4249 (add-before 'check 'fix-paths
4251 (let ((dir "plexus-container-default/src/test/java/org/codehaus"))
4254 dir "/plexus/component/composition/"
4255 "ComponentRealmCompositionTest.java")
4256 (("src/test") "plexus-container-default/src/test"))
4259 (install-from-pom "plexus-container-default/pom.xml")))))
4261 `(("worldclass" ,java-plexus-classworlds)
4262 ("xbean" ,java-geronimo-xbean-reflect)
4263 ("utils" ,java-plexus-utils)
4264 ("junit" ,java-junit)
4265 ("guava" ,java-guava)))
4267 `(("archiver" ,java-plexus-archiver)
4268 ("hamcrest" ,java-hamcrest-core)))))
4270 (define-public java-plexus-component-annotations
4272 (inherit java-plexus-container-default)
4273 (name "java-plexus-component-annotations")
4275 `(#:jar-name "plexus-component-annotations.jar"
4276 #:source-dir "plexus-component-annotations/src/main/java"
4277 #:tests? #f; no tests
4279 (modify-phases %standard-phases
4281 (install-from-pom "plexus-component-annotations/pom.xml")))))
4283 `(("java-plexus-containers-parent-pom" ,java-plexus-containers-parent-pom)))
4286 (synopsis "Plexus descriptors generator")
4287 (description "This package is a Maven plugin to generate Plexus descriptors
4288 from source tags and class annotations.")))
4290 (define-public java-plexus-component-metadata
4292 (inherit java-plexus-container-default)
4293 (name "java-plexus-component-metadata")
4295 `(#:jar-name "plexus-component-metadata.jar"
4296 #:source-dir "src/main/java"
4297 #:test-dir "src/test"
4300 (modify-phases %standard-phases
4301 (add-before 'configure 'chdir
4303 (chdir "plexus-component-metadata")
4305 (add-before 'build 'copy-resources
4307 (copy-recursively "src/main/resources"
4311 `(("java-plexus-container-default" ,java-plexus-container-default)
4312 ("java-plexu-component-annotations" ,java-plexus-component-annotations)
4313 ("java-plexus-utils" ,java-plexus-utils)
4314 ("java-plexus-cli" ,java-plexus-cli)
4315 ("java-plexus-classworlds" ,java-plexus-classworlds)
4316 ("maven-plugin-api" ,maven-plugin-api)
4317 ("maven-plugin-annotations" ,maven-plugin-annotations)
4318 ("maven-core-bootstrap" ,maven-core-bootstrap)
4319 ("maven-model" ,maven-model)
4320 ("java-commons-cli" ,java-commons-cli)
4321 ("java-qdox" ,java-qdox)
4322 ("java-jdom2" ,java-jdom2)
4323 ("java-asm" ,java-asm)))
4325 `(("java-junit" ,java-junit)
4326 ("java-guava" ,java-guava)
4327 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)))
4328 (synopsis "Inversion-of-control container for Maven")
4329 (description "The Plexus project provides a full software stack for creating
4330 and executing software projects. Based on the Plexus container, the
4331 applications can utilise component-oriented programming to build modular,
4332 reusable components that can easily be assembled and reused. This package
4333 provides the Maven plugin generating the component metadata.")))
4335 (define-public java-plexus-cipher
4337 (name "java-plexus-cipher")
4342 (url "https://github.com/codehaus-plexus/plexus-cipher")
4343 (commit (string-append "plexus-cipher-" version))))
4344 (file-name (git-file-name name version))
4347 "0m638nzlxbmnbcj5cwdpgs326ab584yv0k803zlx37r6iqwvf6b0"))))
4348 (build-system ant-build-system)
4350 `(#:jar-name "plexus-cipher.jar"
4351 #:source-dir "src/main/java"
4352 #:tests? #f; FIXME: requires sisu-inject-bean
4354 (modify-phases %standard-phases
4355 (add-before 'build 'copy-resources
4357 (copy-recursively "src/main/resources" "build/classes")
4358 (mkdir-p "build/classes/META-INF/sisu")
4359 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
4361 (display "org.sonatype.plexus.components.cipher.DefaultPlexusCipher\n")))
4363 (add-before 'install 'fix-test-dependency
4365 ;; sisu-inject-bean is only used for tests, but its scope is "provided".
4366 (substitute* "pom.xml"
4367 (("provided") "test"))
4369 (replace 'install (install-from-pom "pom.xml")))))
4371 `(("java-cdi-api" ,java-cdi-api)
4372 ("java-javax-inject" ,java-javax-inject)))
4374 `(("java-sonatype-spice-parent-pom" ,java-sonatype-spice-parent-pom-15)))
4376 `(("java-junit" ,java-junit)))
4377 (home-page "https://github.com/sonatype/plexus-cipher")
4378 (synopsis "Encryption/decryption Component")
4379 (description "Plexus-cipher contains a component to deal with encryption
4381 (license license:asl2.0)))
4383 (define-public java-plexus-java
4385 (name "java-plexus-java")
4390 (url "https://github.com/codehaus-plexus/plexus-languages")
4391 (commit (string-append "plexus-languages-" version))))
4392 (file-name (git-file-name name version))
4395 "0vmvgq5hfxs90yyxgssfpwq78l7vwx1ljwpkk594mrdr8sm668b5"))
4396 (modules '((guix build utils)))
4399 (for-each delete-file (find-files "." ".*.jar$"))
4401 (build-system ant-build-system)
4403 `(#:jar-name "plexus-java.java"
4404 #:source-dir "plexus-java/src/main/java"
4405 #:test-dir "plexus-java/src/test"
4406 #:tests? #f; require mockito 2
4408 (modify-phases %standard-phases
4409 (add-after 'build 'generate-metadata
4411 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
4412 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
4413 "--source" "plexus-java/src/main/java"
4414 "--output" "build/classes/META-INF/plexus/components.xml"
4415 "--classes" "build/classes"
4416 "--descriptors" "build/classes/META-INF")
4417 (invoke "ant" "jar")
4419 (add-before 'install 'install-parent
4420 (install-pom-file "pom.xml"))
4422 (install-from-pom "plexus-java/pom.xml")))))
4424 `(("java-asm" ,java-asm)
4425 ("java-qdox" ,java-qdox-2-M9)
4426 ("java-javax-inject" ,java-javax-inject)
4427 ("plexus-parent-pom" ,plexus-parent-pom-4.0)))
4429 `(("java-plexus-component-annotations" ,java-plexus-component-annotations)))
4431 `(("java-plexus-component-metadata" ,java-plexus-component-metadata)
4432 ("java-junit" ,java-junit)))
4433 (home-page "https://codehaus-plexus.github.io/plexus-languages/plexus-java")
4434 (synopsis "Shared language features for Java")
4435 (description "This package contains shared language features of the Java
4436 language, for the plexus project.")
4437 (license license:asl2.0)))
4439 (define-public java-plexus-compiler-api
4441 (name "java-plexus-compiler-api")
4446 (url "https://github.com/codehaus-plexus/plexus-compiler")
4447 (commit (string-append "plexus-compiler-" version))))
4448 (file-name (git-file-name name version))
4451 "1nq1gnn3s6z1j29gmi1hqbklsmm8b1lmnafb0191914f95mn18gk"))))
4452 (build-system ant-build-system)
4454 `(#:jar-name "plexus-compiler-api.jar"
4455 #:source-dir "plexus-compiler-api/src/main/java"
4456 #:test-dir "plexus-compiler-api/src/test"
4458 (modify-phases %standard-phases
4460 (install-from-pom "plexus-compiler-api/pom.xml")))))
4462 `(("java-plexus-container-default" ,java-plexus-container-default)
4463 ("java-plexus-compiler-pom" ,java-plexus-compiler-pom)
4464 ("java-plexus-util" ,java-plexus-utils)))
4466 `(("java-junit" ,java-junit)))
4467 (home-page "https://github.com/codehaus-plexus/plexus-compiler")
4468 (synopsis "Plexus Compilers component's API to manipulate compilers")
4469 (description "This package contains the API used by components to manipulate
4471 (license (list license:asl2.0
4474 (define java-plexus-compiler-pom
4476 (inherit java-plexus-compiler-api)
4477 (name "java-plexus-compiler-pom")
4481 (modify-phases %standard-phases
4485 (install-pom-file "pom.xml"))
4486 (add-after 'install 'install-compilers
4487 (install-pom-file "plexus-compilers/pom.xml")))))
4489 `(("plexus-components-parent-pom-4.0" ,plexus-components-parent-pom-4.0)))))
4491 (define plexus-components-parent-pom-4.0
4493 (name "plexus-components-parent-pom")
4498 (url "https://github.com/codehaus-plexus/plexus-components")
4499 (commit (string-append "plexus-components-" version))))
4500 (file-name (git-file-name name version))
4503 "041bm8yv0m2i17mqg8zljib4ykpha7ijls2qfdwvkma4d39lhysi"))))
4504 (build-system ant-build-system)
4508 (modify-phases %standard-phases
4512 (install-pom-file "pom.xml")))))
4514 `(("plexus-parent-pom-4.0" ,plexus-parent-pom-4.0)))
4515 (home-page "https://codehaus-plexus.github.io/plexus-components")
4516 (synopsis "Plexus parent pom")
4517 (description "This package contains the Plexus components parent POM.")
4518 (license license:asl2.0)))
4520 (define-public java-plexus-compiler-manager
4522 (inherit java-plexus-compiler-api)
4523 (name "java-plexus-compiler-manager")
4525 `(#:jar-name "compiler-compiler-manager.java"
4526 #:source-dir "plexus-compiler-manager/src/main/java"
4527 #:test-dir "plexus-compiler-manager/src/test"
4530 (modify-phases %standard-phases
4531 (add-after 'build 'generate-metadata
4533 (invoke "java" "-cp" (string-append (getenv "CLASSPATH") ":build/classes")
4534 "org.codehaus.plexus.metadata.PlexusMetadataGeneratorCli"
4535 "--source" "plexus-compiler-manager/src/main/java"
4536 "--output" "build/classes/META-INF/plexus/components.xml"
4537 "--classes" "build/classes"
4538 "--descriptors" "build/classes/META-INF")
4539 (invoke "ant" "jar")
4541 (add-after 'generate-metadata 'rebuild
4543 (invoke "ant" "jar")
4546 (install-from-pom "plexus-compiler-manager/pom.xml")))))
4548 `(("java-plexus-compiler-api" ,java-plexus-compiler-api)
4549 ("java-plexus-compiler-pom" ,java-plexus-compiler-pom)
4550 ("java-plexus-container-default" ,java-plexus-container-default)))
4553 ("java-plexus-component-metadata" ,java-plexus-component-metadata)))
4554 (synopsis "Compiler management for Plexus Compiler component")
4555 (description "Plexus Compiler is a Plexus component to use different
4556 compilers through a uniform API. This component chooses the compiler
4557 implementation to use in a project.")))
4559 (define-public java-plexus-compiler-javac
4561 (inherit java-plexus-compiler-api)
4562 (name "java-plexus-compiler-javac")
4564 `(#:jar-name "plexus-compiler-javac.jar"
4565 #:source-dir "plexus-compilers/plexus-compiler-javac/src/main/java"
4567 #:tests? #f; depends on compiler-test -> maven-core -> ... -> this package.
4568 #:test-dir "plexus-compilers/plexus-compiler-javac/src/test"
4569 #:modules ((guix build ant-build-system)
4571 (guix build java-utils)
4574 (modify-phases %standard-phases
4575 ;; We cannot use java-plexus-component-metadata to generate the metadata
4576 ;; because it ultimately depends on this package.
4577 ;; Create it manually instead
4578 (add-before 'build 'create-metadata
4580 (let* ((dir "build/classes/META-INF/plexus")
4581 (file (string-append dir "/components.xml")))
4583 (with-output-to-file file
4589 (role "org.codehaus.plexus.compiler.Compiler")
4591 (implementation "org.codehaus.plexus.compiler.javac.JavacCompiler")
4592 (isolated-realm "false"))))))))
4595 (install-from-pom "plexus-compilers/plexus-compiler-javac/pom.xml")))))
4597 `(("java-plexus-compiler-api" ,java-plexus-compiler-api)
4598 ("java-plexus-utils" ,java-plexus-utils)
4599 ("java-plexus-container-default" ,java-plexus-container-default)))
4600 (synopsis "Javac Compiler support for Plexus Compiler component")
4601 (description "This package contains the Javac Compiler support for Plexus
4602 Compiler component.")))
4604 (define plexus-components-pom-1.1.20
4606 (name "plexus-components-pom-1.1.20")
4611 (url "https://github.com/codehaus-plexus/plexus-components")
4612 (commit (string-append "plexus-components-" version))))
4613 (file-name (git-file-name name version))
4616 "1q254k95m9icyfsvaw8c226midg8v6v436wvivhv7im825mnp5yb"))))
4617 (build-system ant-build-system)
4621 (modify-phases %standard-phases
4625 (install-pom-file "pom.xml")))))
4627 `(("plexus-parent-pom" ,plexus-parent-pom-3.1)))
4628 (home-page "https://github.com/codehaus-plexus/plexus-components")
4629 (synopsis "Maven parent pom for plexus packages")
4630 (description "This package contains the parent pom for plexus component
4632 (license license:asl2.0)))
4634 (define-public java-plexus-digest
4636 (name "java-plexus-digest")
4641 (url "https://github.com/codehaus-plexus/plexus-digest")
4642 (commit "2a52ad1bda8297fa0e287163d2fa37245ec6a430")))
4643 (file-name (git-file-name name version))
4646 "19w5wxsliz8r42niry68qa665kvjsb8081dazg9vgd3pca72w07x"))))
4647 (build-system ant-build-system)
4649 `(#:jar-name "plexus-digest.jar"
4650 #:source-dir "src/main/java"
4653 (modify-phases %standard-phases
4655 (install-from-pom "pom.xml")))))
4657 `(("java-plexus-utils" ,java-plexus-utils)
4658 ("plexus-components-pom-1.1.20" ,plexus-components-pom-1.1.20)))
4660 `(("java-junit" ,java-junit)))
4661 (home-page "https://github.com/codehaus-plexus/plexus-digest")
4662 (synopsis "Hash function utilities for Java")
4663 (description "This package is a plexus component that contains hash
4664 function utilities.")
4665 (license license:asl2.0)))
4667 (define-public java-plexus-sec-dispatcher
4669 (name "java-plexus-sec-dispatcher")
4670 (version "1.4") ;; Newest release listed at the Maven Central Repository.
4672 ;; This project doesn't tag releases or publish tarballs, so we take
4673 ;; the "prepare release plexus-sec-dispatcher-1.4" git commit.
4676 (url "https://github.com/sonatype/plexus-sec-dispatcher/")
4677 (commit "7db8f880486e192a1c5ea9544e01e756c3d49d0f")))
4680 "1ng4yliy4cqpjr4fxxjbpwyk1wkch5f8vblm1kvwf328s4gibszs"))
4681 (file-name (git-file-name name version))))
4683 `(#:jar-name "plexus-sec-dispatcher.jar"
4684 #:source-dir "src/main/java"
4686 (modify-phases %standard-phases
4687 (add-before 'build 'generate-models
4688 (lambda* (#:key inputs #:allow-other-keys)
4689 (define (modello-single-mode file version mode)
4691 "org.codehaus.modello.ModelloCli"
4692 file mode "src/main/java" version
4694 (let ((file "src/main/mdo/settings-security.mdo"))
4695 (modello-single-mode file "1.0.0" "java")
4696 (modello-single-mode file "1.0.0" "xpp3-reader")
4697 (modello-single-mode file "1.0.0" "xpp3-writer"))
4699 (add-before 'build 'generate-components.xml
4701 (mkdir-p "build/classes/META-INF/plexus")
4702 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
4708 <role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>\n
4709 <role-hint>default</role-hint>\n
4710 <implementation>org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher</implementation>\n
4711 <description></description>\n
4714 <role>org.sonatype.plexus.components.cipher.PlexusCipher</role>\n
4715 <field-name>_cipher</field-name>\n
4718 <role>org.sonatype.plexus.components.sec.dispatcher.PasswordDecryptor</role>\n
4719 <field-name>_decryptors</field-name>\n
4723 <_configuration-file>~/.settings-security.xml</_configuration-file>\n
4727 </component-set>\n")))
4729 (add-before 'check 'fix-paths
4731 (copy-recursively "src/test/resources" "target")
4733 (replace 'install (install-from-pom "pom.xml")))))
4735 `(("java-plexus-utils" ,java-plexus-utils)
4736 ("java-plexus-cipher" ,java-plexus-cipher)
4737 ("java-sonatype-spice-parent-pom" ,java-sonatype-spice-parent-pom-12)))
4739 `(("java-modello-core" ,java-modello-core)
4741 ("java-plexus-container-default" ,java-plexus-container-default)
4742 ("java-plexus-classworlds" ,java-plexus-classworlds)
4743 ("java-plexus-utils" ,java-plexus-utils)
4744 ("java-guava" ,java-guava)
4745 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
4746 ("java-sisu-build-api" ,java-sisu-build-api)
4748 ("java-modellop-plugins-java" ,java-modello-plugins-java)
4749 ("java-modellop-plugins-xml" ,java-modello-plugins-xml)
4750 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
4752 ("java-junit" ,java-junit)))
4753 (build-system ant-build-system)
4754 (home-page "https://github.com/sonatype/plexus-sec-dispatcher")
4755 (synopsis "Plexus Security Dispatcher Component")
4756 (description "This package is the Plexus Security Dispatcher Component.
4757 This component decrypts a string passed to it.")
4758 (license license:asl2.0)))
4760 (define-public java-plexus-cli
4762 (name "java-plexus-cli")
4767 (url "https://github.com/sonatype/plexus-cli")
4768 (commit "a776afa6bca84e5107bedb69440329cdb24ed645")))
4769 (file-name (string-append name "-" version))
4772 "0xjrlay605rypv3zd7y24vlwf0039bil3n2cqw54r1ddpysq46vx"))))
4773 (build-system ant-build-system)
4775 `(#:jar-name "plexus-cli.jar"
4776 #:source-dir "src/main/java"
4778 #:test-dir "src/test"))
4780 `(("java-commons-cli" ,java-commons-cli)
4781 ("java-plexus-container-default" ,java-plexus-container-default)
4782 ("java-plexus-classworlds" ,java-plexus-classworlds)))
4784 `(("java-plexus-utils" ,java-plexus-utils)
4785 ("java-junit" ,java-junit)
4786 ("java-guava" ,java-guava)))
4787 (home-page "https://codehaus-plexus.github.io/plexus-cli")
4788 (synopsis "CLI building library for plexus")
4789 (description "This package is a library to help creating CLI around
4790 Plexus components.")
4791 (license license:asl2.0)))
4793 (define-public java-sisu-build-api
4795 (name "java-sisu-build-api")
4800 (url "https://github.com/sonatype/sisu-build-api")
4801 (commit (string-append "plexus-build-api-" version))))
4802 (file-name (git-file-name name version))
4805 "1d5w6c58gkx30d51v7qwv1xrhc0ly76848gihmgshj19yf6yhca0"))))
4806 (build-system ant-build-system)
4808 `(#:jar-name "sisu-build-api.jar"
4809 #:source-dir "src/main/java"
4811 #:tests? #f; FIXME: how to run the tests?
4813 (modify-phases %standard-phases
4814 (add-before 'build 'copy-resources
4816 (copy-recursively "src/main/resources" "build/classes")
4817 (substitute* (find-files "build/classes")
4818 (("\\$\\{project.version\\}") ,version))
4820 (add-before 'build 'generate-plexus-compontent
4822 (mkdir-p "build/classes/META-INF/plexus")
4823 ;; This file is required for plexus to inject this package.
4824 ;; FIXME: how is it generated?
4825 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
4831 <role>org.sonatype.plexus.build.incremental.BuildContext</role>\n
4832 <role-hint>default</role-hint>\n
4833 <implementation>org.sonatype.plexus.build.incremental.DefaultBuildContext</implementation>\n
4834 <description>Filesystem based non-incremental build context implementation\n
4835 which behaves as if all files were just created.</description>\n
4838 </component-set>\n")))
4841 (install-from-pom "pom.xml")))))
4843 `(("java-plexus-utils" ,java-plexus-utils)
4844 ("java-plexus-container-default" ,java-plexus-container-default)))
4845 (home-page "https://github.com/sonatype/sisu-build-api/")
4846 (synopsis "Base build API for maven")
4847 (description "This package contains the base build API for maven and
4848 a default implementation of it. This API is about scanning files in a
4849 project and determining what files need to be rebuilt.")
4850 (license license:asl2.0)))
4852 (define-public java-modello-core
4854 (name "java-modello-core")
4859 (url "https://github.com/codehaus-plexus/modello")
4860 (commit (string-append "modello-" version))))
4861 (file-name (git-file-name name version))
4864 "1di6ni42aqllpdvkpyfcw70352vr2i8wf6hd5nhd9kmqjb5dj5j4"))))
4865 (build-system ant-build-system)
4867 `(#:jar-name "modello-core.jar"
4868 #:source-dir "modello-core/src/main/java"
4869 #:test-dir "modello-core/src/test"
4870 #:main-class "org.codehaus.modello.ModelloCli"
4873 (modify-phases %standard-phases
4874 (add-before 'build 'copy-resources
4876 (mkdir-p "build/classes/META-INF/plexus")
4877 (copy-file "modello-core/src/main/resources/META-INF/plexus/components.xml"
4878 "build/classes/META-INF/plexus/components.xml")
4880 (add-before 'check 'fix-tests
4882 (with-directory-excursion "modello-core/src/test/java/org/codehaus"
4883 (substitute* '("modello/core/DefaultModelloCoreTest.java"
4884 "modello/core/io/ModelReaderTest.java")
4885 (("src/test") "modello-core/src/test")))
4888 `(("java-plexus-utils" ,java-plexus-utils)
4889 ("java-plexus-container-default" ,java-plexus-container-default)
4890 ("java-sisu-build-api" ,java-sisu-build-api)))
4892 `(("java-junit" ,java-junit)
4893 ("java-plexus-classworlds" ,java-plexus-classworlds)
4894 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
4895 ("java-guava" ,java-guava)))
4896 (home-page "https://codehaus-plexus.github.io/modello/")
4897 (synopsis "Framework for code generation from a simple model")
4898 (description "Modello is a framework for code generation from a simple model.
4900 Modello generates code from a simple model format: based on a plugin
4901 architecture, various types of code and descriptors can be generated from the
4902 single model, including Java POJOs, XML/JSON/YAML marshallers/unmarshallers,
4903 XSD and documentation.")
4906 ;; Although this package uses only files licensed under expat,
4907 ;; other parts of the source are licensed under different
4908 ;; licenses. We include them to be inherited by other packages.
4910 ;; Some files in modello-plugin-java are licensed under a
4911 ;; 5-clause BSD license.
4912 (license:non-copyleft
4913 (string-append "file:///modello-plugins/modello-plugin-java/"
4914 "src/main/java/org/codehaus/modello/plugin/"
4915 "java/javasource/JNaming.java"))))))
4917 (define-public java-modello-plugins-java
4919 (inherit java-modello-core)
4920 (name "java-modello-plugins-java")
4922 `(#:jar-name "modello-plugins-java.jar"
4923 #:source-dir "modello-plugins/modello-plugin-java/src/main/java"
4924 #:test-dir "modello-plugins/modello-plugin-java/src/test"
4926 #:tests? #f; requires maven-model, which depends on this package
4928 (modify-phases %standard-phases
4929 (add-before 'build 'copy-resources
4931 (mkdir-p "build/classes")
4932 (copy-recursively "modello-plugins/modello-plugin-java/src/main/resources"
4936 `(("java-modello-core" ,java-modello-core)))
4937 (synopsis "Modello Java Plugin")
4938 (description "Modello Java Plugin generates Java objects for the model.")))
4940 (define-public java-modello-plugins-xml
4942 (inherit java-modello-core)
4943 (name "java-modello-plugins-xml")
4945 `(#:jar-name "modello-plugins-xml.jar"
4946 #:source-dir "modello-plugins/modello-plugin-xml/src/main/java"
4947 #:test-dir "modello-plugins/modello-plugin-xml/src/test"
4950 (modify-phases %standard-phases
4951 (add-before 'build 'copy-resources
4953 (mkdir-p "build/classes")
4955 "modello-plugins/modello-plugin-xml/src/main/resources"
4958 (add-before 'check 'fix-paths
4960 (with-directory-excursion "modello-plugins/modello-plugin-xml/src/test"
4962 "java/org/codehaus/modello/plugins/xml/XmlModelloPluginTest.java"
4963 (("src/test") "modello-plugins/modello-plugin-xml/src/test")))
4966 `(("java-modello-core" ,java-modello-core)
4967 ("java-modello-plugins-java" ,java-modello-plugins-java)))
4968 (synopsis "Modello XML Plugin")
4969 (description "Modello XML Plugin contains shared code for every plugins
4970 working on XML representation of the model.")))
4972 (define-public java-modello-test
4974 (inherit java-modello-core)
4975 (name "java-modello-test")
4977 `(#:jar-name "modello-test.jar"
4978 #:source-dir "modello-test/src/main/java"
4979 #:tests? #f; no tests
4982 `(("java-plexus-utils" ,java-plexus-utils)
4983 ("java-plexus-compiler-api" ,java-plexus-compiler-api)
4984 ("java-plexus-compiler-javac" ,java-plexus-compiler-javac)
4985 ("java-plexus-container-default" ,java-plexus-container-default)))
4986 (synopsis "Modello test package")
4987 (description "The modello test package contains the basis to create
4988 Modello generator unit-tests, including sample models and xml files to test
4989 every feature for every plugin.")))
4991 (define-public java-modello-plugins-xpp3
4993 (inherit java-modello-core)
4994 (name "java-modello-plugins-xpp3")
4996 `(#:jar-name "modello-plugins-xpp3.jar"
4997 #:source-dir "modello-plugins/modello-plugin-xpp3/src/main/java"
4998 #:test-dir "modello-plugins/modello-plugin-xpp3/src/test"
4999 ;; One of the test dependencies is maven-model which depends on this package.
5003 (modify-phases %standard-phases
5004 (add-before 'build 'copy-resources
5006 (mkdir-p "build/classes")
5007 (copy-recursively "modello-plugins/modello-plugin-xpp3/src/main/resources"
5011 `(("java-modello-core" ,java-modello-core)
5012 ("java-modello-plugins-java" ,java-modello-plugins-java)
5013 ("java-modello-plugins-xml" ,java-modello-plugins-xml)))
5015 `(("java-xmlunit" ,java-xmlunit)
5016 ("java-modello-test" ,java-modello-test)
5017 ,@(package-native-inputs java-modello-core)))
5018 (synopsis "Modello XPP3 Plugin")
5019 (description "The modello XPP3 plugin generates XML readers and writers based
5020 on the XPP3 API (XML Pull Parser).")))
5022 (define-public java-asm
5028 (uri (string-append "https://download.forge.ow2.org/asm/"
5029 "asm-" version ".tar.gz"))
5032 "115l5pqblirdkmzi32dxx7gbcm4jy0s14y5wircr6h8jdr9aix00"))))
5033 (build-system ant-build-system)
5035 `(#:build-target "compile"
5036 ;; The tests require an old version of Janino, which no longer compiles
5041 ;; We don't need these extra ant tasks, but the build system asks us to
5042 ;; provide a path anyway.
5043 "-Dobjectweb.ant.tasks.path=dummy-path"
5044 ;; The java-aqute.bndlib JAR file will be put onto the classpath and
5045 ;; used during the build automatically by ant-build-system, but
5046 ;; java-asm's build.xml fails unless we provide something here.
5047 "-Dbiz.aQute.bnd.path=dummy-path")
5049 (modify-phases %standard-phases
5050 (add-before 'build 'remove-bnd-dependency
5052 ;; This file is the only one to require bnd, and is not needed
5053 ;; because we don't build a bundle.
5054 (delete-file "src/org/objectweb/asm/tools/ModuleInfoBndPlugin.java")
5056 (add-before 'install 'build-jars
5057 (lambda* (#:key make-flags #:allow-other-keys)
5058 ;; We cannot use the "jar" target because it depends on a couple
5059 ;; of unpackaged, complicated tools.
5062 "-cf" (string-append "dist/asm-" ,version ".jar")
5063 "-C" "output/build/tmp" ".")))
5064 (add-before 'install 'fix-pom
5066 (substitute* (find-files "archive" "\\.pom$")
5067 (("@product.artifact@") ,version))
5069 (add-before 'install 'install-parent
5070 (install-pom-file "archive/asm-parent.pom"))
5072 (install-from-pom "archive/asm.pom")))))
5074 `(("java-junit" ,java-junit)))
5076 `(("java-org-ow2-parent-pom" ,java-org-ow2-parent-pom-1.3)))
5077 (home-page "https://asm.ow2.io/")
5078 (synopsis "Very small and fast Java bytecode manipulation framework")
5079 (description "ASM is an all purpose Java bytecode manipulation and
5080 analysis framework. It can be used to modify existing classes or dynamically
5081 generate classes, directly in binary form. The provided common
5082 transformations and analysis algorithms allow easily assembling custom
5083 complex transformations and code analysis tools.")
5084 (license license:bsd-3)))
5086 (define java-org-ow2-parent-pom-1.3
5088 (name "java-org-ow2-parent-pom")
5092 (uri "https://repo1.maven.org/maven2/org/ow2/ow2/1.3/ow2-1.3.pom")
5095 "1yr8hfx8gffpppa4ii6cvrsq029a6x8hzy7nsavxhs60s9kmq8ai"))))
5096 (build-system ant-build-system)
5100 (modify-phases %standard-phases
5105 (install-pom-file (assoc-ref %build-inputs "source"))))))
5106 (home-page "https://ow2.org")
5107 (synopsis "Ow2.org parent pom")
5108 (description "This package contains the parent pom for projects from ow2.org,
5109 including java-asm.")
5110 (license license:lgpl2.1+)))
5112 (define java-asm-bootstrap
5115 (name "java-asm-bootstrap")
5117 (substitute-keyword-arguments (package-arguments java-asm)
5119 (native-inputs `())))
5121 (define-public java-cglib
5129 (url "https://github.com/cglib/cglib")
5130 (commit (string-append
5132 (string-map (lambda (c) (if (char=? c #\.) #\_ c))
5134 (file-name (git-file-name name version))
5136 (base32 "186451jms2zfp47yd8kxd77az2cqal1my2br7klgyp8fpl4qfg8v"))))
5137 (build-system ant-build-system)
5139 `(;; FIXME: tests fail because junit runs
5140 ;; "net.sf.cglib.transform.AbstractTransformTest", which does not seem
5141 ;; to describe a test at all.
5143 #:jar-name "cglib.jar"
5145 (modify-phases %standard-phases
5146 (add-after 'unpack 'chdir
5147 (lambda _ (chdir "cglib") #t)))))
5149 `(("java-asm" ,java-asm)
5150 ("java-junit" ,java-junit)))
5151 (home-page "https://github.com/cglib/cglib/")
5152 (synopsis "Java byte code generation library")
5153 (description "The byte code generation library CGLIB is a high level API
5154 to generate and transform Java byte code.")
5155 (license license:asl2.0)))
5157 (define-public java-objenesis
5159 (name "java-objenesis")
5164 (url "https://github.com/easymock/objenesis")
5166 (file-name (git-file-name name version))
5169 "054yi200wj00x6dp1sxfrwgndwywadsbn8d8ij1j0v45j9g2vdya"))))
5170 (build-system ant-build-system)
5172 `(#:jar-name "objenesis.jar"
5173 #:source-dir "main/src/"
5174 #:test-dir "main/src/test/"))
5176 `(("java-junit" ,java-junit)
5177 ("java-hamcrest-core" ,java-hamcrest-core)))
5178 (home-page "http://objenesis.org/")
5179 (synopsis "Bypass the constructor when creating an object")
5180 (description "Objenesis is a small Java library that serves one purpose:
5181 to instantiate a new object of a particular class. It is common to see
5182 restrictions in libraries stating that classes must require a default
5183 constructor. Objenesis aims to overcome these restrictions by bypassing the
5184 constructor on object instantiation.")
5185 (license license:asl2.0)))
5187 (define-public java-easymock
5189 (name "java-easymock")
5194 (url "https://github.com/easymock/easymock/")
5195 (commit (string-append "easymock-" version))))
5196 (file-name (git-file-name name version))
5199 "02vybm8hc0i0n9sp2f2iiqn54zwqhq835f76wc6b2m7819z5a8dq"))))
5200 (build-system ant-build-system)
5202 `(#:jar-name "easymock.jar"
5203 #:source-dir "core/src/main"
5204 #:test-dir "core/src/test"
5206 (modify-phases %standard-phases
5207 ;; FIXME: Android support requires the following packages to be
5208 ;; available: com.google.dexmaker.stock.ProxyBuilder
5209 (add-after 'unpack 'delete-android-support
5211 (with-directory-excursion "core/src/main/java/org/easymock/internal"
5212 (substitute* "MocksControl.java"
5213 (("AndroidSupport.isAndroid\\(\\)") "false")
5214 (("return classProxyFactory = new AndroidClassProxyFactory\\(\\);") ""))
5215 (delete-file "AndroidClassProxyFactory.java"))
5217 (add-after 'unpack 'delete-broken-tests
5219 (with-directory-excursion "core/src/test/java/org/easymock"
5220 ;; This test depends on dexmaker.
5221 (delete-file "tests2/ClassExtensionHelperTest.java")
5223 ;; This is not a test.
5224 (delete-file "tests/BaseEasyMockRunnerTest.java")
5226 ;; This test should be executed with a different runner...
5227 (delete-file "tests2/EasyMockAnnotationsTest.java")
5228 ;; ...but deleting it means that we also have to delete these
5230 (delete-file "tests2/EasyMockRunnerTest.java")
5231 (delete-file "tests2/EasyMockRuleTest.java")
5233 ;; This test fails because the file "easymock.properties" does
5235 (delete-file "tests2/EasyMockPropertiesTest.java"))
5238 `(("java-asm" ,java-asm)
5239 ("java-cglib" ,java-cglib)
5240 ("java-objenesis" ,java-objenesis)))
5242 `(("java-junit" ,java-junit)
5243 ("java-hamcrest-core" ,java-hamcrest-core)))
5244 (home-page "https://easymock.org/")
5245 (synopsis "Java library providing mock objects for unit tests")
5246 (description "EasyMock is a Java library that provides an easy way to use
5247 mock objects in unit testing.")
5248 (license license:asl2.0)))
5250 (define-public java-jmock-1
5257 (url "https://github.com/jmock-developers/jmock-library")
5259 (file-name (git-file-name name version))
5262 "0lkga995xd9b9mmzxmcd301hlw83p1h78nibh7djlx7wydscr85z"))))
5263 (build-system ant-build-system)
5265 `(#:build-target "jars"
5266 #:test-target "run.tests"
5268 (modify-phases %standard-phases
5269 (replace 'install (install-jars "build")))))
5270 (home-page "http://jmock.org/")
5271 (synopsis "Mock object library for test-driven development")
5272 (description "JMock is a library that supports test-driven development of
5273 Java code with mock objects. Mock objects help you design and test the
5274 interactions between the objects in your programs.
5279 @item makes it quick and easy to define mock objects
5280 @item lets you precisely specify the interactions between
5281 your objects, reducing the brittleness of your tests
5282 @item plugs into your favourite test framework
5283 @item is easy to extend.
5285 (license license:bsd-3)))
5287 (define-public java-jmock
5289 (inherit java-jmock-1)
5295 (url "https://github.com/jmock-developers/jmock-library")
5297 (file-name (git-file-name name version))
5300 "12b7l22g3nrjvf2dzcw3z03fpd2chrgp0d8xkvn8w55rwb57pax6"))))
5302 `(("java-hamcrest-all" ,java-hamcrest-all)
5303 ("java-asm" ,java-asm)
5304 ("java-bsh" ,java-bsh)
5305 ("java-junit" ,java-junit)))
5307 `(("cglib" ,java-cglib)))
5309 `(#:jar-name "java-jmock.jar"
5310 #:source-dir "jmock/src/main/java"
5311 #:test-dir "jmock/src/test"))))
5313 (define-public java-jmock-junit4
5315 (inherit java-jmock)
5316 (name "java-jmock-junit4")
5318 `(#:jar-name "java-jmock-junit4.jar"
5319 #:source-dir "jmock-junit4/src/main/java"
5320 #:test-dir "jmock-junit4/src/test"))
5322 `(("java-hamcrest-all" ,java-hamcrest-all)
5323 ("java-asm" ,java-asm)
5324 ("java-bsh" ,java-bsh)
5325 ("java-jmock" ,java-jmock)
5326 ("java-jumit" ,java-junit)))))
5328 (define-public java-jmock-legacy
5330 (inherit java-jmock)
5331 (name "java-jmock-legacy")
5333 `(#:jar-name "java-jmock-legacy.jar"
5334 #:source-dir "jmock-legacy/src/main/java"
5335 #:test-dir "jmock-legacy/src/test"
5337 (modify-phases %standard-phases
5338 (add-before 'check 'copy-tests
5340 ;; This file is a dependancy of some tests
5341 (let ((file "org/jmock/test/acceptance/PackageProtectedType.java"))
5342 (copy-file (string-append "jmock/src/test/java/" file)
5343 (string-append "jmock-legacy/src/test/java/" file))
5346 `(("java-hamcrest-all" ,java-hamcrest-all)
5347 ("java-objenesis" ,java-objenesis)
5348 ("java-cglib" ,java-cglib)
5349 ("java-jmock" ,java-jmock)
5350 ("java-asm" ,java-asm)
5351 ("java-bsh" ,java-bsh)
5352 ("java-junit" ,java-junit)))
5354 `(("java-jmock-junit4" ,java-jmock-junit4)))))
5356 (define-public java-hamcrest-all
5357 (package (inherit java-hamcrest-core)
5358 (name "java-hamcrest-all")
5361 ,@(substitute-keyword-arguments (package-arguments java-hamcrest-core)
5362 ((#:build-target _) "bigjar")
5364 `(modify-phases ,phases
5365 ;; Some build targets override the classpath, so we need to patch
5366 ;; the build.xml to ensure that required dependencies are on the
5368 (add-after 'unpack 'patch-classpath-for-integration
5369 (lambda* (#:key inputs #:allow-other-keys)
5370 (substitute* "build.xml"
5371 ((" build/hamcrest-library-\\$\\{version\\}.jar" line)
5375 (find-files (assoc-ref inputs "java-junit") "\\.jar$")
5376 (find-files (assoc-ref inputs "java-jmock") "\\.jar$")
5377 (find-files (assoc-ref inputs "java-easymock") "\\.jar$")))
5379 (("build/hamcrest-core-\\$\\{version\\}\\.jar")
5380 (car (find-files (assoc-ref inputs "java-hamcrest-core")
5384 (lambda* (#:key outputs #:allow-other-keys)
5385 (let* ((target (string-append (assoc-ref outputs "out")
5389 "-" (package-version java-hamcrest-core) ".jar"))
5390 (install-without-version-suffix
5393 (string-append target
5394 (basename jar version-suffix)
5398 install-without-version-suffix
5401 (and (string-suffix? ".jar" name)
5402 (not (string-suffix? "-sources.jar" name)))))))
5405 `(("java-junit" ,java-junit)
5406 ("java-jmock" ,java-jmock-1)
5407 ;; This is necessary because of what seems to be a race condition.
5408 ;; This package would sometimes fail to build because hamcrest-core.jar
5409 ;; could not be found, even though it is built as part of this package.
5410 ;; Adding java-hamcrest-core appears to fix this problem. See
5411 ;; https://debbugs.gnu.org/31390 for more information.
5412 ("java-hamcrest-core" ,java-hamcrest-core)
5413 ("java-easymock" ,java-easymock)
5414 ,@(package-inputs java-hamcrest-core)))))
5416 (define-public java-jopt-simple
5418 (name "java-jopt-simple")
5422 (uri (string-append "http://repo1.maven.org/maven2/"
5423 "net/sf/jopt-simple/jopt-simple/"
5424 version "/jopt-simple-"
5425 version "-sources.jar"))
5428 "1v8bzmwmw6qq20gm42xyay6vrd567dra4vqwhgjnqqjz1gs9f8qa"))))
5429 (build-system ant-build-system)
5431 `(#:tests? #f ; there are no tests
5432 #:jar-name "jopt-simple.jar"))
5433 (home-page "https://pholser.github.io/jopt-simple/")
5434 (synopsis "Java library for parsing command line options")
5435 (description "JOpt Simple is a Java library for parsing command line
5436 options, such as those you might pass to an invocation of @code{javac}. In
5437 the interest of striving for simplicity, as closely as possible JOpt Simple
5438 attempts to honor the command line option syntaxes of POSIX @code{getopt} and
5439 GNU @code{getopt_long}. It also aims to make option parser configuration and
5440 retrieval of options and their arguments simple and expressive, without being
5442 (license license:expat)))
5444 (define-public java-commons-math3
5446 (name "java-commons-math3")
5450 (uri (string-append "mirror://apache/commons/math/source/"
5451 "commons-math3-" version "-src.tar.gz"))
5454 "19l6yp44qc5g7wg816nbn5z3zq3xxzwimvbm4a8pczgvpi4i85s6"))))
5455 (build-system ant-build-system)
5457 `(#:build-target "jar"
5458 #:test-target "test"
5460 (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
5461 (junit (assoc-ref %build-inputs "java-junit")))
5462 (list (string-append "-Djunit.jar="
5463 (car (find-files junit "jar$")))
5464 (string-append "-Dhamcrest.jar="
5465 (car (find-files hamcrest ".*.jar$")))))
5467 (modify-phases %standard-phases
5468 ;; We want to build the jar in the build phase and run the tests
5469 ;; later in a separate phase.
5470 (add-after 'unpack 'untangle-targets
5472 (substitute* "build.xml"
5473 (("name=\"jar\" depends=\"test\"")
5474 "name=\"jar\" depends=\"compile\""))
5476 ;; There is no install target.
5478 (install-jars "target")))))
5480 `(("java-junit" ,java-junit)
5481 ("java-hamcrest-core" ,java-hamcrest-core)))
5482 (home-page "https://commons.apache.org/math/")
5483 (synopsis "Apache Commons mathematics library")
5484 (description "Commons Math is a library of lightweight, self-contained
5485 mathematics and statistics components addressing the most common problems not
5486 available in the Java programming language or Commons Lang.")
5487 (license license:asl2.0)))
5489 (define-public java-jmh
5496 (url "http://hg.openjdk.java.net/code-tools/jmh/")
5497 (changeset version)))
5498 (file-name (string-append name "-" version "-checkout"))
5501 "1fxyxhg9famwcg1prc4cgwb5wzyxqavn3cjm5vz8605xz7x5k084"))))
5502 (build-system ant-build-system)
5504 `(#:jar-name "jmh-core.jar"
5505 #:source-dir "jmh-core/src/main"
5506 #:test-dir "jmh-core/src/test"
5508 (modify-phases %standard-phases
5509 ;; This seems to be a bug in the JDK. It may not be necessary in
5510 ;; future versions of the JDK.
5511 (add-after 'unpack 'fix-bug
5513 (with-directory-excursion
5514 "jmh-core/src/main/java/org/openjdk/jmh/runner/options"
5515 (substitute* '("IntegerValueConverter.java"
5516 "ThreadsValueConverter.java")
5517 (("public Class<Integer> valueType")
5518 "public Class<? extends Integer> valueType")))
5521 `(("java-jopt-simple" ,java-jopt-simple)
5522 ("java-commons-math3" ,java-commons-math3)))
5524 `(("java-junit" ,java-junit)
5525 ("java-hamcrest-core" ,java-hamcrest-core)))
5526 (home-page "https://openjdk.java.net/projects/code-tools/jmh/")
5527 (synopsis "Benchmark harness for the JVM")
5528 (description "JMH is a Java harness for building, running, and analysing
5529 nano/micro/milli/macro benchmarks written in Java and other languages
5530 targeting the JVM.")
5532 (license license:gpl2)))
5534 (define-public java-commons-collections4
5536 (name "java-commons-collections4")
5540 (uri (string-append "mirror://apache/commons/collections/source/"
5541 "commons-collections4-" version "-src.tar.gz"))
5544 "1krfhvggympq4avk7gh6qafzf6b9ip6r1m4lmacikyx04039m0wl"))))
5545 (build-system ant-build-system)
5547 `(#:test-target "test"
5549 (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
5550 (junit (assoc-ref %build-inputs "java-junit"))
5551 (easymock (assoc-ref %build-inputs "java-easymock")))
5552 (list (string-append "-Djunit.jar="
5553 (car (find-files junit "jar$")))
5554 (string-append "-Dhamcrest.jar="
5555 (car (find-files hamcrest "jar$")))
5556 (string-append "-Deasymock.jar=" easymock
5557 "/share/java/easymock.jar")))
5559 (modify-phases %standard-phases
5561 (install-jars "target")))))
5563 `(("java-junit" ,java-junit)
5564 ("java-hamcrest-core" ,java-hamcrest-core)
5565 ("java-easymock" ,java-easymock)))
5566 (home-page "https://commons.apache.org/collections/")
5567 (synopsis "Collections framework")
5568 (description "The Java Collections Framework is the recognised standard
5569 for collection handling in Java. Commons-Collections seek to build upon the
5570 JDK classes by providing new interfaces, implementations and utilities. There
5571 are many features, including:
5574 @item @code{Bag} interface for collections that have a number of copies of
5576 @item @code{BidiMap} interface for maps that can be looked up from value to
5577 key as well and key to value
5578 @item @code{MapIterator} interface to provide simple and quick iteration over
5580 @item Transforming decorators that alter each object as it is added to the
5582 @item Composite collections that make multiple collections look like one
5583 @item Ordered maps and sets that retain the order elements are added in,
5584 including an LRU based map
5585 @item Reference map that allows keys and/or values to be garbage collected
5587 @item Many comparator implementations
5588 @item Many iterator implementations
5589 @item Adapter classes from array and enumerations to collections
5590 @item Utilities to test or create typical set-theory properties of collections
5591 such as union, intersection, and closure.
5593 (license license:asl2.0)))
5595 (define-public java-commons-collections
5597 (inherit java-commons-collections4)
5598 (name "java-commons-collections")
5602 (uri (string-append "mirror://apache/commons/collections/source/"
5603 "commons-collections-" version "-src.tar.gz"))
5606 "055r51a5lfc3z7rkxnxmnn1npvkvda7636hjpm4qk7cnfzz98387"))
5608 (search-patches "java-commons-collections-fix-java8.patch"))))
5610 (substitute-keyword-arguments (package-arguments java-commons-collections4)
5612 `(modify-phases ,phases
5613 ;; The manifest is required by the build procedure
5614 (add-before 'build 'add-manifest
5616 (mkdir-p "build/conf")
5617 (call-with-output-file "build/conf/MANIFEST.MF"
5619 (format file "Manifest-Version: 1.0\n")))
5622 (install-jars "build"))))))))
5624 (define java-commons-collections-test-classes
5626 (inherit java-commons-collections)
5628 `(#:jar-name "commons-collections-test-classes.jar"
5629 #:source-dir "src/test"
5632 `(("collection" ,java-commons-collections)))))
5634 (define-public java-commons-beanutils
5636 (name "java-commons-beanutils")
5640 (uri (string-append "mirror://apache/commons/beanutils/source/"
5641 "commons-beanutils-" version "-src.tar.gz"))
5644 "03cs0bq3sl1sdc7py9g3qnf8n9h473nrkvd3d251kaqv6a2ab7qk"))))
5645 (build-system ant-build-system)
5647 `(#:test-target "test"
5650 (modify-phases %standard-phases
5652 (lambda* (#:key outputs #:allow-other-keys)
5653 (rename-file (string-append "dist/commons-beanutils-" ,version
5655 "commons-beanutils.jar")
5656 (install-file "commons-beanutils.jar"
5657 (string-append (assoc-ref outputs "out") "/share/java/"))
5660 `(("logging" ,java-commons-logging-minimal)
5661 ("collections" ,java-commons-collections)))
5663 `(("junit" ,java-junit)
5664 ("collections-test" ,java-commons-collections-test-classes)))
5665 (home-page "https://commons.apache.org/beanutils/")
5666 (synopsis "Dynamically set or get properties in Java")
5667 (description "BeanUtils provides a simplified interface to reflection and
5668 introspection to set or get dynamically determined properties through their
5669 setter and getter method.")
5670 (license license:asl2.0)))
5672 (define-public java-commons-io
5674 (name "java-commons-io")
5679 (uri (string-append "mirror://apache/commons/io/source/"
5680 "commons-io-" version "-src.tar.gz"))
5683 "0q5y41jrcjvx9hzs47x5kdhnasdy6rm4bzqd2jxl02w717m7a7v3"))))
5684 (build-system ant-build-system)
5685 (outputs '("out" "doc"))
5687 `(#:test-target "test"
5689 (list (string-append "-Djunit.jar="
5690 (car (find-files (assoc-ref %build-inputs "java-junit")
5693 (modify-phases %standard-phases
5694 (add-after 'build 'build-javadoc ant-build-javadoc)
5695 (replace 'install (install-from-pom "pom.xml"))
5696 (add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
5698 `(("java-junit" ,java-junit)
5699 ("java-hamcrest-core" ,java-hamcrest-core)))
5701 `(("apache-commons-parent-pom" ,apache-commons-parent-pom-39)))
5702 (home-page "https://commons.apache.org/io/")
5703 (synopsis "Common useful IO related classes")
5704 (description "Commons-IO contains utility classes, stream implementations,
5705 file filters and endian classes.")
5706 (license license:asl2.0)))
5708 (define-public java-commons-exec-1.1
5710 (name "java-commons-exec")
5715 (uri (string-append "mirror://apache/commons/exec/source/"
5716 "commons-exec-" version "-src.tar.gz"))
5719 "025dk8xgj10lxwwwqp0hng2rn7fr4vcirxzydqzx9k4dim667alk"))))
5720 (build-system ant-build-system)
5722 `(#:test-target "test"
5724 (list (string-append "-Dmaven.junit.jar="
5725 (car (find-files (assoc-ref %build-inputs "java-junit")
5728 (modify-phases %standard-phases
5729 (add-before 'build 'delete-network-tests
5731 (delete-file "src/test/java/org/apache/commons/exec/DefaultExecutorTest.java")
5732 (substitute* "src/test/java/org/apache/commons/exec/TestRunner.java"
5733 (("suite\\.addTestSuite\\(DefaultExecutorTest\\.class\\);") ""))
5735 ;; The "build" phase automatically tests.
5737 (replace 'install (install-jars "target")))))
5739 `(("java-junit" ,java-junit)))
5740 (home-page "https://commons.apache.org/proper/commons-exec/")
5741 (synopsis "Common program execution related classes")
5742 (description "Commons-Exec simplifies executing external processes.")
5743 (license license:asl2.0)))
5745 (define-public java-commons-exec
5747 (inherit java-commons-exec-1.1)
5752 (uri (string-append "mirror://apache/commons/exec/source/"
5753 "commons-exec-" version "-src.tar.gz"))
5756 "17yb4h6f8l49c5iyyvda4z2nmw0bxrx857nrwmsr7mmpb7x441yv"))))
5758 `(#:test-target "test"
5760 (list (string-append "-Dmaven.junit.jar="
5761 (car (find-files (assoc-ref %build-inputs "java-junit")
5763 "-Dmaven.compiler.source=1.7"
5764 "-Dmaven.compiler.target=1.7")
5766 (modify-phases %standard-phases
5767 (add-before 'build 'delete-network-tests
5768 (lambda* (#:key inputs #:allow-other-keys)
5769 ;; This test hangs indefinitely.
5770 (delete-file "src/test/java/org/apache/commons/exec/issues/Exec60Test.java")
5771 (substitute* "src/test/java/org/apache/commons/exec/issues/Exec41Test.java"
5772 (("ping -c 10 127.0.0.1") "sleep 10"))
5773 (substitute* "src/test/java/org/apache/commons/exec/issues/Exec49Test.java"
5775 (call-with-output-file "src/test/scripts/ping.sh"
5777 (format port "#!~a/bin/sh\nsleep $1\n"
5778 (assoc-ref inputs "bash"))))
5780 ;; The "build" phase automatically tests.
5782 (replace 'install (install-jars "target")))))
5784 `(("java-junit" ,java-junit)
5785 ("java-hamcrest-core" ,java-hamcrest-core)))))
5787 (define-public java-commons-lang
5789 (name "java-commons-lang")
5794 (uri (string-append "mirror://apache/commons/lang/source/"
5795 "commons-lang-" version "-src.tar.gz"))
5797 (base32 "1mxwagqadzx1b2al7i0z1v0r235aj2njdyijf02szq0vhmqrfiq5"))))
5798 (build-system ant-build-system)
5799 (outputs '("out" "doc"))
5801 `(#:test-target "test"
5802 #:test-exclude (list "**/Abstract*.java" "**/Random*.java")
5804 (modify-phases %standard-phases
5805 (add-after 'build 'build-javadoc ant-build-javadoc)
5806 (add-before 'check 'disable-failing-test
5808 ;; Disable a failing test
5809 (substitute* "src/test/java/org/apache/commons/lang/\
5810 time/FastDateFormatTest.java"
5811 (("public void testFormat\\(\\)")
5812 "public void disabled_testFormat()"))
5814 (replace 'install (install-jars "target"))
5815 (add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
5817 `(("java-junit" ,java-junit)))
5818 (home-page "https://commons.apache.org/lang/")
5819 (synopsis "Extension of the java.lang package")
5820 (description "The Commons Lang components contains a set of Java classes
5821 that provide helper methods for standard Java classes, especially those found
5822 in the @code{java.lang} package in the Sun JDK. The following classes are
5826 @item StringUtils - Helper for @code{java.lang.String}.
5827 @item CharSetUtils - Methods for dealing with @code{CharSets}, which are sets
5828 of characters such as @code{[a-z]} and @code{[abcdez]}.
5829 @item RandomStringUtils - Helper for creating randomised strings.
5830 @item NumberUtils - Helper for @code{java.lang.Number} and its subclasses.
5831 @item NumberRange - A range of numbers with an upper and lower bound.
5832 @item ObjectUtils - Helper for @code{java.lang.Object}.
5833 @item SerializationUtils - Helper for serializing objects.
5834 @item SystemUtils - Utility class defining the Java system properties.
5835 @item NestedException package - A sub-package for the creation of nested
5837 @item Enum package - A sub-package for the creation of enumerated types.
5838 @item Builder package - A sub-package for the creation of @code{equals},
5839 @code{hashCode}, @code{compareTo} and @code{toString} methods.
5841 (license license:asl2.0)))
5843 (define-public java-commons-lang3
5845 (name "java-commons-lang3")
5850 (uri (string-append "mirror://apache/commons/lang/source/"
5851 "commons-lang3-" version "-src.tar.gz"))
5853 (base32 "0s4ffbvsyl16c90l45ximsg4dwd8hmz7wsza3p308fw43h6mwhb6"))))
5854 (build-system ant-build-system)
5856 `(#:jar-name "commons-lang3.jar"
5857 #:source-dir "src/main/java"
5858 #:tests? #f; require junit5
5860 (modify-phases %standard-phases
5861 (replace 'install (install-from-pom "pom.xml")))))
5863 `(("apache-commons-parent-pom" ,apache-commons-parent-pom-48)))
5864 (home-page "https://commons.apache.org/lang/")
5865 (synopsis "Extension of the java.lang package")
5866 (description "The Commons Lang components contains a set of Java classes
5867 that provide helper methods for standard Java classes, especially those found
5868 in the @code{java.lang} package. The following classes are included:
5871 @item StringUtils - Helper for @code{java.lang.String}.
5872 @item CharSetUtils - Methods for dealing with @code{CharSets}, which are sets of
5873 characters such as @code{[a-z]} and @code{[abcdez]}.
5874 @item RandomStringUtils - Helper for creating randomised strings.
5875 @item NumberUtils - Helper for @code{java.lang.Number} and its subclasses.
5876 @item NumberRange - A range of numbers with an upper and lower bound.
5877 @item ObjectUtils - Helper for @code{java.lang.Object}.
5878 @item SerializationUtils - Helper for serializing objects.
5879 @item SystemUtils - Utility class defining the Java system properties.
5880 @item NestedException package - A sub-package for the creation of nested
5882 @item Enum package - A sub-package for the creation of enumerated types.
5883 @item Builder package - A sub-package for the creation of @code{equals},
5884 @code{hashCode}, @code{compareTo} and @code{toString} methods.
5886 (license license:asl2.0)))
5888 (define-public java-commons-bsf
5890 (name "java-commons-bsf")
5894 (uri (string-append "mirror://apache/commons/bsf/source/bsf-src-"
5898 "1sbamr8jl32p1jgf59nw0b2w9qivyg145954hm6ly54cfgsqrdas"))
5899 (modules '((guix build utils)))
5902 (for-each delete-file
5903 (find-files "." "\\.jar$"))
5905 (build-system ant-build-system)
5907 `(#:build-target "jar"
5908 #:tests? #f; No test file
5909 #:modules ((guix build ant-build-system)
5911 (guix build java-utils)
5914 (modify-phases %standard-phases
5915 (add-before 'build 'create-properties
5917 ;; This file is missing from the distribution
5918 (call-with-output-file "build-properties.xml"
5921 `(project (@ (basedir ".") (name "build-properties") (default ""))
5922 (property (@ (name "project.name") (value "bsf")))
5923 (property (@ (name "source.level") (value "1.5")))
5924 (property (@ (name "build.lib") (value "build/jar")))
5925 (property (@ (name "src.dir") (value "src")))
5926 (property (@ (name "tests.dir") (value "src/org/apache/bsf/test")))
5927 (property (@ (name "build.tests") (value "build/test-classes")))
5928 (property (@ (name "build.dest") (value "build/classes"))))
5931 (replace 'install (install-jars "build")))))
5933 `(("java-junit" ,java-junit)))
5935 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)))
5936 (home-page "https://commons.apache.org/proper/commons-bsf")
5937 (synopsis "Bean Scripting Framework")
5938 (description "The Bean Scripting Framework (BSF) is a set of Java classes
5939 which provides scripting language support within Java applications, and access
5940 to Java objects and methods from scripting languages. BSF allows one to write
5941 JSPs in languages other than Java while providing access to the Java class
5942 library. In addition, BSF permits any Java application to be implemented in
5943 part (or dynamically extended) by a language that is embedded within it. This
5944 is achieved by providing an API that permits calling scripting language engines
5945 from within Java, as well as an object registry that exposes Java objects to
5946 these scripting language engines.")
5947 (license license:asl2.0)))
5949 (define-public java-commons-jxpath
5951 (name "java-commons-jxpath")
5955 (uri (string-append "mirror://apache/commons/jxpath/source/"
5956 "commons-jxpath-" version "-src.tar.gz"))
5959 "1rpgg31ayn9fwr4bfi2i1ij0npcg79ad2fv0w9hacvawsyc42cfs"))))
5960 (build-system ant-build-system)
5962 `(#:jar-name "commons-jxpath.jar"
5963 ;; tests require more dependencies, including mockrunner which depends on old software
5965 #:source-dir "src/java"))
5967 `(("servlet" ,java-classpathx-servletapi)
5968 ("java-jdom" ,java-jdom)
5969 ("java-commons-beanutils" ,java-commons-beanutils)))
5971 `(("java-junit" ,java-junit)))
5972 (home-page "https://commons.apache.org/jxpath/")
5973 (synopsis "Simple interpreter of an expression language called XPath.")
5974 (description "The org.apache.commons.jxpath package defines a simple
5975 interpreter of an expression language called XPath. JXPath applies XPath
5976 expressions to graphs of objects of all kinds: JavaBeans, Maps, Servlet
5977 contexts, DOM etc, including mixtures thereof.")
5978 (license license:asl2.0)))
5980 (define-public java-commons-pool
5982 (name "java-commons-pool")
5986 (uri (string-append "mirror://apache/commons/pool/source/"
5987 "commons-pool2-" version "-src.tar.gz"))
5990 "1fi1hgqmq01bs6azbj3sfswxzadp2r8sjjfiq6ryilz1m50kvrv6"))))
5992 `(#:jar-name "common-pool.jar"
5993 #:source-dir "src/main/java"
5995 (list "**/PerformanceTest.java")))
5996 (build-system ant-build-system)
5998 `(("java-cglib" ,java-cglib)))
6000 `(("java-junit" ,java-junit)
6001 ("java-hamcrest-core" ,java-hamcrest-core)
6002 ("java-asm" ,java-asm)
6003 ("java-objenesis" ,java-objenesis)))
6004 (home-page "https://commons.apache.org/proper/commons-pool/")
6005 (synopsis "Object-pooling API in Java")
6006 (description "The commons-pool package provides an object-pooling API
6007 and a number of object pool implementations. This package defines a
6008 handful of pooling interfaces and some base classes that may be useful when
6009 creating new pool implementations.")
6010 (license license:asl2.0)))
6012 (define-public java-commons-dbcp
6014 (name "java-commons-dbcp")
6018 (uri (string-append "mirror://apache/commons/dbcp/source/"
6019 "commons-dbcp2-" version "-src.tar.gz"))
6022 "0axbvcbnf2l70fc3ybrlp3siw2w4ka9mia2pnx4py8gz54cpw3rc"))))
6024 `(#:source-dir "src/main/java"
6025 #:jar-name "java-commons-dbcp.jar"
6026 #:tests? #f)); requires apache-geronimo
6028 `(("java-commons-pool" ,java-commons-pool)
6029 ("java-commons-logging" ,java-commons-logging-minimal)
6030 ("java-jboss-transaction-api-spec" ,java-jboss-transaction-api-spec)))
6032 `(("java-junit" ,java-junit)))
6033 (build-system ant-build-system)
6034 (home-page "https://commons.apache.org/proper/commons-dbcp/")
6035 (synopsis "Database Connection Pool for Java")
6036 (description "Commons-dbcp allows you to share a pool of database
6037 connections between users. Creating a new connection for each user can be
6038 time consuming and even unfeasible when the number of simultaneous users is
6039 very large. This package provides a way to share a poole of connections to
6041 (license license:asl2.0)))
6043 (define-public java-commons-jcs
6045 (name "java-commons-jcs")
6049 (uri (string-append "mirror://apache/commons/jcs/source/"
6050 "commons-jcs-dist-" version "-src.tar.gz"))
6053 "0syhq2npjbrl0azqfjm0gvash1qd5qjy4qmysxcrqjsk0nf9fa1q"))))
6054 (build-system ant-build-system)
6056 `(#:jar-name "commons-jcs.jar"
6057 #:source-dir "commons-jcs-core/src/main/java"
6058 #:test-dir "commons-jcs-core/src/test"
6059 #:tests? #f; requires hsqldb
6061 (modify-phases %standard-phases
6062 (add-before 'build 'prepare
6064 (with-directory-excursion
6065 "commons-jcs-core/src/main/java/org/apache/commons/jcs"
6067 "auxiliary/disk/jdbc/dsfactory/SharedPoolDataSourceFactory.java"
6068 (("commons.dbcp") "commons.dbcp2")
6069 ((".*\\.setMaxActive.*") ""))
6070 ;;; Remove dependency on velocity-tools
6071 (delete-file "admin/servlet/JCSAdminServlet.java"))
6074 `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
6075 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
6076 ("java-commons-httpclient" ,java-commons-httpclient)
6077 ("java-commons-dbcp" ,java-commons-dbcp)))
6079 `(("java-junit" ,java-junit)))
6080 (home-page "https://commons.apache.org/proper/commons-jcs/")
6081 (synopsis "Distributed caching system in Java")
6082 (description "JCS is a distributed caching system written in Java. It
6083 is intended to speed up applications by providing a means to manage cached
6084 data of various dynamic natures. Like any caching system, JCS is most useful
6085 for high read, low put applications. Latency times drop sharply and
6086 bottlenecks move away from the database in an effectively cached system.")
6087 (license license:asl2.0)))
6089 (define-public java-jsr250
6091 (name "java-jsr250")
6095 (uri (string-append "https://repo1.maven.org/maven2/"
6096 "javax/annotation/javax.annotation-api/"
6097 version "/javax.annotation-api-"
6098 version "-sources.jar"))
6101 "08clh8n4n9wfglf75qsqfjs6yf79f7x6hqx38cn856pksszv50kz"))))
6102 (build-system ant-build-system)
6104 `(#:tests? #f ; no tests included
6106 #:jar-name "jsr250.jar"
6107 #:modules ((guix build ant-build-system)
6109 (guix build maven pom)
6110 (guix build java-utils)
6113 (modify-phases %standard-phases
6114 (add-before 'install 'create-pom
6116 (with-output-to-file "pom.xml"
6120 (modelVersion "4.0.0")
6122 (groupId "javax.annotation")
6123 (artifactId "jsr250-api")
6124 (version ,,version))))))
6127 (install-from-pom "pom.xml")))))
6128 (home-page "https://jcp.org/en/jsr/detail?id=250")
6129 (synopsis "Security-related annotations")
6130 (description "This package provides annotations for security. It provides
6131 packages in the @code{javax.annotation} and @code{javax.annotation.security}
6133 ;; either cddl or gpl2 only, with classpath exception
6134 (license (list license:cddl1.0
6137 (define-public java-jsr305
6139 (name "java-jsr305")
6143 (uri (string-append "https://repo1.maven.org/maven2/"
6144 "com/google/code/findbugs/"
6145 "jsr305/" version "/jsr305-"
6146 version "-sources.jar"))
6149 "1rh6jin9v7jqpq3kf1swl868l8i94r636n03pzpsmgr8v0lh9j2n"))))
6150 (build-system ant-build-system)
6152 `(#:tests? #f ; no tests included
6153 #:jar-name "jsr305.jar"
6154 #:modules ((guix build ant-build-system)
6155 (guix build java-utils)
6156 (guix build maven pom)
6160 (modify-phases %standard-phases
6161 (add-before 'install 'create-pom
6163 (with-output-to-file "pom.xml"
6167 (modelVersion "4.0.0")
6169 (groupId "com.google.code.findbugs")
6170 (artifactId "jsr305")
6171 (version ,,version))))))
6174 (install-from-pom "pom.xml")))))
6175 (home-page "http://findbugs.sourceforge.net/")
6176 (synopsis "Annotations for the static analyzer called findbugs")
6177 (description "This package provides annotations for the findbugs package.
6178 It provides packages in the @code{javax.annotations} namespace.")
6179 (license license:asl2.0)))
6181 (define-public java-guava
6184 ;; This is the last release of Guava that can be built with Java 7.
6189 (url "https://github.com/google/guava/")
6190 (commit (string-append "v" version))))
6191 (file-name (git-file-name name version))
6194 "00h5cawdjic1vind3yivzh1f58flvm1yfmhsyqwyvmbvj1vakysp"))))
6195 (build-system ant-build-system)
6197 `(#:tests? #f ; no tests included
6198 #:jar-name "guava.jar"
6199 #:source-dir "guava/src"
6201 (modify-phases %standard-phases
6202 (add-after 'unpack 'trim-sources
6204 (with-directory-excursion "guava/src/com/google/common"
6205 ;; Remove annotations to avoid extra dependencies:
6206 ;; * "j2objc" annotations are used when converting Java to
6208 ;; * "errorprone" annotations catch common Java mistakes at
6210 ;; * "IgnoreJRERequirement" is used for Android.
6211 (substitute* (find-files "." "\\.java$")
6212 (("import com.google.j2objc.*") "")
6213 (("import com.google.errorprone.annotation.*") "")
6214 (("import org.codehaus.mojo.animal_sniffer.*") "")
6215 (("@CanIgnoreReturnValue") "")
6218 (("@RetainedWith") "")
6220 (("@ForOverride") "")
6221 (("@J2ObjCIncompatible") "")
6222 (("@IgnoreJRERequirement") "")))
6224 (replace 'install (install-from-pom "guava/pom.xml")))))
6226 `(("java-jsr305" ,java-jsr305)))
6228 `(("java-guava-parent-pom" ,java-guava-parent-pom)))
6229 (home-page "https://github.com/google/guava")
6230 (synopsis "Google core libraries for Java")
6231 (description "Guava is a set of core libraries that includes new
6232 collection types (such as multimap and multiset), immutable collections, a
6233 graph library, functional types, an in-memory cache, and APIs/utilities for
6234 concurrency, I/O, hashing, primitives, reflection, string processing, and much
6236 (license license:asl2.0)))
6238 (define java-guava-parent-pom
6240 (inherit java-guava)
6241 (name "java-guava-parent-pom")
6245 (modify-phases %standard-phases
6249 (install-pom-file "pom.xml")))))
6251 `(("java-sonatype-oss-parent-pom" ,java-sonatype-oss-parent-pom-7)))))
6253 ;; The java-commons-logging package provides adapters to many different
6254 ;; logging frameworks. To avoid an excessive dependency graph we try to build
6255 ;; it with only a minimal set of adapters.
6256 (define-public java-commons-logging-minimal
6258 (name "java-commons-logging-minimal")
6262 (uri (string-append "mirror://apache/commons/logging/source/"
6263 "commons-logging-" version "-src.tar.gz"))
6266 "10bwcy5w8d7y39n0krlwhnp8ds3kj5zhmzj0zxnkw0qdlsjmsrj9"))))
6267 (build-system ant-build-system)
6269 `(#:tests? #f ; avoid dependency on logging frameworks
6270 #:jar-name "commons-logging-minimal.jar"
6272 (modify-phases %standard-phases
6273 (add-after 'unpack 'delete-adapters-and-tests
6275 ;; Delete all adapters except for NoOpLog, SimpleLog, and
6276 ;; LogFactoryImpl. NoOpLog is required to build; LogFactoryImpl
6277 ;; is used by applications; SimpleLog is the only actually usable
6278 ;; implementation that does not depend on another logging
6282 (delete-file (string-append
6283 "src/main/java/org/apache/commons/logging/impl/" file)))
6284 (list "Jdk13LumberjackLogger.java"
6285 "WeakHashtable.java"
6287 "ServletContextCleaner.java"
6290 "LogKitLogger.java"))
6291 (delete-file-recursively "src/test")
6293 (home-page "https://commons.apache.org/logging/")
6294 (synopsis "Common API for logging implementations")
6295 (description "The Logging package is a thin bridge between different
6296 logging implementations. A library that uses the commons-logging API can be
6297 used with any logging implementation at runtime.")
6298 (license license:asl2.0)))
6300 ;; This is the last release of the 1.x series.
6301 (define-public java-mockito-1
6303 (name "java-mockito")
6307 (uri (string-append "http://repo1.maven.org/maven2/"
6308 "org/mockito/mockito-core/" version
6309 "/mockito-core-" version "-sources.jar"))
6312 "0vmiwnwpf83g2q7kj1rislmja8fpvqkixjhawh7nxnygx6pq11kc"))))
6313 (build-system ant-build-system)
6315 `(#:jar-name "mockito.jar"
6316 #:tests? #f ; no tests included
6317 ;; FIXME: patch-and-repack does not support jars, so we have to apply
6318 ;; patches in build phases.
6320 (modify-phases %standard-phases
6321 ;; Mockito was developed against a different version of hamcrest,
6322 ;; which does not require matcher implementations to provide an
6323 ;; implementation of the "describeMismatch" method. We add this
6324 ;; simple definition to pass the build with our version of hamcrest.
6325 (add-after 'unpack 'fix-hamcrest-build-error
6327 (substitute* "src/org/mockito/internal/matchers/LocalizedMatcher.java"
6328 (("public Matcher getActualMatcher\\(\\) .*" line)
6330 public void describeMismatch(Object item, Description description) {
6331 actualMatcher.describeMismatch(item, description);
6335 ;; Mockito bundles cglib. We have a cglib package, so let's use
6337 (add-after 'unpack 'use-system-libraries
6339 (with-directory-excursion "src/org/mockito/internal/creation/cglib"
6340 (substitute* '("CGLIBHacker.java"
6341 "CglibMockMaker.java"
6342 "ClassImposterizer.java"
6343 "DelegatingMockitoMethodProxy.java"
6344 "MethodInterceptorFilter.java"
6345 "MockitoNamingPolicy.java"
6346 "SerializableMockitoMethodProxy.java"
6347 "SerializableNoOp.java")
6348 (("import org.mockito.cglib") "import net.sf.cglib")))
6351 `(("java-junit" ,java-junit)
6352 ("java-objenesis" ,java-objenesis)
6353 ("java-cglib" ,java-cglib)
6354 ("java-hamcrest-core" ,java-hamcrest-core)))
6355 (home-page "http://mockito.org")
6356 (synopsis "Mockito is a mock library for Java")
6357 (description "Mockito is a mocking library for Java which lets you write
6358 tests with a clean and simple API. It generates mocks using reflection, and
6359 it records all mock invocations, including methods arguments.")
6360 (license license:asl2.0)))
6362 (define-public java-httpcomponents-httpcore
6364 (name "java-httpcomponents-httpcore")
6368 (uri (string-append "mirror://apache//httpcomponents/httpcore/"
6369 "source/httpcomponents-core-"
6370 version "-src.tar.gz"))
6373 "02bwcf38y4vgwq7kj2s6q7qrmma641r5lacivm16kgxvb2j6h1vy"))))
6374 (build-system ant-build-system)
6376 `(#:jar-name "httpcomponents-httpcore.jar"
6378 (modify-phases %standard-phases
6379 (add-after 'unpack 'chdir
6380 (lambda _ (chdir "httpcore") #t)))))
6382 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)
6383 ("java-commons-lang3" ,java-commons-lang3)))
6385 `(("java-junit" ,java-junit)
6386 ("java-mockito" ,java-mockito-1)))
6387 (home-page "https://hc.apache.org/httpcomponents-core-4.4.x/index.html")
6388 (synopsis "Low level HTTP transport components")
6389 (description "HttpCore is a set of low level HTTP transport components
6390 that can be used to build custom client and server side HTTP services with a
6391 minimal footprint. HttpCore supports two I/O models: blocking I/O model based
6392 on the classic Java I/O and non-blocking, event driven I/O model based on Java
6395 This package provides the blocking I/O model library.")
6396 (license license:asl2.0)))
6398 (define-public java-httpcomponents-httpcore-nio
6399 (package (inherit java-httpcomponents-httpcore)
6400 (name "java-httpcomponents-httpcore-nio")
6402 `(#:jar-name "httpcomponents-httpcore-nio.jar"
6404 (modify-phases %standard-phases
6405 (add-after 'unpack 'chdir
6406 (lambda _ (chdir "httpcore-nio") #t)))))
6408 `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
6409 ("java-hamcrest-core" ,java-hamcrest-core)
6410 ,@(package-inputs java-httpcomponents-httpcore)))
6411 (description "HttpCore is a set of low level HTTP transport components
6412 that can be used to build custom client and server side HTTP services with a
6413 minimal footprint. HttpCore supports two I/O models: blocking I/O model based
6414 on the classic Java I/O and non-blocking, event driven I/O model based on Java
6417 This package provides the non-blocking I/O model library based on Java
6420 (define-public java-httpcomponents-httpcore-ab
6421 (package (inherit java-httpcomponents-httpcore)
6422 (name "java-httpcomponents-httpcore-ab")
6424 `(#:jar-name "httpcomponents-httpcore-ab.jar"
6426 (modify-phases %standard-phases
6427 (add-after 'unpack 'chdir
6428 (lambda _ (chdir "httpcore-ab") #t)))))
6430 `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
6431 ("java-commons-cli" ,java-commons-cli)
6432 ("java-hamcrest-core" ,java-hamcrest-core)
6433 ,@(package-inputs java-httpcomponents-httpcore)))
6434 (synopsis "Apache HttpCore benchmarking tool")
6435 (description "This package provides the HttpCore benchmarking tool. It is
6436 an Apache AB clone based on HttpCore.")))
6438 (define-public java-httpcomponents-httpclient
6440 (name "java-httpcomponents-httpclient")
6444 (uri (string-append "mirror://apache/httpcomponents/httpclient/"
6445 "source/httpcomponents-client-"
6446 version "-src.tar.gz"))
6449 "1va99m2zc2liv0v9vn72p5ja8yz4s5wq7zpahaai5nr966kvxzkb"))))
6450 (build-system ant-build-system)
6452 `(#:jar-name "httpcomponents-httpclient.jar"
6454 (modify-phases %standard-phases
6455 (add-after 'unpack 'chdir
6456 (lambda _ (chdir "httpclient") #t)))))
6458 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)
6459 ("java-commons-codec" ,java-commons-codec)
6460 ("java-hamcrest-core" ,java-hamcrest-core)
6461 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
6462 ("java-mockito" ,java-mockito-1)
6463 ("java-junit" ,java-junit)))
6464 (home-page "https://hc.apache.org/httpcomponents-client-ga/")
6465 (synopsis "HTTP client library for Java")
6466 (description "Although the @code{java.net} package provides basic
6467 functionality for accessing resources via HTTP, it doesn't provide the full
6468 flexibility or functionality needed by many applications. @code{HttpClient}
6469 seeks to fill this void by providing an efficient, up-to-date, and
6470 feature-rich package implementing the client side of the most recent HTTP
6471 standards and recommendations.")
6472 (license license:asl2.0)))
6474 (define-public java-httpcomponents-httpmime
6475 (package (inherit java-httpcomponents-httpclient)
6476 (name "java-httpcomponents-httpmime")
6478 `(#:jar-name "httpcomponents-httpmime.jar"
6480 (modify-phases %standard-phases
6481 (add-after 'unpack 'chdir
6482 (lambda _ (chdir "httpmime") #t)))))
6484 `(("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
6485 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
6486 ("java-junit" ,java-junit)
6487 ("java-hamcrest-core" ,java-hamcrest-core)))))
6489 (define-public java-commons-net
6491 (name "java-commons-net")
6495 (uri (string-append "mirror://apache/commons/net/source/"
6496 "commons-net-" version "-src.tar.gz"))
6499 "0n0cmnddk9qdqhjvka8pc6hd9mn2qi3166f1s6xk32h7rfy1adxr"))))
6500 (build-system ant-build-system)
6502 `(;; FIXME: MainTest.java tries to read "examples.properties" (which
6503 ;; should be "resources/examples/examples.properties"), but gets "null"
6506 #:jar-name "commons-net.jar"))
6508 `(("java-junit" ,java-junit)
6509 ("java-hamcrest-core" ,java-hamcrest-core)))
6510 (home-page "https://commons.apache.org/net/")
6511 (synopsis "Client library for many basic Internet protocols")
6512 (description "The Apache Commons Net library implements the client side of
6513 many basic Internet protocols. The purpose of the library is to provide
6514 fundamental protocol access, not higher-level abstractions.")
6515 (license license:asl2.0)))
6517 (define-public java-jsch
6523 (uri (string-append "mirror://sourceforge/jsch/jsch/"
6524 version "/jsch-" version ".zip"))
6527 "1lxyjwvmwa723wcf3bqn816hkvc03vz4xhbsi7bvfhrz2rpgcfq6"))))
6528 (build-system ant-build-system)
6530 `(#:build-target "dist"
6531 #:tests? #f ; no tests included
6533 (modify-phases %standard-phases
6534 (replace 'install (install-jars "dist")))))
6536 `(("unzip" ,unzip)))
6537 (home-page "http://www.jcraft.com/jsch/")
6538 (synopsis "Pure Java implementation of SSH2")
6539 (description "JSch is a pure Java implementation of SSH2. JSch allows you
6540 to connect to an SSH server and use port forwarding, X11 forwarding, file
6541 transfer, etc., and you can integrate its functionality into your own Java
6543 (license license:bsd-3)))
6545 (define-public java-commons-compress
6547 (name "java-commons-compress")
6551 (uri (string-append "mirror://apache/commons/compress/source/"
6552 "commons-compress-" version "-src.tar.gz"))
6555 "1vjqvavrn0babffn1kciz6v52ibwq2vwhzlb95hazis3lgllnxc8"))))
6556 (build-system ant-build-system)
6558 `(#:jar-name "commons-compress.jar"
6560 (modify-phases %standard-phases
6561 (add-after 'unpack 'delete-bad-tests
6563 (with-directory-excursion "src/test/java/org/apache/commons/compress/"
6564 ;; FIXME: These tests really should not fail. Maybe they are
6565 ;; indicative of problems with our Java packaging work.
6567 ;; This test fails with a null pointer exception.
6568 (delete-file "archivers/sevenz/SevenZOutputFileTest.java")
6569 ;; This test fails to open test resources.
6570 (delete-file "archivers/zip/ExplodeSupportTest.java")
6572 ;; FIXME: This test adds a dependency on powermock, which is hard to
6573 ;; package at this point.
6574 ;; https://github.com/powermock/powermock
6575 (delete-file "archivers/sevenz/SevenZNativeHeapTest.java"))
6577 (replace 'install (install-from-pom "pom.xml")))))
6579 `(("java-xz" ,java-xz)
6580 ("apache-commons-parent-pom" ,apache-commons-parent-pom-41)))
6582 `(("java-junit" ,java-junit)
6583 ("java-mockito" ,java-mockito-1)))
6584 (home-page "https://commons.apache.org/proper/commons-compress/")
6585 (synopsis "Java library for working with compressed files")
6586 (description "The Apache Commons Compress library defines an API for
6587 working with compressed files such as ar, cpio, Unix dump, tar, zip, gzip, XZ,
6588 Pack200, bzip2, 7z, arj, lzma, snappy, DEFLATE, lz4 and Z files.")
6589 (license license:asl2.0)))
6591 (define-public java-commons-csv
6593 (name "java-commons-csv")
6597 (uri (string-append "mirror://apache/commons/csv/source/"
6598 "commons-csv-" version "-src.tar.gz"))
6601 "1l89m0fm2s3xx3v3iynvangymfg2vlyngaj6fgsi457nmsw7m7ij"))))
6602 (build-system ant-build-system)
6604 `(#:jar-name "commons-csv.jar"
6605 #:source-dir "src/main/java"
6606 #:tests? #f)); FIXME: requires java-h2
6608 `(("java-hamcrest-core" ,java-hamcrest-core)
6609 ("java-commons-io" ,java-commons-io)
6610 ("java-commons-lang3" ,java-commons-lang3)
6611 ("junit" ,java-junit)))
6612 (home-page "https://commons.apache.org/proper/commons-csv/")
6613 (synopsis "Read and write CSV documents")
6614 (description "Commons CSV reads and writes files in variations of the Comma
6615 Separated Value (CSV) format. The most common CSV formats are predefined in the
6619 @item Microsoft Excel
6620 @item Informix UNLOAD
6621 @item Informix UNLOAD CSV
6627 Custom formats can be created using a fluent style API.")
6628 (license license:asl2.0)))
6630 (define-public java-osgi-annotation
6632 (name "java-osgi-annotation")
6636 (uri (string-append "https://repo1.maven.org/maven2/"
6637 "org/osgi/org.osgi.annotation/" version "/"
6638 "org.osgi.annotation-" version "-sources.jar"))
6641 "1q718mb7gqg726rh6pc2hcisn8v50nv35abbir0jypmffhiii85w"))))
6642 (build-system ant-build-system)
6644 `(#:tests? #f ; no tests
6645 #:jar-name "osgi-annotation.jar"))
6646 (home-page "https://www.osgi.org")
6647 (synopsis "Annotation module of OSGi framework")
6649 "OSGi, for Open Services Gateway initiative framework, is a module system
6650 and service platform for the Java programming language. This package contains
6651 the OSGi annotation module, providing additional services to help dynamic
6653 (license license:asl2.0)))
6655 (define-public java-osgi-core
6657 (name "java-osgi-core")
6661 (uri (string-append "https://repo1.maven.org/maven2/"
6662 "org/osgi/org.osgi.core/" version "/"
6663 "org.osgi.core-" version "-sources.jar"))
6666 "19bpf5jx32jq9789gyhin35q5v7flmw0p9mk7wbgqpxqfmxyiabv"))))
6667 (build-system ant-build-system)
6669 `(#:tests? #f ; no tests
6670 #:jar-name "osgi-core.jar"))
6672 `(("java-osgi-annotation" ,java-osgi-annotation)))
6673 (home-page "https://www.osgi.org")
6674 (synopsis "Core module of OSGi framework")
6676 "OSGi, for Open Services Gateway initiative framework, is a module system
6677 and service platform for the Java programming language. This package contains
6678 the OSGi Core module.")
6679 (license license:asl2.0)))
6681 (define-public java-osgi-service-event
6683 (name "java-osgi-service-event")
6687 (uri (string-append "https://repo1.maven.org/maven2/"
6688 "org/osgi/org.osgi.service.event/"
6689 version "/org.osgi.service.event-"
6690 version "-sources.jar"))
6693 "1nyhlgagwym75bycnjczwbnpymv2iw84zbhvvzk84g9q736i6qxm"))))
6694 (build-system ant-build-system)
6696 `(#:tests? #f ; no tests
6697 #:jar-name "osgi-service-event.jar"))
6699 `(("java-osgi-annotation" ,java-osgi-annotation)
6700 ("java-osgi-core" ,java-osgi-core)))
6701 (home-page "https://www.osgi.org")
6702 (synopsis "OSGi service event module")
6704 "OSGi, for Open Services Gateway initiative framework, is a module system
6705 and service platform for the Java programming language. This package contains
6706 the OSGi @code{org.osgi.service.event} module.")
6707 (license license:asl2.0)))
6709 (define-public java-eclipse-osgi
6711 (name "java-eclipse-osgi")
6715 (uri (string-append "https://repo1.maven.org/maven2/"
6716 "org/eclipse/platform/org.eclipse.osgi/"
6717 version "/org.eclipse.osgi-"
6718 version "-sources.jar"))
6721 "00cqc6lb29n0zv68b4l842vzkwawvbr7gshfdygsk8sicvcq2c7b"))))
6722 (build-system ant-build-system)
6724 `(#:tests? #f ; no tests included
6725 #:jar-name "eclipse-equinox-osgi.jar"))
6727 `(("java-osgi-annotation" ,java-osgi-annotation)))
6728 (home-page "http://www.eclipse.org/equinox/")
6729 (synopsis "Eclipse Equinox OSGi framework")
6730 (description "This package provides an implementation of the OSGi Core
6732 (license license:epl1.0)))
6734 (define-public java-eclipse-equinox-common
6736 (name "java-eclipse-equinox-common")
6737 (version "3.10.200")
6740 (uri (string-append "https://repo1.maven.org/maven2/"
6741 "org/eclipse/platform/org.eclipse.equinox.common/"
6742 version "/org.eclipse.equinox.common-"
6743 version "-sources.jar"))
6746 "1yn8ij6xsljlf35sr2l7wvyvc0ss4n1rv0ry5zkgb49dj4hyrqrj"))))
6747 (build-system ant-build-system)
6749 `(#:tests? #f ; no tests included
6750 #:jar-name "eclipse-equinox-common.jar"))
6752 `(("java-eclipse-osgi" ,java-eclipse-osgi)))
6753 (home-page "http://www.eclipse.org/equinox/")
6754 (synopsis "Common Eclipse runtime")
6755 (description "This package provides the common Eclipse runtime.")
6756 (license license:epl1.0)))
6758 (define-public java-eclipse-core-jobs
6760 (name "java-eclipse-core-jobs")
6764 (uri (string-append "https://repo1.maven.org/maven2/"
6765 "org/eclipse/platform/org.eclipse.core.jobs/"
6766 version "/org.eclipse.core.jobs-"
6767 version "-sources.jar"))
6770 "0395b8lh0km8vhzjnchvs1rii1qz48hyvb2wqfaq4yhklbwihq4b"))))
6771 (build-system ant-build-system)
6773 `(#:tests? #f ; no tests included
6774 #:jar-name "eclipse-core-jobs.jar"))
6776 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6777 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6778 (home-page "http://www.eclipse.org/equinox/")
6779 (synopsis "Eclipse jobs mechanism")
6780 (description "This package provides the Eclipse jobs mechanism.")
6781 (license license:epl1.0)))
6783 (define-public java-eclipse-equinox-registry
6785 (name "java-eclipse-equinox-registry")
6789 (uri (string-append "https://repo1.maven.org/maven2/"
6790 "org/eclipse/platform/org.eclipse.equinox.registry/"
6791 version "/org.eclipse.equinox.registry-"
6792 version "-sources.jar"))
6795 "1i9sgymh2fy5vdgk5y7s3qvrlbgh4l93ddqi3v4zmca7hwrlhf9k"))))
6796 (build-system ant-build-system)
6798 `(#:tests? #f ; no tests included
6799 #:jar-name "eclipse-equinox-registry.jar"))
6801 `(("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
6802 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6803 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6804 (home-page "http://www.eclipse.org/equinox/")
6805 (synopsis "Eclipse extension registry support")
6806 (description "This package provides support for the Eclipse extension
6808 (license license:epl1.0)))
6810 (define-public java-eclipse-equinox-app
6812 (name "java-eclipse-equinox-app")
6816 (uri (string-append "https://repo1.maven.org/maven2/"
6817 "org/eclipse/platform/org.eclipse.equinox.app/"
6818 version "/org.eclipse.equinox.app-"
6819 version "-sources.jar"))
6822 "0nhvbp93y203ar7y59gb0mz3w2d3jlqhr0c9hii9bcfpmr7imdab"))))
6823 (build-system ant-build-system)
6825 `(#:tests? #f ; no tests included
6826 #:jar-name "eclipse-equinox-app.jar"))
6828 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6829 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6830 ("java-eclipse-osgi" ,java-eclipse-osgi)
6831 ("java-osgi-service-event" ,java-osgi-service-event)))
6832 (home-page "http://www.eclipse.org/equinox/")
6833 (synopsis "Equinox application container")
6834 (description "This package provides the Equinox application container for
6836 (license license:epl1.0)))
6838 (define-public java-eclipse-equinox-preferences
6840 (name "java-eclipse-equinox-preferences")
6844 (uri (string-append "https://repo1.maven.org/maven2/"
6845 "org/eclipse/platform/org.eclipse.equinox.preferences/"
6846 version "/org.eclipse.equinox.preferences-"
6847 version "-sources.jar"))
6850 "0k7w6c141sqym4fy3af0qkwpy4pdh2vsjpjba6rp5fxyqa24v0a2"))))
6851 (build-system ant-build-system)
6853 `(#:tests? #f ; no tests included
6854 #:jar-name "eclipse-equinox-preferences.jar"))
6856 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6857 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6858 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6859 (home-page "http://www.eclipse.org/equinox/")
6860 (synopsis "Eclipse preferences mechanism")
6861 (description "This package provides the Eclipse preferences mechanism with
6862 the module @code{org.eclipse.equinox.preferences}.")
6863 (license license:epl1.0)))
6865 (define-public java-eclipse-core-contenttype
6867 (name "java-eclipse-core-contenttype")
6871 (uri (string-append "https://repo1.maven.org/maven2/"
6872 "org/eclipse/platform/org.eclipse.core.contenttype/"
6873 version "/org.eclipse.core.contenttype-"
6874 version "-sources.jar"))
6877 "1wcqcv7ijwv5rh748vz3x9pkmjl9w1r0k0026k56n8yjl4rrmspi"))))
6878 (build-system ant-build-system)
6880 `(#:tests? #f ; no tests included
6881 #:jar-name "eclipse-core-contenttype.jar"))
6883 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6884 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6885 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6886 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6887 (home-page "http://www.eclipse.org/")
6888 (synopsis "Eclipse content mechanism")
6889 (description "This package provides the Eclipse content mechanism in the
6890 @code{org.eclipse.core.contenttype} module.")
6891 (license license:epl1.0)))
6893 (define-public java-eclipse-core-runtime
6895 (name "java-eclipse-core-runtime")
6896 (version "3.15.100")
6899 (uri (string-append "https://repo1.maven.org/maven2/"
6900 "org/eclipse/platform/org.eclipse.core.runtime/"
6901 version "/org.eclipse.core.runtime-"
6902 version "-sources.jar"))
6905 "0l8xayacsbjvz5hypx2fv47vpw2n4dspamcfb3hx30x9hj8vmg7r"))))
6906 (build-system ant-build-system)
6908 `(#:tests? #f ; no tests included
6909 #:jar-name "eclipse-core-runtime.jar"))
6911 `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
6912 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
6913 ("java-eclipse-equinox-app" ,java-eclipse-equinox-app)
6914 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6915 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6916 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6917 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6918 (home-page "https://www.eclipse.org/")
6919 (synopsis "Eclipse core runtime")
6920 (description "This package provides the Eclipse core runtime with the
6921 module @code{org.eclipse.core.runtime}.")
6922 (license license:epl1.0)))
6924 (define-public java-eclipse-core-filesystem
6926 (name "java-eclipse-core-filesystem")
6930 (uri (string-append "https://repo1.maven.org/maven2/"
6931 "org/eclipse/platform/org.eclipse.core.filesystem/"
6932 version "/org.eclipse.core.filesystem-"
6933 version "-sources.jar"))
6936 "0km1bhwjim4rfy3pkvjhvy31kgsyf2ncx0mlkmbf5n6g57pphdyj"))))
6937 (build-system ant-build-system)
6939 `(#:tests? #f ; no tests included
6940 #:jar-name "eclipse-core-filesystem.jar"))
6942 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6943 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6944 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6945 (home-page "https://www.eclipse.org/")
6946 (synopsis "Eclipse core file system")
6947 (description "This package provides the Eclipse core file system with the
6948 module @code{org.eclipse.core.filesystem}.")
6949 (license license:epl1.0)))
6951 (define-public java-eclipse-core-expressions
6953 (name "java-eclipse-core-expressions")
6957 (uri (string-append "https://repo1.maven.org/maven2/"
6958 "org/eclipse/platform/org.eclipse.core.expressions/"
6959 version "/org.eclipse.core.expressions-"
6960 version "-sources.jar"))
6963 "18bw2l875gmygvpagpgk9l24qzbdjia4ag12nw6fi8v8yaq4987f"))))
6964 (build-system ant-build-system)
6966 `(#:tests? #f ; no tests included
6967 #:jar-name "eclipse-core-expressions.jar"))
6969 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6970 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6971 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6972 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6973 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6974 (home-page "https://www.eclipse.org/")
6975 (synopsis "Eclipse core expression language")
6976 (description "This package provides the Eclipse core expression language
6977 with the @code{org.eclipse.core.expressions} module.")
6978 (license license:epl1.0)))
6980 (define-public java-eclipse-core-variables
6982 (name "java-eclipse-core-variables")
6986 (uri (string-append "https://repo1.maven.org/maven2/"
6987 "org/eclipse/platform/org.eclipse.core.variables/"
6988 version "/org.eclipse.core.variables-"
6989 version "-sources.jar"))
6992 "12dirh03zi4n5x5cj07vzrhkmnqy6h9q10h9j605pagmpmifyxmy"))))
6993 (build-system ant-build-system)
6995 `(#:tests? #f ; no tests included
6996 #:jar-name "eclipse-core-variables.jar"))
6998 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6999 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
7000 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
7001 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
7002 ("java-eclipse-osgi" ,java-eclipse-osgi)))
7003 (home-page "https://www.eclipse.org/platform")
7004 (synopsis "Eclipse core variables")
7005 (description "This package provides the Eclipse core variables module
7006 @code{org.eclipse.core.variables}.")
7007 (license license:epl1.0)))
7009 (define-public java-eclipse-ant-core
7011 (name "java-eclipse-ant-core")
7015 (uri (string-append "https://repo1.maven.org/maven2/"
7016 "org/eclipse/platform/org.eclipse.ant.core/"
7017 version "/org.eclipse.ant.core-"
7018 version "-sources.jar"))
7021 "11g3if794qjlk98mz9zch22rr56sd7z63vn4i7k2icr8cq5bfqg7"))))
7022 (build-system ant-build-system)
7024 `(#:tests? #f ; no tests included
7025 #:jar-name "eclipse-ant-core.jar"))
7027 `(("java-eclipse-equinox-app" ,java-eclipse-equinox-app)
7028 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
7029 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
7030 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
7031 ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
7032 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
7033 ("java-eclipse-core-variables" ,java-eclipse-core-variables)
7034 ("java-eclipse-osgi" ,java-eclipse-osgi)))
7035 (home-page "https://www.eclipse.org/platform")
7036 (synopsis "Ant build tool core libraries")
7037 (description "This package provides the ant build tool core libraries with
7038 the module @code{org.eclipse.ant.core}.")
7039 (license license:epl1.0)))
7041 (define-public java-eclipse-core-resources
7043 (name "java-eclipse-core-resources")
7044 (version "3.13.200")
7047 (uri (string-append "https://repo1.maven.org/maven2/"
7048 "org/eclipse/platform/org.eclipse.core.resources/"
7049 version "/org.eclipse.core.resources-"
7050 version "-sources.jar"))
7053 "1sn3b6ky72hkvxcgf9b2jkpbdh3y8lbhi9xxwv1dsiddpkkq91hs"))))
7054 (build-system ant-build-system)
7056 `(#:tests? #f ; no tests included
7057 #:jar-name "eclipse-core-resources.jar"))
7059 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
7060 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
7061 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
7062 ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
7063 ("java-eclipse-core-expressions" ,java-eclipse-core-expressions)
7064 ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem)
7065 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
7066 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
7067 ("java-eclipse-ant-core" ,java-eclipse-ant-core)
7068 ("java-eclipse-osgi" ,java-eclipse-osgi)))
7069 (home-page "https://www.eclipse.org/")
7070 (synopsis "Eclipse core resource management")
7071 (description "This package provides the Eclipse core resource management
7072 module @code{org.eclipse.core.resources}.")
7073 (license license:epl1.0)))
7075 (define-public java-eclipse-compare-core
7077 (name "java-eclipse-compare-core")
7081 (uri (string-append "https://repo1.maven.org/maven2/"
7082 "org/eclipse/platform/org.eclipse.compare.core/"
7083 version "/org.eclipse.compare.core-"
7084 version "-sources.jar"))
7087 "10g37r0pbiffyv2wk35c6g5lwzkdipkl0kkjp41v84dln46xm4dg"))))
7088 (build-system ant-build-system)
7090 `(#:tests? #f ; no tests included
7091 #:jar-name "eclipse-compare-core.jar"))
7093 `(("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
7094 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
7095 ("java-eclipse-osgi" ,java-eclipse-osgi)
7096 ("java-icu4j" ,java-icu4j)))
7097 (home-page "https://www.eclipse.org/")
7098 (synopsis "Eclipse core compare support")
7099 (description "This package provides the Eclipse core compare support
7100 module @code{org.eclipse.compare.core}.")
7101 (license license:epl1.0)))
7103 (define-public java-eclipse-team-core
7105 (name "java-eclipse-team-core")
7109 (uri (string-append "https://repo1.maven.org/maven2/"
7110 "org/eclipse/platform/org.eclipse.team.core/"
7111 version "/org.eclipse.team.core-"
7112 version "-sources.jar"))
7115 "02j2jzqgb26zx2d5ahxmvijw6j4r0la90zl5c3i65x6z19ciyam7"))))
7116 (build-system ant-build-system)
7118 `(#:tests? #f ; no tests included
7119 #:jar-name "eclipse-team-core.jar"))
7121 `(("java-eclipse-compare-core" ,java-eclipse-compare-core)
7122 ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
7123 ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem)
7124 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
7125 ("java-eclipse-core-resources" ,java-eclipse-core-resources)
7126 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
7127 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
7128 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
7129 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
7130 ("java-eclipse-osgi" ,java-eclipse-osgi)))
7131 (home-page "https://www.eclipse.org/platform")
7132 (synopsis "Eclipse team support core")
7133 (description "This package provides the Eclipse team support core module
7134 @code{org.eclipse.team.core}.")
7135 (license license:epl1.0)))
7137 (define-public java-eclipse-core-commands
7139 (name "java-eclipse-core-commands")
7143 (uri (string-append "https://repo1.maven.org/maven2/"
7144 "org/eclipse/platform/org.eclipse.core.commands/"
7145 version "/org.eclipse.core.commands-"
7146 version "-sources.jar"))
7149 "0yjn482qndcfrsq3jd6vnhcylp16420f5aqkrwr8spsprjigjcr9"))))
7150 (build-system ant-build-system)
7152 `(#:tests? #f ; no tests included
7153 #:jar-name "eclipse-core-commands.jar"))
7155 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)))
7156 (home-page "https://www.eclipse.org/platform")
7157 (synopsis "Eclipse core commands")
7158 (description "This package provides Eclipse core commands in the module
7159 @code{org.eclipse.core.commands}.")
7160 (license license:epl1.0)))
7162 (define-public java-eclipse-text
7164 (name "java-eclipse-text")
7168 (uri (string-append "https://repo1.maven.org/maven2/"
7169 "org/eclipse/platform/org.eclipse.text/"
7170 version "/org.eclipse.text-"
7171 version "-sources.jar"))
7174 "0scz70vzz5qs5caji9f5q01vkqnvip7dpri1q07l8wbbdcxn4cq1"))))
7175 (build-system ant-build-system)
7177 `(#:tests? #f ; no tests included
7178 #:jar-name "eclipse-text.jar"
7180 (modify-phases %standard-phases
7181 ;; When creating a new category we must make sure that the new list
7182 ;; matches List<Position>. By default it seems to be too generic
7183 ;; (ArrayList<Object>), so we specialize it to ArrayList<Position>.
7184 ;; Without this we get this error:
7186 ;; [javac] .../src/org/eclipse/jface/text/AbstractDocument.java:376:
7187 ;; error: method put in interface Map<K,V> cannot be applied to given types;
7188 ;; [javac] fPositions.put(category, new ArrayList<>());
7190 ;; [javac] required: String,List<Position>
7191 ;; [javac] found: String,ArrayList<Object>
7192 ;; [javac] reason: actual argument ArrayList<Object> cannot be converted
7193 ;; to List<Position> by method invocation conversion
7194 ;; [javac] where K,V are type-variables:
7195 ;; [javac] K extends Object declared in interface Map
7196 ;; [javac] V extends Object declared in interface Map
7198 ;; I don't know if this is a good fix. I suspect it is not, but it
7200 (add-after 'unpack 'fix-compilation-error
7202 (substitute* "src/org/eclipse/jface/text/AbstractDocument.java"
7203 (("Positions.put\\(category, new ArrayList<>\\(\\)\\);")
7204 "Positions.put(category, new ArrayList<Position>());"))
7207 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
7208 ("java-eclipse-core-commands" ,java-eclipse-core-commands)
7209 ("java-icu4j" ,java-icu4j)))
7210 (home-page "http://www.eclipse.org/platform")
7211 (synopsis "Eclipse text library")
7212 (description "Platform Text is part of the Platform UI project and
7213 provides the basic building blocks for text and text editors within Eclipse
7214 and contributes the Eclipse default text editor.")
7215 (license license:epl1.0)))
7217 (define-public java-eclipse-jdt-core
7219 (name "java-eclipse-jdt-core")
7223 (uri (string-append "https://repo1.maven.org/maven2/"
7224 "org/eclipse/jdt/org.eclipse.jdt.core/"
7225 version "/org.eclipse.jdt.core-"
7226 version "-sources.jar"))
7229 "1g560yr9v2kzv34gc2m3ifpgnj7krcdd6h4gd4z83pwqacwkfz0k"))))
7230 (build-system ant-build-system)
7232 `(#:tests? #f ; no tests included
7233 #:jar-name "eclipse-jdt-core.jar"
7235 (modify-phases %standard-phases
7236 (add-after 'unpack 'move-sources
7238 (with-directory-excursion "src/jdtCompilerAdaptersrc/"
7239 (for-each (lambda (file)
7240 (install-file file (string-append "../" (dirname file))))
7241 (find-files "." ".*")))
7242 (delete-file-recursively "src/jdtCompilerAdaptersrc/")
7244 (add-before 'build 'copy-resources
7246 (with-directory-excursion "src"
7247 (for-each (lambda (file)
7248 (install-file file (string-append "../build/classes/" (dirname file))))
7249 (find-files "." ".*.(props|properties|rsc)")))
7252 `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
7253 ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem)
7254 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
7255 ("java-eclipse-core-resources" ,java-eclipse-core-resources)
7256 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
7257 ("java-eclipse-equinox-app" ,java-eclipse-equinox-app)
7258 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
7259 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
7260 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
7261 ("java-eclipse-osgi" ,java-eclipse-osgi)
7262 ("java-eclipse-text" ,java-eclipse-text)))
7263 (home-page "https://www.eclipse.org/jdt")
7264 (synopsis "Java development tools core libraries")
7265 (description "This package provides the core libraries of the Eclipse Java
7266 development tools.")
7267 (license license:epl1.0)))
7269 (define-public java-eclipse-jdt-compiler-apt
7271 (name "java-eclipse-jdt-compiler-apt")
7275 (uri (string-append "https://repo1.maven.org/maven2/"
7276 "org/eclipse/jdt/org.eclipse.jdt.compiler.apt/"
7277 version "/org.eclipse.jdt.compiler.apt-"
7278 version "-sources.jar"))
7281 "1s285k9p2ixdqrknb40jbbvw682n9a7l5lqpn583a8pvlzg2l6r8"))))
7282 (build-system ant-build-system)
7284 `(#:tests? #f ; no tests included
7285 #:jar-name "eclipse-jdt-compiler-apt.jar"
7288 `(("java-eclipse-jdt-core" ,java-eclipse-jdt-core)))
7289 (home-page "https://www.eclipse.org/jdt/apt/")
7290 (synopsis "Annotation processing tool")
7291 (description "APT stands for Annotation Processing Tool. APT provides a
7292 means for generating files and compiling new Java classes based on annotations
7293 found in your source code.")
7294 (license license:epl2.0)))
7296 (define-public java-javax-mail
7298 (name "java-javax-mail")
7302 (uri (string-append "https://repo1.maven.org/maven2/"
7303 "com/sun/mail/javax.mail/"
7304 version "/javax.mail-"
7305 version "-sources.jar"))
7308 "0sdlfgsc2b5s89xv1261y8i0jijcja019k2x1c8ngfn582w4jly9"))))
7309 (build-system ant-build-system)
7311 `(#:tests? #f ; no tests
7312 #:jar-name "javax-mail.jar"))
7313 (home-page "https://javamail.java.net")
7314 (synopsis "Reference implementation of the JavaMail API")
7316 "This package provides versions of the JavaMail API implementation, IMAP,
7317 SMTP, and POP3 service providers, some examples, and documentation for the
7319 ;; GPLv2 only with "classpath exception".
7320 (license license:gpl2)))
7322 (define-public java-log4j-api
7324 (name "java-log4j-api")
7328 (uri (string-append "mirror://apache/logging/log4j/" version
7329 "/apache-log4j-" version "-src.tar.gz"))
7332 "0j5p9gik0jysh37nlrckqbky12isy95cpwg2gv5fas1rcdqbraxd"))))
7333 (build-system ant-build-system)
7335 `(#:tests? #f ; tests require unpackaged software
7336 #:jar-name "log4j-api.jar"
7338 (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out")
7341 (modify-phases %standard-phases
7342 (add-after 'unpack 'enter-dir
7343 (lambda _ (chdir "log4j-api") #t))
7344 ;; FIXME: The tests require additional software that has not been
7345 ;; packaged yet, such as
7346 ;; * org.apache.maven
7347 ;; * org.apache.felix
7348 (add-after 'enter-dir 'delete-tests
7349 (lambda _ (delete-file-recursively "src/test") #t)))))
7351 `(("java-osgi-core" ,java-osgi-core)
7352 ("java-hamcrest-core" ,java-hamcrest-core)
7353 ("java-junit" ,java-junit)))
7354 (home-page "https://logging.apache.org/log4j/2.x/")
7355 (synopsis "API module of the Log4j logging framework for Java")
7357 "This package provides the API module of the Log4j logging framework for
7359 (license license:asl2.0)))
7361 (define-public java-log4j-core
7363 (inherit java-log4j-api)
7364 (name "java-log4j-core")
7366 `(("java-osgi-core" ,java-osgi-core)
7367 ("java-hamcrest-core" ,java-hamcrest-core)
7368 ("java-log4j-api" ,java-log4j-api)
7369 ("java-mail" ,java-mail)
7370 ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec)
7371 ("java-lmax-disruptor" ,java-lmax-disruptor)
7372 ("java-kafka" ,java-kafka-clients)
7373 ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
7374 ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
7375 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
7376 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)
7377 ("java-fasterxml-jackson-dataformat-xml" ,java-fasterxml-jackson-dataformat-xml)
7378 ("java-fasterxml-jackson-dataformat-yaml" ,java-fasterxml-jackson-dataformat-yaml)
7379 ("java-commons-compress" ,java-commons-compress)
7380 ("java-commons-csv" ,java-commons-csv)
7381 ("java-jeromq" ,java-jeromq)
7382 ("java-junit" ,java-junit)))
7384 `(("hamcrest" ,java-hamcrest-all)
7385 ("java-commons-io" ,java-commons-io)
7386 ("java-commons-lang3" ,java-commons-lang3)
7387 ("slf4j" ,java-slf4j-api)))
7389 `(#:tests? #f ; tests require more dependencies
7390 #:test-dir "src/test"
7391 #:source-dir "src/main/java"
7392 #:jar-name "log4j-core.jar"
7395 (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out")
7398 (modify-phases %standard-phases
7399 (add-after 'unpack 'enter-dir
7400 (lambda _ (chdir "log4j-core") #t)))))
7401 (synopsis "Core component of the Log4j framework")
7402 (description "This package provides the core component of the Log4j
7403 logging framework for Java.")))
7405 (define-public java-log4j-1.2-api
7407 (inherit java-log4j-api)
7408 (name "java-log4j-1.2-api")
7410 `(#:jar-name "java-log4j-1.2-api.jar"
7411 #:source-dir "log4j-1.2-api/src/main/java"
7413 ;; Tests require maven-model (and other maven subprojects), which is a
7414 ;; cyclic dependency.
7417 `(("log4j-api" ,java-log4j-api)
7418 ("log4j-core" ,java-log4j-core)
7419 ("osgi-core" ,java-osgi-core)
7420 ("eclipse-osgi" ,java-eclipse-osgi)
7421 ("java-lmax-disruptor" ,java-lmax-disruptor)))))
7423 (define-public java-commons-cli
7425 (name "java-commons-cli")
7429 (uri (string-append "mirror://apache/commons/cli/source/"
7430 "commons-cli-" version "-src.tar.gz"))
7433 "05hgi2z01fqz374y719gl1dxzqvzci5af071zm7vxrjg9vczipm1"))))
7434 (build-system ant-build-system)
7437 `(#:jar-name "commons-cli.jar"
7439 (modify-phases %standard-phases
7441 (install-from-pom "pom.xml")))))
7443 `(("java-junit" ,java-junit)
7444 ("java-hamcrest-core" ,java-hamcrest-core)))
7445 (home-page "https://commons.apache.org/cli/")
7446 (synopsis "Command line arguments and options parsing library")
7447 (description "The Apache Commons CLI library provides an API for parsing
7448 command line options passed to programs. It is also able to print help
7449 messages detailing the options available for a command line tool.
7451 Commons CLI supports different types of options:
7454 @item POSIX like options (ie. tar -zxvf foo.tar.gz)
7455 @item GNU like long options (ie. du --human-readable --max-depth=1)
7456 @item Java like properties (ie. java -Djava.awt.headless=true Foo)
7457 @item Short options with value attached (ie. gcc -O2 foo.c)
7458 @item long options with single hyphen (ie. ant -projecthelp)
7461 This is a part of the Apache Commons Project.")
7462 (license license:asl2.0)))
7464 (define-public java-commons-codec
7466 (name "java-commons-codec")
7470 (uri (string-append "mirror://apache/commons/codec/source/"
7471 "commons-codec-" version "-src.tar.gz"))
7474 "11xr0agckkhm91pb5akf2mbk84yd54gyr178wj57gsm97fi7nkh9"))))
7475 (build-system ant-build-system)
7477 `(#:jar-name "java-commons-codec.jar"
7478 #:source-dir "src/main/java"
7479 #:test-dir "src/test"
7480 #:test-exclude (list "**/*AbstractTest.java")
7482 (modify-phases %standard-phases
7483 (add-before 'build 'copy-resources
7485 (copy-recursively "src/main/resources"
7488 (add-before 'check 'copy-test-resources
7490 (copy-recursively "src/test/resources"
7491 "build/test-classes")
7493 (replace 'install (install-from-pom "pom.xml")))))
7495 `(("java-commons-lang3" ,java-commons-lang3)
7496 ("java-junit" ,java-junit)))
7498 `(("apache-commons-parent-pom" ,apache-commons-parent-pom-50)))
7499 (home-page "https://commons.apache.org/codec/")
7500 (synopsis "Common encoders and decoders such as Base64, Hex, Phonetic and URLs")
7501 (description "The codec package contains simple encoder and decoders for
7502 various formats such as Base64 and Hexadecimal. In addition to these widely
7503 used encoders and decoders, the codec package also maintains a collection of
7504 phonetic encoding utilities.
7506 This is a part of the Apache Commons Project.")
7507 (license license:asl2.0)))
7509 (define-public java-commons-daemon
7511 (name "java-commons-daemon")
7515 (uri (string-append "mirror://apache/commons/daemon/source/"
7516 "commons-daemon-" version "-src.tar.gz"))
7519 "141gkhfzv5v3pdhic6y4ardq2dhsa3v36j8wmmhy6f8mac48fp7n"))))
7520 (build-system ant-build-system)
7522 `(#:test-target "test"
7524 (modify-phases %standard-phases
7525 (add-after 'build 'build-javadoc ant-build-javadoc)
7526 (replace 'install (install-jars "dist"))
7527 (add-after 'install 'install-doc (install-javadoc "dist/docs/api")))))
7529 `(("java-junit" ,java-junit)))
7530 (home-page "https://commons.apache.org/daemon/")
7531 (synopsis "Library to launch Java applications as daemons")
7532 (description "The Daemon package from Apache Commons can be used to
7533 implement Java applications which can be launched as daemons. For example the
7534 program will be notified about a shutdown so that it can perform cleanup tasks
7535 before its process of execution is destroyed by the operation system.
7537 This package contains the Java library. You will also need the actual binary
7538 for your architecture which is provided by the jsvc package.
7540 This is a part of the Apache Commons Project.")
7541 (license license:asl2.0)))
7543 (define-public java-javaewah
7545 (name "java-javaewah")
7550 (url "https://github.com/lemire/javaewah/")
7551 (commit (string-append "JavaEWAH-" version))))
7552 (file-name (git-file-name name version))
7555 "1m8qcb1py76v7avbjjrkvyy6fhr5dk2ywy73gbsxqry04gkm2nhw"))))
7556 (build-system ant-build-system)
7557 (arguments `(#:jar-name "javaewah.jar"))
7559 `(("java-junit" ,java-junit)
7560 ("java-hamcrest-core" ,java-hamcrest-core)))
7561 (home-page "https://github.com/lemire/javaewah")
7562 (synopsis "Compressed alternative to the Java @code{BitSet} class")
7563 (description "This is a word-aligned compressed variant of the Java
7564 @code{Bitset} class. It provides both a 64-bit and a 32-bit RLE-like
7565 compression scheme. It can be used to implement bitmap indexes.
7567 The goal of word-aligned compression is not to achieve the best compression,
7568 but rather to improve query processing time. Hence, JavaEWAH tries to save CPU
7569 cycles, maybe at the expense of storage. However, the EWAH scheme is always
7570 more efficient storage-wise than an uncompressed bitmap (as implemented in the
7571 @code{BitSet} class by Sun).")
7572 ;; GPL2.0 derivates are explicitly allowed.
7573 (license license:asl2.0)))
7575 (define-public java-slf4j-api
7577 (name "java-slf4j-api")
7581 (uri (string-append "https://www.slf4j.org/dist/slf4j-"
7585 "13j51sgzmhhdrfa74gkal5zpip7r1440dh7zsi2c8bpb2zs1v8kb"))
7586 (modules '((guix build utils)))
7587 ;; Delete bundled jars.
7590 (for-each delete-file (find-files "." "\\.jar$"))
7592 (build-system ant-build-system)
7594 `(#:jar-name "slf4j-api.jar"
7595 #:source-dir "slf4j-api/src/main"
7596 #:test-dir "slf4j-api/src/test"
7598 (modify-phases %standard-phases
7599 (add-after 'build 'regenerate-jar
7601 ;; pom.xml ignores these files in the jar creation process. If we don't,
7602 ;; we get the error "This code should have never made it into slf4j-api.jar"
7603 (delete-file-recursively "build/classes/org/slf4j/impl")
7604 (invoke "jar" "-cf" "build/jar/slf4j-api.jar" "-C"
7605 "build/classes" ".")))
7606 (add-before 'check 'dont-test-abstract-classes
7608 ;; abstract classes are not meant to be run with junit
7609 (substitute* "build.xml"
7610 (("<include name=\"\\*\\*/\\*Test.java\" />")
7611 (string-append "<include name=\"**/*Test.java\" />"
7612 "<exclude name=\"**/MultithreadedInitializationTest"
7616 (install-from-pom "slf4j-api/pom.xml")))))
7618 `(("java-slf4j-parent" ,java-slf4j-parent)))
7620 `(("java-junit" ,java-junit)
7621 ("java-hamcrest-core" ,java-hamcrest-core)))
7622 (home-page "https://www.slf4j.org/")
7623 (synopsis "Simple logging facade for Java")
7624 (description "The Simple Logging Facade for Java (SLF4J) serves as a
7625 simple facade or abstraction for various logging
7626 frameworks (e.g. @code{java.util.logging}, @code{logback}, @code{log4j})
7627 allowing the end user to plug in the desired logging framework at deployment
7629 (license license:expat)))
7631 (define java-slf4j-parent
7633 (inherit java-slf4j-api)
7634 (name "java-slf4j-parent")
7636 (propagated-inputs '())
7640 (modify-phases %standard-phases
7644 (install-pom-file "pom.xml")))))))
7646 (define-public java-slf4j-simple
7648 (name "java-slf4j-simple")
7650 (source (package-source java-slf4j-api))
7651 (build-system ant-build-system)
7653 `(#:jar-name "slf4j-simple.jar"
7654 #:source-dir "slf4j-simple/src/main"
7655 #:test-dir "slf4j-simple/src/test"
7657 (modify-phases %standard-phases
7658 ;; The tests need some test classes from slf4j-api
7659 (add-before 'check 'build-slf4j-api-test-helpers
7661 ;; Add current dir to CLASSPATH ...
7663 (string-append (getcwd) ":" (getenv "CLASSPATH")))
7664 ;; ... and build test helper classes here:
7667 ,@(find-files "slf4j-api/src/test" ".*\\.java")))))
7669 (install-from-pom "slf4j-simple/pom.xml")))))
7671 `(("java-slf4j-api" ,java-slf4j-api)))
7673 `(("java-junit" ,java-junit)
7674 ("java-hamcrest-core" ,java-hamcrest-core)))
7675 (home-page "https://www.slf4j.org/")
7676 (synopsis "Simple implementation of simple logging facade for Java")
7677 (description "SLF4J binding for the Simple implementation, which outputs
7678 all events to System.err. Only messages of level INFO and higher are
7680 (license license:expat)))
7682 (define-public antlr2
7688 (uri (string-append "https://www.antlr2.org/download/antlr-"
7692 "1ffvcwdw73id0dk6pj2mlxjvbg0662qacx4ylayqcxgg381fnfl5"))
7693 (modules '((guix build utils)))
7696 (delete-file "antlr.jar")
7697 (substitute* "lib/cpp/antlr/CharScanner.hpp"
7701 "#define EOF (-1)\n"
7702 "#include <strings.h>")))
7703 (substitute* "configure"
7706 (build-system gnu-build-system)
7708 `(#:tests? #f ; no test target
7709 #:imported-modules ((guix build ant-build-system)
7710 (guix build syscalls)
7711 ,@%gnu-build-system-modules)
7712 #:modules (((guix build ant-build-system) #:prefix ant:)
7713 (guix build gnu-build-system)
7716 (modify-phases %standard-phases
7717 (add-after 'install 'strip-jar-timestamps
7718 (assoc-ref ant:%standard-phases 'strip-jar-timestamps))
7719 (add-before 'configure 'fix-timestamp
7721 (substitute* "configure"
7722 (("^TIMESTAMP.*") "TIMESTAMP=19700101\n"))
7724 (add-after 'configure 'fix-bin-ls
7726 (substitute* (find-files "." "Makefile")
7732 ("java" ,icedtea "jdk")))
7734 `(("java" ,icedtea)))
7735 (home-page "https://www.antlr2.org")
7736 (synopsis "Framework for constructing recognizers, compilers, and translators")
7737 (description "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)
7738 is a language tool that provides a framework for constructing recognizers,
7739 compilers, and translators from grammatical descriptions containing Java, C#,
7740 C++, or Python actions. ANTLR provides excellent support for tree construction,
7741 tree walking, and translation.")
7742 (license license:public-domain)))
7744 (define-public java-stringtemplate-3
7746 (name "java-stringtemplate")
7750 (uri (string-append "https://github.com/antlr/website-st4/raw/"
7751 "gh-pages/download/stringtemplate-"
7755 "086yj68np1vqhkj7483diz3km6s6y4gmwqswa7524a0ca6vxn2is"))))
7756 (build-system ant-build-system)
7758 `(#:jar-name (string-append ,name "-" ,version ".jar")
7760 #:modules ((guix build ant-build-system)
7764 (modify-phases %standard-phases
7765 (add-before 'check 'fix-tests
7767 (substitute* "build.xml"
7768 (("\\$\\{test.home\\}/java")
7769 "${test.home}/org"))
7771 (add-before 'build 'generate-grammar
7773 (with-directory-excursion "src/org/antlr/stringtemplate/language/"
7774 (for-each (lambda (file)
7775 (format #t "~a\n" file)
7776 (invoke "antlr" file))
7777 '("template.g" "angle.bracket.template.g" "action.g"
7778 "eval.g" "group.g" "interface.g")))
7782 ("java-junit" ,java-junit)))
7783 (home-page "https://www.stringtemplate.org")
7784 (synopsis "Template engine to generate formatted text output")
7785 (description "StringTemplate is a java template engine (with ports for C#,
7786 Objective-C, JavaScript, Scala) for generating source code, web pages, emails,
7787 or any other formatted text output. StringTemplate is particularly good at
7788 code generators, multiple site skins, and internationalization / localization.
7789 StringTemplate also powers ANTLR.")
7790 (license license:bsd-3)))
7792 ;; antlr3 is partially written using antlr3 grammar files. It also depends on
7793 ;; ST4 (stringtemplate4), which is also partially written using antlr3 grammar
7794 ;; files and uses antlr3 at runtime. The latest version requires a recent version
7795 ;; of antlr3 at runtime.
7796 ;; Fortunately, ST4 4.0.6 can be built with an older antlr3, and we use antlr3.3.
7797 ;; This version of ST4 is sufficient for the latest antlr3.
7798 ;; We use ST4 4.0.6 to build a boostrap antlr3 (latest version), and build
7799 ;; the latest ST4 with it. Then we build our final antlr3 that will be linked
7800 ;; against the latest ST4.
7801 ;; antlr3.3 still depends on antlr3 to generate some files, so we use an
7802 ;; even older version, antlr3.1, to generate them. Fortunately antlr3.1 uses
7803 ;; only grammar files with the antlr2 syntax.
7804 ;; So we build antlr3.1 -> antlr3.3 -> ST4.0.6 -> antlr3-bootstrap -> ST4 -> antlr3.
7806 (define-public java-stringtemplate
7807 (package (inherit java-stringtemplate-3)
7808 (name "java-stringtemplate")
7812 (uri (string-append "https://github.com/antlr/stringtemplate4/archive/"
7814 (file-name (string-append name "-" version ".tar.gz"))
7817 "1pri8hqa95rfdkjy55icl5q1m09zwp5k67ib14abas39s4v3w087"))))
7818 (build-system ant-build-system)
7820 `(#:jar-name (string-append ,name "-" ,version ".jar")
7821 #:tests? #f ; FIXME: tests fail for unknown reasons
7823 #:modules ((guix build ant-build-system)
7827 (modify-phases %standard-phases
7828 (add-before 'check 'fix-test-target
7830 (substitute* "build.xml"
7831 (("\\$\\{test.home\\}/java") "${test.home}/")
7832 (("\\*Test.java") "Test*.java"))
7834 (add-before 'build 'generate-grammar
7836 (with-directory-excursion "src/org/stringtemplate/v4/compiler/"
7837 (for-each (lambda (file)
7838 (format #t "~a\n" file)
7839 (invoke "antlr3" file))
7840 '("STParser.g" "Group.g" "CodeGenerator.g")))
7843 `(("antlr3" ,antlr3-bootstrap)
7845 ("java-stringtemplate" ,java-stringtemplate-3)
7846 ("java-junit" ,java-junit)))))
7848 (define java-stringtemplate-4.0.6
7849 (package (inherit java-stringtemplate)
7850 (name "java-stringtemplate")
7854 (uri (string-append "https://github.com/antlr/stringtemplate4/archive/ST-"
7856 (file-name (string-append name "-" version ".tar.gz"))
7859 "0hjmh1ahdsh3w825i67mli9l4nncc4l6hdbf9ma91jvlj590sljp"))))
7861 `(("antlr3" ,antlr3-3.3)
7863 ("java-stringtemplate" ,java-stringtemplate-3)))))
7865 (define-public antlr3
7872 (url "https://github.com/antlr/antlr3")
7874 (file-name (git-file-name name version))
7877 "0cafavrjmzqhklghrk8c2jqxkdwxgzskm20pbrfd3r41cn00dpnf"))))
7878 (build-system ant-build-system)
7880 `(#:jar-name (string-append ,name "-" ,version ".jar")
7881 #:source-dir "tool/src/main/java:runtime/Java/src/main/java:tool/src/main/antlr3"
7884 (modify-phases %standard-phases
7885 (add-after 'install 'bin-install
7886 (lambda* (#:key inputs outputs #:allow-other-keys)
7887 (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
7888 (bin (string-append (assoc-ref outputs "out") "/bin")))
7890 (with-output-to-file (string-append bin "/antlr3")
7893 (string-append "#!" (which "sh") "\n"
7894 "java -cp " jar "/" ,name "-" ,version ".jar:"
7896 (find-files (assoc-ref inputs "stringtemplate")
7900 (find-files (assoc-ref inputs "stringtemplate4")
7904 (find-files (string-append
7905 (assoc-ref inputs "antlr")
7908 " org.antlr.Tool $*"))))
7909 (chmod (string-append bin "/antlr3") #o755))
7911 (add-before 'build 'generate-grammar
7913 (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/")
7914 (for-each (lambda (file)
7917 (invoke "antlr3" file))
7918 '("ANTLR.g" "ANTLRTreePrinter.g" "ActionAnalysis.g"
7919 "AssignTokenTypesWalker.g"
7920 "ActionTranslator.g" "TreeToNFAConverter.g"
7921 "ANTLRv3.g" "ANTLRv3Tree.g" "LeftRecursiveRuleWalker.g"
7922 "CodeGenTreeWalker.g" "DefineGrammarItemsWalker.g"))
7923 (substitute* "ANTLRParser.java"
7924 (("public Object getTree") "public GrammarAST getTree"))
7925 (substitute* "ANTLRv3Parser.java"
7926 (("public Object getTree") "public CommonTree getTree"))
7927 (chdir "../../../../../java")
7928 (substitute* "org/antlr/tool/LeftRecursiveRuleAnalyzer.java"
7929 (("import org.antlr.grammar.v3.\\*;") "import org.antlr.grammar.v3.*;
7930 import org.antlr.grammar.v3.ANTLRTreePrinter;"))
7931 (substitute* "org/antlr/tool/ErrorManager.java"
7932 (("case NO_SUCH_ATTRIBUTE_PASS_THROUGH:") ""))
7933 (chdir "../../../..")
7935 (add-before 'build 'fix-build-xml
7937 (substitute* "build.xml"
7938 (("target name=\"compile\">")
7939 "target name=\"compile\">
7940 <copy todir=\"${classes.dir}\">
7941 <fileset dir=\"tool/src/main/resources\">
7942 <include name=\"**/*.stg\"/>
7943 <include name=\"**/*.st\"/>
7944 <include name=\"**/*.sti\"/>
7945 <include name=\"**/STLexer.tokens\"/>
7951 ("antlr3" ,antlr3-bootstrap)))
7953 `(("junit" ,java-junit)
7954 ("stringtemplate" ,java-stringtemplate-3)
7955 ("stringtemplate4" ,java-stringtemplate)))
7957 `(("stringtemplate" ,java-stringtemplate-3)
7959 ("stringtemplate4" ,java-stringtemplate-4.0.6)))
7960 (home-page "https://www.antlr3.org")
7961 (synopsis "Framework for constructing recognizers, compilers, and translators")
7962 (description "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)
7963 is a language tool that provides a framework for constructing recognizers,
7964 compilers, and translators from grammatical descriptions containing Java, C#,
7965 C++, or Python actions. ANTLR provides excellent support for tree construction,
7966 tree walking, and translation.")
7967 (license license:bsd-3)))
7969 (define antlr3-bootstrap
7972 (name "antlr3-bootstrap")
7975 ("antlr3" ,antlr3-3.3)))
7977 `(("junit" ,java-junit)))))
7979 (define-public antlr3-3.3
7986 (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
7987 "gh-pages/download/antlr-"
7991 "0qgg5vgsm4l1d6dj9pfbaa25dpv2ry2gny8ajy4vvgvfklw97b3m"))
7993 (search-patches "antlr3-3_3-fix-java8-compilation.patch"))))
7995 `(#:jar-name (string-append ,name "-" ,version ".jar")
7996 #:source-dir (string-join '("tool/src/main/java"
7997 "runtime/Java/src/main/java"
7998 "tool/src/main/antlr2"
7999 "tool/src/main/antlr3")
8001 #:tests? #f ; FIXME: tests seem to require maven plugin
8002 #:modules ((guix build ant-build-system)
8006 (modify-phases %standard-phases
8007 (add-after 'install 'bin-install
8008 (lambda* (#:key inputs outputs #:allow-other-keys)
8009 (let* ((out (assoc-ref outputs "out"))
8010 (jar (string-append out "/share/java"))
8011 (bin (string-append out "/bin")))
8013 (with-output-to-file (string-append bin "/antlr3")
8017 "#!" (which "sh") "\n"
8018 "java -cp " jar "/antlr3-3.3.jar:"
8020 (append (find-files (assoc-ref inputs "java-stringtemplate")
8022 (find-files (string-append (assoc-ref inputs "antlr")
8026 " org.antlr.Tool $*"))))
8027 (chmod (string-append bin "/antlr3") #o755)
8029 (add-before 'build 'generate-grammar
8031 (substitute* "tool/src/main/java/org/antlr/tool/Grammar.java"
8032 (("import org.antlr.grammar.v2.\\*;")
8033 "import org.antlr.grammar.v2.*;\n
8034 import org.antlr.grammar.v2.TreeToNFAConverter;\n
8035 import org.antlr.grammar.v2.DefineGrammarItemsWalker;\n
8036 import org.antlr.grammar.v2.ANTLRTreePrinter;"))
8037 (with-directory-excursion "tool/src/main/antlr2/org/antlr/grammar/v2/"
8038 (for-each (lambda (file)
8039 (format #t "~a\n" file)
8040 (invoke "antlr" file))
8041 '("antlr.g" "antlr.print.g" "assign.types.g"
8042 "buildnfa.g" "codegen.g" "define.g")))
8043 (with-directory-excursion "tool/src/main/antlr3/org/antlr/grammar/v3/"
8044 (for-each (lambda (file)
8045 (format #t "~a\n" file)
8046 (invoke "antlr3" file))
8047 '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g"
8050 (add-before 'build 'fix-build-xml
8052 (substitute* "build.xml"
8053 (("target name=\"compile\">")
8054 "target name=\"compile\">
8055 <copy todir=\"${classes.dir}\">
8056 <fileset dir=\"tool/src/main/resources\">
8057 <include name=\"**/*.stg\"/>
8058 <include name=\"**/*.st\"/>
8059 <include name=\"**/*.sti\"/>
8060 <include name=\"**/STLexer.tokens\"/>
8066 ("antlr3" ,antlr3-3.1)))
8068 `(("junit" ,java-junit)))
8070 `(("java-stringtemplate" ,java-stringtemplate-3)
8071 ("antlr" ,antlr2)))))
8073 (define-public antlr3-3.1
8079 (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
8080 "gh-pages/download/antlr-"
8084 "0sfimc9cpbgrihz4giyygc8afgpma2c93yqpwb951giriri6x66z"))
8086 (search-patches "antlr3-3_1-fix-java8-compilation.patch"))))
8088 `(#:jar-name (string-append "antlr3-" ,version ".jar")
8089 #:source-dir "src:runtime/Java/src"
8092 (modify-phases %standard-phases
8093 (add-after 'install 'bin-install
8094 (lambda* (#:key inputs outputs #:allow-other-keys)
8095 (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
8096 (bin (string-append (assoc-ref outputs "out") "/bin")))
8098 (with-output-to-file (string-append bin "/antlr3")
8101 (string-append "#!" (which "sh") "\n"
8102 "java -cp " jar "/antlr3-3.1.jar:"
8104 (find-files (assoc-ref inputs "stringtemplate")
8108 (find-files (string-append
8109 (assoc-ref inputs "antlr")
8112 " org.antlr.Tool $*"))))
8113 (chmod (string-append bin "/antlr3") #o755))
8115 (add-before 'build 'generate-grammar
8117 (let ((dir "src/org/antlr/tool/"))
8118 (for-each (lambda (file)
8121 (invoke "antlr" "-o" dir (string-append dir file)))
8122 '("antlr.g" "antlr.print.g" "assign.types.g"
8123 "buildnfa.g" "define.g")))
8124 (format #t "codegen.g\n")
8125 (invoke "antlr" "-o" "src/org/antlr/codegen"
8126 "src/org/antlr/codegen/codegen.g")
8128 (add-before 'build 'fix-build-xml
8130 (substitute* "build.xml"
8131 (("target name=\"compile\">")
8132 "target name=\"compile\">
8133 <copy todir=\"${classes.dir}\">
8134 <fileset dir=\"src\">
8135 <include name=\"**/*.stg\"/>
8136 <include name=\"**/*.st\"/>
8137 <include name=\"**/*.sti\"/>
8138 <include name=\"**/STLexer.tokens\"/>
8143 `(("antlr" ,antlr2)))
8145 `(("junit" ,java-junit)))
8147 `(("stringtemplate" ,java-stringtemplate-3)))))
8149 (define-public java-treelayout
8151 (name "java-treelayout")
8156 (url "https://github.com/abego/treelayout")
8157 (commit (string-append "v" version))))
8158 (file-name (git-file-name name version))
8161 "18my8ql9b1y0n0zrvkih7xfhf3dpgfhyfifvkcfhmwcvw3divxak"))))
8162 (build-system ant-build-system)
8164 `(#:jar-name (string-append ,name "-" ,version ".jar")
8165 #:source-dir "org.abego.treelayout/src/main/java"
8166 #:test-dir "org.abego.treelayout/src/test"))
8168 `(("java-junit" ,java-junit)))
8170 `(("java-hamcrest-core" ,java-hamcrest-core)))
8171 (home-page "http://treelayout.sourceforge.net")
8172 (synopsis "Tree Layout Algorithm in Java")
8173 (description "TreeLayout creates tree layouts for arbitrary trees. It is
8174 not restricted to a specific output or format, but can be used for any kind of
8175 two dimensional diagram. Examples are Swing based components, SVG files, etc.
8176 This is possible because TreeLayout separates the layout of a tree from the
8178 (license license:bsd-3)))
8180 (define-public java-antlr4-runtime
8182 (name "java-antlr4-runtime")
8187 (url "https://github.com/antlr/antlr4")
8189 (file-name (git-file-name name version))
8192 "1qal3add26qxskm85nk7r758arladn5rcyjinmhlhznmpbbv9j8m"))
8194 (search-patches "java-antlr4-Add-standalone-generator.patch"
8195 "java-antlr4-fix-code-too-large.java"))))
8196 (build-system ant-build-system)
8198 `(#:jar-name "java-antlr4-runtime.jar"
8199 #:source-dir "runtime/Java/src/org"
8200 #:tests? #f; tests depend on java-antlr4 itself
8202 (modify-phases %standard-phases
8203 (add-before 'build 'copy-resources
8205 (copy-recursively "runtime/Java/src/main/dot"
8208 (home-page "https://antlr.org")
8209 (synopsis "ANTLR runtime library")
8210 (description "This package contains the runtime library used with generated
8212 (license license:bsd-3)))
8214 (define-public antlr4
8216 (inherit java-antlr4-runtime)
8219 `(#:jar-name "antlr4.jar"
8220 #:source-dir "tool/src"
8221 #:test-dir "tool-testsuite/test:runtime-testsuite/test:runtime-testsuite/annotations/src"
8222 #:test-include (list "**/Test*.java")
8223 #:test-exclude (list
8224 ;; no runnable method
8225 "**/TestOutputReading.java"
8227 "**/TestParserErrors.java"
8228 "**/TestSemPredEvalParser.java"
8230 "**/TestListeners.java"
8231 "**/TestParseTrees.java"
8232 "**/TestParserExec.java"
8233 "**/TestLexerErrors.java"
8234 "**/TestPerformance.java"
8235 "**/TestCompositeParsers.java"
8236 "**/TestLexerExec.java"
8237 "**/TestSemPredEvalLexer.java"
8238 "**/TestLeftRecursion.java"
8239 "**/TestFullContextParsing.java"
8240 "**/TestCompositeLexers.java"
8241 ;; Null pointer exception
8242 "**/TestCompositeGrammars.java"
8243 ;; Wrong assumption on emoji
8244 "**/TestUnicodeData.java")
8246 (modify-phases %standard-phases
8247 (add-before 'build 'fix-build.xml
8249 ;; tests are not in a java subdirectory
8250 (substitute* "build.xml"
8251 (("\\$\\{test.home\\}/java") "${test.home}"))
8253 ;; tests require to have a working antlr4 binary
8255 (add-after 'bin-install 'check
8257 (invoke "ant" "compile-tests")
8258 (invoke "ant" "check" "-Dtest.home=runtime-testsuite/annotations/src")
8259 (invoke "ant" "check" "-Dtest.home=runtime-testsuite/test")
8260 (invoke "ant" "check" "-Dtest.home=tool-testsuite/test")
8262 (add-before 'check 'remove-unrelated-languages
8264 ;; There are tests for other languages that ANTLR can generate, but
8265 ;; we don't have the infrastructure for that yet. Let's test Java
8269 (delete-file-recursively
8270 (string-append "runtime-testsuite/test/org/antlr/v4/test/runtime/"
8272 '("cpp" "csharp" "go" "javascript" "php" "python" "python2"
8275 (add-before 'check 'generate-test-parsers
8276 (lambda* (#:key outputs #:allow-other-keys)
8277 (define (run-antlr dir filename package)
8278 (invoke "antlr4" "-lib" dir "-visitor" "-no-listener"
8279 "-package" package (string-append dir "/" filename)
8281 (setenv "PATH" (string-append (getenv "PATH") ":"
8282 (assoc-ref outputs "out") "/bin"))
8283 (run-antlr "runtime-testsuite/test/org/antlr/v4/test/runtime/java/api"
8284 "Java.g4" "org.antlr.v4.test.runtime.java.api")
8285 (run-antlr "runtime-testsuite/test/org/antlr/v4/test/runtime/java/api"
8286 "VisitorBasic.g4" "org.antlr.v4.test.runtime.java.api")
8287 (run-antlr "runtime-testsuite/test/org/antlr/v4/test/runtime/java/api"
8288 "VisitorCalc.g4" "org.antlr.v4.test.runtime.java.api")
8290 (add-before 'check 'remove-graphemes
8292 ;; When running antlr on grahemes.g4, we get a runtime exception:
8293 ;; set is empty. So delete the file that depends on it.
8295 "runtime-testsuite/test/org/antlr/v4/test/runtime/java/api/perf/TimeLexerSpeed.java")
8297 (add-after 'install 'bin-install
8298 (lambda* (#:key inputs outputs #:allow-other-keys)
8299 (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
8300 (bin (string-append (assoc-ref outputs "out") "/bin")))
8302 (with-output-to-file (string-append bin "/antlr4")
8305 (string-append "#!" (which "sh") "\n"
8306 "java -cp " jar "/antlr4.jar:"
8312 (find-files (assoc-ref inputs input)
8314 '("antlr3" "java-stringtemplate"
8315 "java-antlr4-runtime" "java-treelayout"
8316 "java-jsonp-api" "java-icu4j")))
8318 " org.antlr.v4.Tool $*"))))
8319 (chmod (string-append bin "/antlr4") #o755)
8321 (add-before 'build 'copy-resources
8323 (copy-recursively "tool/resources/" "build/classes")
8325 (add-before 'build 'generate-unicode
8327 ;; First: build the generator
8328 (invoke "javac" "-cp" (getenv "CLASSPATH")
8329 "tool/src/org/antlr/v4/unicode/UnicodeRenderer.java"
8330 "tool/src/org/antlr/v4/unicode/UnicodeDataTemplateController.java")
8332 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
8333 ":tool/src:runtime/Java")
8334 "org.antlr.v4.unicode.UnicodeRenderer"
8335 "tool/resources/org/antlr/v4/tool/templates"
8337 "tool/src/org/antlr/v4/unicode/UnicodeData.java")
8338 ;; It seems there is a bug with our ST4
8339 (substitute* "tool/src/org/antlr/v4/unicode/UnicodeData.java"
8341 ;; Remove the additional file
8342 (delete-file "tool/src/org/antlr/v4/unicode/UnicodeRenderer.java")
8344 (add-before 'build 'generate-grammar
8345 (lambda* (#:key inputs #:allow-other-keys)
8346 (with-directory-excursion "tool/src/org/antlr/v4/parse"
8347 (for-each (lambda (file)
8350 (invoke "antlr3" file))
8351 '("ANTLRLexer.g" "ANTLRParser.g" "BlockSetTransformer.g"
8352 "GrammarTreeVisitor.g" "ATNBuilder.g"
8353 "ActionSplitter.g" "LeftRecursiveRuleWalker.g")))
8354 (with-directory-excursion "tool/src/org/antlr/v4/codegen"
8355 (install-file "../parse/ANTLRParser.tokens" ".")
8356 (display "SourceGenTriggers.g\n")
8357 (invoke "antlr3" "SourceGenTriggers.g"))
8360 `(("antlr3" ,antlr3)
8361 ("java-antlr4-runtime" ,java-antlr4-runtime)
8362 ("java-icu4j" ,java-icu4j)
8363 ("java-jsonp-api" ,java-jsonp-api)
8364 ("java-stringtemplate" ,java-stringtemplate)
8365 ("java-treelayout" ,java-treelayout)))
8367 `(("java-junit" ,java-junit)))
8368 (synopsis "Parser and lexer generator in Java")
8369 (description "ANTLR (ANother Tool for Language Recognition) is a powerful
8370 parser generator for reading, processing, executing, or translating structured
8371 text or binary files. It's widely used to build languages, tools, and
8372 frameworks. From a grammar, ANTLR generates a parser that can build and walk
8375 (define-public java-commons-cli-1.2
8376 ;; This is a bootstrap dependency for Maven2.
8378 (inherit java-commons-cli)
8382 (uri (string-append "mirror://apache/commons/cli/source/"
8383 "commons-cli-" version "-src.tar.gz"))
8386 "0rvfgzgv2pc1m091dfj3ih9ddsjjppr1f1wf0qmc3bk6b1kwv2dm"))))
8388 `(#:jar-name "commons-cli.jar"
8390 (modify-phases %standard-phases
8391 (add-before 'check 'fix-build-xml
8392 (lambda* (#:key inputs #:allow-other-keys)
8393 (substitute* "build.xml"
8394 (("dir=\"\\$\\{test.home\\}/java\"")
8395 "dir=\"${test.home}\""))
8398 `(("java-junit" ,java-junit)))))
8400 (define-public java-microemulator-cldc
8402 (name "java-microemulator-cldc")
8406 (uri (string-append "https://github.com/barteo/microemu/archive/"
8408 (string-map (lambda (c) (if (char=? c #\.) #\_ c))
8411 (file-name (string-append name "-" version ".tar.gz"))
8414 "1x1apmz38gkppxnwnygwmi12j54v4p258v8ddzn6dldkk7vak1ll"))))
8415 (build-system ant-build-system)
8417 `(#:jar-name "microemulator-cldc.jar"
8418 #:source-dir "microemu-cldc/src/main/java"
8419 #:tests? #f)); Requires even older software
8420 (home-page "https://github.com/barteo/microemu")
8421 (synopsis "J2ME CLDC emulator")
8422 (description "Microemulator is a Java 2 Micro Edition (J2ME) CLDC/MIDP
8423 Emulator. It demonstrates MIDlet based applications in web browser
8424 applet and can be run as a standalone java application.")
8425 (license (list license:asl2.0
8427 license:lgpl2.1+))))
8429 (define-public java-datanucleus-javax-persistence
8431 (name "java-datanucleus-javax-persistence")
8435 (uri (string-append "https://github.com/datanucleus/"
8436 "javax.persistence/archive/javax.persistence-"
8437 version "-release.tar.gz"))
8440 "11jx0fjwgc2hhbqqgdd6m1pf2fplf9vslppygax0y1z5csnqjhpx"))))
8441 (build-system ant-build-system)
8443 `(#:jar-name "java-datanucleus-javax-persistence.jar"
8445 #:source-dir "src/main/java"
8446 #:tests? #f)); no tests
8447 (home-page "https://github.com/datanucleus/javax.persistence")
8448 (synopsis "JPA API")
8449 (description "This package contains a clean definition of JPA API intended
8450 for use with DataNucleus JPA since the JCP haven't provided an official JPA API
8451 jar. See @url{http://java.net/projects/jpa-spec/downloads} for the specification
8452 used to generate this API.")
8453 (license (list license:edl1.0 license:epl1.0))))
8455 (define-public java-osgi-cmpn
8457 (name "java-osgi-cmpn")
8461 (uri (string-append "https://repo1.maven.org/maven2/"
8462 "org/osgi/osgi.cmpn/" version "/osgi.cmpn-"
8463 version "-sources.jar"))
8466 "1lmb6xyrmkqdhv1kayf0514rlwq6ypvs4m44ibrck3snp8241wys"))))
8467 (build-system ant-build-system)
8469 `(#:jar-name "osgi-cmpn.jar"
8470 #:tests? #f)); no tests
8472 `(("annotation" ,java-osgi-annotation)
8473 ("core" ,java-osgi-core)
8474 ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
8475 ("microemulator" ,java-microemulator-cldc)
8476 ("servlet" ,java-classpathx-servletapi)))
8477 (home-page "https://www.osgi.org")
8478 (synopsis "Compendium specification module of OSGi framework")
8480 "OSGi, for Open Services Gateway initiative framework, is a module system
8481 and service platform for the Java programming language. This package contains
8482 the compendium specification module, providing interfaces and classes for use
8483 in compiling bundles.")
8484 (license license:asl2.0)))
8486 (define-public java-osgi-service-component-annotations
8488 (name "java-osgi-service-component-annotations")
8492 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8493 "org.osgi.service.component.annotations/"
8494 version "/org.osgi.service.component.annotations-"
8495 version "-sources.jar"))
8498 "15rq9cmp4fpn74q44m4j35qsqmjf5lx3hcrk6pzvbhc08igic2f0"))))
8499 (build-system ant-build-system)
8501 `(#:jar-name "osgi-service-component-annotations.jar"
8502 #:tests? #f)); no tests
8504 `(("annotation" ,java-osgi-annotation)))
8505 (home-page "https://www.osgi.org")
8506 (synopsis "Support annotations for osgi-service-component")
8508 "OSGi, for Open Services Gateway initiative framework, is a module system
8509 and service platform for the Java programming language. This package contains
8510 the support annotations for osgi-service-component.")
8511 (license license:asl2.0)))
8513 (define-public java-osgi-dto
8515 (name "java-osgi-dto")
8519 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8520 "org.osgi.dto/" version "/org.osgi.dto-"
8521 version "-sources.jar"))
8524 "0f4bqjzadn0hwk6sd3h5gvbyfp3yci1s6r0v770cc15p0pg627yr"))))
8525 (build-system ant-build-system)
8527 `(#:jar-name "osgi-dto.jar"
8528 #:tests? #f)); no tests
8530 `(("annotation" ,java-osgi-annotation)))
8531 (home-page "https://www.osgi.org")
8532 (synopsis "Data Transfer Objects")
8534 "OSGi, for Open Services Gateway initiative framework, is a module system
8535 and service platform for the Java programming language. This package contains
8536 the Data Transfer Objects. It is easily serializable having only public fields
8537 of primitive types and their wrapper classes, Strings, and DTOs. List, Set,
8538 Map and array aggregates may also be used. The aggregates must only hold
8539 objects of the listed types or aggregates.")
8540 (license license:asl2.0)))
8542 (define-public java-osgi-resource
8544 (name "java-osgi-resource")
8548 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8549 "org.osgi.resource/"
8550 version "/org.osgi.resource-"
8551 version "-sources.jar"))
8554 "0hi0fsc5v99q22bd7lrkvpz1y0ds4w9arjldpwsrcpqvz2js7q2d"))))
8555 (build-system ant-build-system)
8557 `(#:jar-name "osgi-resource.jar"
8558 #:tests? #f)); no tests
8560 `(("annotation" ,java-osgi-annotation)
8561 ("dto" ,java-osgi-dto)))
8562 (home-page "https://www.osgi.org")
8563 (synopsis "OSGI Resource")
8565 "OSGi, for Open Services Gateway initiative framework, is a module system
8566 and service platform for the Java programming language. This package contains
8567 the definition of common types in osgi packages.")
8568 (license license:asl2.0)))
8570 (define-public java-osgi-namespace-contract
8572 (name "java-osgi-namespace-contract")
8576 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8577 "org.osgi.namespace.contract/"
8578 version "/org.osgi.namespace.contract-"
8579 version "-sources.jar"))
8582 "1iz4f2i0fvqrlq90ki9nfzcfpvy2av434ri25bglywqssx8mmp36"))))
8583 (build-system ant-build-system)
8585 `(("resource" ,java-osgi-resource)
8586 ("annotation" ,java-osgi-annotation)))
8588 `(#:jar-name "osgi-namespace-contract.jar"
8589 #:tests? #f)); no tests
8590 (home-page "https://www.osgi.org")
8591 (synopsis "Contract Capability and Requirement Namespace")
8593 "OSGi, for Open Services Gateway initiative framework, is a module system
8594 and service platform for the Java programming language. This package contains
8595 the names for the attributes and directives for a namespace with contracts.")
8596 (license license:asl2.0)))
8598 (define-public java-osgi-namespace-extender
8600 (name "java-osgi-namespace-extender")
8604 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8605 "org.osgi.namespace.extender/"
8606 version "/org.osgi.namespace.extender-"
8607 version "-sources.jar"))
8610 "0jgqiak2i05qv6j3gd33xlaifzzc0ylxxk376v2x0apfg3vvixmz"))))
8611 (build-system ant-build-system)
8613 `(("resource" ,java-osgi-resource)
8614 ("annotation" ,java-osgi-annotation)))
8616 `(#:jar-name "osgi-namespace-extendent.jar"
8617 #:tests? #f)); no tests
8618 (home-page "https://www.osgi.org")
8619 (synopsis "Extender Capability and Requirement Namespace")
8621 "OSGi, for Open Services Gateway initiative framework, is a module system
8622 and service platform for the Java programming language. This package contains
8623 the names for the attributes and directives for an extender namespace.")
8624 (license license:asl2.0)))
8626 (define-public java-osgi-namespace-service
8628 (name "java-osgi-namespace-service")
8632 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8633 "org.osgi.namespace.service/"
8634 version "/org.osgi.namespace.service-"
8635 version "-sources.jar"))
8638 "0qmw8n2449nkmm56d1znz9zhazb6ya3vsimd5bf5jg23zzhgl8c8"))))
8639 (build-system ant-build-system)
8641 `(("resource" ,java-osgi-resource)
8642 ("annotation" ,java-osgi-annotation)))
8644 `(#:jar-name "osgi-namespace-service.jar"
8645 #:tests? #f)); no tests
8646 (home-page "https://www.osgi.org")
8647 (synopsis "Service Capability and Requirement Namespace")
8649 "OSGi, for Open Services Gateway initiative framework, is a module system
8650 and service platform for the Java programming language. This package contains
8651 the names for the attributes and directives for a service namespace.")
8652 (license license:asl2.0)))
8654 (define-public java-osgi-util-function
8656 (name "java-osgi-util-function")
8660 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8661 "org.osgi.util.function/"
8662 version "/org.osgi.util.function-"
8663 version "-sources.jar"))
8666 "04l7j3hwmmj28w23m7paca0afzncs42j2mdr3liqq8kvp548sc6x"))))
8667 (build-system ant-build-system)
8669 `(#:jar-name "osgi-util-function.jar"
8670 #:tests? #f)); no tests
8672 `(("annotation" ,java-osgi-annotation)))
8673 (home-page "https://www.osgi.org")
8674 (synopsis "OSGI Util Function")
8676 "OSGi, for Open Services Gateway initiative framework, is a module system
8677 and service platform for the Java programming language. This package contains
8678 an interface for a function that accepts a single argument and produces a result.")
8679 (license license:asl2.0)))
8681 (define-public java-osgi-util-promise
8683 (name "java-osgi-util-promise")
8687 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8688 "org.osgi.util.promise/"
8689 version "/org.osgi.util.promise-"
8690 version "-sources.jar"))
8693 "0y34dwiflg1c4ahvkswpf9z02xph2sr9fm04ia5493x3lshpw22c"))))
8694 (build-system ant-build-system)
8696 `(#:jar-name "osgi-util-promise.jar"
8697 #:tests? #f)); no tests
8699 `(("annotation" ,java-osgi-annotation)
8700 ("function" ,java-osgi-util-function)))
8701 (home-page "https://www.osgi.org")
8702 (synopsis "Promise of a value")
8704 "OSGi, for Open Services Gateway initiative framework, is a module system
8705 and service platform for the Java programming language. This package contains
8706 an interface and utilitary classes for promises. A Promise represents a future
8707 value. It handles the interactions for asynchronous processing.")
8708 (license license:asl2.0)))
8710 (define-public java-osgi-service-metatype-annotations
8712 (name "java-osgi-service-metatype-annotations")
8716 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8717 "org.osgi.service.metatype.annotations/"
8718 version "/org.osgi.service.metatype.annotations-"
8719 version "-sources.jar"))
8722 "12rwm3349wk80vm88rcdgs4435m4jxkpkj5mrx326skkz2c6hyw6"))))
8723 (build-system ant-build-system)
8725 `(#:jar-name "osgi-service-metatype-annotations.jar"
8726 #:tests? #f)); no tests
8728 `(("annotation" ,java-osgi-annotation)))
8729 (home-page "https://www.osgi.org")
8730 (synopsis "Support annotations for metatype")
8732 "OSGi, for Open Services Gateway initiative framework, is a module system
8733 and service platform for the Java programming language. This package contains
8734 the support annotations for metatype.")
8735 (license license:asl2.0)))
8737 (define-public java-osgi-service-repository
8739 (name "java-osgi-service-repository")
8743 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8744 "org.osgi.service.repository/"
8745 version "/org.osgi.service.repository-"
8746 version "-sources.jar"))
8749 "1k41mhg7b58pd8nsghr2qwcjrxdnf1p9spsw9v11k4257g6rl06n"))))
8750 (build-system ant-build-system)
8752 `(#:jar-name "osgi-service-repository.jar"
8753 #:tests? #f)); no tests
8755 `(("annotation" ,java-osgi-annotation)
8756 ("promise" ,java-osgi-util-promise)
8757 ("resource" ,java-osgi-resource)))
8758 (home-page "https://www.osgi.org")
8759 (synopsis "OSGI service repository")
8761 "OSGi, for Open Services Gateway initiative framework, is a module system
8762 and service platform for the Java programming language. This package contains
8763 a repository service that contains resources.")
8764 (license license:asl2.0)))
8766 (define-public java-osgi-framework
8768 (name "java-osgi-framework")
8772 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8773 "org.osgi.framework/" version "/org.osgi.framework-"
8774 version "-sources.jar"))
8777 "1lwp2zfad3rybcc6q9bwz8xsgkc92ypzy5p6x54387f1qj65m73s"))))
8778 (build-system ant-build-system)
8780 `(#:jar-name "osgi-framework.jar"
8781 #:tests? #f)); no tests
8783 `(("annotation" ,java-osgi-annotation)
8784 ("resource" ,java-osgi-resource)
8785 ("dto" ,java-osgi-dto)))
8786 (home-page "https://www.osgi.org")
8787 (synopsis "OSGi framework")
8789 "OSGi, for Open Services Gateway initiative framework, is a module system
8790 and service platform for the Java programming language.")
8791 (license license:asl2.0)))
8793 (define-public java-osgi-service-log
8795 (name "java-osgi-service-log")
8799 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8800 "org.osgi.service.log/"
8801 version "/org.osgi.service.log-"
8802 version "-sources.jar"))
8805 "1029j30dzcwializzca0j3fkhwwz08kmmsha5agw1iccscimj6r0"))))
8806 (build-system ant-build-system)
8808 `(#:jar-name "osgi-service-log.jar"
8809 #:tests? #f)); no tests
8811 `(("java-osgi-framework" ,java-osgi-framework)))
8812 (home-page "https://www.osgi.org")
8813 (synopsis "Provides methods for bundles to write messages to the log")
8815 "OSGi, for Open Services Gateway initiative framework, is a module system
8816 and service platform for the Java programming language. This package contains
8818 (license license:asl2.0)))
8820 (define-public java-osgi-service-jdbc
8822 (name "java-osgi-service-jdbc")
8826 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8827 "org.osgi.service.jdbc/"
8828 version "/org.osgi.service.jdbc-"
8829 version "-sources.jar"))
8832 "11iln5v7bk469cgb9ddkrz9sa95b3733gqgaqw9xf5g6wq652yjz"))))
8833 (build-system ant-build-system)
8835 `(#:jar-name "osgi-service-jdbc.jar"
8836 #:tests? #f)); no tests
8837 (home-page "https://www.osgi.org")
8838 (synopsis "Factory for JDBC connection factories")
8840 "OSGi, for Open Services Gateway initiative framework, is a module system
8841 and service platform for the Java programming language. This package contains
8842 a factory for JDBC connection factories. There are 3 preferred connection
8843 factories for getting JDBC connections:
8846 @item @code{javax.sql.DataSource};
8847 @item @code{javax.sql.ConnectionPoolDataSource};
8848 @item @code{javax.sql.XADataSource}.
8850 (license license:asl2.0)))
8852 (define-public java-osgi-service-resolver
8854 (name "java-osgi-service-resolver")
8858 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8859 "org.osgi.service.resolver/"
8860 version "/org.osgi.service.resolver-"
8861 version "-sources.jar"))
8864 "1dzqn1ryfi2rq4zwsgp44bmj2wlfydjg1qbxw2b0z4xdjjy55vxd"))))
8865 (build-system ant-build-system)
8867 `(#:jar-name "osgi-service-resolver.jar"
8868 #:tests? #f)); no tests
8870 `(("annotation" ,java-osgi-annotation)
8871 ("resource" ,java-osgi-resource)))
8872 (home-page "https://www.osgi.org")
8873 (synopsis "OSGI Resolver service")
8875 "OSGi, for Open Services Gateway initiative framework, is a module system
8876 and service platform for the Java programming language. This package contains
8877 a resolver service that resolves the specified resources in the context supplied
8879 (license license:asl2.0)))
8881 (define-public java-osgi-util-tracker
8883 (name "java-osgi-util-tracker")
8887 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8888 "org.osgi.util.tracker/"
8889 version "/org.osgi.util.tracker-"
8890 version "-sources.jar"))
8893 "0c4fh9vxwzsx59r8dygda0gq2gx3z5vfhc3jsphlqwf5w0h403lz"))))
8894 (build-system ant-build-system)
8896 `(#:jar-name "osgi-util-tracker.jar"
8897 #:tests? #f)); no tests
8899 `(("framework" ,java-osgi-framework)
8900 ("annotation" ,java-osgi-annotation)))
8901 (home-page "https://www.osgi.org")
8902 (synopsis "Bundle tracking")
8904 "OSGi, for Open Services Gateway initiative framework, is a module system
8905 and service platform for the Java programming language. This package contains
8906 bundle tracking utility classes.")
8907 (license license:asl2.0)))
8909 (define-public java-osgi-service-cm
8911 (name "java-osgi-service-cm")
8915 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8916 "org.osgi.service.cm/"
8917 version "/org.osgi.service.cm-"
8918 version "-sources.jar"))
8921 "1z8kap48y3xi0ggj8v6czglfnpnd94mmismgi2wbqhj1nl5fzbp6"))))
8922 (build-system ant-build-system)
8924 `(#:jar-name "osgi-service-cm.jar"
8925 #:tests? #f)); no tests
8927 `(("framework" ,java-osgi-framework)
8928 ("annotation" ,java-osgi-annotation)))
8929 (home-page "https://www.osgi.org")
8930 (synopsis "OSGI Configuration Management")
8932 "OSGi, for Open Services Gateway initiative framework, is a module system
8933 and service platform for the Java programming language. This package contains
8934 utility classes for the configuration of services.")
8935 (license license:asl2.0)))
8937 (define-public java-osgi-service-packageadmin
8939 (name "java-osgi-service-packageadmin")
8943 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
8944 "org.osgi.service.packageadmin/"
8945 version "/org.osgi.service.packageadmin-"
8946 version "-sources.jar"))
8949 "041mpxzi7g36wmcily6y4ccn3jx15akpdy8gmhyb7m98x7qfvn52"))))
8950 (build-system ant-build-system)
8952 `(#:jar-name "osgi-service-packageadmin.jar"
8953 #:tests? #f)); no tests
8955 `(("framework" ,java-osgi-framework)))
8956 (home-page "https://www.osgi.org")
8957 (synopsis "OSGI Package Administration")
8959 "OSGi, for Open Services Gateway initiative framework, is a module system
8960 and service platform for the Java programming language. This package contains
8961 the packageadmin service.")
8962 (license license:asl2.0)))
8964 (define-public java-ops4j-base-lang
8966 (name "java-ops4j-base-lang")
8970 (uri (string-append "https://github.com/ops4j/org.ops4j.base/"
8971 "archive/base-" version ".tar.gz"))
8974 "18hl3lpchgpv8yh5rlk39l2gif5dlfgb8gxjmncf39pr2dprkniw"))))
8975 (build-system ant-build-system)
8977 `(#:jar-name "java-ops4j-base-lang.jar"
8978 #:source-dir "ops4j-base-lang/src/main/java"
8979 #:tests? #f; no tests
8981 (modify-phases %standard-phases
8982 (add-before 'build 'add-test-file
8984 ;; That file is required by a test in ops4j-pax-exam-core-spi
8985 (mkdir-p "build/classes/META-INF/maven/org.ops4j.base/ops4j-base-lang")
8986 (with-output-to-file "build/classes/META-INF/maven/org.ops4j.base/ops4j-base-lang/pom.properties"
8990 "version=" ,version "\n"
8991 "groupId=org.ops4j.base"
8992 "artifactId=ops4j-base-lang\n"))))
8994 (home-page "https://ops4j1.jira.com/wiki/spaces/base/overview")
8995 (synopsis "Utility classes and extensions to be used in OPS4J projects")
8996 (description "OPS4J stands for Open Participation Software for Java. This
8997 package contains utilities and extensions related to @code{java.lang}.")
8998 (license license:asl2.0)))
9000 (define-public java-ops4j-base-monitors
9002 (inherit java-ops4j-base-lang)
9003 (name "java-ops4j-base-monitors")
9005 `(#:jar-name "java-ops4j-base-monitors.jar"
9006 #:source-dir "ops4j-base-monitors/src/main/java"
9007 #:tests? #f)); no tests
9009 `(("lang" ,java-ops4j-base-lang)))
9010 (description "OPS4J stands for Open Participation Software for Java. This
9011 package contains utilities and extensions related to monitoring.")))
9013 (define-public java-ops4j-base-io
9015 (inherit java-ops4j-base-lang)
9016 (name "java-ops4j-base-io")
9018 `(#:jar-name "java-ops4j-base-io.jar"
9019 #:source-dir "ops4j-base-io/src/main/java"
9020 #:test-dir "ops4j-base-io/src/test"
9022 (list "**/ListerTest.java")))
9024 `(("lang" ,java-ops4j-base-monitors)
9025 ("lang" ,java-ops4j-base-lang)))
9027 `(("junit" ,java-junit)
9028 ("hamcrest" ,java-hamcrest-core)))
9029 (description "OPS4J stands for Open Participation Software for Java. This
9030 package contains utilities and extensions related to handling streams and files.")))
9032 (define-public java-ops4j-base-util
9034 (inherit java-ops4j-base-lang)
9035 (name "java-ops4j-base-util")
9037 `(#:jar-name "java-ops4j-base-util.jar"
9038 #:source-dir "ops4j-base-util/src/main/java"
9039 #:test-dir "ops4j-base-util/src/test"))
9041 `(("lang" ,java-ops4j-base-lang)))
9043 `(("junit" ,java-junit)))
9044 (description "OPS4J stands for Open Participation Software for Java. This
9045 package contains utilities and extensions related to environment, i18n and
9048 (define-public java-ops4j-base-util-property
9050 (inherit java-ops4j-base-lang)
9051 (name "java-ops4j-base-util-property")
9053 `(#:jar-name "java-ops4j-base-util-property.jar"
9054 #:source-dir "ops4j-base-util-property/src/main/java"
9055 #:tests? #f)); no tests
9057 `(("lang" ,java-ops4j-base-lang)
9058 ("util" ,java-ops4j-base-util)))
9059 (description "OPS4J stands for Open Participation Software for Java. This
9060 package contains utilities and extensions related to resolving properties from
9061 different sources.")))
9063 (define-public java-ops4j-base-store
9065 (inherit java-ops4j-base-lang)
9066 (name "java-ops4j-base-store")
9068 `(#:jar-name "java-ops4j-base-store.jar"
9069 #:source-dir "ops4j-base-store/src/main/java"
9070 #:tests? #f)); no tests
9072 `(("lang" ,java-ops4j-base-lang)
9073 ("slf4j" ,java-slf4j-api)
9074 ("io" ,java-ops4j-base-io)))
9075 (description "OPS4J stands for Open Participation Software for Java. This
9076 package contains utilities for storing and retrieving data from an
9077 @code{InputStream}.")))
9079 (define-public java-ops4j-base-spi
9081 (inherit java-ops4j-base-lang)
9082 (name "java-ops4j-base-spi")
9084 `(#:jar-name "java-ops4j-base-spi.jar"
9085 #:source-dir "ops4j-base-spi/src/main/java"
9086 #:test-dir "ops4j-base-spi/src/test"))
9088 `(("junit" ,java-junit)
9089 ("hamcrest" ,java-hamcrest-core)))
9090 (description "OPS4J stands for Open Participation Software for Java. This
9091 package contains utilities for obtaining services via the Java SE 6
9092 @code{ServiceLoader}.")))
9094 (define-public java-aqute-bnd-annotation
9096 (name "java-aqute-bnd-annotation")
9100 (uri (string-append "https://github.com/bndtools/bnd/archive/"
9101 version ".REL.tar.gz"))
9102 (file-name (string-append name "-" version ".tar.gz"))
9105 "1ggyiq0as0f6cz333a0dh98j72kmvv5pf2s47v9554yh905lfqdl"))))
9106 (build-system ant-build-system)
9108 `(#:jar-name "java-aqute-bnd-annotation.jar"
9109 #:source-dir "biz.aQute.bnd.annotation/src"
9110 #:tests? #f)); empty test dir
9111 (home-page "https://bnd.bndtools.org/")
9112 (synopsis "Tools for OSGi")
9113 (description "Bnd is a swiss army knife for OSGi, it creates manifest
9114 headers based on analyzing the class code, it verifies the project settings,
9115 it manages project dependencies, gives diffs jars, and much more.")
9116 (license license:asl2.0)))
9118 (define-public java-aqute-libg
9120 (inherit java-aqute-bnd-annotation)
9121 (name "java-aqute-libg")
9123 `(#:jar-name "java-aqute-libg.jar"
9124 ;; The build fails when source/target more recent than 1.7. This
9125 ;; is a known issue. See: https://github.com/bndtools/bnd/issues/1327
9127 ;; It is closed as won't fix. There is no way to change the source
9128 ;; so that it works on 1.8, and still works on 1.6, the upstream
9129 ;; target. It work fine on 1.7, so we use 1.7.
9130 #:make-flags (list "-Dant.build.javac.source=1.7"
9131 "-Dant.build.javac.target=1.7")
9133 (modify-phases %standard-phases
9134 (add-before 'configure 'chdir
9135 ;; Change to aQute.libg directory, so that the relative
9136 ;; paths in the tests aren't broken.
9138 (chdir "aQute.libg")
9140 (add-before 'check 'create-test-directory
9141 ;; Copy the test directory to test/java, since that's where
9142 ;; ant-build-system's default project in build.xml expects to find
9143 ;; the test classes. Leave a copy in the original place to not
9144 ;; break paths in tests.
9147 (copy-recursively "test" "src/test/java")
9150 `(("slf4j" ,java-slf4j-api)
9151 ("osgi-annot" ,java-osgi-annotation)
9152 ("java-osgi-cmpn" ,java-osgi-cmpn)
9153 ("osgi" ,java-osgi-core)))
9155 `(("hamcrest" ,java-hamcrest-core)
9156 ("java-junit" ,java-junit)))))
9158 (define-public java-aqute-bndlib
9160 (inherit java-aqute-bnd-annotation)
9161 (name "java-aqute-bndlib")
9163 `(#:jar-name "java-bndlib.jar"
9164 #:source-dir "biz.aQute.bndlib/src"
9165 #:tests? #f)); no tests
9167 `(("slf4j" ,java-slf4j-api)
9168 ("osgi-annot" ,java-osgi-annotation)
9169 ("java-aqute-libg" ,java-aqute-libg)
9170 ("java-aqute-bnd-annotation" ,java-aqute-bnd-annotation)
9171 ("java-osgi-service-component-annotations" ,java-osgi-service-component-annotations)
9172 ("java-osgi-service-repository" ,java-osgi-service-repository)
9173 ("java-osgi-service-log" ,java-osgi-service-log)
9174 ("java-osgi-service-metatype-annotations" ,java-osgi-service-metatype-annotations)
9175 ("java-osgi-namespace-contract" ,java-osgi-namespace-contract)
9176 ("java-osgi-namespace-extender" ,java-osgi-namespace-extender)
9177 ("java-osgi-namespace-service" ,java-osgi-namespace-service)
9178 ("promise" ,java-osgi-util-promise)
9179 ("osgi" ,java-osgi-core)))))
9181 (define-public java-ops4j-pax-tinybundles
9183 (name "java-ops4j-pax-tinybundles")
9187 (uri (string-append "https://github.com/ops4j/org.ops4j.pax.tinybundles/"
9188 "archive/tinybundles-" version ".tar.gz"))
9191 "0y0gq3pvv0iir2b885lmlwnvr724vv7vklzhhr4fs27d7mdkj871"))))
9193 `(#:jar-name "java-ops4j-pax-tinybundles.jar"
9194 #:source-dir "src/main/java"
9196 ;; Abstract base classes for other tests
9197 (list "**/BndTest.java" "**/CoreTest.java")
9199 (modify-phases %standard-phases
9200 (add-before 'check 'fix-version
9202 ;; This test has a reference to an old version of bndlib we are not
9203 ;; packaging. It uses the version referenced in pom.xml. We replace
9204 ;; it with our own version.
9205 (substitute* "src/test/java/org/ops4j/pax/tinybundles/bnd/BndTest.java"
9206 (("[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*")
9207 ,(package-version java-aqute-bndlib)))
9210 `(("lang" ,java-ops4j-base-lang)
9211 ("io" ,java-ops4j-base-io)
9212 ("store" ,java-ops4j-base-store)
9213 ("slf4j" ,java-slf4j-api)
9214 ("libg" ,java-aqute-libg)
9215 ("bndlib" ,java-aqute-bndlib)))
9217 `(("junit" ,java-junit)
9218 ("hamcrest" ,java-hamcrest-core)
9219 ("log4j" ,java-log4j-api)
9220 ("bndannotation" ,java-aqute-bnd-annotation)
9221 ("framework" ,java-osgi-framework)))
9222 (build-system ant-build-system)
9223 (home-page "https://ops4j1.jira.com/wiki/spaces/ops4j/pages/12060312/Tinybundles")
9224 (synopsis "Java APIs to create OSGi related artifacts")
9225 (description "Tinybundles is all about creating OSGi related artifacts like
9226 Bundles, Fragments and Deployment Packages with Java Api. It is very convenient
9227 to create such artifacts on-the-fly inside Tests (like in Pax Exam). On the
9228 other hand, this library can be a foundation of real end user tools that need
9229 to create those artifacts.")
9230 (license license:asl2.0)))
9232 (define-public java-ops4j-pax-exam-core
9234 (name "java-ops4j-pax-exam-core")
9238 (uri (string-append "https://github.com/ops4j/org.ops4j.pax.exam2/"
9239 "archive/exam-reactor-" version ".tar.gz"))
9242 "08mzw8nkah3rj3vznlplnawspxhp61zgvb44ifqa1rni1cvbms2g"))))
9244 `(#:jar-name "java-ops4j-pax-exam-core.jar"
9245 #:source-dir "core/pax-exam/src/main/java"
9246 #:test-dir "core/pax-exam/src/test"))
9248 `(("slf4j" ,java-slf4j-api)
9249 ("lang" ,java-ops4j-base-lang)
9250 ("io" ,java-ops4j-base-io)
9251 ("util-property" ,java-ops4j-base-util-property)
9252 ("util-store" ,java-ops4j-base-store)
9253 ("java-osgi-core" ,java-osgi-core)))
9255 `(("junit" ,java-junit)
9256 ("hamcrest" ,java-hamcrest-core)))
9257 (build-system ant-build-system)
9258 (home-page "https://ops4j1.jira.com/wiki/spaces/PAXEXAM4/overview")
9259 (synopsis "In-Container Testing for OSGi, Java EE and CDI")
9260 (description "Pax Exam creates OSGi bundles for testing purposes. It lets
9261 the user take control of the OSGi framework, the test framework (e.g. JUnit) and
9262 the system under test at the same time.")
9263 (license license:asl2.0)))
9265 (define-public java-ops4j-pax-exam-core-spi
9267 (inherit java-ops4j-pax-exam-core)
9268 (name "java-ops4j-pax-exam-core-spi")
9270 `(#:jar-name "java-ops4j-pax-exam-spi.jar"
9271 #:source-dir "src/main/java"
9274 ;; Abstract base class, not a test
9275 "**/BaseStagedReactorTest.java"
9276 ;; Depends on org.mortbay.jetty.testwars:test-war-dump
9277 "**/WarBuilderTest.java")
9279 (modify-phases %standard-phases
9280 (add-before 'configure 'chdir
9282 ;; Tests assume we are in this directory
9283 (chdir "core/pax-exam-spi")
9285 (add-before 'check 'fix-tests
9287 ;; One test checks that this file is present.
9288 (mkdir-p "build/classes/META-INF/maven/org.ops4j.pax.exam/pax-exam-spi")
9289 (with-output-to-file
9290 "build/classes/META-INF/maven/org.ops4j.pax.exam/pax-exam-spi/pom.properties"
9293 (string-append "artifactId = pax-exam-spi\n"
9294 "version = " ,(package-version java-ops4j-pax-exam-core-spi)))))
9295 ;; Maven puts compilation results in the target directory, while we
9296 ;; put them in the build directory.
9297 (substitute* '("src/test/java/org/ops4j/pax/exam/spi/war/WarBuilderTest.java"
9298 "src/test/java/org/ops4j/pax/exam/spi/war/WarTestProbeBuilderTest.java"
9299 "src/test/java/org/ops4j/pax/exam/spi/war/ZipBuilderTest.java")
9300 (("target") "build"))
9301 ;; One test is expected to fail, but it doesn't throw the expected exception
9302 (substitute* "src/test/java/org/ops4j/pax/exam/spi/reactors/BaseStagedReactorTest.java"
9303 (("AssertionError") "IllegalArgumentException"))
9306 `(("java-ops4j-pax-exam-core" ,java-ops4j-pax-exam-core)
9307 ("lang" ,java-ops4j-base-lang)
9308 ("monitors" ,java-ops4j-base-monitors)
9309 ("store" ,java-ops4j-base-store)
9310 ("io" ,java-ops4j-base-io)
9311 ("spi" ,java-ops4j-base-spi)
9312 ("osgi" ,java-osgi-core)
9313 ("slf4j" ,java-slf4j-api)
9314 ("tinybundles" ,java-ops4j-pax-tinybundles)))
9316 `(("mockito" ,java-mockito-1)
9317 ("junit" ,java-junit)
9318 ("hamcrest" ,java-hamcrest-core)
9319 ("cglib" ,java-cglib)
9320 ("objenesis" ,java-objenesis)
9321 ("asm" ,java-asm)))))
9323 (define-public java-ops4j-pax-exam-core-junit
9325 (inherit java-ops4j-pax-exam-core)
9326 (name "java-ops4j-pax-exam-core-junit")
9328 `(#:jar-name "ops4j-pax-exam-core-junit.jar"
9329 #:source-dir "drivers/pax-exam-junit4/src/main/java"
9330 #:tests? #f)); no tests
9332 `(("junit" ,java-junit)
9333 ("slf4j" ,java-slf4j-api)
9334 ("core" ,java-ops4j-pax-exam-core)
9335 ("spi" ,java-ops4j-pax-exam-core-spi)))
9336 (native-inputs '())))
9338 (define-public java-fasterxml-jackson-annotations
9340 (name "java-fasterxml-jackson-annotations")
9344 (uri (string-append "https://github.com/FasterXML/"
9345 "jackson-annotations/archive/"
9346 "jackson-annotations-" version ".tar.gz"))
9349 "0mr95xd0da6a4g95zvrl1ryk5n5zv2rc696w3xnsr5hxk2gicfc4"))))
9350 (build-system ant-build-system)
9352 `(#:jar-name "jackson-annotations.jar"
9353 #:source-dir "src/main/java"
9354 #:test-dir "src/test"))
9356 `(("junit" ,java-junit)))
9357 (home-page "https://github.com/FasterXML/jackson-annotations")
9358 (synopsis "General purpose annotations for the Jackson Data Processor")
9359 (description "This package contains general purpose annotations for the
9360 Jackson Data Processor, used on value and handler types. The only annotations
9361 not included are ones that require dependency to the Databind package.")
9362 (license license:asl2.0)))
9364 (define-public java-fasterxml-jackson-core
9366 (name "java-fasterxml-jackson-core")
9370 (uri (string-append "https://github.com/FasterXML/"
9371 "jackson-core/archive/"
9372 "jackson-core-" version ".tar.gz"))
9375 "159hsnk17jr1gyzkf01cxvsn45srnk37g949r7364qlsr527gjgd"))))
9376 (build-system ant-build-system)
9378 `(#:jar-name "jackson-core.jar"
9379 #:source-dir "src/main/java"
9380 #:test-dir "src/test"
9383 ;; Expected failure. pom.xml excludes these
9385 ;; Base classes that have no constructor for junit
9387 "**/ConcurrencyReadTest.java"
9388 "**/ManualCharAccessTest.java"
9389 "**/ManualCharAccessTest.java"
9390 "**/TrailingCommasTest.java"
9391 "**/AsyncMissingValuesInObjectTest.java"
9392 "**/AsyncMissingValuesInArrayTest.java")
9394 (modify-phases %standard-phases
9395 (add-before 'configure 'generate-PackageVersion.java
9397 (let* ((out "src/main/java/com/fasterxml/jackson/core/json/PackageVersion.java")
9398 (in (string-append out ".in")))
9401 (("@package@") "com.fasterxml.jackson.core.json")
9402 (("@projectversion@") ,version)
9403 (("@projectgroupid@") "com.fasterxml.jackson.core")
9404 (("@projectartifactid@") "jackson-core")))
9406 (add-before 'build 'copy-resources
9408 (copy-recursively "src/main/resources"
9411 (add-before 'check 'copy-test-resources
9413 (copy-recursively "src/test/resources"
9414 "build/test-classes")
9417 `(("junit" ,java-junit)
9418 ("hamcrest" ,java-hamcrest-core)))
9419 (home-page "https://github.com/FasterXML/jackson-core")
9420 (synopsis "Low-level streaming parser and generator abstractions")
9421 (description "This package contains core low-level incremental
9422 (streaming) parser and generator abstractions used by the Jackson Data
9423 Processor. It also includes the default implementation of handler types
9424 (parser, generator) that handle JSON format.")
9425 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
9427 (define-public java-fasterxml-jackson-databind
9429 (name "java-fasterxml-jackson-databind")
9433 (uri (string-append "https://github.com/FasterXML/"
9434 "jackson-databind/archive/"
9435 "jackson-databind-" version ".tar.gz"))
9438 "1zd2cw4z6kdkbx8za96xh9pyicv2a2l7y0rkcx2fqd8hv6d47s08"))))
9439 (build-system ant-build-system)
9441 `(#:jar-name "jackson-databind.jar"
9442 #:source-dir "src/main/java"
9443 #:tests? #f; requires javax.measures for which I can't find a free implementation
9445 (modify-phases %standard-phases
9446 (add-before 'configure 'generate-PackageVersion.java
9448 (let* ((out "src/main/java/com/fasterxml/jackson/databind/cfg/PackageVersion.java")
9449 (in (string-append out ".in")))
9452 (("@package@") "com.fasterxml.jackson.databind.cfg")
9453 (("@projectversion@") ,version)
9454 (("@projectgroupid@") "com.fasterxml.jackson.databind")
9455 (("@projectartifactid@") "jackson-databind")))
9457 (add-before 'build 'copy-resources
9459 (copy-recursively "src/main/resources" "build/classes")
9462 `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
9463 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)))
9464 (home-page "https://github.com/FasterXML/jackson-databind")
9465 (synopsis "Data-binding functionality and tree-model for the Jackson Data Processor")
9466 (description "This package contains the general-purpose data-binding
9467 functionality and tree-model for Jackson Data Processor. It builds on core
9468 streaming parser/generator package, and uses Jackson Annotations for
9470 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
9472 (define-public java-fasterxml-jackson-modules-base-jaxb
9474 (name "java-fasterxml-jackson-modules-base-jaxb")
9478 (uri (string-append "https://github.com/FasterXML/"
9479 "jackson-modules-base/archive/"
9480 "jackson-modules-base-" version ".tar.gz"))
9483 "1wws95xi8sppp6b0k2vvjdjyynl20r1a4dwrhai08lzlria6blp5"))))
9484 (build-system ant-build-system)
9486 `(#:jar-name "jackson-modules-base-jaxb.jar"
9487 #:source-dir "jaxb/src/main/java"
9488 #:test-dir "jaxb/src/test"
9490 ;; Base class for tests
9491 (list "**/BaseJaxbTest.java")
9493 (modify-phases %standard-phases
9494 (add-before 'configure 'generate-PackageVersion.java
9496 (let* ((out (string-append "jaxb/src/main/java/com/fasterxml/"
9497 "jackson/module/jaxb/PackageVersion.java"))
9498 (in (string-append out ".in")))
9501 (("@package@") "com.fasterxml.jackson.module.jaxb")
9502 (("@projectversion@") ,version)
9503 (("@projectgroupid@") "com.fasterxml.jackson.module.jaxb")
9504 (("@projectartifactid@") "jackson-module-jaxb")))
9506 (add-before 'build 'copy-resources
9508 (copy-recursively "jaxb/src/main/resources" "build/classes")
9511 `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
9512 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
9513 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)))
9515 `(("java-junit" ,java-junit)))
9516 (home-page "https://github.com/FasterXML/jackson-modules-base")
9517 (synopsis "Jaxb annotations jackson module")
9518 (description "This package is the jaxb annotations module for jackson.")
9519 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
9521 (define-public java-fasterxml-jackson-modules-base-mrbean
9523 (name "java-fasterxml-jackson-modules-base-mrbean")
9527 (uri (string-append "https://github.com/FasterXML/"
9528 "jackson-modules-base/archive/"
9529 "jackson-modules-base-" version ".tar.gz"))
9532 "1wws95xi8sppp6b0k2vvjdjyynl20r1a4dwrhai08lzlria6blp5"))))
9533 (build-system ant-build-system)
9535 `(#:jar-name "jackson-modules-base-mrbean.jar"
9536 #:source-dir "mrbean/src/main/java"
9537 #:test-dir "mrbean/src/test"
9539 ;; Base class for tests
9540 (list "**/BaseTest.java")
9542 (modify-phases %standard-phases
9543 (add-before 'configure 'generate-PackageVersion.java
9545 (let* ((out (string-append "mrbean/src/main/java/com/fasterxml/"
9546 "jackson/module/mrbean/PackageVersion.java"))
9547 (in (string-append out ".in")))
9550 (("@package@") "com.fasterxml.jackson.module.mrbean")
9551 (("@projectversion@") ,version)
9552 (("@projectgroupid@") "com.fasterxml.jackson.module.mrbean")
9553 (("@projectartifactid@") "jackson-module-mrbean")))
9556 `(("java-asm" ,java-asm)
9557 ("java-fasterxml-jackson-annotations"
9558 ,java-fasterxml-jackson-annotations)
9559 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
9560 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)))
9562 `(("java-junit" ,java-junit)))
9563 (home-page "https://github.com/FasterXML/jackson-modules-base")
9564 (synopsis "POJO type materialization for Java")
9565 (description "This package implements POJO type materialization.
9566 Databinders can construct implementation classes for Java interfaces as part
9567 of deserialization.")
9568 (license license:asl2.0)))
9570 (define-public java-snakeyaml
9572 (name "java-snakeyaml")
9576 (uri (string-append "https://bitbucket.org/asomov/snakeyaml/get/v"
9578 (file-name (string-append name "-" version ".tar.gz"))
9581 "0474cqcv46zgv9bhms2vgawakq1vyj0hp3h3f1bfys46msia90bh"))))
9582 (build-system ant-build-system)
9584 `(#:jar-name "java-snakeyaml.jar"
9585 #:source-dir "src/main/java"
9586 ;; Tests require velocity, a cyclic dependency, and
9587 ;; java-spring-framework-context which is not packaged.
9589 (home-page "https://bitbucket.org/asomov/snakeyaml")
9590 (synopsis "YAML processor")
9591 (description "SnakeYAML is a YAML processor for the Java Virtual Machine.")
9592 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
9594 (define-public java-fasterxml-jackson-dataformat-yaml
9596 (name "java-fasterxml-jackson-dataformat-yaml")
9600 (uri (string-append "https://github.com/FasterXML/"
9601 "jackson-dataformats-text/archive/"
9602 "jackson-dataformats-text-" version ".tar.gz"))
9605 "1hikl06khaxbg439avf442qifcadap8w0lx13f0nnhp2vh3dkbz7"))))
9606 (build-system ant-build-system)
9608 `(#:jar-name "jackson-dataformat-yaml.jar"
9609 #:source-dir "yaml/src/main/java"
9610 #:test-dir "yaml/src/test"
9611 #:test-exclude (list "**/failing/**.java")
9613 (modify-phases %standard-phases
9614 (add-before 'configure 'generate-PackageVersion.java
9616 (let* ((out "yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/PackageVersion.java")
9617 (in (string-append out ".in")))
9620 (("@package@") "com.fasterxml.jackson.dataformat.yaml")
9621 (("@projectversion@") ,version)
9622 (("@projectgroupid@") "com.fasterxml.jackson.dataformat.yaml")
9623 (("@projectartifactid@") "jackson-dataformat-yaml")))
9626 `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
9627 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
9628 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)
9629 ("java-snakeyaml" ,java-snakeyaml)))
9631 `(("junit" ,java-junit)
9632 ("hamcrest" ,java-hamcrest-core)
9633 ("java-ops4j-pax-exam-core-spi" ,java-ops4j-pax-exam-core-spi)
9634 ("java-ops4j-pax-exam-core-junit" ,java-ops4j-pax-exam-core-junit)
9635 ("java-ops4j-pax-exam" ,java-ops4j-pax-exam-core)))
9636 (home-page "https://github.com/FasterXML/jackson-dataformats-text")
9637 (synopsis "Yaml backend for Jackson")
9638 (description "Dataformat backends are used to support format alternatives
9639 to JSON, supported by default. This is done by sub-classing Jackson core
9641 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
9643 (define-public java-stax2-api
9645 (name "java-stax2-api")
9649 (uri (string-append "https://github.com/FasterXML/stax2-api/archive/"
9650 "stax2-api-" version ".tar.gz"))
9653 "1amc1si0l0hyyw2sawmnzy4hkna3z6fp195y4nm5m9wb9ld5awkq"))))
9654 (build-system ant-build-system)
9656 `(#:jar-name "java-stax2-api.jar"
9657 #:source-dir "src/main/java"
9658 #:tests? #f)); no tests
9659 (home-page "https://github.com/FasterXML/stax2-api")
9660 (synopsis "Stax2 API")
9661 (description "Stax2 API is an extension to basic Stax 1.0 API that adds
9662 significant new functionalities, such as full-featured bi-direction validation
9663 interface and high-performance Typed Access API.")
9664 (license license:bsd-2)))
9666 (define-public java-woodstox-core
9668 (name "java-woodstox-core")
9673 (url "https://github.com/FasterXML/woodstox")
9674 (commit (string-append "woodstox-core-" version))))
9675 (file-name (git-file-name name version))
9678 "0bfylk24a967hwxprxqbg6cdvm6n4ldcarp54yg980viwvjiglyp"))))
9679 (build-system ant-build-system)
9681 `(#:jar-name "woodstox.jar"
9683 (list "**/Base*.java" "failing/**")
9685 (modify-phases %standard-phases
9686 (add-before 'build 'remove-msv-dep
9688 ;; we don't need osgi, and it depends on msv
9689 (delete-file-recursively "src/main/java/com/ctc/wstx/osgi")
9690 ;; msv's latest release is from 2011 and we don't need it
9691 (delete-file-recursively "src/main/java/com/ctc/wstx/msv")
9692 (delete-file-recursively "src/test/java/wstxtest/osgi")
9693 (delete-file-recursively "src/test/java/wstxtest/msv")
9695 (add-before 'build 'copy-resources
9697 (copy-recursively "src/main/resources" "build/classes")
9700 `(("stax2" ,java-stax2-api)))
9702 `(("junit" ,java-junit)))
9703 (home-page "https://github.com/FasterXML/woodstox")
9704 (synopsis "Stax XML API implementation")
9705 (description "Woodstox is a stax XML API implementation.")
9706 (license license:asl2.0)))
9708 (define-public java-fasterxml-jackson-dataformat-xml
9710 (name "java-fasterxml-jackson-dataformat-xml")
9715 (url "https://github.com/FasterXML/jackson-dataformat-xml")
9716 (commit (string-append "jackson-dataformat-xml-" version))))
9717 (file-name (git-file-name name version))
9720 "0s1wl65mbs57c2hz2v8rnh8i04y5lpyyvnjz562j5j6b83vwwpfx"))))
9721 (build-system ant-build-system)
9723 `(#:jar-name "jackson-dataformat-xml.jar"
9724 #:source-dir "src/main/java"
9726 (list "**/failing/**")
9728 (modify-phases %standard-phases
9729 (add-before 'configure 'generate-PackageVersion.java
9731 (let* ((out "src/main/java/com/fasterxml/jackson/dataformat/xml/PackageVersion.java")
9732 (in (string-append out ".in")))
9736 (("@package@") "com.fasterxml.jackson.dataformat.xml")
9737 (("@projectversion@") ,version)
9738 (("@projectgroupid@") "com.fasterxml.jackson.dataformat.xml")
9739 (("@projectartifactid@") "jackson-dataformat-xml")))
9741 (add-before 'build 'copy-resources
9743 (copy-recursively "src/main/resources" "build/classes")
9746 `(("jackson-annotations" ,java-fasterxml-jackson-annotations)
9747 ("jackson-core" ,java-fasterxml-jackson-core)
9748 ("jackson-modules-base-jaxb" ,java-fasterxml-jackson-modules-base-jaxb)
9749 ("jackson-databind" ,java-fasterxml-jackson-databind)
9750 ("stax2-api" ,java-stax2-api)
9751 ("woodstox" ,java-woodstox-core)))
9753 `(("junit" ,java-junit)
9754 ("hamcrest" ,java-hamcrest-core)))
9755 (home-page "https://github.com/FasterXML/jackson-dataformat-xml")
9756 (synopsis "Read and write XML")
9757 (description "This package contains Jackson extension component for reading
9758 and writing XML encoded data.
9760 Further, the goal is to emulate how JAXB data-binding works with \"Code-first\"
9761 approach (that is, no support is added for \"Schema-first\" approach). Support
9762 for JAXB annotations is provided by JAXB annotation module; this module
9763 provides low-level abstractions (@code{JsonParser}, @code{JsonGenerator},
9764 @code{JsonFactory}) as well as small number of higher level overrides needed to
9765 make data-binding work.")
9766 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
9768 (define-public java-hdrhistogram
9770 (name "java-hdrhistogram")
9775 (url "https://github.com/HdrHistogram/HdrHistogram")
9776 (commit (string-append "HdrHistogram-" version))))
9777 (file-name (git-file-name name version))
9780 "1cw8aa1vk258k42xs6wpy72m4gbai540jq032qsa7c5586iawx2d"))))
9781 (build-system ant-build-system)
9783 `(#:jar-name "java-hdrhistogram.jar"
9784 #:source-dir "src/main/java"
9786 (modify-phases %standard-phases
9787 (add-after 'unpack 'make-files-writable
9789 (for-each make-file-writable (find-files "."))
9791 (add-before 'configure 'set-version
9793 (let* ((version-java "src/main/java/org/HdrHistogram/Version.java")
9794 (template (string-append version-java ".template")))
9795 (copy-file template version-java)
9796 (substitute* version-java
9797 (("\\$VERSION\\$") ,version)
9798 (("\\$BUILD_TIME\\$") "0"))
9801 `(("junit" ,java-junit)
9802 ("hamcrest" ,java-hamcrest-core)))
9803 (home-page "https://hdrhistogram.github.io/HdrHistogram")
9804 (synopsis "High dynamic range histogram")
9805 (description "Hdrhistogram creates histograms that support
9806 recording and analyzing sampled data value counts across a configurable integer
9807 value range with configurable value precision within the range. Value precision
9808 is expressed as the number of significant digits in the value recording, and
9809 provides control over value quantization behavior across the value range and
9810 the subsequent value resolution at any given level.")
9811 (license license:public-domain)))
9813 (define-public java-cofoja
9815 (name "java-cofoja")
9820 (url "https://github.com/nhatminhle/cofoja")
9821 (commit (string-append "v" version))))
9822 (file-name (string-append "java-cofoja-" version "-checkout"))
9825 "0p7sz8y5xgpi5rx1qwn6587fkd52qr3ha3ybh14gqcyxhikl525w"))))
9826 (build-system ant-build-system)
9828 `(#:build-target "dist"
9829 #:test-target "test"
9832 (list "-Ddist.dir=dist")
9833 #:modules ((guix build ant-build-system)
9834 (guix build java-utils)
9839 (modify-phases %standard-phases
9840 ;; The bulid system ignores the class path the ant-build-system sets
9841 ;; up and instead expects to find all dependencies in the "lib"
9843 (add-after 'unpack 'create-libdir
9844 (lambda* (#:key inputs #:allow-other-keys)
9848 (let ((target (string-append "lib/" (basename file))))
9849 (unless (file-exists? target)
9850 (symlink file target))))
9851 (append-map (match-lambda
9853 (find-files dir "\\.jar$")))
9856 (replace 'install (install-jars "dist")))))
9858 `(("java-asm" ,java-asm)))
9860 `(("java-junit" ,java-junit)))
9861 (home-page "https://github.com/nhatminhle/cofoja")
9862 (synopsis "Contracts for Java")
9863 (description "Contracts for Java, or Cofoja for short, is a contract
9864 programming framework and test tool for Java, which uses annotation processing
9865 and bytecode instrumentation to provide run-time checking. (In particular,
9866 this is not a static analysis tool.)")
9867 (license license:lgpl3+)))
9869 (define-public java-aopalliance
9871 (name "java-aopalliance")
9875 ;; Note: this git repository is not official, but contains the
9876 ;; source code that is in the CVS repository. Downloading the
9877 ;; tarball from sourceforge is undeterministic, and the cvs download
9880 (url "https://github.com/hoverruan/aopalliance")
9881 (commit "0d7757ae204e5876f69431421fe9bc2a4f01e8a0")))
9882 (file-name (string-append name "-" version))
9885 "0rsg2b0v3hxlq2yk1i3m2gw3xwq689j3cwx9wbxvqfpdcjbca0qr"))))
9886 (build-system ant-build-system)
9888 `(#:jar-name "java-aopalliance.jar"
9890 #:tests? #f; no tests
9891 #:source-dir "aopalliance/src/main"
9892 #:modules ((guix build ant-build-system)
9894 (guix build maven pom)
9895 (guix build java-utils)
9898 (modify-phases %standard-phases
9899 (add-before 'install 'create-pom
9901 (with-output-to-file "pom.xml"
9905 (modelVersion "4.0.0")
9906 (name "aopalliance")
9907 (groupId "aopalliance")
9908 (artifactId "aopalliance")
9909 (version "1.0"))))))
9912 (install-from-pom "pom.xml")))))
9913 (home-page "http://aopalliance.sourceforge.net")
9914 (synopsis "Aspect-Oriented Programming")
9915 (description "The AOP Alliance project is a joint project between several
9916 software engineering people who are interested in Aspect-Oriented Programming
9918 (license license:public-domain)))
9920 (define-public java-javax-inject
9922 (name "java-javax-inject")
9927 (url "https://github.com/javax-inject/javax-inject")
9929 (file-name (git-file-name name version))
9932 "1rspl0nkvk1jif6nccikw93xic6ljj2b6kpy2mffwi2mnvc13j7x"))))
9933 (build-system ant-build-system)
9935 `(#:jar-name "java-javax-inject.jar"
9936 #:tests? #f; no tests
9938 (modify-phases %standard-phases
9940 (install-from-pom "pom.xml")))))
9941 (home-page "https://github.com/javax-inject/javax-inject")
9942 (synopsis "JSR-330: Dependency Injection for Java")
9943 (description "This package specifies a means for obtaining objects in such
9944 a way as to maximize reusability, testability and maintainability compared to
9945 traditional approaches such as constructors, factories, and service locators
9946 (e.g., JNDI). This process, known as dependency injection, is beneficial to
9947 most nontrivial applications.
9949 Many types depend on other types. For example, a @var{Stopwatch} might depend
9950 on a @var{TimeSource}. The types on which a type depends are known as its
9951 dependencies. The process of finding an instance of a dependency to use at run
9952 time is known as resolving the dependency. If no such instance can be found,
9953 the dependency is said to be unsatisfied, and the application is broken.")
9954 (license license:asl2.0)))
9956 (define-public java-guice
9963 (url "https://github.com/google/guice")
9965 (file-name (git-file-name name version))
9966 (modules '((guix build utils)))
9969 (for-each delete-file (find-files "." ".*.jar")) #t))
9972 "18im5hdfl4q1b9chww2s1ii60sn3ydyyar32a2sf2p2g8zlbdswq"))))
9973 (build-system ant-build-system)
9975 `(#:jar-name "java-guice.jar"
9977 #:tests? #f; FIXME: tests are not in a java sub directory
9978 #:source-dir "core/src"
9980 (modify-phases %standard-phases
9981 (add-after 'unpack 'make-files-writable
9983 (for-each make-file-writable (find-files "."))
9986 (install-from-pom "core/pom.xml")))))
9988 `(("java-aopalliance" ,java-aopalliance)
9989 ("java-asm" ,java-asm)
9990 ("java-cglib" ,java-cglib)
9991 ("java-guava" ,java-guava)
9992 ("java-javax-inject" ,java-javax-inject)
9993 ("java-guice-parent-pom" ,java-guice-parent-pom)))
9994 (home-page "https://github.com/google/guice")
9995 (synopsis "Lightweight dependency injection framework")
9996 (description "Guice is a lightweight dependency injection framework for
9998 (license license:asl2.0)))
10000 (define-public java-guice-servlet
10002 (inherit java-guice)
10003 (name "java-guice-servlet")
10005 `(#:jar-name "guice-servlet.jar"
10006 #:source-dir "extensions/servlet/src/"
10008 #:tests? #f ; FIXME: not in a java subdir
10010 (modify-phases %standard-phases
10011 (add-after 'unpack 'make-files-writable
10013 (for-each make-file-writable (find-files "."))
10016 `(("guice" ,java-guice)
10017 ("servlet" ,java-classpathx-servletapi)
10018 ,@(package-inputs java-guice)))))
10020 (define java-guice-parent-pom
10022 (inherit java-guice)
10023 (name "java-guice-parent-pom")
10027 (modify-phases %standard-phases
10028 (delete 'configure)
10030 (add-after 'install 'install-extensions
10031 (install-pom-file "extensions/pom.xml"))
10033 (install-pom-file "pom.xml")))))
10035 `(("java-google-parent-pom" ,java-google-parent-pom-5)))))
10037 (define java-google-parent-pom-5
10039 (name "java-google-parent-pom")
10043 (uri (git-reference
10044 (url "https://github.com/google/google-maven-parents")
10045 (commit (string-append "google-" version))))
10046 (file-name (git-file-name name version))
10049 "0zb7hx24p8k8rfdvix2vsbfqn73jhrycdndvhf8j5gbii9wbqibv"))))
10050 (build-system ant-build-system)
10054 (modify-phases %standard-phases
10055 (delete 'configure)
10058 (install-pom-file "pom.xml")))))
10059 (home-page "https://github.com/google/google-maven-parents")
10060 (synopsis "Google parent pom")
10061 (description "This package contains the Maven parent POM for other Google
10063 (license license:asl2.0)))
10065 (define-public java-assertj
10067 (name "java-assertj")
10071 (uri (git-reference
10072 (url "https://github.com/joel-costigliola/assertj-core")
10073 (commit (string-append "assertj-core-" version))))
10074 (file-name (git-file-name name version))
10077 "1k35cg2in7pzk4pbdjryr0pll5lgk1r6ngrn0j8cdlgi7w8zh2d1"))))
10078 (build-system ant-build-system)
10080 `(#:jar-name "java-assertj.jar"
10082 #:source-dir "src/main/java"
10083 #:tests? #f)); depends on tng-junit which depends on assertj
10085 `(("cglib" ,java-cglib)
10086 ("junit" ,java-junit)
10087 ("hamcrest" ,java-hamcrest-core)))
10089 `(("mockito" ,java-mockito-1)))
10090 (home-page "https://joel-costigliola.github.io/assertj/index.html")
10091 (synopsis "Fluent assertions for java")
10092 (description "AssertJ core is a Java library that provides a fluent
10093 interface for writing assertions. Its main goal is to improve test code
10094 readability and make maintenance of tests easier.")
10095 (license license:asl2.0)))
10097 (define-public java-jboss-javassist
10099 (name "java-jboss-javassist")
10103 (uri (git-reference
10104 (url "https://github.com/jboss-javassist/javassist")
10106 (string-append "rel_"
10108 (lambda (x) (if (eq? x #\.) #\_ x)) version)
10110 (file-name (git-file-name name version))
10113 "0h3zlcyqiaq01fspm69h7vki67raw305w89p4ha8vlhpzw02qifm"))
10114 (modules '((guix build utils)))
10117 (delete-file "javassist.jar")))))
10118 (build-system ant-build-system)
10120 `(#:jar-name "java-jboss-javassist.jar"
10122 #:source-dir "src/main"
10123 #:tests? #f; FIXME: requires junit-awtui and junit-swingui from junit3
10125 (modify-phases %standard-phases
10126 (add-after 'unpack 'make-files-writable
10128 (for-each make-file-writable (find-files "."))
10131 `(("junit" ,java-junit)))
10132 (home-page "https://github.com/jboss-javassist/javassist")
10133 (synopsis "Java bytecode engineering toolkit")
10134 (description "Javassist (JAVA programming ASSISTant) makes Java bytecode
10135 manipulation simple. It is a class library for editing bytecodes in Java; it
10136 enables Java programs to define a new class at runtime and to modify a class
10137 file when the JVM loads it.")
10138 (license (list license:gpl2 license:cddl1.0)))); either gpl2 only or cddl.
10140 (define-public java-jcommander
10142 (name "java-jcommander")
10146 (uri (git-reference
10147 (url "https://github.com/cbeust/jcommander")
10149 (file-name (git-file-name name version))
10152 "12vcpc19sd7jhvjgp7xz1qjanfix162xb3x2q5zah93rjklj1h57"))))
10153 (build-system ant-build-system)
10155 `(#:jar-name "java-jcommander.jar"
10157 #:tests? #f; requires testng which depends on jcommander
10158 #:source-dir "src/main/java"))
10159 (home-page "https://jcommander.org")
10160 (synopsis "Command line parameters parser")
10161 (description "JCommander is a very small Java framework that makes it
10162 trivial to parse command line parameters. Parameters are declared with
10164 (license license:asl2.0)))
10166 (define-public java-bsh
10172 (uri (git-reference
10173 (url "https://github.com/beanshell/beanshell")
10175 (file-name (git-file-name name version))
10178 "0kz3f0xjack6c9syssi4qjw1rbd3q5963sk5pmr143hiibxa9csw"))
10179 (modules '((guix build utils)))
10182 ;; Delete bundled third-party jar archives.
10183 (for-each delete-file (find-files "." ".*.jar$"))
10184 (for-each (lambda (file) (chmod file #o644))
10185 (find-files "." "."))
10187 (build-system ant-build-system)
10189 `(#:build-target "jarall"
10190 #:test-target "junit-tests-all"
10191 #:make-flags (list "-DDATE" "(no date for reproducibility)")
10193 (modify-phases %standard-phases
10194 (add-before 'install 'fix-pom
10196 (substitute* "pom.xml"
10197 (("org.apache-extras.beanshell") "org.beanshell"))
10200 (install-from-pom "pom.xml")))))
10202 `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
10203 ("java-commons-bsf" ,java-commons-bsf)))
10205 `(("java-junit" ,java-junit)
10206 ("javacc" ,javacc-3)))
10207 (home-page "http://beanshell.org/")
10208 (synopsis "Lightweight Scripting for Java")
10209 (description "BeanShell is a small, free, embeddable Java source
10210 interpreter with object scripting language features, written in Java.
10211 BeanShell dynamically executes standard Java syntax and extends it with common
10212 scripting conveniences such as loose types, commands, and method closures like
10213 those in Perl and JavaScript.")
10214 (license license:asl2.0)))
10216 (define-public java-fest-util
10218 (name "java-fest-util")
10222 (uri (git-reference
10223 (url "https://github.com/alexruiz/fest-util/")
10224 (commit (string-append "fest-util-" version))))
10225 (file-name (git-file-name name version))
10228 "02kgal7v85snyyvcsxvn4qphid455f4smh2wri1il8d9asw0djbz"))))
10229 (build-system ant-build-system)
10231 `(#:jar-name "java-fest-util.jar"
10232 #:source-dir "src/main/java"))
10234 `(("junit" ,java-junit)
10235 ("hamcrest" ,java-hamcrest-core)))
10236 (home-page "https://github.com/alexruiz/fest-util")
10237 (synopsis "FEST common utilities")
10238 (description "Common utilities used in all FEST module.")
10239 (license license:asl2.0)))
10241 (define-public java-fest-test
10243 (name "java-fest-test")
10247 (uri (git-reference
10248 (url "https://github.com/alexruiz/fest-test/")
10249 (commit (string-append "fest-test-" version))))
10250 (file-name (git-file-name name version))
10253 "0mg1d2jfh7kbx2c40dchbjr6d8pv59snsyb13mfxsr7xk5n69qbn"))))
10254 (build-system ant-build-system)
10256 `(#:jar-name "java-fest-test.jar"
10257 #:source-dir "src/main/java"
10258 #:tests? #f)); no tests
10260 `(("junit" ,java-junit)))
10261 (home-page "https://github.com/alexruiz/fest-test")
10262 (synopsis "Common FEST testing infrastructure")
10263 (description "Fest-test contains the common FEST testing infrastructure.")
10264 (license license:asl2.0)))
10266 (define-public java-fest-assert
10268 (name "java-fest-assert")
10272 (uri (git-reference
10273 (url "https://github.com/alexruiz/fest-assert-2.x/")
10274 (commit (string-append "fest-assert-core-" version))))
10275 (file-name (git-file-name name version))
10278 "1cp8zzyag3s85fz2w68sda9zzaal1y5f9wl8g72wkm12an40w6by"))))
10279 (build-system ant-build-system)
10281 `(#:jar-name "java-fest-assert.jar"
10282 #:source-dir "src/main/java"
10285 "**/Abstract*.java"
10286 "**/*BaseTest.java"
10287 ;; Unable to set MockitoNamingPolicy on cglib generator which creates FastClasses
10288 "**/MessageFormatter_format_Test.java"
10289 "**/internal/*/*_assert*_Test.java")))
10291 `(("java-fest-util" ,java-fest-util)))
10293 `(("java-junit" ,java-junit)
10294 ("java-fest-test" ,java-fest-test)
10295 ("java-hamcrest-core" ,java-hamcrest-core)
10296 ("java-mockito" ,java-mockito-1)
10297 ("java-cglib" ,java-cglib)
10298 ("java-objenesis" ,java-objenesis)
10299 ("java-asm" ,java-asm)))
10300 (home-page "https://github.com/alexruiz/fest-assert-2.x")
10301 (synopsis "FEST fluent assertions")
10302 (description "FEST-Assert provides a fluent interface for assertions.")
10303 (license license:asl2.0)))
10305 (define-public java-testng
10307 (name "java-testng")
10311 (uri (git-reference
10312 (url "https://github.com/cbeust/testng")
10314 (file-name (string-append name "-" version "-checkout"))
10317 "0y6vq30i5g276kw0v2bhbvci22ijg7ax49ap2611yqlhbs4d6dqv"))))
10318 (build-system ant-build-system)
10320 `(#:jdk ,icedtea-8; java.util.function
10321 #:jar-name "java-testng.jar"
10322 #:source-dir "src/main/java"
10324 (modify-phases %standard-phases
10325 ;; FIXME: I don't know why these tests fail
10326 (add-after 'unpack 'delete-failing-tests
10328 (substitute* "src/test/resources/testng.xml"
10329 (("<class name=\"test.configuration.github1625.TestRunnerIssue1625\"/>") "")
10330 (("<class name=\"test.serviceloader.ServiceLoaderTest\" />") ""))
10332 ;; We don't have groovy
10333 (add-after 'unpack 'delete-groovy-tests
10335 (delete-file-recursively "src/test/java/test/dependent/issue1648/")
10336 (substitute* "src/test/resources/testng.xml"
10337 (("<class name=\"test.dependent.issue1648.TestRunner\"/>") ""))
10339 (add-before 'build 'copy-resources
10341 (copy-recursively "src/main/resources" "build/classes")
10343 (add-before 'check 'copy-test-resources
10345 (copy-recursively "src/test/resources" "build/test-classes")
10349 (invoke "ant" "compile-tests")
10350 ;; we don't have groovy
10351 (substitute* "src/test/resources/testng.xml"
10352 (("<class name=\"test.groovy.GroovyTest\" />") ""))
10353 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
10355 ":build/test-classes")
10356 "-Dtest.resources.dir=src/test/resources"
10357 "org.testng.TestNG" "src/test/resources/testng.xml"))))))
10359 `(("junit" ,java-junit)
10360 ("java-jsr305" ,java-jsr305)
10361 ("java-bsh" ,java-bsh)
10362 ("java-jcommander" ,java-jcommander)
10363 ("java-guice" ,java-guice)
10364 ("snakeyaml" ,java-snakeyaml)))
10366 `(("guava" ,java-guava)
10367 ("java-javax-inject" ,java-javax-inject)
10368 ("java-hamcrest" ,java-hamcrest-all)
10369 ("java-assertj" ,java-assertj)
10370 ("java-mockito" ,java-mockito-1)
10371 ("cglib" ,java-cglib)
10373 ("aopalliance" ,java-aopalliance)))
10374 (home-page "https://testng.org")
10375 (synopsis "Testing framework")
10376 (description "TestNG is a testing framework inspired from JUnit and NUnit
10377 but introducing some new functionalities that make it more powerful and easier
10379 (license license:asl2.0)))
10381 (define-public java-jnacl
10382 (let ((commit "094e819afdd63ea81a499b3bcb42a271006bebd9")
10385 (name "java-jnacl")
10386 (version (string-append "0.1.0-" revision "." (string-take commit 7)))
10389 (uri (git-reference
10390 (url "https://github.com/neilalexander/jnacl")
10392 (file-name (git-file-name name version))
10395 "1d6g6xhn83byv5943n7935wwjsk0ibk0qdvqgr699qqgqqmwisbb"))))
10396 (build-system ant-build-system)
10398 `(#:jar-name "jnacl.jar"
10399 #:source-dir "src/main/java"
10402 (modify-phases %standard-phases
10403 (add-before 'build 'fix-tests
10405 (substitute* '("src/test/java/com/neilalexander/jnacl/NaClTest.java"
10406 "src/test/java/com/neilalexander/jnacl/NaclSecretBoxTest.java")
10407 (("assertions.Assertions") "assertions.api.Assertions"))
10411 (invoke "ant" "compile-tests")
10412 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
10414 ":build/test-classes")
10415 "org.testng.TestNG" "-testclass"
10416 "build/test-classes/com/neilalexander/jnacl/NaclSecretBoxTest.class")
10417 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
10419 ":build/test-classes")
10420 "org.testng.TestNG" "-testclass"
10421 "build/test-classes/com/neilalexander/jnacl/NaClTest.class"))))))
10423 `(("java-testng" ,java-testng)
10424 ("java-fest-util" ,java-fest-util)
10425 ("java-fest-assert" ,java-fest-assert)))
10426 (home-page "https://github.com/neilalexander/jnacl")
10427 (synopsis "Java implementation of NaCl")
10428 (description "Pure Java implementation of the NaCl: Networking and
10429 Cryptography library.")
10430 (license license:bsd-2))))
10432 (define-public java-mvel2
10434 (name "java-mvel2")
10438 (uri (string-append "https://github.com/mvel/mvel/archive/mvel2-"
10439 version ".Final.tar.gz"))
10442 "01ph5s9gm16l2qz58lg21w6fna7xmmrj7f9bzqr1jim7h9557d3z"))))
10443 (build-system ant-build-system)
10445 `(#:jar-name "mvel2.jar"
10446 #:source-dir "src/main/java"
10448 (list "**/Abstract*.java"
10449 ;; Base class with no tests
10450 "**/MVELThreadTest.java")
10452 (modify-phases %standard-phases
10453 (add-after 'install 'install-bin
10454 (lambda* (#:key outputs #:allow-other-keys)
10455 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
10457 (with-output-to-file (string-append bin "/mvel2")
10461 "#!" (which "bash") "\n"
10462 "if [ \"$#\" -ne \"2\" ]; then\n"
10463 "echo 'Usage: mvel2 <script> <out.dir>'\n"
10466 "java -Dout.dir=$2 -cp " (getenv "CLASSPATH")
10467 ":" (assoc-ref outputs "out") "/share/java/mvel2.jar"
10468 " org.mvel2.sh.Main $1"))))
10469 (chmod (string-append bin "/mvel2") #o755))
10472 `(("junit" ,java-junit)
10473 ("hamcrest" ,java-hamcrest-core)))
10474 (home-page "https://github.com/mvel/mvel")
10475 (synopsis "MVFLEX Expression Language")
10476 (description "MVEL has largely been inspired by Java syntax, but has some
10477 fundamental differences aimed at making it more efficient as an expression
10478 language, such as operators that directly support collection, array and string
10479 matching, as well as regular expressions. MVEL is used to evaluate expressions
10480 written using Java syntax.
10482 In addition to the expression language, MVEL serves as a templating language for
10483 configuration and string construction.")
10484 (license license:asl2.0)))
10486 (define-public java-commons-jexl-2
10488 (name "java-commons-jexl")
10492 (uri (string-append "mirror://apache/commons/jexl/source/"
10493 "commons-jexl-" version "-src.tar.gz"))
10496 "1ai7632bwwaxglb0nbpblpr2jw5g20afrsaq372ipkphi3ncy1jz"))))
10497 (build-system ant-build-system)
10499 `(#:jar-name "commons-jexl-2.jar"
10501 #:source-dir "src/main/java"
10503 (modify-phases %standard-phases
10504 (add-before 'check 'disable-broken-tests
10505 (lambda* (#:key inputs #:allow-other-keys)
10506 (with-directory-excursion "src/test/java/org/apache/commons/jexl2/"
10507 (substitute* "ArithmeticTest.java"
10508 (("asserter.assertExpression\\(\"3 / 0\"") "//")
10509 (("asserter.assertExpression\\(\"imanull") "//"))
10510 ;; This test fails with "ambiguous method invocation"
10511 (delete-file "CacheTest.java")
10512 ;; This test doesn't have access to the temp directory
10513 (substitute* "ClassCreatorTest.java"
10514 (("java.io.tmpdir") "user.dir"))
10515 ;; This test fails in trying to detect whether it can run.
10516 (substitute* "ClassCreator.java"
10517 (("boolean canRun =.*") "boolean canRun = false;\n"))
10518 ;; ...and these tests depend on it.
10519 (delete-file "scripting/JexlScriptEngineOptionalTest.java")
10520 (delete-file "scripting/JexlScriptEngineTest.java"))
10522 (add-before 'build 'run-javacc
10524 (with-directory-excursion "src/main/java/org/apache/commons/jexl2/parser/"
10525 (invoke "java" "jjtree" "Parser.jjt")
10526 (invoke "java" "javacc" "Parser.jj"))
10529 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)))
10531 `(("java-junit" ,java-junit)
10532 ("java-hamcrest-core" ,java-hamcrest-core)
10533 ("javacc" ,javacc-4)))
10534 (home-page "https://commons.apache.org/proper/commons-jexl/")
10535 (synopsis "Java Expression Language ")
10536 (description "JEXL is a library intended to facilitate the implementation
10537 of dynamic and scripting features in applications and frameworks written in
10538 Java. JEXL implements an Expression Language based on some extensions to the
10539 JSTL Expression Language supporting most of the constructs seen in
10540 shell-script or ECMAScript. Its goal is to expose scripting features usable
10541 by technical operatives or consultants working with enterprise platforms.")
10542 (license license:asl2.0)))
10544 (define-public java-lz4
10550 (uri (git-reference
10551 (url "https://github.com/lz4/lz4-java")
10553 (file-name (git-file-name name version))
10556 "0ydjakhv3cz34mfvv14qrh2ksdxifgjwwagjy7r46qr3f68hnf6y"))))
10557 (build-system ant-build-system)
10559 `(#:jar-name "lz4.jar"
10561 #:source-dir "src/java:src/java-unsafe"
10562 #:tests? #f; FIXME: requires more dependencies
10564 (modify-phases %standard-phases
10565 (add-after 'unpack 'make-files-writable
10567 (for-each make-file-writable (find-files "."))
10569 (add-before 'configure 'generate-source
10571 (with-directory-excursion "src/build/source_templates"
10572 (invoke "mvel2" "../gen_sources.mvel" "../../java"))
10575 `(("mvel" ,java-mvel2)))
10576 (home-page "https://jpountz.github.io/lz4-java")
10577 (synopsis "Compression algorithm")
10578 (description "LZ4 - Java is a Java port of the popular lz4 compression
10579 algorithms and xxHash hashing algorithm.")
10580 (license license:asl2.0)))
10582 (define-public java-bouncycastle
10584 (name "java-bouncycastle")
10588 (uri (git-reference
10589 (url "http://git.bouncycastle.org/repositories/bc-java")
10590 ;(url "https://github.com/bcgit/bc-java")
10591 (commit (string-append "r1rv" (substring version 2 4)))))
10592 (file-name (git-file-name name version))
10595 "1m921a1ac2dl797ffzg3d4j97ch308f25spb4jgsj3npfmmys5gb"))
10596 (modules '((guix build utils)))
10599 (for-each delete-file
10600 (find-files "." "\\.jar$"))
10602 (build-system ant-build-system)
10607 (modify-phases %standard-phases
10610 (invoke "ant" "-f" "ant/jdk15+.xml" "build-provider")
10611 (invoke "ant" "-f" "ant/jdk15+.xml" "build")))
10612 ;; FIXME: the tests freeze.
10615 ;; (invoke "ant" "-f" "ant/jdk15+.xml" "test")))
10617 (install-jars "build/artifacts/jdk1.5/jars")))))
10619 `(("java-javax-mail" ,java-javax-mail)))
10622 ("junit" ,java-junit)
10623 ("java-native-access" ,java-native-access)
10624 ("java-native-access-platform" ,java-native-access-platform)))
10625 (home-page "https://www.bouncycastle.org")
10626 (synopsis "Cryptographic library")
10627 (description "Bouncy Castle is a cryptographic library for the Java
10628 programming language.")
10629 (license license:expat)))
10631 (define-public java-lmax-disruptor
10633 (name "java-lmax-disruptor")
10637 (uri (string-append "https://github.com/LMAX-Exchange/disruptor/"
10638 "archive/" version ".tar.gz"))
10639 (file-name (string-append name "-" version ".tar.gz"))
10642 "17da2gwj5abnlsfgn2xqjk5lgzbg4vkb0hdv2dvc8r2fx4bi7w3g"))))
10643 (build-system ant-build-system)
10645 `(#:jar-name "java-lmax-disruptor.jar"
10647 #:tests? #f)); tests hang
10649 `(("junit" ,java-junit)
10650 ("java-hdrhistogram" ,java-hdrhistogram)
10651 ("java-jmock" ,java-jmock)
10652 ("java-jmock-legacy" ,java-jmock-legacy)
10653 ("java-jmock-junit4" ,java-jmock-junit4)
10654 ("java-hamcrest-all" ,java-hamcrest-all)))
10656 `(("cglib" ,java-cglib)
10657 ("objenesis" ,java-objenesis)
10658 ("asm" ,java-asm)))
10659 (home-page "https://www.lmax.com/disruptor")
10660 (synopsis "High performance inter-thread communication")
10661 (description "LMAX Disruptor is a software pattern and software component
10662 for high performance inter-thread communication that avoids the need for
10663 message queues or resource locking.")
10664 (license license:asl2.0)))
10666 (define-public java-commons-bcel
10668 (name "java-commons-bcel")
10672 (uri (string-append "mirror://apache/commons/bcel/source/bcel-"
10673 version "-src.tar.gz"))
10676 "0j3x1rxd673k07psclk8k13rqh0x0mf2yy5qiwkiw4z3afa568jy"))))
10677 (build-system ant-build-system)
10679 `(#:jar-name "bcel.jar"
10681 #:source-dir "src/main/java"
10682 #:test-dir "src/test/java"
10683 ;; FIXME: Tests require the unpackaged jna.
10685 (home-page "https://commons.apache.org/proper/commons-bcel/")
10686 (synopsis "Byte code engineering library")
10687 (description "The Byte Code Engineering Library (Apache Commons BCEL) is
10688 intended to give users a convenient way to analyze, create, and
10689 manipulate (binary) Java class files. Classes are represented by objects
10690 which contain all the symbolic information of the given class: methods, fields
10691 and byte code instructions, in particular.
10693 Such objects can be read from an existing file, be transformed by a
10694 program (e.g. a class loader at run-time) and written to a file again. An
10695 even more interesting application is the creation of classes from scratch at
10696 run-time. The @dfn{Byte Code Engineering Library} (BCEL) may be also useful
10697 if you want to learn about the @dfn{Java Virtual Machine} (JVM) and the format
10698 of Java @code{.class} files.")
10699 (license license:asl2.0)))
10701 (define-public java-xerial-core
10703 (name "java-xerial-core")
10707 (uri (string-append "https://github.com/xerial/xerial-java/archive/"
10708 version ".tar.gz"))
10709 (file-name (string-append name "-" version ".tar.gz"))
10712 "0d3g863i41bgalpa4xr3vm1h140l091n8iwgq5qvby5yivns9y8d"))))
10713 (build-system ant-build-system)
10715 `(#:jar-name "xerial-core.jar"
10716 #:source-dir "xerial-core/src/main/java"
10717 #:test-dir "xerial-core/src/test"
10719 (modify-phases %standard-phases
10720 (add-before 'build 'copy-resources
10722 (copy-recursively "xerial-core/src/main/resources"
10726 `(("junit" ,java-junit)
10727 ("hamcrest" ,java-hamcrest-core)))
10728 (home-page "https://github.com/xerial/xerial-java")
10729 (synopsis "Data management libraries for Java")
10730 (description "Xerial is a set of data management libraries for the Java
10731 programming language. The ultimate goal of the Xerial project is to manage
10732 everything as database, including class objects, text format data, data
10734 (license license:asl2.0)))
10736 (define-public java-powermock-reflect
10738 (name "java-powermock-reflect")
10742 (uri (string-append "https://github.com/powermock/powermock/"
10743 "archive/powermock-" version ".tar.gz"))
10744 (file-name (string-append name "-" version ".tar.gz"))
10747 "0sbgi5vqq7k72wzcdjb20s370vyd4hsbnx71pzb8ishml3gy7fwy"))
10749 (search-patches "java-powermock-fix-java-files.patch"))))
10750 (build-system ant-build-system)
10752 `(#:jar-name "java-powermock-reflect.jar"
10754 #:source-dir "powermock-reflect/src/main/java"
10755 #:test-dir "powermock-reflect/src/test"))
10757 `(("java-objenesis" ,java-objenesis)))
10759 `(("junit" ,java-junit)
10760 ("cglib" ,java-cglib)
10762 ("hamcrest" ,java-hamcrest-core)
10763 ("assertj" ,java-assertj)))
10764 (home-page "https://github.com/powermock/powermock")
10765 (synopsis "Mock library extension framework")
10766 (description "PowerMock is a framework that extends other mock libraries
10767 such as EasyMock with more powerful capabilities. PowerMock uses a custom
10768 classloader and bytecode manipulation to enable mocking of static methods,
10769 constructors, final classes and methods, private methods, removal of static
10770 initializers and more. By using a custom classloader no changes need to be
10771 done to the IDE or continuous integration servers which simplifies adoption.")
10772 (license license:asl2.0)))
10774 (define-public java-powermock-core
10776 (inherit java-powermock-reflect)
10777 (name "java-powermock-core")
10779 `(#:jar-name "java-powermock-core.jar"
10780 #:source-dir "powermock-core/src/main/java"
10781 #:test-dir "powermock-core/src/test"
10782 #:tests? #f; requires powermock-api
10785 (modify-phases %standard-phases
10786 (add-before 'build 'copy-resources
10788 (copy-recursively "powermock-core/src/main/resources"
10792 `(("reflect" ,java-powermock-reflect)
10793 ("javassist" ,java-jboss-javassist)))
10795 `(("junit" ,java-junit)
10796 ("assertj" ,java-assertj)
10797 ("mockito" ,java-mockito-1)))))
10799 (define-public java-powermock-api-support
10801 (inherit java-powermock-reflect)
10802 (name "java-powermock-api-support")
10803 (build-system ant-build-system)
10805 `(#:jar-name "java-powermock-api-support.jar"
10807 #:source-dir "powermock-api/powermock-api-support/src/main/java"
10808 #:tests? #f)); no tests
10810 `(("core" ,java-powermock-core)
10811 ("reflect" ,java-powermock-reflect)))))
10813 (define-public java-powermock-modules-junit4-common
10815 (inherit java-powermock-reflect)
10816 (name "java-powermock-modules-junit4-common")
10817 (build-system ant-build-system)
10819 `(#:jar-name "java-powermock-modules-junit4-common.jar"
10821 #:source-dir "powermock-modules/powermock-module-junit4-common/src/main/java"
10822 #:test-dir "powermock-modules/powermock-module-junit4-common/src/test"))
10824 `(("core" ,java-powermock-core)
10825 ("easymock" ,java-easymock)
10826 ("reflect" ,java-powermock-reflect)
10827 ("hamcrest" ,java-hamcrest-core)
10828 ("cglib" ,java-cglib)))))
10830 (define-public java-powermock-modules-junit4
10832 (inherit java-powermock-reflect)
10833 (name "java-powermock-modules-junit4")
10834 (build-system ant-build-system)
10836 `(#:jar-name "java-powermock-modules-junit4.jar"
10838 #:source-dir "powermock-modules/powermock-module-junit4/src/main/java"
10839 #:test-dir "powermock-modules/powermock-module-junit4/src/test"
10841 (modify-phases %standard-phases
10842 (add-before 'build 'fix-junit-detection
10844 ;; Our junit version is 4.12-SNAPSHOT
10845 (substitute* (find-files "powermock-modules/powermock-module-junit4"
10846 "PowerMockJUnit4MethodValidator.java")
10847 (("4.12") "4.12-SNAPSHOT"))
10850 `(("core" ,java-powermock-core)
10851 ("reflect" ,java-powermock-reflect)
10852 ("common" ,java-powermock-modules-junit4-common)
10853 ("cglib" ,java-cglib)))
10855 `(("easymock" ,java-easymock)
10856 ("hamcrest" ,java-hamcrest-core)
10857 ("objenesis" ,java-objenesis)
10859 ("junit" ,java-junit)))))
10861 (define-public java-powermock-api-easymock
10863 (inherit java-powermock-reflect)
10864 (name "java-powermock-api-easymock")
10865 (build-system ant-build-system)
10867 `(#:jar-name "java-powermock-api-easymock.jar"
10869 #:source-dir "powermock-api/powermock-api-easymock/src/main/java"
10870 #:tests? #f; no tests
10872 (modify-phases %standard-phases
10873 (add-before 'build 'fix-file
10875 ;; FIXME: This looks wrong, but it fixes a build error.
10876 (with-directory-excursion "powermock-api/powermock-api-easymock"
10877 (substitute* "src/main/java/org/powermock/api/easymock/PowerMock.java"
10878 (("classLoader instanceof MockClassLoader") "false")
10879 (("\\(\\(MockClassLoader\\) classLoader\\).*;") ";")))
10882 `(("core" ,java-powermock-core)
10883 ("easymock" ,java-easymock)
10884 ("reflect" ,java-powermock-reflect)
10885 ("support" ,java-powermock-api-support)
10886 ("cglib" ,java-cglib)))))
10888 (define-public java-jboss-jms-api-spec
10890 (name "java-jboss-jms-api-spec")
10894 (uri (string-append "https://github.com/jboss/jboss-jms-api_spec/"
10895 "archive/jboss-jms-api_" version
10896 "_spec-1.0.1.Final.tar.gz"))
10899 "07bqblw9kq2i8q92bz70fvavq5xjfkaixl8xa0m0cypjgy82rb7m"))))
10900 (build-system ant-build-system)
10902 `(#:jar-name "java-jboss-jms-api_spec.jar"
10905 #:tests? #f)); no tests
10906 (home-page "https://github.com/jboss/jboss-jms-api_spec")
10907 (synopsis "Java Message Service API specification")
10908 (description "Java Message Service (JMS) API is used to send messages
10909 messages between two or more clients. It is a messaging standard that allows
10910 application components to create, send, receive, and read messages.")
10911 ; either gpl2 only with GPL Classpath Exception, or cddl.
10912 (license (list license:gpl2 license:cddl1.0))))
10914 (define-public java-mail
10920 (uri (string-append "https://github.com/javaee/javamail/archive/"
10921 "JAVAMAIL-1_6_0.tar.gz"))
10924 "1b4rg7fpj50ld90a71iz2m4gm3f5cnw18p3q3rbrrryjip46kx92"))))
10925 (build-system ant-build-system)
10927 `(#:jar-name "java-mail.jar"
10929 #:source-dir "mail/src/main/java"
10930 #:test-dir "mail/src/test"
10932 (list "**/CollectorFormatterTest.java"
10933 "**/CompactFormatterTest.java"
10934 "**/DurationFilterTest.java"
10935 "**/MailHandlerTest.java"
10936 "**/GetLocalAddressTest.java"
10937 ;; FIXME: both end with:
10938 ;; java.lang.ClassNotFoundException:
10939 ;; javax.mail.internet.MimeMultipartParseTest
10940 "**/MimeMultipartParseTest.java"
10941 "**/SearchTermSerializationTest.java")
10943 (modify-phases %standard-phases
10944 (add-before 'configure 'move-version.java
10946 (copy-file "mail/src/main/resources/javax/mail/Version.java"
10947 "mail/src/main/java/javax/mail/Version.java")
10949 (add-before 'build 'copy-resources
10951 (copy-recursively "mail/src/main/resources/META-INF"
10952 "build/classes/META-INF")
10955 `(("junit" ,java-junit)
10956 ("hamcrest" ,java-hamcrest-core)))
10957 (home-page "https://javaee.github.io/javamail/")
10958 (synopsis "Mail-related functionality in Java")
10959 (description "The JavaMail API provides a platform-independent and
10960 protocol-independent framework to build mail and messaging applications.")
10961 ;; General Public License Version 2 only ("GPL") or the Common Development
10962 ;; and Distribution License("CDDL")
10963 (license (list license:cddl1.1
10964 license:gpl2)))); with classpath exception
10966 (define-public java-jeromq
10968 (name "java-jeromq")
10972 (uri (git-reference
10973 (url "https://github.com/zeromq/jeromq")
10974 (commit (string-append "v" version))))
10975 (file-name (string-append name "-" version "-checkout"))
10978 "1gxkp7lv2ahymgrqdw94ncq54bmp4m4sw5m1x9gkp7l5bxn0xsyj"))
10979 (patches (search-patches "java-jeromq-fix-tests.patch"))))
10980 (build-system ant-build-system)
10982 `(#:jar-name "java-jeromq.jar"
10983 #:source-dir "src/main/java"
10987 "**/Abstract*.java"
10988 ;; Requires network
10989 "**/ZBeaconTest.java"
10991 "**/DealerSpecTest.java"
10992 "**/CustomDecoderTest.java"
10993 "**/CustomEncoderTest.java"
10994 "**/ConnectRidTest.java"
10995 "**/ReqSpecTest.java"
10996 "**/PushPullSpecTest.java"
10997 "**/PubSubHwmTest.java"
10998 "**/RouterSpecTest.java"
10999 "**/ProxyTest.java")))
11001 `(("java-jnacl" ,java-jnacl)))
11003 `(("java-hamcrest-core" ,java-hamcrest-core)
11004 ("junit" ,java-junit)))
11005 (home-page "http://zeromq.org/bindings:java")
11006 (synopsis "Java binding for 0MQ")
11007 (description "Jeromq provides the java bindings for 0MQ.")
11008 (license license:mpl2.0)))
11010 (define-public java-kafka-clients
11012 (name "java-kafka-clients")
11016 (uri (string-append "mirror://apache/kafka/" version "/kafka-"
11017 version "-src.tgz"))
11020 "1yxmnsmliwm7671q5yy9bl4jdqyyn00n26cggz9brwczx80w1vfq"))))
11021 (build-system ant-build-system)
11023 `(#:jar-name "java-kafka-clients.jar"
11025 #:source-dir "clients/src/main/java"
11026 #:test-dir "clients/src/test"
11029 ;; This file does not contain a class
11030 "**/IntegrationTest.java"
11031 ;; Requires network
11032 "**/ClientUtilsTest.java"
11033 ;; End with errors that seem related to our powermock
11034 "**/KafkaProducerTest.java"
11035 "**/BufferPoolTest.java")))
11037 `(("java-slf4j-api" ,java-slf4j-api)
11038 ("java-lz4" ,java-lz4)))
11040 `(("junit" ,java-junit)
11041 ("hamcrest" ,java-hamcrest-all)
11042 ("objenesis" ,java-objenesis)
11044 ("cglib" ,java-cglib)
11045 ("javassist" ,java-jboss-javassist)
11046 ("snappy" ,java-snappy)
11047 ("easymock" ,java-easymock)
11048 ("powermock" ,java-powermock-core)
11049 ("powermock-easymock" ,java-powermock-api-easymock)
11050 ("powermock-junit4-common" ,java-powermock-modules-junit4-common)
11051 ("powermock-junit4" ,java-powermock-modules-junit4)
11052 ("powermock-support" ,java-powermock-api-support)
11053 ("java-bouncycastle" ,java-bouncycastle)))
11054 (home-page "https://kafka.apache.org")
11055 (synopsis "Distributed streaming platform")
11056 (description "Kafka is a distributed streaming platform, which means:
11058 @item it can publish and subscribe to streams of records;
11059 @item it can store streams of records in a fault-tolerant way;
11060 @item it can process streams of records as they occur.
11062 ;; Either cddl or gpl2 only.
11063 (license (list license:cddl1.1; actually cddl1.1
11064 license:gpl2)))); with classpath exception
11066 (define-public java-jdom
11072 (uri (string-append "http://jdom.org/dist/binary/archive/jdom-"
11073 version ".tar.gz"))
11076 "07wdpm3jwwc9q38kmdw40fvbmv6jzjrkrf8m0zqs58f79a672wfl"))))
11077 (build-system ant-build-system)
11079 `(#:build-target "package"
11080 #:tests? #f; tests are run as part of the build process
11082 (modify-phases %standard-phases
11084 (install-jars "build")))))
11085 (home-page "http://jdom.org/")
11086 (synopsis "Access, manipulate, and output XML data")
11087 (description "Java-based solution for accessing, manipulating, and
11088 outputting XML data from Java code.")
11089 (license license:bsd-4)))
11091 (define-public java-geronimo-xbean-reflect
11093 (name "java-geronimo-xbean-reflect")
11097 (uri (svn-reference
11098 (url "https://svn.apache.org/repos/asf/geronimo/xbean/tags/xbean-4.5/")
11099 (revision 1807396)))
11100 (file-name (string-append name "-" version))
11103 "18q3i6jgm6rkw8aysfgihgywrdc5nvijrwnslmi3ww497jvri6ja"))))
11104 (build-system ant-build-system)
11106 `(#:jar-name "geronimo-xbean-reflect.jar"
11107 #:source-dir "xbean-reflect/src/main/java"
11108 #:test-dir "xbean-reflect/src/test"
11111 (list "**/Abstract*.java" "**/AsmParameterNameLoaderTest.java"
11112 "**/ObjectRecipeTest.java" "**/ParameterNameLoaderTest.java"
11113 "**/RecipeHelperTest.java" "**/XbeanAsmParameterNameLoaderTest.java")
11115 (modify-phases %standard-phases
11116 (add-before 'build 'fix-source
11118 (let ((dir "xbean-reflect/src/main/java/org/apache/xbean/recipe/"))
11119 ;; org.apache.xbean.asm6 is actually repackaged java-asm
11120 (substitute* (string-append dir "XbeanAsmParameterNameLoader.java")
11121 (("org.apache.xbean.asm5") "org.objectweb.asm"))
11123 (replace 'install (install-from-pom "xbean-reflect/pom.xml")))))
11125 `(("asm" ,java-asm)
11126 ("log4j" ,java-log4j-api)
11127 ("log4j-1.2" ,java-log4j-1.2-api)
11128 ("log4j-core" ,java-log4j-core)
11129 ("logging" ,java-commons-logging-minimal)))
11131 `(("java-geronimo-parent-pom" ,java-geronimo-parent-pom)))
11133 `(("junit" ,java-junit)))
11134 (home-page "https://geronimo.apache.org/maven/xbean/3.6/xbean-reflect/")
11135 (synopsis "Dependency injection helper")
11136 (description "Xbean-reflect provides very flexible ways to create objects
11137 and graphs of objects for dependency injection frameworks")
11138 (license license:asl2.0)))
11140 (define java-geronimo-genesis-2.1
11142 (name "java-geronimo-genesis")
11146 (uri (svn-reference
11147 (url (string-append "https://svn.apache.org/repos/asf/"
11148 "geronimo/genesis/tags/genesis-"
11150 (revision 1807396)))
11151 (file-name (string-append name "-" version "-source"))
11154 "119yn795jvnjf52si84q192s8wag1k013iabg78b7wnadssnnh31"))))
11155 (build-system ant-build-system)
11159 (modify-phases %standard-phases
11160 (delete 'configure)
11163 (install-pom-file "pom.xml"))
11164 (add-after 'install 'install-enforcer-rules
11165 (install-pom-file "genesis-enforcer-rules/pom.xml"))
11166 (add-after 'install 'install-flava
11167 (install-pom-file "genesis-default-flava/pom.xml"))
11168 (add-after 'install 'install-packaging
11169 (install-pom-file "genesis-packaging/pom.xml"))
11170 (add-after 'install-flava 'install-flava-java4
11171 (install-pom-file "genesis-default-flava/genesis-java1.4-flava/pom.xml"))
11172 (add-after 'install-flava 'install-flava-java5
11173 (install-pom-file "genesis-default-flava/genesis-java5-flava/pom.xml"))
11174 (add-after 'install-flava 'install-flava-java6
11175 (install-pom-file "genesis-default-flava/genesis-java6-flava/pom.xml")))))
11177 `(("apache-parent-pom" ,apache-parent-pom-13)))
11178 (home-page "https://geronimo.apache.org")
11179 (synopsis "Collection of maven POM files for the Geronimo project")
11180 (description "Apache Geronimo is a server runtime. This package contains
11181 only pom files used by other components in the Geronimo project.")
11182 (license license:asl2.0)))
11184 (define java-geronimo-parent-pom
11186 (inherit java-geronimo-xbean-reflect)
11187 (name "java-geronimo-parent-pom")
11191 (modify-phases %standard-phases
11192 (delete 'configure)
11195 (install-pom-file "pom.xml")))))
11197 `(("java-geronimo-genesis" ,java-geronimo-genesis-2.1)))))
11199 (define-public java-geronimo-xbean-bundleutils
11201 (inherit java-geronimo-xbean-reflect)
11202 (name "java-geronimo-xbean-bundleutils")
11204 `(#:jar-name "geronimo-xbean-bundleutils.jar"
11205 #:source-dir "xbean-bundleutils/src/main/java"
11206 #:test-dir "xbean-bundleutils/src/test"
11208 (modify-phases %standard-phases
11209 (add-before 'build 'fix-java
11211 ;; We use a more recent version of osgi, so this file requires
11212 ;; more interface method implementations.
11213 (substitute* "xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/DelegatingBundleContext.java"
11214 (("import org.osgi.framework.ServiceRegistration;")
11215 "import org.osgi.framework.ServiceRegistration;
11216 import org.osgi.framework.ServiceFactory;
11217 import java.util.Collection;
11218 import org.osgi.framework.ServiceObjects;")
11219 (("public Bundle getBundle\\(\\)")
11221 public <S> ServiceObjects<S> getServiceObjects(ServiceReference<S> reference) {
11222 throw new UnsupportedOperationException();
11225 public <S> ServiceRegistration<S> registerService(Class<S> clazz,
11226 ServiceFactory<S> factory, Dictionary<String, ?> properties) {
11227 throw new UnsupportedOperationException();
11229 public Bundle getBundle()"))
11232 `(("java-slf4j" ,java-slf4j-api)
11233 ("java-asm" ,java-asm)
11234 ("java-osgi-framework" ,java-osgi-framework)
11235 ("java-eclipse-osgi" ,java-eclipse-osgi)
11236 ("java-osgi-service-packageadmin" ,java-osgi-service-packageadmin)))))
11238 (define-public java-geronimo-xbean-asm-util
11240 (inherit java-geronimo-xbean-reflect)
11241 (name "java-geronimo-xbean-asm-util")
11243 `(#:jar-name "geronimo-xbean-asm-util.jar"
11244 #:source-dir "xbean-asm-util/src/main/java"
11245 #:tests? #f)); no tests
11247 `(("java-asm" ,java-asm)))
11248 (native-inputs '())))
11250 (define-public java-geronimo-xbean-finder
11252 (inherit java-geronimo-xbean-reflect)
11253 (name "java-geronimo-xbean-finder")
11255 `(#:jar-name "geronimo-xbean-finder.jar"
11256 #:source-dir "xbean-finder/src/main/java"
11257 #:test-dir "xbean-finder/src/test"))
11259 `(("java-slf4j-api" ,java-slf4j-api)
11260 ("java-asm" ,java-asm)
11261 ("java-geronimo-xbean-bundleutils" ,java-geronimo-xbean-bundleutils)
11262 ("java-geronimo-xbean-asm-util" ,java-geronimo-xbean-asm-util)
11263 ("java-osgi-service-packageadmin" ,java-osgi-service-packageadmin)
11264 ("java-osgi-framework" ,java-osgi-framework)))
11266 `(("java-junit" ,java-junit)
11267 ("java-hamcrest-core" ,java-hamcrest-core)))))
11269 (define-public java-gson
11275 (uri (string-append "https://github.com/google/gson/archive/"
11276 "gson-parent-" version ".tar.gz"))
11279 "1j4qnp7v046q0k48c4kyf69sxaasx2h949d3cqwsm3kzxms3x0f9"))))
11280 (build-system ant-build-system)
11282 `(#:jar-name "gson.jar"
11283 #:source-dir "gson/src/main/java"
11284 #:test-dir "gson/src/test"))
11286 `(("java-junit" ,java-junit)
11287 ("java-hamcrest-core" ,java-hamcrest-core)))
11288 (home-page "https://github.com/google/gson")
11289 (synopsis "Java serialization/deserialization library from/to JSON")
11290 (description "Gson is a Java library that can be used to convert Java
11291 Objects into their JSON representation. It can also be used to convert a JSON
11292 string to an equivalent Java object. Gson can work with arbitrary Java objects
11293 including pre-existing objects that you do not have source-code of.")
11294 (license license:asl2.0)))
11296 (define-public java-hawtjni
11298 (name "java-hawtjni")
11302 (uri (string-append "https://github.com/fusesource/hawtjni/archive/"
11303 "hawtjni-project-" version ".tar.gz"))
11306 "1bqfd732rmh6svyx17fpw9175gc9gzkcbyps2yyrf50c3zzjas6g"))))
11307 (build-system ant-build-system)
11309 `(#:jar-name "hawtjni.jar"
11310 #:source-dir "hawtjni-generator/src/main/java:hawtjni-runtime/src/main/java"
11311 #:tests? #f; no tests
11313 (modify-phases %standard-phases
11314 (add-before 'build 'build-native
11315 (lambda* (#:key inputs #:allow-other-keys)
11316 (let ((include (string-append "-I" (assoc-ref inputs "jdk") "/include/linux")))
11317 (with-directory-excursion "hawtjni-generator/src/main/resources/"
11318 (invoke "gcc" "-c" "hawtjni.c" "-o" "hawtjni.o"
11319 "-fPIC" "-O2" include)
11320 (invoke "gcc" "-c" "hawtjni-callback.c" "-o" "hawtjni-callback.o"
11321 "-fPIC" "-O2" include)
11322 (invoke "gcc" "-o" "libhawtjni.so" "-shared"
11323 "hawtjni.o" "hawtjni-callback.o")))
11325 (add-after 'install 'install-native
11326 (lambda* (#:key outputs #:allow-other-keys)
11327 (let* ((out (assoc-ref outputs "out"))
11328 (lib (string-append out "/lib"))
11329 (inc (string-append out "/include")))
11330 (with-directory-excursion "hawtjni-generator/src/main/resources/"
11331 (install-file "libhawtjni.so" lib)
11332 (install-file "hawtjni.h" inc)))
11334 (add-before 'install 'install-parent
11335 (install-pom-file "pom.xml"))
11337 (install-from-pom "hawtjni-runtime/pom.xml")))))
11339 `(("java-commons-cli" ,java-commons-cli)
11340 ("java-asm" ,java-asm)
11341 ("java-geronimo-xbean-finder" ,java-geronimo-xbean-finder)))
11342 (home-page "https://fusesource.github.io/hawtjni/")
11343 (synopsis "JNI code generator")
11344 (description "HawtJNI is a code generator that produces the JNI code needed
11345 to implement Java native methods. It is based on the jnigen code generator
11346 that is part of the SWT Tools project.")
11347 (license license:asl2.0)))
11349 (define-public java-jansi-native
11351 (name "java-jansi-native")
11355 (uri (string-append "https://github.com/fusesource/jansi-native/"
11356 "archive/jansi-native-" version ".tar.gz"))
11359 "0j2ydlgxbzbgshqkwghbxxxnbnx1mmjgd6k5fw6xfvxw1z956yqf"))))
11360 (build-system ant-build-system)
11362 `(#:jar-name "jansi-native.jar"
11363 #:source-dir "src/main/java"
11364 #:tests? #f; no tests
11366 (modify-phases %standard-phases
11367 (add-before 'build 'build-native
11368 (lambda* (#:key inputs #:allow-other-keys)
11369 ;; there are more required files for windows in windows/
11370 (with-directory-excursion "src/main/native-package/src"
11371 (substitute* "jansi_ttyname.c"
11372 (("#include \"jansi_.*") ""))
11373 (invoke "gcc" "-c" "jansi_ttyname.c" "-o" "jansi_ttyname.o"
11374 (string-append "-I" (assoc-ref inputs "java-hawtjni")
11376 (string-append "-I" (assoc-ref inputs "jdk")
11379 (invoke "gcc" "-o" "libjansi.so" "-shared" "jansi_ttyname.o"))))
11380 (add-before 'build 'install-native
11382 (let ((dir (string-append "build/classes/META-INF/native/"
11383 ,(match (%current-system)
11384 ((or "i686-linux" "armhf-linux")
11386 ((or "x86_64-linux" "aarch64-linux"
11389 (_ "unknown-kernel")))))
11390 (install-file "src/main/native-package/src/libjansi.so" dir))
11392 (add-after 'install 'install-native
11393 (lambda* (#:key outputs #:allow-other-keys)
11394 (install-file "src/main/native-package/src/jansi.h"
11395 (string-append (assoc-ref outputs "out") "/include"))
11397 (add-before 'install 'fix-pom
11399 ;; pom contains variables to complete name, but we don't support that
11400 (substitute* "pom.xml"
11401 (("\\$\\{platform\\}") "native"))
11404 (install-from-pom "pom.xml")))))
11406 `(("java-hawtjni" ,java-hawtjni)))
11407 (home-page "https://fusesource.github.io/jansi/")
11408 (synopsis "Native library for jansi")
11409 (description "This package provides the native library for jansi, a small
11410 Java library that allows you to use ANSI escape sequences to format your
11412 (license license:asl2.0)))
11414 (define-public java-jansi
11416 (name "java-jansi")
11420 (uri (string-append "https://github.com/fusesource/jansi/archive/"
11421 "jansi-project-" version ".tar.gz"))
11424 "11kh3144i3fzp21dpy8zg52mjmsr214k7km9p8ly0rqk2px0qq2z"))))
11425 (build-system ant-build-system)
11427 `(#:jar-name "jansi.jar"
11428 #:source-dir "jansi/src/main/java"
11429 #:test-dir "jansi/src/test"
11431 (modify-phases %standard-phases
11432 (add-after 'check 'clear-term
11434 (invoke "echo" "-e" "\\e[0m")))
11435 (add-before 'install 'install-parent
11436 (install-pom-file "pom.xml"))
11437 (add-before 'install 'fix-pom
11439 ;; pom adds jansi native versions for different platforms, but we
11440 ;; only need one, so use native instead
11441 (substitute* "jansi/pom.xml"
11442 (("windows32") "native")
11443 (("windows64") "native")
11445 (("linux32") "native")
11446 (("linux64") "native")
11447 (("freebsd32") "native")
11448 (("freebsd64") "native"))
11451 (install-from-pom "jansi/pom.xml")))))
11453 `(("java-jansi-native" ,java-jansi-native)))
11455 `(("java-junit" ,java-junit)
11456 ("java-hamcrest-core" ,java-hamcrest-core)))
11457 (home-page "https://fusesource.github.io/jansi/")
11458 (synopsis "Portable ANSI escape sequences")
11459 (description "Jansi is a Java library that allows you to use ANSI escape
11460 sequences to format your console output which works on every platform.")
11461 (license license:asl2.0)))
11463 (define-public java-jboss-el-api-spec
11465 (name "java-jboss-el-api-spec")
11469 (uri (string-append "https://github.com/jboss/jboss-el-api_spec/"
11470 "archive/jboss-el-api_" version
11471 "_spec-1.0.7.Final.tar.gz"))
11474 "1j45ljxalwlibxl7g7iv952sjxkw275m8vyxxij8l6wdd5pf0pdh"))))
11475 (build-system ant-build-system)
11477 `(#:jar-name "java-jboss-el-api_spec.jar"
11478 #:modules ((guix build ant-build-system)
11480 (guix build maven pom)
11481 (guix build java-utils)
11484 (modify-phases %standard-phases
11485 ;; the origin of javax.el:javax.el-api is unknown, so we use this package
11486 ;; instead, which implements the same thing. We override the pom file
11487 ;; to "rename" the package so it can be found by maven.
11488 (add-before 'install 'override-pom
11490 (delete-file "pom.xml")
11491 (with-output-to-file "pom.xml"
11495 (modelVersion "4.0.0")
11497 (groupId "javax.el")
11498 (artifactId "javax.el-api")
11499 (version "3.0")))))
11502 (install-from-pom "pom.xml")))))
11504 `(("java-junit" ,java-junit)))
11505 (home-page "https://github.com/jboss/jboss-el-api_spec")
11506 (synopsis "JSR-341 expression language 3.0 API")
11507 (description "This package contains an implementation of the JSR-341
11508 specification for the expression language 3.0. It implements an expression
11509 language inspired by ECMAScript and XPath. This language is used with
11510 JavaServer Pages (JSP).")
11511 ;; Either GPL2 only or CDDL.
11512 (license (list license:gpl2 license:cddl1.1))))
11514 (define-public java-jboss-interceptors-api-spec
11516 (name "java-jboss-interceptors-api-spec")
11520 (uri (string-append "https://github.com/jboss/jboss-interceptors-api_spec/"
11521 "archive/jboss-interceptors-api_" version
11522 "_spec-1.0.0.Final.tar.gz"))
11525 "0wv8x0jp9a5qxlrgkhb5jdk2gr6vi87b4j4kjb8ryxiy9gn8g51z"))))
11526 (build-system ant-build-system)
11528 `(#:jar-name "java-jboss-interceptors-api_spec.jar"
11531 #:tests? #f; no tests
11532 #:modules ((guix build ant-build-system)
11534 (guix build maven pom)
11535 (guix build java-utils)
11538 (modify-phases %standard-phases
11539 ;; the origin of javax.interceptor:javax.interceptor-api is unknown,
11540 ;; so we use this package instead, which implements the same thing.
11541 ;; We override the pom file to "rename" the package so it can be found
11543 (add-before 'install 'override-pom
11545 (delete-file "pom.xml")
11546 (with-output-to-file "pom.xml"
11550 (modelVersion "4.0.0")
11551 (name "interceptor-api")
11552 (groupId "javax.interceptor")
11553 (artifactId "javax.interceptor-api")
11554 (version "3.0")))))
11557 (install-from-pom "pom.xml")))))
11558 (home-page "https://github.com/jboss/jboss-interceptors-api_spec")
11559 (synopsis "Interceptors 1.2 API classes from JSR 318")
11560 (description "Java-jboss-interceptors-api-spec implements the Interceptors
11561 API. Interceptors are used to interpose on business method invocations and
11563 ;; Either GPL2 only or CDDL.
11564 (license (list license:gpl2 license:cddl1.1))))
11566 (define-public java-cdi-api
11568 (name "java-cdi-api")
11572 (uri (string-append "https://github.com/cdi-spec/cdi/archive/"
11573 version ".tar.gz"))
11574 (file-name (string-append name "-" version ".tar.gz"))
11577 "1iv8b8bp07c5kmqic14jsr868vycjv4qv02lf3pkgp9z21mnfg5y"))))
11578 (build-system ant-build-system)
11580 `(#:source-dir "api/src/main/java"
11581 #:jar-name "java-cdi-api.jar"
11582 #:test-dir "api/src/test"
11584 #:tests? #f; Tests fail because we don't have a CDI provider yet
11586 (modify-phases %standard-phases
11588 (install-from-pom "api/pom.xml")))))
11590 `(("java-javax-inject" ,java-javax-inject)
11591 ("java-jboss-el-api-spec" ,java-jboss-el-api-spec)
11592 ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec)
11593 ("java-weld-parent-pom" ,java-weld-parent-pom)))
11595 `(("java-testng" ,java-testng)
11596 ("java-hamcrest-core" ,java-hamcrest-core)))
11597 (home-page "http://cdi-spec.org/")
11598 (synopsis "Contexts and Dependency Injection APIs")
11599 (description "Java-cdi-api contains the required APIs for Contexts and
11600 Dependency Injection (CDI).")
11601 (license license:asl2.0)))
11603 (define-public java-joda-convert
11605 (name "java-joda-convert")
11609 (uri (string-append "https://github.com/JodaOrg/joda-convert/archive/v"
11610 version ".tar.gz"))
11611 (file-name (string-append name "-" version ".tar.gz"))
11614 "0vp346xz7dh9br4q7xazhc7hvzf76a6hf95fki9bg67q5jr0kjh7"))))
11615 (build-system ant-build-system)
11617 `(#:jar-name (string-append ,name "-" ,version ".jar")
11618 #:source-dir "src/main/java"
11619 #:test-include (list "**/Test*.java")
11620 ;; Contains only interfaces and base classes (no test)
11621 #:test-exclude (list "**/test*/**.java")))
11623 `(("java-guava" ,java-guava)))
11625 `(("java-junit" ,java-junit)
11626 ("java-hamcrest-core" ,java-hamcrest-core)))
11627 (home-page "https://www.joda.org/joda-convert/")
11628 (synopsis "Conversion between Objects and Strings")
11629 (description "Joda-Convert provides a small set of classes to aid
11630 conversion between Objects and Strings. It is not intended to tackle the
11631 wider problem of Object to Object transformation.")
11632 (license license:asl2.0)))
11634 (define-public java-joda-time
11636 (name "java-joda-time")
11640 (uri (string-append "https://github.com/JodaOrg/joda-time/archive/v"
11641 version ".tar.gz"))
11642 (file-name (string-append name "-" version ".tar.gz"))
11645 "1i9x91mi7yg2pasl0k3912f1pg46n37sps6rdb0v1gs8hj9ppwc1"))))
11646 (build-system ant-build-system)
11648 `(#:jar-name "java-joda-time.jar"
11649 #:source-dir "src/main/java"
11650 #:test-include (list "**/Test*.java")
11651 ;; There is no runnable test in these files
11652 #:test-exclude (list "**/Test*Chronology.java" "**/Test*Field.java")
11654 (modify-phases %standard-phases
11655 (add-after 'build 'build-resources
11657 (mkdir-p "build/classes/org/joda/time/tz/data")
11658 (mkdir-p "build/classes/org/joda/time/format")
11659 ;; This will produce the following exception:
11660 ;; java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap"
11661 ;; which is normal, because it doesn't exist yet. It still generates
11662 ;; the same file as in the binary one can find on maven.
11663 (invoke "java" "-cp"
11664 (string-append "build/classes:" (getenv "CLASSPATH"))
11665 "org.joda.time.tz.ZoneInfoCompiler"
11666 "-src" "src/main/java/org/joda/time/tz/src"
11667 "-dst" "build/classes/org/joda/time/tz/data"
11668 "africa" "antarctica" "asia" "australasia"
11669 "europe" "northamerica" "southamerica"
11670 "pacificnew" "etcetera" "backward" "systemv")
11671 (for-each (lambda (f)
11672 (copy-file f (string-append
11673 "build/classes/org/joda/time/format/"
11675 (find-files "src/main/java/org/joda/time/format" ".*.properties"))
11677 (add-before 'install 'regenerate-jar
11679 ;; We need to regenerate the jar file to add generated data.
11680 (delete-file "build/jar/java-joda-time.jar")
11681 (invoke "ant" "jar")))
11682 (add-before 'check 'copy-test-resources
11684 (mkdir-p "build/test-classes/org/joda/time/tz/data")
11685 (copy-file "src/test/resources/tzdata/ZoneInfoMap"
11686 "build/test-classes/org/joda/time/tz/data/ZoneInfoMap")
11687 (copy-recursively "src/test/resources" "build/test-classes")
11690 `(("java-joda-convert" ,java-joda-convert)))
11692 `(("java-junit" ,java-junit)
11693 ("java-hamcrest-core" ,java-hamcrest-core)
11694 ("tzdata" ,tzdata)))
11695 (home-page "https://www.joda.org/joda-time/")
11696 (synopsis "Replacement for the Java date and time classes")
11697 (description "Joda-Time is a replacement for the Java date and time
11698 classes prior to Java SE 8.")
11699 (license license:asl2.0)))
11701 (define-public java-xerces
11703 (name "java-xerces")
11708 (uri (string-append "mirror://apache/xerces/j/source/"
11709 "Xerces-J-src." version ".tar.gz"))
11711 (base32 "0494kq36gw3nah19ifb720vwxbpg4ww0k6m3zq6wyanw6a083p6s"))
11712 (patches (search-patches
11713 "java-xerces-xjavac_taskdef.patch"
11714 "java-xerces-build_dont_unzip.patch"
11715 "java-xerces-bootclasspath.patch"))))
11716 (build-system ant-build-system)
11718 `(#:tests? #f;; Test files are not present
11719 #:test-target "test"
11722 (modify-phases %standard-phases
11723 (add-after 'unpack 'create-build.properties
11724 (lambda* (#:key inputs #:allow-other-keys)
11725 (let ((jaxp (assoc-ref inputs "java-jaxp"))
11726 (resolver (assoc-ref inputs "java-apache-xml-commons-resolver")))
11727 (with-output-to-file "build.properties"
11730 "jar.jaxp = ~a/share/java/jaxp.jar~@
11731 jar.apis-ext = ~a/share/java/jaxp.jar~@
11732 jar.resolver = ~a/share/java/xml-resolver.jar~%"
11733 jaxp jaxp resolver)))
11734 ;; Make xerces use our version of jaxp in tests
11735 (substitute* "build.xml"
11737 (string-append jaxp "/share/java/jaxp.jar"))
11738 (("\\$\\{tools.dir\\}/\\$\\{jar.apis\\}")
11741 (replace 'install (install-jars "build")))))
11743 `(("java-apache-xml-commons-resolver" ,java-apache-xml-commons-resolver)
11744 ("java-jaxp" ,java-jaxp)))
11745 (home-page "https://xerces.apache.org/xerces2-j/")
11746 (synopsis "Validating XML parser for Java with DOM level 3 support")
11747 (description "The Xerces2 Java parser is the reference implementation of
11748 XNI, the Xerces Native Interface, and also a fully conforming XML Schema
11751 Xerces2-J supports the following standards and APIs:
11754 @item eXtensible Markup Language (XML) 1.0 Second Edition Recommendation
11755 @item Namespaces in XML Recommendation
11756 @item Document Object Model (DOM) Level 2 Core, Events, and Traversal and
11757 Range Recommendations
11758 @item Simple API for XML (SAX) 2.0.1 Core and Extension
11759 @item Java APIs for XML Processing (JAXP) 1.2.01
11760 @item XML Schema 1.0 Structures and Datatypes Recommendations
11761 @item Experimental implementation of the Document Object Model (DOM) Level 3
11762 Core and Load/Save Working Drafts
11763 @item Provides a partial implementation of the XML Inclusions (XInclude) W3C
11764 Candidate Recommendation
11767 Xerces is now able to parse documents written according to the XML 1.1
11768 Candidate Recommendation, except that it does not yet provide an option to
11769 enable normalization checking as described in section 2.13 of this
11770 specification. It also handles namespaces according to the XML Namespaces 1.1
11771 Candidate Recommendation, and will correctly serialize XML 1.1 documents if
11772 the DOM level 3 load/save API's are in use.")
11773 (license license:asl2.0)))
11775 (define-public java-jakarta-regexp
11777 (name "java-jakarta-regexp")
11782 (uri (string-append
11783 "https://archive.apache.org/dist/jakarta/regexp/jakarta-regexp-"
11784 version ".tar.gz"))
11787 "0zg9rmyif48dck0cv6ynpxv23mmcsx265am1fnnxss7brgw0ms3r"))))
11788 (build-system ant-build-system)
11790 `(#:test-target "test"
11792 (modify-phases %standard-phases
11794 (lambda* (#:key outputs #:allow-other-keys)
11795 (let* ((out (assoc-ref outputs "out"))
11796 (out-share (string-append out "/share/java")))
11797 (mkdir-p out-share)
11798 (for-each (lambda (name)
11799 (install-file name out-share))
11800 (find-files "build" "^jakarta-regexp-.*\\.jar$"))
11802 (home-page "https://attic.apache.org/projects/jakarta-regexp.html")
11803 (synopsis "Regular expression parser generator for Java.")
11804 (description "@code{jakarta-regexp} is an old regular expression parser
11805 generator for Java.")
11806 (license license:asl2.0)))
11808 (define-public java-jline
11810 (name "java-jline")
11814 (uri (string-append "https://github.com/jline/jline1/archive/jline-"
11815 version ".tar.gz"))
11818 "0bi3p6vrh7a6v0fbpb6rx9plpmx5zk3lr352xzdbz2jcxg499wir"))))
11819 (build-system ant-build-system)
11821 `(#:jar-name "jline.jar"
11822 #:source-dir "src/main/java"
11823 #:test-dir "src/test"
11825 (modify-phases %standard-phases
11826 (add-before 'build 'copy-resources
11828 (copy-recursively "src/main/resources" "build/classes")
11831 `(("java-junit" ,java-junit)))
11832 (home-page "https://jline.github.io")
11833 (synopsis "Console input handling library")
11834 (description "JLine is a Java library for handling console input. It is
11835 similar in functionality to BSD editline and GNU readline but with additional
11836 features that bring it on par with the Z shell line editor.")
11837 (license license:bsd-3)))
11839 (define-public java-jline-2
11841 (inherit java-jline)
11845 (uri (string-append "https://github.com/jline/jline2/archive/jline-"
11846 version ".tar.gz"))
11849 "1c6qa26mf0viw8hg4jnv72s7i1qb1gh1l8rrzcdvqhqhx82rkdlf"))))
11852 ,@(package-arguments java-jline)))
11854 `(("java-jansi" ,java-jansi)
11855 ("java-jansi-native" ,java-jansi-native)))
11857 `(("java-powermock-modules-junit4" ,java-powermock-modules-junit4)
11858 ("java-powermock-modules-junit4-common" ,java-powermock-modules-junit4-common)
11859 ("java-powermock-api-easymock" ,java-powermock-api-easymock)
11860 ("java-powermock-api-support" ,java-powermock-api-support)
11861 ("java-powermock-core" ,java-powermock-core)
11862 ("java-powermock-reflect" ,java-powermock-reflect)
11863 ("java-easymock" ,java-easymock)
11864 ("java-jboss-javassist" ,java-jboss-javassist)
11865 ("java-objenesis" ,java-objenesis)
11866 ("java-asm" ,java-asm)
11867 ("java-hamcrest-core" ,java-hamcrest-core)
11868 ("java-cglib" ,java-cglib)
11869 ("java-junit" ,java-junit)
11870 ("java-hawtjni" ,java-hawtjni)))))
11872 (define-public java-xmlunit
11874 (name "java-xmlunit")
11878 (uri (string-append "https://github.com/xmlunit/xmlunit/archive/v"
11879 version ".tar.gz"))
11880 (file-name (string-append name "-" version ".tar.gz"))
11883 "035rivlnmwhfqj0fzviciv0bkh1h95ps1iwnh2kjcvdbk5nccm4z"))))
11884 (build-system ant-build-system)
11886 `(#:jar-name "java-xmlunit.jar"
11887 #:source-dir "xmlunit-core/src/main/java"
11888 #:test-dir "xmlunit-core/src/test"
11890 (modify-phases %standard-phases
11891 (add-before 'check 'copy-test-resources
11892 (lambda* (#:key inputs #:allow-other-keys)
11893 (copy-recursively (assoc-ref inputs "resources") "../test-resources")
11896 `(("java-junit" ,java-junit)
11897 ("java-mockito-1" ,java-mockito-1)
11898 ("java-hamcrest-all" ,java-hamcrest-all)
11899 ("java-objenesis" ,java-objenesis)
11900 ("java-asm" ,java-asm)
11901 ("java-cglib" ,java-cglib)
11905 (uri (git-reference
11906 (url "https://github.com/xmlunit/test-resources")
11907 (commit "a590d2ae865c3e0455691d76ba8eefccc2215aec")))
11908 (file-name "java-xmlunit-test-resources")
11911 "0r0glj37pg5l868yjz78gckr91cs8fysxxbp9p328dssssi91agr"))))))
11912 (home-page "https://www.xmlunit.org/")
11913 (synopsis "XML output testing")
11914 (description "XMLUnit provides you with the tools to verify the XML you
11915 emit is the one you want to create. It provides helpers to validate against
11916 an XML Schema, assert the values of XPath queries or compare XML documents
11917 against expected outcomes.")
11918 (license license:asl2.0)))
11920 (define-public java-xmlunit-legacy
11922 (inherit java-xmlunit)
11923 (name "java-xmlunit-legacy")
11925 `(#:jar-name "java-xmlunit-legacy.jar"
11926 #:source-dir "xmlunit-legacy/src/main/java"
11927 #:test-dir "xmlunit-legacy/src/test"))
11929 `(("java-xmlunit" ,java-xmlunit)
11930 ("java-junit" ,java-junit)))
11932 `(("java-mockito-1" ,java-mockito-1)))))
11934 (define-public java-xmlunit-matchers
11936 (inherit java-xmlunit)
11937 (name "java-xmlunit-matchers")
11939 `(#:jar-name "java-xmlunit-matchers.jar"
11940 #:source-dir "xmlunit-matchers/src/main/java"
11941 #:test-dir "xmlunit-matchers/src/test"
11943 ;; Cannot open xsd for http://www.xmlunit.org/test-support/Book.xsd
11944 (list "**/ValidationMatcherTest.java")
11946 (modify-phases %standard-phases
11947 (add-before 'build 'copy-test-class
11949 (copy-file "xmlunit-core/src/test/java/org/xmlunit/TestResources.java"
11950 "xmlunit-matchers/src/test/java/org/xmlunit/TestResources.java")
11952 (add-before 'build 'fix-test-resources-path
11954 (substitute* (find-files "xmlunit-matchers/src/test" ".*.java")
11955 (("../test-resources") "test-resources"))
11957 (add-before 'check 'copy-test-resources
11958 (lambda* (#:key inputs #:allow-other-keys)
11959 (copy-recursively (assoc-ref inputs "resources") "test-resources")
11962 `(("java-xmlunit" ,java-xmlunit)
11963 ("java-junit" ,java-junit)))))
11965 (define-public java-openchart2
11967 (name "java-openchart2")
11971 (uri (string-append "http://download.approximatrix.com/openchart2/"
11972 "openchart2-" version ".source.zip"))
11975 "1xq96zm5r02n1blja0072jmmsifmxc40lbyfbnmcnr6mw42frh4g"))))
11976 (build-system ant-build-system)
11978 `(#:test-target "test"
11980 (modify-phases %standard-phases
11981 (add-after 'unpack 'fix-junit-errors
11983 (with-directory-excursion "unittest/src/com/approximatrix/charting/"
11984 (substitute* '("coordsystem/ticklocator/NumericXTickLocatorTest.java"
11985 "coordsystem/ticklocator/NumericYTickLocatorTest.java"
11986 "coordsystem/ticklocator/ObjectXTickLocatorTest.java"
11987 "model/DefaultChartDataModelConstraintsTest.java"
11988 "model/MultiScatterDataModelConstraintsTest.java"
11989 "model/threedimensional/DotPlotDataModelConstraintsTest.java")
11990 (("(assertEquals[^;]+);" before _)
11991 (string-append (string-drop-right before 2) ", 1E-6);"))))
11993 (replace 'install (install-jars ".")))))
11996 ("java-junit" ,java-junit)
11997 ("java-hamcrest-core" ,java-hamcrest-core)))
11998 (home-page "https://approximatrix.com/products/openchart2/")
11999 (synopsis "Simple plotting for Java")
12000 (description "Openchart2 provides a simple, yet powerful, interface for
12001 Java programmers to create two-dimensional charts and plots. The library
12002 features an assortment of graph styles, including advanced scatter plots, bar
12003 graphs, and pie charts.")
12004 (license license:lgpl2.1+)))
12006 (define-public java-commons-httpclient
12008 (name "java-commons-httpclient")
12012 (uri (string-append "mirror://apache/httpcomponents/"
12013 "commons-httpclient/source/commons-httpclient-"
12014 version "-src.tar.gz"))
12017 "1wlpn3cfy3d4inxy6g7wxcsa8p7sshn6aldk9y4ia3lb879rd97r"))))
12018 (build-system ant-build-system)
12020 `(#:build-target "compile"
12021 #:test-target "test"
12022 #:tests? #f; requires junit-textui (junit 3)
12024 (modify-phases %standard-phases
12025 (add-before 'build 'fix-accent
12027 (for-each (lambda (file)
12028 (with-fluids ((%default-port-encoding "ISO-8859-1"))
12030 (("\\* @author Ortwin .*") "* @author Ortwin Glueck\n"))))
12031 '("src/java/org/apache/commons/httpclient/HttpContentTooLargeException.java"
12032 "src/examples/TrivialApp.java" "src/examples/ClientApp.java"
12033 "src/test/org/apache/commons/httpclient/TestHttps.java"
12034 "src/test/org/apache/commons/httpclient/TestURIUtil2.java"))
12037 (lambda* (#:key outputs #:allow-other-keys)
12038 (invoke "ant" "dist"
12039 (string-append "-Ddist.home=" (assoc-ref outputs "out")
12043 `(("java-commons-logging" ,java-commons-logging-minimal)
12044 ("java-commons-codec" ,java-commons-codec)))
12045 (home-page "https://hc.apache.org")
12046 (synopsis "HTTP/1.1 compliant HTTP agent implementation")
12047 (description "This package contains an HTTP/1.1 compliant HTTP agent
12048 implementation. It also provides reusable components for client-side
12049 authentication, HTTP state management, and HTTP connection management.")
12050 (license license:asl2.0)))
12052 (define-public java-commons-vfs
12054 (name "java-commons-vfs")
12058 (uri (string-append "mirror://apache/commons/vfs/source/"
12059 "commons-vfs2-distribution-" version "-src.tar.gz"))
12060 (file-name (string-append name "-" version ".tar.gz"))
12063 "1cnq1iaghbp4cslpnvwbp83i5v234x87irssqynhwpfgw7caf1s3"))
12064 (modules '((guix build utils)))
12067 (for-each delete-file
12068 (find-files "." "\\.jar$"))
12070 (build-system ant-build-system)
12072 `(#:jar-name "commons-vfs.jar"
12073 #:source-dir "commons-vfs2/src/main/java"
12074 #:test-dir "commons-vfs2/src/test"
12075 ; FIXME: tests depend on many things: apache sshd, hadoop, ftpserver, ...
12078 (modify-phases %standard-phases
12079 (add-before 'build 'remove-hadoop-and-webdav
12080 ; Remove these files as they are not required and depend on difficult
12083 (for-each delete-file-recursively
12084 '("commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/webdav"
12085 "commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs"))
12088 `(("java-commons-collections4" ,java-commons-collections4)
12089 ("java-commons-compress" ,java-commons-compress)
12090 ("java-commons-httpclient" ,java-commons-httpclient)
12091 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
12092 ("java-commons-net" ,java-commons-net)
12093 ("java-jsch" ,java-jsch)))
12094 (home-page "https://commons.apache.org/proper/commons-vfs/")
12095 (synopsis "Java file system library")
12096 (description "Commons VFS provides a single API for accessing various
12097 different file systems. It presents a uniform view of the files from various
12098 different sources, such as the files on local disk, on an HTTP server, or
12099 inside a Zip archive.")
12100 (license license:asl2.0)))
12102 (define-public java-jakarta-oro
12104 (name "java-jakarta-oro")
12108 (uri (string-append "mirror://apache/jakarta/oro/"
12109 "jakarta-oro-" version ".tar.gz"))
12112 "0rpmnsskiwmsy8r0sckz5n5dbvh3vkxx8hpm177c754r8xy3qksc"))
12113 (modules '((guix build utils)))
12116 (delete-file (string-append "jakarta-oro-" ,version ".jar"))
12118 (build-system ant-build-system)
12120 `(#:build-target "package"
12121 #:make-flags (list "-DDATE" "(no recorded date for reproducibility)")
12122 #:tests? #f; tests are run as part of the build process
12124 (modify-phases %standard-phases
12126 (install-jars ,(string-append "jakarta-oro-" version))))))
12127 (home-page "https://jakarta.apache.org/oro/")
12128 (synopsis "Text-processing for Java")
12129 (description "The Jakarta-ORO Java classes are a set of text-processing
12130 Java classes that provide Perl5 compatible regular expressions, AWK-like
12131 regular expressions, glob expressions, and utility classes for performing
12132 substitutions, splits, filtering filenames, etc. This library is the successor
12133 of the OROMatcher, AwkTools, PerlTools, and TextTools libraries originally
12135 (license license:asl1.1)))
12137 (define-public java-native-access
12139 (name "java-native-access")
12143 (uri (string-append "https://github.com/java-native-access/jna/"
12144 "archive/" version ".tar.gz"))
12145 (file-name (string-append name "-" version ".tar.gz"))
12148 "0zrpzkib6b905i018a9pqlzkqinphywr6y4jwv6mwp63jjqvqkd9"))
12149 (modules '((guix build utils)))
12152 (for-each delete-file (find-files "." ".*.jar"))
12153 (delete-file-recursively "native/libffi")
12154 (delete-file-recursively "dist")
12156 (build-system ant-build-system)
12158 `(#:tests? #f; FIXME: tests require reflections.jar
12159 #:test-target "test"
12160 #:make-flags (list "-Ddynlink.native=true")
12162 (modify-phases %standard-phases
12163 (add-before 'build 'fix-build.xml
12164 (lambda* (#:key inputs #:allow-other-keys)
12165 (substitute* "build.xml"
12166 ;; Since we removed the bundled ant.jar, give the correct path
12167 (("lib/ant.jar") (string-append (assoc-ref inputs "ant") "/lib/ant.jar"))
12168 ;; We removed generated native libraries. We can only rebuild one
12169 ;; so don't fail if we can't find a native library for another architecture.
12170 (("zipfileset") "zipfileset erroronmissingarchive=\"false\""))
12171 ;; Copy test dependencies
12172 (copy-file (car (find-files (assoc-ref inputs "java-junit") "jar$"))
12174 (copy-file (car (find-files (assoc-ref inputs "java-hamcrest-core")
12176 "lib/hamcrest-core.jar")
12177 ;; FIXME: once reflections.jar is built, copy it to lib/test.
12179 (add-before 'build 'build-native
12181 (invoke "ant" "-Ddynlink.native=true" "native")
12184 (install-jars "build")))))
12186 `(("libffi" ,libffi)
12190 `(("java-junit" ,java-junit)
12191 ("java-hamcrest-core" ,java-hamcrest-core)))
12192 (home-page "https://github.com/java-native-access/jna")
12193 (synopsis "Access to native shared libraries from Java")
12194 (description "JNA provides Java programs easy access to native shared
12195 libraries without writing anything but Java code - no JNI or native code is
12196 required. JNA allows you to call directly into native functions using natural
12197 Java method invocation.")
12198 ;; Java Native Access project (JNA) is dual-licensed under 2
12199 ;; alternative Free licenses: LGPL 2.1 or later and Apache License 2.0.
12202 license:lgpl2.1+))))
12204 (define-public java-native-access-platform
12206 (inherit java-native-access)
12207 (name "java-native-access-platform")
12209 `(#:test-target "test"
12210 #:tests? #f; require jna-test.jar
12212 (modify-phases %standard-phases
12213 (add-before 'build 'chdir
12215 (chdir "contrib/platform")
12217 (add-after 'chdir 'fix-ant
12218 (lambda* (#:key inputs #:allow-other-keys)
12219 (substitute* "nbproject/project.properties"
12220 (("../../build/jna.jar")
12221 (string-append (assoc-ref inputs "java-native-access")
12222 "/share/java/jna.jar"))
12223 (("../../lib/hamcrest-core-.*.jar")
12224 (car (find-files (assoc-ref inputs "java-hamcrest-core")
12226 (("../../lib/junit.jar")
12227 (car (find-files (assoc-ref inputs "java-junit")
12231 (install-jars "dist")))))
12233 `(("java-native-access" ,java-native-access)))
12234 (synopsis "Cross-platform mappings for jna")
12235 (description "java-native-access-platform has cross-platform mappings
12236 and mappings for a number of commonly used platform functions, including a
12237 large number of Win32 mappings as well as a set of utility classes that
12238 simplify native access.")))
12240 (define-public java-jsch-agentproxy-core
12242 (name "java-jsch-agentproxy-core")
12246 (uri (string-append "https://github.com/ymnk/jsch-agent-proxy/archive/"
12247 version ".tar.gz"))
12248 (file-name (string-append name "-" version ".tar.gz"))
12251 "02iqg6jbc1kxvfzqcg6wy9ygqxfm82bw5rf6vnswqy4y572niz4q"))))
12252 (build-system ant-build-system)
12254 `(#:jar-name "jsch-agentproxy-core.jar"
12255 #:source-dir "jsch-agent-proxy-core/src/main/java"
12256 #:tests? #f)); no tests
12257 (home-page "https://github.com/ymnk/jsch-agent-proxy")
12258 (synopsis "Core component of the proxy to ssh-agent and Pageant in Java")
12259 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
12260 and Pageant included Putty. It will be easily integrated into JSch, and users
12261 will be allowed to use these programs for authentication.")
12262 (license license:bsd-3)))
12264 (define-public java-jsch-agentproxy-sshagent
12266 (inherit java-jsch-agentproxy-core)
12267 (name "java-jsch-agentproxy-sshagent")
12269 `(#:jar-name "jsch-agentproxy-sshagent.jar"
12270 #:source-dir "jsch-agent-proxy-sshagent/src/main/java"
12271 #:tests? #f)); no tests
12273 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)))
12274 (synopsis "Proxy to ssh-agent")
12275 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
12276 and Pageant included in Putty. This component contains the code for a proxy to
12279 (define-public java-jsch-agentproxy-usocket-jna
12281 (inherit java-jsch-agentproxy-core)
12282 (name "java-jsch-agentproxy-usocket-jna")
12284 `(#:jar-name "jsch-agentproxy-usocket-jna.jar"
12285 #:source-dir "jsch-agent-proxy-usocket-jna/src/main/java"
12286 #:tests? #f)); no tests
12288 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
12289 ("java-native-access" ,java-native-access)))
12290 (synopsis "USocketFactory implementation using JNA")
12291 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
12292 and Pageant included in Putty. This component contains an implementation of
12293 USocketFactory using @dfn{JNA} (Java Native Access).")))
12295 (define-public java-jsch-agentproxy-pageant
12297 (inherit java-jsch-agentproxy-core)
12298 (name "java-jsch-agentproxy-pageant")
12300 `(#:jar-name "jsch-agentproxy-pageant.jar"
12301 #:source-dir "jsch-agent-proxy-pageant/src/main/java"
12302 #:tests? #f)); no tests
12304 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
12305 ("java-native-access" ,java-native-access)
12306 ("java-native-access-platform" ,java-native-access-platform)))
12307 (synopsis "Proxy to pageant")
12308 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
12309 and Pageant included in Putty. This component contains the code for a proxy to
12312 (define-public java-jsch-agentproxy-usocket-nc
12314 (inherit java-jsch-agentproxy-core)
12315 (name "java-jsch-agentproxy-usocket-nc")
12317 `(#:jar-name "jsch-agentproxy-usocket-nc.jar"
12318 #:source-dir "jsch-agent-proxy-usocket-nc/src/main/java"
12319 #:tests? #f)); no tests
12321 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)))
12322 (synopsis "USocketFactory implementation using netcat")
12323 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
12324 and Pageant included in Putty. This component contains an implementation of
12325 USocketFactory using netcat.")))
12327 (define-public java-jsch-agentproxy-connector-factory
12329 (inherit java-jsch-agentproxy-core)
12330 (name "java-jsch-agentproxy-connector-factory")
12332 `(#:jar-name "jsch-agentproxy-connector-factory.jar"
12333 #:source-dir "jsch-agent-proxy-connector-factory/src/main/java"
12334 #:tests? #f)); no tests
12336 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
12337 ("java-jsch-agentproxy-sshagent" ,java-jsch-agentproxy-sshagent)
12338 ("java-jsch-agentproxy-usocket-jna" ,java-jsch-agentproxy-usocket-jna)
12339 ("java-jsch-agentproxy-pageant" ,java-jsch-agentproxy-pageant)
12340 ("java-jsch-agentproxy-usocket-nc" ,java-jsch-agentproxy-usocket-nc)))
12341 (synopsis "Connector factory for jsch agent proxy")
12342 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
12343 and Pageant included in Putty. This component contains a connector factory.")))
12345 (define-public java-jsch-agentproxy-jsch
12347 (inherit java-jsch-agentproxy-core)
12348 (name "java-jsch-agentproxy-jsch")
12350 `(#:jar-name "jsch-agentproxy-jsch.jar"
12351 #:source-dir "jsch-agent-proxy-jsch/src/main/java"
12352 #:tests? #f)); no tests
12354 `(("java-jsch" ,java-jsch)
12355 ("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)))
12356 (synopsis "JSch integration library for agentproxy")
12357 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
12358 and Pageant included in Putty. This component contains a library to use
12359 jsch-agent-proxy with JSch.")))
12361 (define-public java-apache-ivy
12363 (name "java-apache-ivy")
12367 (uri (string-append "mirror://apache//ant/ivy/" version
12368 "/apache-ivy-" version "-src.tar.gz"))
12371 "1xkfn57g2m7l6y0xdq75x5rnrgk52m9jx2xah70g3ggl8750hbr0"))
12374 "java-apache-ivy-port-to-latest-bouncycastle.patch"))))
12375 (build-system ant-build-system)
12377 `(#:jar-name "ivy.jar"
12380 (modify-phases %standard-phases
12381 (add-before 'build 'remove-example
12383 (delete-file-recursively "src/example")
12385 (add-before 'build 'copy-resources
12387 (with-directory-excursion "src/java"
12388 (for-each (lambda (file)
12389 (install-file file (string-append "../../build/classes/" (dirname file))))
12391 (find-files "." ".*.css")
12392 (find-files "." ".*.ent")
12393 (find-files "." ".*.html")
12394 (find-files "." ".*.properties")
12395 (find-files "." ".*.xsd")
12396 (find-files "." ".*.xsl")
12397 (find-files "." ".*.xml"))))
12399 (add-before 'build 'fix-vfs
12402 '("src/java/org/apache/ivy/plugins/repository/vfs/VfsRepository.java"
12403 "src/java/org/apache/ivy/plugins/repository/vfs/VfsResource.java")
12404 (("import org.apache.commons.vfs") "import org.apache.commons.vfs2"))
12406 (add-before 'install 'copy-manifest
12408 (install-file "META-INF/MANIFEST.MF" "build/classes/META-INF")
12410 (add-before 'install 'repack
12412 (invoke "jar" "-cmf" "build/classes/META-INF/MANIFEST.MF" "build/jar/ivy.jar"
12413 "-C" "build/classes" ".")))
12414 (add-after 'install 'install-bin
12415 (lambda* (#:key outputs #:allow-other-keys)
12416 (let* ((bin (string-append (assoc-ref outputs "out") "/bin"))
12417 (ivy (string-append bin "/ivy"))
12418 (jar (string-append (assoc-ref outputs "out") "/share/java/ivy.jar")))
12420 (with-output-to-file ivy
12422 (display (string-append
12423 "#!" (which "sh") "\n"
12424 "if [[ -z $CLASSPATH ]]; then\n"
12425 " cp=\"" (getenv "CLASSPATH") ":" jar "\"\n"
12427 " cp=\"" (getenv "CLASSPATH") ":" jar ":$CLASSPATH\"\n"
12429 (which "java") " -cp $cp org.apache.ivy.Main $@\n"))))
12433 `(("java-bouncycastle" ,java-bouncycastle)
12434 ("java-commons-cli" ,java-commons-cli)
12435 ("java-commons-collections" ,java-commons-collections)
12436 ("java-commons-httpclient" ,java-commons-httpclient)
12437 ("java-commons-lang" ,java-commons-lang)
12438 ("java-commons-vfs" ,java-commons-vfs)
12439 ("java-jakarta-oro" ,java-jakarta-oro)
12440 ("java-jsch" ,java-jsch)
12441 ("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
12442 ("java-jsch-agentproxy-connector-factory" ,java-jsch-agentproxy-connector-factory)
12443 ("java-jsch-agentproxy-jsch" ,java-jsch-agentproxy-jsch)
12444 ("java-junit" ,java-junit)))
12445 (home-page "https://ant.apache.org/ivy")
12446 (synopsis "Dependency manager for the Java programming language")
12447 (description "Ivy is a tool for managing (recording, tracking, resolving
12448 and reporting) project dependencies. It is characterized by the following:
12451 @item flexibility and configurability - Ivy is essentially process agnostic
12452 and is not tied to any methodology or structure. Instead it provides the
12453 necessary flexibility and configurability to be adapted to a broad range
12454 of dependency management and build processes.
12455 @item tight integration with Apache Ant - while available as a standalone tool,
12456 Ivy works particularly well with Apache Ant providing a number of
12457 powerful Ant tasks ranging from dependency resolution to dependency
12458 reporting and publication.
12460 (license license:asl2.0)))
12462 (define-public java-eclipse-sisu-inject
12464 (name "java-eclipse-sisu-inject")
12468 (uri (git-reference
12469 (url "https://github.com/eclipse/sisu.inject/")
12470 (commit (string-append "releases/" version))))
12471 (file-name (git-file-name name version))
12474 "16044sizdb0rjbhlfbmcnpds5y7by7dyn9b0c11606aikqi8k3x6"))))
12475 (build-system ant-build-system)
12477 `(#:jar-name "eclipse-sisu-inject.jar"
12478 #:source-dir "org.eclipse.sisu.inject/src"
12479 #:tests? #f; no tests
12481 (modify-phases %standard-phases
12483 (install-from-pom "org.eclipse.sisu.inject/pom.xml")))))
12485 `(("java-guice" ,java-guice)
12486 ("java-sisu-inject-parent-pom" ,java-sisu-inject-parent-pom)))
12488 `(("java-guice-servlet" ,java-guice-servlet)
12489 ("java-javax-inject" ,java-javax-inject)
12490 ("java-javaee-servletapi" ,java-javaee-servletapi)
12491 ("java-junit" ,java-junit)
12492 ("java-slf4j-api" ,java-slf4j-api)
12493 ("java-jsr305" ,java-jsr305)
12494 ("java-jsr250" ,java-jsr250)
12495 ("java-cdi-api" ,java-cdi-api)
12496 ("java-osgi-framework" ,java-osgi-framework)
12497 ("java-osgi-util-tracker" ,java-osgi-util-tracker)
12498 ("java-testng" ,java-testng)))
12499 (home-page "https://www.eclipse.org/sisu/")
12500 (synopsis "Classpath scanning, auto-binding, and dynamic auto-wiring")
12501 (description "Sisu is a modular JSR330-based container that supports
12502 classpath scanning, auto-binding, and dynamic auto-wiring. Sisu uses
12503 Google-Guice to perform dependency injection and provide the core JSR330
12504 support, but removes the need to write explicit bindings in Guice modules.
12505 Integration with other containers via the Eclipse Extension Registry and the
12506 OSGi Service Registry is a goal of this project.")
12507 (license license:epl1.0)))
12509 (define java-sisu-inject-parent-pom
12511 (inherit java-eclipse-sisu-inject)
12512 (name "java-sisu-inject-parent-pom")
12516 (modify-phases %standard-phases
12517 (delete 'configure)
12520 (install-pom-file "pom.xml")))))
12521 (propagated-inputs '())))
12523 (define-public java-eclipse-sisu-plexus
12525 (name "java-eclipse-sisu-plexus")
12529 (uri (git-reference
12530 (url "https://github.com/eclipse/sisu.plexus")
12531 (commit (string-append "releases/" version))))
12532 (file-name (git-file-name name version))
12535 "17mjlajnsqnk07cc58h1qpxrif85yb2m2y0pyba48yjjgikk8r9f"))
12536 (modules '((guix build utils)))
12539 (for-each delete-file (find-files "." ".*.jar"))
12540 (rename-file "org.eclipse.sisu.plexus.tests/src"
12541 "org.eclipse.sisu.plexus.tests/java")
12543 (build-system ant-build-system)
12545 `(#:jar-name "eclipse-sisu-plexus.jar"
12546 #:source-dir "org.eclipse.sisu.plexus/src"
12547 #:test-dir "org.eclipse.sisu.plexus.tests"
12550 ;; This test fails probably because we can't generate the necessary
12552 "**/PlexusLoggingTest.*"
12553 ;; FIXME: This test fails because of some injection error
12554 "**/PlexusRequirementTest.*")
12557 (modify-phases %standard-phases
12558 (add-before 'build 'copy-resources
12560 (install-file "org.eclipse.sisu.plexus/META-INF/plexus/components.xml"
12561 "build/classes/META-INF/plexus")
12563 (add-before 'check 'build-test-jar
12565 (with-directory-excursion "org.eclipse.sisu.plexus.tests/resources/component-jar/src/main/"
12567 (with-directory-excursion "java"
12568 (apply invoke "javac" "-cp"
12569 (string-append (getenv "CLASSPATH")
12570 ":../../../../../build/classes")
12571 (find-files "." ".*.java"))
12572 (for-each (lambda (file) (install-file file (string-append "../build/" file)))
12573 (find-files "." ".*.jar")))
12574 (mkdir-p "build/META-INF/plexus")
12575 (copy-file "resources/META-INF/plexus/components.xml"
12576 "build/META-INF/plexus/components.xml")
12577 (with-directory-excursion "build"
12578 (invoke "jar" "cf" "../../../component-jar-0.1.jar" ".")))
12579 (with-directory-excursion "org.eclipse.sisu.plexus.tests/"
12580 (copy-recursively "META-INF" "../build/test-classes/META-INF")
12581 (substitute* "java/org/eclipse/sisu/plexus/DefaultPlexusContainerTest.java"
12582 (("resources/component-jar")
12583 "org.eclipse.sisu.plexus.tests/resources/component-jar")))
12586 (install-from-pom "org.eclipse.sisu.plexus/pom.xml")))))
12588 `(("java-plexus-classworlds" ,java-plexus-classworlds)
12589 ("java-plexus-utils" ,java-plexus-utils)
12590 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
12591 ("java-cdi-api" ,java-cdi-api)
12592 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
12593 ("java-sisu-plexus-parent-pom" ,java-sisu-plexus-parent-pom)))
12595 `(("java-osgi-framework" ,java-osgi-framework)
12596 ("java-slf4j-api" ,java-slf4j-api)
12597 ("java-javax-inject" ,java-javax-inject)
12598 ("java-guice" ,java-guice)
12599 ("java-guava" ,java-guava)
12600 ("java-aopalliance" ,java-aopalliance)
12601 ("java-asm" ,java-asm)
12602 ("java-cglib" ,java-cglib)))
12604 `(("java-junit" ,java-junit)))
12605 (home-page "https://www.eclipse.org/sisu/")
12606 (synopsis "Plexus support for the sisu container")
12607 (description "Sisu is a modular JSR330-based container that supports
12608 classpath scanning, auto-binding, and dynamic auto-wiring. This package
12609 adds Plexus support to the Sisu-Inject container.")
12610 (license license:epl1.0)))
12612 (define java-sisu-plexus-parent-pom
12614 (inherit java-eclipse-sisu-plexus)
12615 (name "java-sisu-plexus-parent-pom")
12619 (modify-phases %standard-phases
12620 (delete 'configure)
12623 (install-pom-file "pom.xml")))))
12625 `(("java-sonatype-oss-parent-pom-9" ,java-sonatype-oss-parent-pom-9)))))
12627 (define-public java-commons-compiler
12629 (name "java-commons-compiler")
12633 (uri (git-reference
12634 (url "https://github.com/janino-compiler/janino")
12635 (commit "91aa95686d1e4ca3b16a984a03a38686572331b2")))
12636 (file-name (string-append name "-" version))
12639 "04hfdl59sgh20qkxzgnibvs8f9hy6n7znxwpk611y5d89977y62r"))
12640 (modules '((guix build utils)))
12643 (for-each delete-file
12644 (find-files "." "\\.jar$"))
12646 (build-system ant-build-system)
12648 `(#:jar-name "commons-compiler.jar"
12649 #:source-dir "commons-compiler/src/main"
12650 #:tests? #f)); no tests
12651 (home-page "https://github.com/janino-compiler/janino")
12652 (synopsis "Java compiler")
12653 (description "Commons-compiler contains an API for janino, including the
12654 @code{IExpressionEvaluator}, @code{IScriptEvaluator}, @code{IClassBodyEvaluator}
12655 and @code{ISimpleCompiler} interfaces.")
12656 (license license:bsd-3)))
12658 (define-public java-janino
12660 (inherit java-commons-compiler)
12661 (name "java-janino")
12663 `(#:jar-name "janino.jar"
12664 #:source-dir "src/main/java"
12666 (modify-phases %standard-phases
12667 (add-before 'configure 'chdir
12672 `(("java-commons-compiler" ,java-commons-compiler)))
12674 `(("java-junit" ,java-junit)
12675 ("java-hamcrest-core" ,java-hamcrest-core)))
12676 (description "Janino is a Java compiler. Janino can compile a set of
12677 source files to a set of class files like @code{javac}, but also compile a
12678 Java expression, block, class body or source file in memory, load the bytecode
12679 and execute it directly in the same JVM. @code{janino} can also be used for
12680 static code analysis or code manipulation.")))
12682 (define-public java-logback-core
12684 (name "java-logback-core")
12688 (uri (string-append "https://github.com/qos-ch/logback/archive/v_"
12689 version ".tar.gz"))
12690 (file-name (string-append name "-" version ".tar.gz"))
12693 "1x6ga74yfgm94cfx98gybakbrlilx8i2gn6dx13l40kasmys06mi"))
12694 (modules '((guix build utils)))
12697 (delete-file-recursively "logback-access/lib")
12699 (build-system ant-build-system)
12701 `(#:jar-name "logback.jar"
12702 #:source-dir "src/main/java"
12703 #:test-dir "src/test"
12705 ;; These tests fail with Unable to set MockitoNamingPolicy on cglib generator
12706 ;; which creates FastClasses
12707 (list "**/AllCoreTest.*"
12708 "**/AutoFlushingObjectWriterTest.*"
12710 "**/ResilientOutputStreamTest.*"
12711 ;; And we still don't want to run abstract classes
12714 (modify-phases %standard-phases
12715 (add-before 'configure 'chdir
12717 (chdir "logback-core")
12720 `(("java-javax-mail" ,java-javax-mail)
12721 ("servlet" ,java-javaee-servletapi)
12722 ("java-commons-compiler" ,java-commons-compiler)
12723 ("java-janino" ,java-janino)))
12725 `(("java-junit" ,java-junit)
12726 ("java-hamcrest-core" ,java-hamcrest-core)
12727 ("java-mockito-1" ,java-mockito-1)
12728 ("java-cglib" ,java-cglib)
12729 ("java-asm" ,java-asm)
12730 ("java-objenesis" ,java-objenesis)
12731 ("java-joda-time" ,java-joda-time)))
12732 (home-page "https://logback.qos.ch")
12733 (synopsis "Logging for java")
12734 (description "Logback is intended as a successor to the popular log4j project.
12735 This module lays the groundwork for the other two modules.")
12736 ;; Either epl1.0 or lgpl2.1
12737 (license (list license:epl1.0
12738 license:lgpl2.1))))
12740 (define-public java-logback-classic
12742 (inherit java-logback-core)
12743 (name "java-logback-classic")
12745 `(#:jar-name "logback-classic.jar"
12746 #:source-dir "src/main/java"
12747 #:test-dir "src/test"
12748 #:tests? #f; tests require more packages: h2, greenmail, hsql, subethamail, slf4j, log4j, felix
12751 (modify-phases %standard-phases
12752 (add-before 'configure 'chdir
12754 (chdir "logback-classic")
12757 (lambda* (#:key inputs #:allow-other-keys)
12758 (mkdir-p "build/classes")
12759 (setenv "CLASSPATH"
12761 (apply append (map (lambda (input)
12762 (find-files (assoc-ref inputs input)
12764 '("java-logback-core" "java-slf4j-api"
12765 "java-commons-compiler" "servlet"
12768 (apply invoke "groovyc" "-d" "build/classes" "-j"
12769 (find-files "src/main/" ".*\\.(groovy|java)$"))
12770 (invoke "ant" "jar")
12773 `(("java-logback-core" ,java-logback-core)
12774 ("java-slf4j-api" ,java-slf4j-api)
12775 ,@(package-inputs java-logback-core)))
12777 `(("groovy" ,groovy)))
12778 (description "Logback is intended as a successor to the popular log4j project.
12779 This module can be assimilated to a significantly improved version of log4j.
12780 Moreover, @code{logback-classic} natively implements the slf4j API so that you
12781 can readily switch back and forth between logback and other logging frameworks
12782 such as log4j or @code{java.util.logging} (JUL).")))
12784 (define-public java-jgit
12787 (version "4.7.0.201704051617-r")
12790 (uri (string-append "https://repo1.maven.org/maven2/"
12791 "org/eclipse/jgit/org.eclipse.jgit/"
12792 version "/org.eclipse.jgit-"
12793 version "-sources.jar"))
12796 "13ii4jn02ynzq6i7gsyi21k2i94jpc85wf6bcm31q4cyvzv0mk4k"))))
12797 (build-system ant-build-system)
12799 `(#:tests? #f ; There are no tests to run.
12800 #:jar-name "jgit.jar"
12801 ;; JGit must be built with a JDK supporting Java 8.
12803 ;; Target our older default JDK.
12804 #:make-flags (list "-Dtarget=1.7")
12806 (modify-phases %standard-phases
12807 ;; The jar file generated by the default build.xml does not include
12808 ;; the text properties files, so we need to add them.
12809 (add-after 'build 'add-properties
12810 (lambda* (#:key jar-name #:allow-other-keys)
12811 (with-directory-excursion "src"
12812 (apply invoke "jar" "-uf"
12813 (string-append "../build/jar/" jar-name)
12814 (find-files "." "\\.properties$")))
12817 `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
12818 ("java-javaewah" ,java-javaewah)
12819 ("java-jsch" ,java-jsch)
12820 ("java-slf4j-api" ,java-slf4j-api)))
12821 (home-page "https://eclipse.org/jgit/")
12822 (synopsis "Java library implementing the Git version control system")
12823 (description "JGit is a lightweight, pure Java library implementing the
12824 Git version control system, providing repository access routines, support for
12825 network protocols, and core version control algorithms.")
12826 (license license:edl1.0)))
12828 ;; For axoloti. This package can still be built with icedtea-7, which is
12829 ;; currently used as the default JDK.
12830 (define-public java-jgit-4.2
12831 (package (inherit java-jgit)
12832 (version "4.2.0.201601211800-r")
12835 (uri (string-append "https://repo1.maven.org/maven2/"
12836 "org/eclipse/jgit/org.eclipse.jgit/"
12837 version "/org.eclipse.jgit-"
12838 version "-sources.jar"))
12841 "15gm537iivhnzlkjym4x3wn5jqdjdragsw9pdpzqqg21nrc817mm"))))
12842 (build-system ant-build-system)
12844 (substitute-keyword-arguments (package-arguments java-jgit)
12845 ;; Build for default JDK.
12846 ((#:jdk _) icedtea-7)
12848 `(modify-phases ,phases
12849 (add-after 'unpack 'use-latest-javaewah-API
12851 (substitute* "src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java"
12852 (("wordinbits") "WORD_IN_BITS"))
12855 `(("java-javaewah" ,java-javaewah)
12856 ("java-jsch" ,java-jsch)
12857 ("java-slf4j-api" ,java-slf4j-api)))))
12859 (define-public abcl
12866 (uri (string-append "https://abcl.org/releases/"
12867 version "/abcl-src-" version ".tar.gz"))
12870 "0hvbcsffr8n2xwdixc8wyw1bfl9fxn2gyy0c4nma7j9zbn0wwgw9"))
12873 "abcl-fix-build-xml.patch"))))
12874 (build-system ant-build-system)
12876 `(("java-junit" ,java-junit)))
12878 `(#:build-target "abcl.jar"
12879 #:test-target "abcl.test"
12881 (modify-phases %standard-phases
12883 (lambda* (#:key outputs #:allow-other-keys)
12884 (let ((share (string-append (assoc-ref outputs "out")
12886 (bin (string-append (assoc-ref outputs "out")
12889 (install-file "dist/abcl.jar" share)
12890 (install-file "dist/abcl-contrib.jar" share)
12892 (with-output-to-file (string-append bin "abcl")
12894 (let ((classpath (string-append
12897 share "abcl-contrib.jar")))
12898 (display (string-append
12899 "#!" (which "sh") "\n"
12900 "if [[ -z $CLASSPATH ]]; then\n"
12901 " cp=\"" classpath "\"\n"
12903 " cp=\"" classpath ":$CLASSPATH\"\n"
12905 "exec " (which "java")
12906 " -cp $cp org.armedbear.lisp.Main $@\n")))))
12907 (chmod (string-append bin "abcl") #o755)
12909 (home-page "https://abcl.org/")
12910 (synopsis "Common Lisp Implementation on the JVM")
12912 "@dfn{Armed Bear Common Lisp} (ABCL) is a full implementation of the Common
12913 Lisp language featuring both an interpreter and a compiler, running in the
12914 JVM. It supports JSR-223 (Java scripting API): it can be a scripting engine
12915 in any Java application. Additionally, it can be used to implement (parts of)
12916 the application using Java to Lisp integration APIs.")
12917 (license (list license:gpl2+
12918 ;; named-readtables is released under 3 clause BSD
12920 ;; jfli is released under CPL 1.0
12923 (define-public java-jsonp-api
12925 (name "java-jsonp-api")
12929 (uri (git-reference
12930 (url "https://github.com/eclipse-ee4j/jsonp")
12931 (commit (string-append "1.1-" version "-RELEASE"))))
12932 (file-name (git-file-name name version))
12935 "0zrj03hkr3jdmqlb4ipjr37cqpp2q2814qpmxi7srlwpdqs0ibgc"))))
12936 (build-system ant-build-system)
12938 `(#:jar-name "jsonp-api.jar"
12940 #:source-dir "api/src/main/java"
12941 #:test-dir "api/src/test"))
12942 (home-page "https://eclipse-ee4j.github.io/jsonp/")
12943 (synopsis "JSON Processing in Java")
12944 (description "JSON Processing (JSON-P) is a Java API to process (e.g.
12945 parse, generate, transform and query) JSON messages. It produces and
12946 consumes JSON text in a streaming fashion (similar to StAX API for XML)
12947 and allows building a Java object model for JSON text using API classes
12948 (similar to DOM API for XML).")
12949 ;; either gpl2 only with classpath exception, or epl2.0.
12950 (license (list license:gpl2
12953 (define-public java-jsonp-impl
12955 (inherit java-jsonp-api)
12956 (name "java-jsonp-impl")
12958 `(#:jar-name "jsonp-impl.jar"
12960 #:source-dir "impl/src/main/java"
12961 #:test-dir "impl/src/test"
12963 (modify-phases %standard-phases
12964 (add-before 'build 'copy-resources
12967 "impl/src/main/resources/"
12971 `(("java-jsonp-api" ,java-jsonp-api)))
12972 (description "JSON Processing (JSON-P) is a Java API to process (e.g.
12973 parse, generate, transform and query) JSON messages. This package contains
12974 a reference implementation of that API.")))
12976 (define-public java-xmp
12982 (uri (string-append "http://download.macromedia.com/pub/developer"
12983 "/xmp/sdk/XMPCoreJava-" version ".zip"))
12986 "14nai2mmsg7l5ya2y5mx4w4lr1az3sk2fjz6hiy4zdrsavgvl1g7"))))
12987 (build-system ant-build-system)
12989 `(#:build-target "build"
12990 #:tests? #f; no tests
12992 (modify-phases %standard-phases
12993 (add-after 'unpack 'chdir
12997 (add-before 'build 'fix-timestamp
12999 (substitute* "build.xml"
13000 (("\\$\\{BuildDate\\}") "1970 Jan 01 00:00:00-GMT"))
13003 (install-jars "."))
13004 (add-after 'install 'install-doc
13005 (lambda* (#:key outputs #:allow-other-keys)
13008 (string-append (assoc-ref outputs "out") "/share/doc/java-xmp"))
13011 `(("unzip" ,unzip)))
13012 (home-page "https://www.adobe.com/devnet/xmp.html")
13013 (synopsis "Extensible Metadat Platform (XMP) support in Java")
13014 (description "Adobe's Extensible Metadata Platform (XMP) is a labeling
13015 technology that allows you to embed data about a file, known as metadata,
13016 into the file itself. The XMP Toolkit for Java is based on the C++ XMPCore
13017 library and the API is similar.")
13018 (license license:bsd-3)))
13020 (define-public java-metadata-extractor
13022 (name "java-metadata-extractor")
13026 (uri (git-reference
13027 (url "https://github.com/drewnoakes/metadata-extractor")
13029 (file-name (git-file-name name version))
13032 "06yrq0swrl1r40yjbk5kqzjxr04jlkq9lfi711jvfgjf5kp2qinj"))))
13033 (build-system ant-build-system)
13035 `(#:jar-name "metadata-extractor.jar"
13036 #:source-dir "Source"
13039 (modify-phases %standard-phases
13040 (add-before 'check 'fix-test-dir
13042 (substitute* "build.xml"
13043 (("/java\">") "\">"))
13046 `(("java-xmp" ,java-xmp)))
13048 `(("java-hamcrest-core" ,java-hamcrest-core)
13049 ("java-junit" ,java-junit)))
13050 (home-page "https://github.com/drewnoakes/metadata-extractor")
13051 (synopsis "Extract metadata from image and video files")
13052 (description "Metadata-extractor is a straightforward Java library for
13053 reading metadata from image files. It is able to read metadata in Exif,
13054 IPTC, XMP, ICC and more formats.")
13055 (license license:asl2.0)))
13057 (define-public java-svg-salamander
13059 (name "java-svg-salamander")
13063 (uri (git-reference
13064 (url "https://github.com/blackears/svgSalamander")
13065 (commit (string-append "v" version))))
13066 (file-name (git-file-name name version))
13069 "1zv3kjdkf6iqf02x6ln76254y634j2ji448y706a65lsbfjmmicf"))
13070 (modules '((guix build utils)))
13073 (for-each delete-file (find-files "." ".*.jar"))
13076 (search-patches "java-svg-salamander-Fix-non-det.patch"))))
13077 (build-system ant-build-system)
13079 `(#:tests? #f; no tests
13081 (modify-phases %standard-phases
13082 (add-after 'unpack 'chdir
13086 (add-before 'build 'copy-jars
13087 (lambda* (#:key inputs #:allow-other-keys)
13088 (copy-file (car (find-files (assoc-ref inputs "javacc") "\\.jar$"))
13089 "../libraries/javacc.jar")
13090 (copy-file (car (find-files (assoc-ref inputs "ant") "ant\\.jar$"))
13091 "../libraries/ant.jar")
13094 (install-jars "dist")))))
13096 `(("javacc" ,javacc)))
13097 (home-page "https://github.com/blackears/svgSalamander")
13098 (synopsis "SVG engine for Java")
13099 (description "SVG Salamander is an SVG engine for Java that's designed
13100 to be small, fast, and allow programmers to use it with a minimum of fuss.
13101 It's in particular targeted for making it easy to integrate SVG into Java
13102 games and making it much easier for artists to design 2D game content - from
13103 rich interactive menus to charts and graphcs to complex animations.")
13104 (license license:bsd-2)))
13106 (define-public java-jboss-transaction-api-spec
13108 (name "java-jboss-transaction-api-spec")
13109 (version "1.2+1.1.1")
13112 (uri (git-reference
13113 (url "https://github.com/jboss/jboss-transaction-api_spec")
13114 (commit "jboss-transaction-api_1.2_spec-1.1.1.Final")))
13115 (file-name (git-file-name name version))
13118 "1xbfq5hvb86izflydxrqqv3k26c1ba2m0ap6m97shqrsdi9by4wy"))))
13119 (build-system ant-build-system)
13121 `(#:jar-name "java-jboss-transaction-api_spec.jar"
13122 #:source-dir "src/main/java"
13123 #:tests? #f)); no tests
13125 `(("java-cdi-api" ,java-cdi-api)
13126 ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec)))
13127 (home-page "https://github.com/jboss/jboss-transaction-api_spec")
13128 (synopsis "Generic transaction management API in Java")
13129 (description "Java-jboss-transaction-api-spec implements the Transactions
13130 API. A transaction is a unit of work containing one or more operations
13131 involving one or more shared resources having ACID (Atomicity, Consistency,
13132 Isolation and Durability) properties.")
13133 ;; either gpl2 only with classpath exception or cddl.
13134 (license (list license:gpl2 license:cddl1.0))))
13136 (define-public java-picocli
13138 (name "java-picocli")
13142 (uri (git-reference
13143 (url "https://github.com/remkop/picocli")
13144 (commit (string-append "v" version))))
13145 (file-name (git-file-name name version))
13148 "1sxp6rxjfgjd98ly14b3d15dvxkm5wg4g46w12jyhmr0kmkaca3c"))))
13149 (build-system ant-build-system)
13151 `(#:jar-name "picocli.jar"
13152 #:source-dir "src/main/java"
13153 ;; Tests require missing dependencies (junitparams, system-rules)
13155 (home-page "https://picocli.info")
13156 (synopsis "REPL for the JVM")
13157 (description "Picocli is a framework for building command line applications
13158 for the JVM. It supports colors, autocompletion, subcommands, and more. Written
13159 in Java, usable from Groovy, Kotlin, Scala, etc.")
13160 (license license:asl2.0)))
13162 (define-public java-jetbrains-annotations
13164 (name "java-jetbrains-annotations")
13168 (uri (git-reference
13169 (url "https://github.com/JetBrains/java-annotations")
13171 (file-name (git-file-name name version))
13174 "0z6i1xs60cd5ffz23c49sq68wn5mphhs3xpar1n93ppama2ng80v"))))
13175 (build-system ant-build-system)
13177 `(#:jar-name "jetbrains-annotations.jar"
13178 #:source-dir "common/src/main/java:java8/src/main/java"
13179 #:tests? #f)); no tests
13180 (home-page "https://github.com/JetBrains/java-annotations")
13181 (synopsis "Annotations for Java and other JVM languages")
13182 (description "This package contains a set of Java annotations which can be
13183 used in JVM-based languages. They serve as an additional documentation and
13184 can be interpreted by IDEs and static analysis tools to improve code analysis.")
13185 (license license:expat)))