1 ;;; GNU Guix --- Functional package management for GNU
2 ;;; Copyright © 2015, 2016, 2017, 2018, 2019 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, 2018, 2019 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>
15 ;;; This file is part of GNU Guix.
17 ;;; GNU Guix is free software; you can redistribute it and/or modify it
18 ;;; under the terms of the GNU General Public License as published by
19 ;;; the Free Software Foundation; either version 3 of the License, or (at
20 ;;; your option) any later version.
22 ;;; GNU Guix is distributed in the hope that it will be useful, but
23 ;;; WITHOUT ANY WARRANTY; without even the implied warranty of
24 ;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
25 ;;; GNU General Public License for more details.
27 ;;; You should have received a copy of the GNU General Public License
28 ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
30 (define-module (gnu packages java)
31 #:use-module ((guix licenses) #:prefix license:)
32 #:use-module (guix packages)
33 #:use-module (guix download)
34 #:use-module (guix hg-download)
35 #:use-module (guix git-download)
36 #:use-module (guix svn-download)
37 #:use-module (guix utils)
38 #:use-module (guix build-system ant)
39 #:use-module (guix build-system gnu)
40 #:use-module (guix build-system trivial)
41 #:use-module (gnu packages)
42 #:use-module (gnu packages attr)
43 #:use-module (gnu packages autotools)
44 #:use-module (gnu packages base)
45 #:use-module (gnu packages bash)
46 #:use-module (gnu packages certs)
47 #:use-module (gnu packages cpio)
48 #:use-module (gnu packages cups)
49 #:use-module (gnu packages compression)
50 #:use-module (gnu packages elf)
51 #:use-module (gnu packages fontutils)
52 #:use-module (gnu packages gawk)
53 #:use-module (gnu packages gettext)
54 #:use-module (gnu packages gcc)
55 #:use-module (gnu packages gl)
56 #:use-module (gnu packages ghostscript) ;lcms
57 #:use-module (gnu packages gnome)
58 #:use-module (gnu packages groovy)
59 #:use-module (gnu packages gtk)
60 #:use-module (gnu packages guile)
61 #:use-module (gnu packages icu4c)
62 #:use-module (gnu packages image)
63 #:use-module (gnu packages java-compression)
64 #:use-module (gnu packages libffi)
65 #:use-module (gnu packages linux) ;alsa
66 #:use-module (gnu packages maths)
67 #:use-module (gnu packages nss)
68 #:use-module (gnu packages onc-rpc)
69 #:use-module (gnu packages web)
70 #:use-module (gnu packages wget)
71 #:use-module (gnu packages pkg-config)
72 #:use-module (gnu packages perl)
73 #:use-module (gnu packages popt)
74 #:use-module (gnu packages kerberos)
75 #:use-module (gnu packages xml)
76 #:use-module (gnu packages xorg)
77 #:use-module (gnu packages texinfo)
78 #:use-module ((srfi srfi-1) #:select (fold alist-delete))
79 #:use-module (srfi srfi-11)
80 #:use-module (ice-9 match))
84 ;;; Java bootstrap toolchain.
87 ;; The Java bootstrap begins with Jikes, a Java compiler written in C++. We
88 ;; use it to build a simple version of GNU Classpath, the Java standard
89 ;; library. We chose version 0.93 because it is the last version that can be
90 ;; built with Jikes. With Jikes and this version of GNU Classpath we can
91 ;; build JamVM, a Java Virtual Machine. We build version 1.5.1 because it is
92 ;; the last version of JamVM that works with a version of GNU classpath that
93 ;; does not require ECJ. These three packages make up the bootstrap JDK.
95 ;; This is sufficient to build an older version of Ant, which is needed to
96 ;; build an older version of ECJ, an incremental Java compiler, both of which
97 ;; are written in Java.
99 ;; ECJ is needed to build the latest release (0.99) and the development
100 ;; version of GNU Classpath. The development version of GNU Classpath has
101 ;; much more support for Java 1.6 than the latest release, but we need to
102 ;; build 0.99 first to get a working version of javah. ECJ, the development
103 ;; version of GNU Classpath, and the latest version of JamVM make up the
104 ;; second stage JDK with which we can build the OpenJDK with the Icedtea 1.x
105 ;; build framework. We then build the more recent JDKs Icedtea 2.x and
114 (uri (string-append "mirror://sourceforge/jikes/Jikes/"
115 version "/jikes-" version ".tar.bz2"))
118 "1qqldrp74pzpy5ly421srqn30qppmm9cvjiqdngk8hf47dv2rc0c"))))
119 (build-system gnu-build-system)
120 (home-page "http://jikes.sourceforge.net/")
121 (synopsis "Compiler for the Java language")
122 (description "Jikes is a compiler that translates Java source files as
123 defined in The Java Language Specification into the bytecoded instruction set
124 and binary format defined in The Java Virtual Machine Specification.")
125 (license license:ibmpl1.0)))
127 ;; This is the last version of GNU Classpath that can be built without ECJ.
128 (define classpath-bootstrap
134 (uri (string-append "mirror://gnu/classpath/classpath-"
138 "0i99wf9xd3hw1sj2sazychb9prx8nadxh2clgvk3zlmb28v0jbfz"))
139 (patches (search-patches "classpath-aarch64-support.patch"))))
140 (build-system gnu-build-system)
143 (list (string-append "JAVAC="
144 (assoc-ref %build-inputs "jikes")
149 "--disable-gconf-peer"
155 (modify-phases %standard-phases
156 ;; XXX: This introduces a memory leak as we remove a call to free up
157 ;; memory for the file name string. This was necessary because of a
158 ;; runtime error that would have prevented us from building
159 ;; ant-bootstrap later. See https://issues.guix.gnu.org/issue/36685
160 ;; for the gnarly details.
161 (add-after 'unpack 'remove-call-to-free
163 (substitute* "native/jni/java-io/java_io_VMFile.c"
164 (("result = cpio_isFileExists.*" m)
165 (string-append m "\n//")))
167 (add-after 'install 'install-data
168 (lambda _ (invoke "make" "install-data"))))))
173 ("pkg-config" ,pkg-config)))
174 (home-page "https://www.gnu.org/software/classpath/")
175 (synopsis "Essential libraries for Java")
176 (description "GNU Classpath is a project to create core class libraries
177 for use with runtimes, compilers and tools for the Java programming
179 ;; GPLv2 or later, with special linking exception.
180 (license license:gpl2+)))
182 ;; This is the last version of JamVM that works with a version of GNU
183 ;; classpath that does not require ECJ.
184 (define jamvm-1-bootstrap
190 (uri (string-append "mirror://sourceforge/jamvm/jamvm/"
191 "JamVM%20" version "/jamvm-"
193 (patches (search-patches "jamvm-arm.patch"))
196 "06lhi03l3b0h48pc7x58bk9my2nrcf1flpmglvys3wyad6yraf36"))
199 ;; Remove precompiled software.
200 (delete-file "lib/classes.zip")
202 (build-system gnu-build-system)
205 (list (string-append "--with-classpath-install-dir="
206 (assoc-ref %build-inputs "classpath"))
207 "--disable-int-caching"
208 "--enable-runtime-reloc-checks"
211 `(("classpath" ,classpath-bootstrap)
216 ;; When built with a recent GCC and glibc the configure step of icedtea-6
217 ;; fails with an invalid instruction error.
220 ("libc" ,glibc-2.28)))
221 (home-page "http://jamvm.sourceforge.net/")
222 (synopsis "Small Java Virtual Machine")
223 (description "JamVM is a Java Virtual Machine conforming to the JVM
224 specification edition 2 (blue book). It is extremely small. However, unlike
225 other small VMs it supports the full spec, including object finalisation and
227 (license license:gpl2+)))
229 (define ant-bootstrap
231 (name "ant-bootstrap")
232 ;; The 1.10.x series requires Java 8. 1.9.0 and later use generics, which
233 ;; are not supported. The 1.8.x series is the last to use only features
234 ;; supported by Jikes.
238 (uri (string-append "http://archive.apache.org/dist/"
239 "ant/source/apache-ant-"
240 version "-src.tar.bz2"))
243 "1cg0lga887qz5iizh6mlkxp01lciymrhmp7wzxpl6zpnldxmzrjx"))))
244 (build-system gnu-build-system)
246 `(#:imported-modules ((guix build syscalls)
247 ,@%gnu-build-system-modules)
248 #:modules ((srfi srfi-1)
249 (guix build gnu-build-system)
251 (guix build syscalls))
252 #:tests? #f ; no "check" target
254 (modify-phases %standard-phases
258 (lambda* (#:key inputs #:allow-other-keys)
259 (setenv "JAVA_HOME" (assoc-ref inputs "jamvm"))
261 (string-append (assoc-ref inputs "jamvm")
264 (string-append (assoc-ref inputs "jikes")
267 (string-append (assoc-ref inputs "jamvm")
270 ;; Ant complains if this file doesn't exist.
271 (setenv "HOME" "/tmp")
272 (with-output-to-file "/tmp/.ant.properties"
273 (lambda _ (display "")))
275 ;; Use jikes instead of javac for <javac ...> tags in build.xml
276 (setenv "ANT_OPTS" "-Dbuild.compiler=jikes")
278 ;; jikes produces lots of warnings, but they are not very
279 ;; interesting, so we silence them.
280 (setenv "$BOOTJAVAC_OPTS" "-nowarn")
282 ;; Without these JamVM options the build may freeze.
283 (substitute* "bootstrap.sh"
284 (("^\"\\$\\{JAVACMD\\}\" " m)
285 ,@(if (string-prefix? "armhf" (or (%current-system)
286 (%current-target-system)))
287 `((string-append m "-Xnocompact "))
288 `((string-append m "-Xnocompact -Xnoinlining ")))))
290 ;; Disable tests because we are bootstrapping and thus don't have
291 ;; any of the dependencies required to build and run the tests.
292 (substitute* "build.xml"
293 (("depends=\"jars,test-jar\"") "depends=\"jars\""))
294 (invoke "bash" "bootstrap.sh"
295 (string-append "-Ddist.dir="
296 (assoc-ref %outputs "out")))))
297 (add-after 'build 'strip-jar-timestamps ;based on ant-build-system
298 (lambda* (#:key outputs #:allow-other-keys)
299 (define (repack-archive jar)
300 (let* ((dir (mkdtemp! "jar-contents.XXXXXX"))
301 (manifest (string-append dir "/META-INF/MANIFESTS.MF")))
302 (with-directory-excursion dir
303 (invoke "unzip" jar))
305 ;; XXX: copied from (gnu build install)
306 (for-each (lambda (file)
307 (let ((s (lstat file)))
308 (unless (eq? (stat:type s) 'symlink)
309 (utime file 0 0 0 0))))
310 (find-files dir #:directories? #t))
311 ;; It is important that the manifest appears first.
312 (with-directory-excursion dir
313 (let* ((files (find-files "." ".*" #:directories? #t))
314 ;; To ensure that the reference scanner can
315 ;; detect all store references in the jars
316 ;; we disable compression with the "-0" option.
317 (command (if (file-exists? manifest)
318 `("zip" "-0" "-X" ,jar ,manifest
320 `("zip" "-0" "-X" ,jar ,@files))))
321 (apply invoke command)))))
322 (for-each repack-archive
324 (string-append (assoc-ref %outputs "out") "/lib")
330 ("jamvm" ,jamvm-1-bootstrap)
333 (home-page "https://ant.apache.org")
334 (synopsis "Build tool for Java")
336 "Ant is a platform-independent build tool for Java. It is similar to
337 make but is implemented using the Java language, requires the Java platform,
338 and is best suited to building Java projects. Ant uses XML to describe the
339 build process and its dependencies, whereas Make uses Makefile format.")
340 (license license:asl2.0)))
342 ;; Version 3.2.2 is the last version without a dependency on a full-fledged
343 ;; compiler for Java 1.5.
344 (define ecj-bootstrap
346 (name "ecj-bootstrap")
350 (uri (string-append "http://archive.eclipse.org/eclipse/"
351 "downloads/drops/R-" version
352 "-200702121330/ecjsrc.zip"))
355 "05hj82kxd23qaglsjkaqcj944riisjha7acf7h3ljhrjyljx8307"))))
356 ;; It would be so much easier if we could use the ant-build-system, but we
357 ;; cannot as we don't have ant at this point. We use ecj for
358 ;; bootstrapping the JDK.
359 (build-system gnu-build-system)
361 `(#:modules ((guix build gnu-build-system)
364 #:tests? #f ; there are no tests
366 (modify-phases %standard-phases
368 (lambda* (#:key inputs #:allow-other-keys)
371 (cons (string-append (assoc-ref inputs "jamvm")
373 (find-files (string-append
374 (assoc-ref inputs "ant-bootstrap")
380 (lambda* (#:key inputs #:allow-other-keys)
381 ;; The unpack phase enters the "org" directory by mistake.
384 ;; Create a simple manifest to make ecj executable.
385 (with-output-to-file "manifest"
387 (display "Manifest-Version: 1.0
388 Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n")))
391 (and (apply invoke "jikes"
392 (find-files "." "\\.java$"))
393 (invoke "fastjar" "cvfm"
394 "ecj-bootstrap.jar" "manifest" "."))))
396 (lambda* (#:key outputs #:allow-other-keys)
397 (let ((share (string-append (assoc-ref outputs "out")
400 (install-file "ecj-bootstrap.jar" share)
403 `(("ant-bootstrap" ,ant-bootstrap)
406 ("jamvm" ,jamvm-1-bootstrap)
407 ("fastjar" ,fastjar)))
408 (home-page "https://eclipse.org")
409 (synopsis "Eclipse Java development tools core batch compiler")
410 (description "This package provides the Eclipse Java core batch compiler
411 for bootstrapping purposes. The @dfn{Eclipse compiler for Java} (ecj) is a
412 requirement for all GNU Classpath releases after version 0.93.")
413 (license license:epl1.0)))
415 (define ecj-javac-wrapper
416 (package (inherit ecj-bootstrap)
417 (name "ecj-javac-wrapper")
419 (build-system trivial-build-system)
421 `(#:modules ((guix build utils))
424 (use-modules (guix build utils))
425 (let* ((bin (string-append (assoc-ref %outputs "out") "/bin"))
426 (target (string-append bin "/javac"))
427 (guile (string-append (assoc-ref %build-inputs "guile")
429 (ecj (string-append (assoc-ref %build-inputs "ecj-bootstrap")
430 "/share/java/ecj-bootstrap.jar"))
431 (java (string-append (assoc-ref %build-inputs "jamvm")
433 (bootcp (let ((jvmlib (string-append (assoc-ref %build-inputs "classpath")
434 "/share/classpath")))
435 (string-append jvmlib "/glibj.zip:"
436 jvmlib "/tools.zip"))))
438 (with-output-to-file target
440 (format #t "#!~a --no-auto-compile\n!#\n" guile)
442 `(begin (use-modules (ice-9 match)
448 '(("-bootclasspath" ,bootcp)
453 (let ((classpath (getenv "CLASSPATH")))
455 (string-join (list ,ecj
456 ,(string-append (assoc-ref %build-inputs "jamvm")
460 (receive (vm-args other-args)
461 ;; Separate VM arguments from arguments to ECJ.
462 (partition (cut string-prefix? "-J" <>)
463 (fold (lambda (default acc)
464 (if (member (first default) acc)
465 acc (append default acc)))
469 ;; Remove "-J" prefix
470 (map (cut string-drop <> 2) vm-args)
471 '("org.eclipse.jdt.internal.compiler.batch.Main")
472 (cons "-nowarn" other-args)))))
474 (let ((args (cdr (command-line))))
476 (format (current-error-port) "javac: no arguments given!\n")
481 `(("guile" ,guile-2.2)
482 ("ecj-bootstrap" ,ecj-bootstrap)
483 ("jamvm" ,jamvm-1-bootstrap)
484 ("classpath" ,classpath-bootstrap)))
485 (description "This package provides a wrapper around the @dfn{Eclipse
486 compiler for Java} (ecj) with a command line interface that is compatible with
487 the standard javac executable.")))
489 ;; The classpath-bootstrap was built without a virtual machine, so it does not
490 ;; provide a wrapper for javah. We cannot build the development version of
491 ;; Classpath without javah.
492 (define classpath-0.99
493 (package (inherit classpath-bootstrap)
497 (uri (string-append "mirror://gnu/classpath/classpath-"
501 "1j7cby4k66f1nvckm48xcmh352b1d1b33qk7l6hi7dp9i9zjjagr"))
502 (patches (search-patches "classpath-aarch64-support.patch"))))
505 (list (string-append "--with-ecj-jar="
506 (assoc-ref %build-inputs "ecj-bootstrap")
507 "/share/java/ecj-bootstrap.jar")
508 (string-append "JAVAC="
509 (assoc-ref %build-inputs "ecj-javac-wrapper")
511 (string-append "JAVA="
512 (assoc-ref %build-inputs "jamvm")
515 "ac_cv_prog_java_works=yes" ; trust me
519 "--disable-gconf-peer"
525 (modify-phases %standard-phases
526 (add-after 'install 'install-data
527 (lambda _ (invoke "make" "install-data"))))))
529 `(("ecj-bootstrap" ,ecj-bootstrap)
530 ("ecj-javac-wrapper" ,ecj-javac-wrapper)
532 ("jamvm" ,jamvm-1-bootstrap)
533 ("classpath" ,classpath-bootstrap)
535 ("pkg-config" ,pkg-config)))))
537 ;; We need this because classpath-bootstrap does not provide all of the tools
538 ;; we need to build classpath-devel.
539 (define classpath-jamvm-wrappers
540 (package (inherit classpath-0.99)
541 (name "classpath-jamvm-wrappers")
543 (build-system trivial-build-system)
545 `(#:modules ((guix build utils))
548 (use-modules (guix build utils))
549 (let* ((bash (assoc-ref %build-inputs "bash"))
550 (jamvm (assoc-ref %build-inputs "jamvm"))
551 (classpath (assoc-ref %build-inputs "classpath"))
552 (bin (string-append (assoc-ref %outputs "out")
555 (for-each (lambda (tool)
556 (with-output-to-file (string-append bin tool)
558 ,@(if (string-prefix? "armhf" (or (%current-system)
559 (%current-target-system)))
560 `((format #t "#!~a/bin/sh
561 ~a/bin/jamvm -Xnocompact -classpath ~a/share/classpath/tools.zip \
562 gnu.classpath.tools.~a.~a $@"
563 bash jamvm classpath tool
564 (if (string=? "native2ascii" tool)
565 "Native2ASCII" "Main")))
566 `((format #t "#!~a/bin/sh
567 ~a/bin/jamvm -Xnocompact -Xnoinlining -classpath ~a/share/classpath/tools.zip \
568 gnu.classpath.tools.~a.~a $@"
569 bash jamvm classpath tool
570 (if (string=? "native2ascii" tool)
571 "Native2ASCII" "Main"))))))
572 (chmod (string-append bin tool) #o755))
582 ("jamvm" ,jamvm-1-bootstrap)
583 ("classpath" ,classpath-0.99)))
585 (synopsis "Executables from GNU Classpath")
586 (description "This package provides wrappers around the tools provided by
587 the GNU Classpath library. They are executed by the JamVM virtual
590 ;; The last release of GNU Classpath is 0.99 and it happened in 2012. Since
591 ;; then Classpath has gained much more support for Java 1.6.
592 (define-public classpath-devel
593 (let ((commit "e7c13ee0cf2005206fbec0eca677f8cf66d5a103")
595 (package (inherit classpath-bootstrap)
596 (version (string-append "0.99-" revision "." (string-take commit 9)))
600 (url "https://git.savannah.gnu.org/git/classpath.git")
602 (file-name (string-append "classpath-" version "-checkout"))
605 "1v2rww76ww322mpg3s12a1kkc6gkp31bm9gcxs532h0wq285fiw4"))))
608 ;; Ensure that the initial heap size is smaller than the maximum
609 ;; size. By default only Xmx is set, which can lead to invalid
610 ;; memory settings on some machines with a lot of memory.
611 '("JAVAC_MEM_OPT=-J-Xms512M -J-Xmx768M")
613 (list (string-append "--with-ecj-jar="
614 (assoc-ref %build-inputs "ecj-bootstrap")
615 "/share/java/ecj-bootstrap.jar")
616 (string-append "--with-javac="
617 (assoc-ref %build-inputs "ecj-javac-wrapper")
619 (string-append "JAVA="
620 (assoc-ref %build-inputs "jamvm")
623 "ac_cv_prog_java_works=yes" ; trust me
627 "--disable-gconf-peer"
633 (modify-phases %standard-phases
634 ;; XXX The bootstrap phase executes autogen.sh, which fails after
635 ;; complaining about the lack of gettext.
637 (lambda _ (invoke "autoreconf" "-vif")))
638 (add-after 'unpack 'remove-unsupported-annotations
640 (substitute* (find-files "java" "\\.java$")
643 (add-after 'install 'install-data
644 (lambda _ (invoke "make" "install-data"))))))
646 `(("autoconf" ,autoconf)
647 ("automake" ,automake)
649 ("gettext" ,gettext-minimal)
651 ("classpath-jamvm-wrappers" ,classpath-jamvm-wrappers) ; for javah
652 ("ecj-bootstrap" ,ecj-bootstrap)
653 ("ecj-javac-wrapper" ,ecj-javac-wrapper)
655 ("jamvm" ,jamvm-1-bootstrap)
657 ("pkg-config" ,pkg-config))))))
660 (package (inherit jamvm-1-bootstrap)
664 (uri (string-append "mirror://sourceforge/jamvm/jamvm/"
665 "JamVM%20" version "/jamvm-"
669 "1nl0zxz8y5x8gwsrm7n32bry4dx8x70p8z3s9jbdvs8avyb8whkn"))
672 ;; Remove precompiled software.
673 (delete-file "src/classlib/gnuclasspath/lib/classes.zip")
675 (build-system gnu-build-system)
678 (list (string-append "--with-classpath-install-dir="
679 (assoc-ref %build-inputs "classpath")))))
681 `(("classpath" ,classpath-devel)
682 ("ecj-javac-wrapper" ,ecj-javac-wrapper)
686 (define ecj-javac-wrapper-final
687 (package (inherit ecj-javac-wrapper)
689 `(("guile" ,guile-2.2)
690 ("ecj-bootstrap" ,ecj-bootstrap)
692 ("classpath" ,classpath-devel)))))
694 ;; The bootstrap JDK consisting of jamvm, classpath-devel,
695 ;; ecj-javac-wrapper-final cannot build Icedtea 2.x directly, because it's
696 ;; written in Java 7. It can, however, build the unmaintained Icedtea 1.x,
697 ;; which uses Java 6 only.
698 (define-public icedtea-6
705 "http://icedtea.wildebeest.org/download/source/icedtea6-"
709 "0bg9sb4f7qbq77c0zf9m17p47ga0kf0r9622g9p12ysg26jd1ksg"))
710 (modules '((guix build utils)))
713 (substitute* "Makefile.in"
714 ;; do not leak information about the build host
715 (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
716 "DISTRIBUTION_ID=\"\\\"guix\\\"\""))
718 (build-system gnu-build-system)
719 (outputs '("out" ; Java Runtime Environment
720 "jdk" ; Java Development Kit
721 "doc")) ; all documentation
723 `(;; There are many failing tests and many are known to fail upstream.
726 ;; The DSOs use $ORIGIN to refer to each other, but (guix build
727 ;; gremlin) doesn't support it yet, so skip this phase.
728 #:validate-runpath? #f
730 #:modules ((guix build utils)
731 (guix build gnu-build-system)
735 `("--enable-bootstrap"
738 "--with-parallel-jobs"
739 "--disable-downloading"
741 ,(string-append "--with-ecj="
742 (assoc-ref %build-inputs "ecj")
743 "/share/java/ecj-bootstrap.jar")
744 ,(string-append "--with-jar="
745 (assoc-ref %build-inputs "fastjar")
747 ,(string-append "--with-jdk-home="
748 (assoc-ref %build-inputs "classpath"))
749 ,(string-append "--with-java="
750 (assoc-ref %build-inputs "jamvm")
753 (modify-phases %standard-phases
755 (lambda* (#:key source inputs #:allow-other-keys)
756 (invoke "tar" "xvf" source)
757 (chdir (string-append "icedtea6-" ,version))
759 (copy-recursively (assoc-ref inputs "openjdk-src") "openjdk")
760 ;; The convenient OpenJDK source bundle is no longer
761 ;; available for download, so we have to take the sources
762 ;; from the Mercurial repositories and change the Makefile
763 ;; to avoid tests for the OpenJDK zip archive.
764 (with-directory-excursion "openjdk"
765 (for-each (lambda (part)
769 (string-append part "-src"))
772 "langtools" "jaxp" "jaxws")))
773 (with-directory-excursion "openjdk"
774 (invoke "tar" "xvf" (assoc-ref inputs "hotspot-src"))
775 (rename-file "hg-checkout" "hotspot"))
776 (substitute* "patches/freetypeversion.patch"
777 (("REQUIRED_FREETYPE_VERSION = 2.2.1")
778 "REQUIRED_FREETYPE_VERSION = 2.10.1"))
779 (substitute* "Makefile.in"
780 (("echo \"ERROR: No up-to-date OpenJDK zip available\"; exit -1;")
781 "echo \"trust me\";")
782 ;; The contents of the bootstrap directory must be
783 ;; writeable but when copying from the store they are
785 (("mkdir -p lib/rt" line)
786 (string-append line "; chmod -R u+w $(BOOT_DIR)")))
787 (invoke "chmod" "-R" "u+w" "openjdk")))
788 (add-after 'unpack 'use-classpath
789 (lambda* (#:key inputs #:allow-other-keys)
790 (let ((jvmlib (assoc-ref inputs "classpath"))
791 (jamvm (assoc-ref inputs "jamvm")))
792 ;; Classpath does not provide rt.jar.
793 (substitute* "Makefile.in"
794 (("\\$\\(SYSTEM_JDK_DIR\\)/jre/lib/rt.jar")
795 (string-append jvmlib "/share/classpath/glibj.zip")))
796 ;; Make sure we can find all classes.
798 (string-append jvmlib "/share/classpath/glibj.zip:"
799 jvmlib "/share/classpath/tools.zip:"
800 jamvm "/lib/rt.jar"))
802 (string-append "-cp "
803 jvmlib "/share/classpath/glibj.zip:"
804 jvmlib "/share/classpath/tools.zip")))
806 (add-after 'unpack 'patch-patches
808 ;; shebang in patches so that they apply cleanly
809 (substitute* '("patches/jtreg-jrunscript.patch"
810 "patches/hotspot/hs23/drop_unlicensed_test.patch")
811 (("#!/bin/sh") (string-append "#!" (which "sh"))))
813 (add-after 'unpack 'patch-paths
814 (lambda* (#:key inputs #:allow-other-keys)
815 ;; buildtree.make generates shell scripts, so we need to replace
816 ;; the generated shebang
817 (substitute* '("openjdk/hotspot/make/linux/makefiles/buildtree.make")
818 (("/bin/sh") (which "bash")))
820 (let ((corebin (string-append
821 (assoc-ref inputs "coreutils") "/bin/"))
822 (binbin (string-append
823 (assoc-ref inputs "binutils") "/bin/"))
824 (grepbin (string-append
825 (assoc-ref inputs "grep") "/bin/")))
826 (substitute* '("openjdk/jdk/make/common/shared/Defs-linux.gmk"
827 "openjdk/corba/make/common/shared/Defs-linux.gmk")
828 (("UNIXCOMMAND_PATH = /bin/")
829 (string-append "UNIXCOMMAND_PATH = " corebin))
830 (("USRBIN_PATH = /usr/bin/")
831 (string-append "USRBIN_PATH = " corebin))
832 (("DEVTOOLS_PATH *= */usr/bin/")
833 (string-append "DEVTOOLS_PATH = " corebin))
834 (("COMPILER_PATH *= */usr/bin/")
835 (string-append "COMPILER_PATH = "
836 (assoc-ref inputs "gcc") "/bin/"))
837 (("DEF_OBJCOPY *=.*objcopy")
838 (string-append "DEF_OBJCOPY = " (which "objcopy"))))
840 ;; fix path to alsa header
841 (substitute* "openjdk/jdk/make/common/shared/Sanity.gmk"
842 (("ALSA_INCLUDE=/usr/include/alsa/version.h")
843 (string-append "ALSA_INCLUDE="
844 (assoc-ref inputs "alsa-lib")
845 "/include/alsa/version.h")))
847 ;; fix hard-coded utility paths
848 (substitute* '("openjdk/jdk/make/common/shared/Defs-utils.gmk"
849 "openjdk/corba/make/common/shared/Defs-utils.gmk")
851 (string-append "ECHO = " (which "echo")))
853 (string-append "GREP = " (which "grep")))
855 (string-append "EGREP = " (which "egrep")))
857 (string-append "CPIO = " (which "cpio")))
858 (("READELF *=.*readelf")
859 (string-append "READELF = " (which "readelf")))
861 (string-append "AR = " (which "ar")))
863 (string-append "TAR = " (which "tar")))
865 (string-append "AS = " (which "as")))
867 (string-append "LD = " (which "ld")))
869 (string-append "STRIP = " (which "strip")))
871 (string-append "NM = " (which "nm")))
873 (string-append "SH = " (which "bash")))
875 (string-append "FIND = " (which "find")))
877 (string-append "LDD = " (which "ldd")))
878 (("NAWK *=.*(n|g)awk")
879 (string-append "NAWK = " (which "gawk")))
881 (string-append "XARGS = " (which "xargs")))
883 (string-append "UNZIP = " (which "unzip")))
885 (string-append "ZIPEXE = " (which "zip")))
887 (string-append "SED = " (which "sed"))))
889 ;; Some of these timestamps cause problems as they are more than
890 ;; 10 years ago, failing the build process.
892 "openjdk/jdk/src/share/classes/java/util/CurrencyData.properties"
893 (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN")
894 (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN")
895 (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON")
896 (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY"))
898 (add-before 'configure 'set-additional-paths
899 (lambda* (#:key inputs #:allow-other-keys)
901 (string-append (assoc-ref inputs "libxrender")
902 "/include/X11/extensions" ":"
903 (assoc-ref inputs "libxtst")
904 "/include/X11/extensions" ":"
905 (assoc-ref inputs "libxinerama")
906 "/include/X11/extensions" ":"
907 (or (getenv "CPATH") "")))
908 (setenv "ALT_CUPS_HEADERS_PATH"
909 (string-append (assoc-ref inputs "cups")
911 (setenv "ALT_FREETYPE_HEADERS_PATH"
912 (string-append (assoc-ref inputs "freetype")
914 (setenv "ALT_FREETYPE_LIB_PATH"
915 (string-append (assoc-ref inputs "freetype")
918 (add-before 'build 'disable-os-version-check
919 ;; allow build on linux major version change
921 (setenv "DISABLE_HOTSPOT_OS_VERSION_CHECK" "ok")
924 (lambda* (#:key outputs #:allow-other-keys)
925 (let ((doc (string-append (assoc-ref outputs "doc")
926 "/share/doc/icedtea"))
927 (jre (assoc-ref outputs "out"))
928 (jdk (assoc-ref outputs "jdk")))
929 (copy-recursively "openjdk.build/docs" doc)
930 (copy-recursively "openjdk.build/j2re-image" jre)
931 (copy-recursively "openjdk.build/j2sdk-image" jdk))
934 `(("ant" ,ant-bootstrap)
935 ("alsa-lib" ,alsa-lib)
937 ("classpath" ,classpath-devel)
938 ("coreutils" ,coreutils)
941 ("ecj" ,ecj-bootstrap)
942 ("ecj-javac" ,ecj-javac-wrapper-final)
944 ("fontconfig" ,fontconfig)
945 ("freetype" ,freetype)
957 ("libxcomposite" ,libxcomposite)
959 ("libxinerama" ,libxinerama)
960 ("libxrender" ,libxrender)
961 ("libxslt" ,libxslt) ;for xsltproc
964 ("mit-krb5" ,mit-krb5)
966 ("nss-certs" ,nss-certs)
968 ("pkg-config" ,pkg-config)
969 ("procps" ,procps) ;for "free", even though I'm not sure we should use it
979 (url "http://hg.openjdk.java.net/jdk6/jdk6/")
980 (changeset "jdk6-b41")))
983 "14q47yfg586fs64w30g8mk92m5dkxsvr36zzh0ra99xk5x0x96mv"))))
988 (url "http://hg.openjdk.java.net/jdk6/jdk6/jdk/")
989 (changeset "jdk6-b41")))
992 "165824nhg1k1dx6zs9dny0j49rmk35jw5b13dmz8c77jfajml4v9"))))
997 (url "http://hg.openjdk.java.net/jdk6/jdk6/hotspot/")
998 (changeset "jdk6-b41")))
1001 "07lc1z4k5dj9nrc1wvwmpvxr3xgxrdkdh53xb95skk5ij49yagfd"))
1003 (search-patches "icedtea-6-hotspot-gcc-segfault-workaround.patch"))))
1008 (url "http://hg.openjdk.java.net/jdk6/jdk6/corba/")
1009 (changeset "jdk6-b41")))
1012 "1p9g1r9dnax2iwp7yb59qx7m4nmshqhwmrb2b8jj8zgbd9dl2i3q"))))
1017 (url "http://hg.openjdk.java.net/jdk6/jdk6/langtools/")
1018 (changeset "jdk6-b41")))
1021 "1x52wd67fynbbd9ild6fb4wvba3f5hhwk03qdjfazd0a1qr37z3d"))))
1026 (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxp/")
1027 (changeset "jdk6-b41")))
1030 "0shlqrvzpr4nrkmv215lbxnby63s3yvbdh1yxcayznsyqwa4nlxm"))))
1035 (url "http://hg.openjdk.java.net/jdk6/jdk6/jaxws/")
1036 (changeset "jdk6-b41")))
1039 "0835lkw8vib1xhp8lxnybhlvzdh699hbi4mclxanydjk63zbpxk0"))))))
1040 (home-page "http://icedtea.classpath.org")
1041 (synopsis "Java development kit")
1043 "This package provides the OpenJDK built with the IcedTea build harness.
1044 This version of the OpenJDK is no longer maintained and is only used for
1045 bootstrapping purposes.")
1046 ;; IcedTea is released under the GPL2 + Classpath exception, which is the
1047 ;; same license as both GNU Classpath and OpenJDK.
1048 (license license:gpl2+)))
1050 (define-public icedtea-7
1051 (let* ((version "2.6.13")
1052 (drop (lambda (name hash)
1056 "http://icedtea.classpath.org/download/drops"
1057 "/icedtea7/" version "/" name ".tar.bz2"))
1058 (sha256 (base32 hash))))))
1065 "http://icedtea.wildebeest.org/download/source/icedtea-"
1069 "1w331rdqx1dcx2xb0fmjmrkdc71xqn20fxsgw8by4xhiblh88khh"))
1070 (modules '((guix build utils)))
1073 (substitute* "Makefile.in"
1074 ;; do not leak information about the build host
1075 (("DISTRIBUTION_ID=\"\\$\\(DIST_ID\\)\"")
1076 "DISTRIBUTION_ID=\"\\\"guix\\\"\""))
1078 (build-system gnu-build-system)
1079 (outputs '("out" ; Java Runtime Environment
1080 "jdk" ; Java Development Kit
1081 "doc")) ; all documentation
1083 `(;; There are many test failures. Some are known to
1084 ;; fail upstream, others relate to not having an X
1085 ;; server running at test time, yet others are a
1086 ;; complete mystery to me.
1088 ;; hotspot: passed: 241; failed: 45; error: 2
1089 ;; langtools: passed: 1,934; failed: 26
1093 ;; The DSOs use $ORIGIN to refer to each other, but (guix build
1094 ;; gremlin) doesn't support it yet, so skip this phase.
1095 #:validate-runpath? #f
1097 ;; Apparently, the C locale is needed for some of the tests.
1100 #:modules ((guix build utils)
1101 (guix build gnu-build-system)
1108 ;; TODO: package pcsc and sctp, and add to inputs
1109 `("--disable-system-pcsc"
1110 "--disable-system-sctp"
1111 "--enable-bootstrap"
1114 "--disable-downloading"
1115 "--disable-tests" ;they are run in the check phase instead
1116 "--with-openjdk-src-dir=./openjdk.src"
1117 ,(string-append "--with-jdk-home="
1118 (assoc-ref %build-inputs "jdk")))
1121 (modify-phases %standard-phases
1123 (lambda* (#:key source inputs #:allow-other-keys)
1124 (let ((target (string-append "icedtea-" ,version))
1125 (unpack (lambda* (name #:optional dir)
1127 (string-drop-right name 5))))
1130 (assoc-ref inputs name)
1132 "--strip-components=1")))))
1134 (invoke "tar" "xvf" source
1135 "-C" target "--strip-components=1")
1137 (unpack "openjdk-src" "openjdk.src")
1138 (with-directory-excursion "openjdk.src"
1140 (filter (cut string-suffix? "-drop" <>)
1145 (add-after 'unpack 'patch-bitrot
1147 (substitute* '("patches/boot/revert-6973616.patch"
1148 "openjdk.src/jdk/make/common/shared/Defs-versions.gmk")
1149 (("REQUIRED_FREETYPE_VERSION = 2.2.1")
1150 "REQUIRED_FREETYPE_VERSION = 2.10.1"))
1151 ;; As of attr 2.4.48 this header is no longer
1152 ;; included. It is provided by the libc instead.
1153 (substitute* '("configure"
1154 "openjdk.src/jdk/src/solaris/native/sun/nio/fs/LinuxNativeDispatcher.c")
1155 (("attr/xattr.h") "sys/xattr.h"))
1157 (add-after 'unpack 'fix-x11-extension-include-path
1158 (lambda* (#:key inputs #:allow-other-keys)
1159 (substitute* "openjdk.src/jdk/make/sun/awt/mawt.gmk"
1160 (((string-append "\\$\\(firstword \\$\\(wildcard "
1161 "\\$\\(OPENWIN_HOME\\)"
1162 "/include/X11/extensions\\).*$"))
1163 (string-append (assoc-ref inputs "libxrender")
1164 "/include/X11/extensions"
1165 " -I" (assoc-ref inputs "libxtst")
1166 "/include/X11/extensions"
1167 " -I" (assoc-ref inputs "libxinerama")
1168 "/include/X11/extensions"))
1169 (("\\$\\(wildcard /usr/include/X11/extensions\\)\\)") ""))
1171 (add-after 'unpack 'patch-paths
1173 ;; buildtree.make generates shell scripts, so we need to replace
1174 ;; the generated shebang
1175 (substitute* '("openjdk.src/hotspot/make/linux/makefiles/buildtree.make")
1176 (("/bin/sh") (which "bash")))
1178 (let ((corebin (string-append
1179 (assoc-ref %build-inputs "coreutils") "/bin/"))
1180 (binbin (string-append
1181 (assoc-ref %build-inputs "binutils") "/bin/"))
1182 (grepbin (string-append
1183 (assoc-ref %build-inputs "grep") "/bin/")))
1184 (substitute* '("openjdk.src/jdk/make/common/shared/Defs-linux.gmk"
1185 "openjdk.src/corba/make/common/shared/Defs-linux.gmk")
1186 (("UNIXCOMMAND_PATH = /bin/")
1187 (string-append "UNIXCOMMAND_PATH = " corebin))
1188 (("USRBIN_PATH = /usr/bin/")
1189 (string-append "USRBIN_PATH = " corebin))
1190 (("DEVTOOLS_PATH *= */usr/bin/")
1191 (string-append "DEVTOOLS_PATH = " corebin))
1192 (("COMPILER_PATH *= */usr/bin/")
1193 (string-append "COMPILER_PATH = "
1194 (assoc-ref %build-inputs "gcc") "/bin/"))
1195 (("DEF_OBJCOPY *=.*objcopy")
1196 (string-append "DEF_OBJCOPY = " (which "objcopy"))))
1198 ;; fix path to alsa header
1199 (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
1200 (("ALSA_INCLUDE=/usr/include/alsa/version.h")
1201 (string-append "ALSA_INCLUDE="
1202 (assoc-ref %build-inputs "alsa-lib")
1203 "/include/alsa/version.h")))
1205 ;; fix hard-coded utility paths
1206 (substitute* '("openjdk.src/jdk/make/common/shared/Defs-utils.gmk"
1207 "openjdk.src/corba/make/common/shared/Defs-utils.gmk")
1209 (string-append "ECHO = " (which "echo")))
1211 (string-append "GREP = " (which "grep")))
1212 (("EGREP *=.*egrep")
1213 (string-append "EGREP = " (which "egrep")))
1215 (string-append "CPIO = " (which "cpio")))
1216 (("READELF *=.*readelf")
1217 (string-append "READELF = " (which "readelf")))
1219 (string-append "AR = " (which "ar")))
1221 (string-append "TAR = " (which "tar")))
1223 (string-append "AS = " (which "as")))
1225 (string-append "LD = " (which "ld")))
1226 (("STRIP *=.*strip")
1227 (string-append "STRIP = " (which "strip")))
1229 (string-append "NM = " (which "nm")))
1231 (string-append "SH = " (which "bash")))
1233 (string-append "FIND = " (which "find")))
1235 (string-append "LDD = " (which "ldd")))
1236 (("NAWK *=.*(n|g)awk")
1237 (string-append "NAWK = " (which "gawk")))
1238 (("XARGS *=.*xargs")
1239 (string-append "XARGS = " (which "xargs")))
1240 (("UNZIP *=.*unzip")
1241 (string-append "UNZIP = " (which "unzip")))
1243 (string-append "ZIPEXE = " (which "zip")))
1245 (string-append "SED = " (which "sed"))))
1247 ;; Some of these timestamps cause problems as they are more than
1248 ;; 10 years ago, failing the build process.
1250 "openjdk.src/jdk/src/share/classes/java/util/CurrencyData.properties"
1251 (("AZ=AZM;2005-12-31-20-00-00;AZN") "AZ=AZN")
1252 (("MZ=MZM;2006-06-30-22-00-00;MZN") "MZ=MZN")
1253 (("RO=ROL;2005-06-30-21-00-00;RON") "RO=RON")
1254 (("TR=TRL;2004-12-31-22-00-00;TRY") "TR=TRY")))
1256 (add-before 'configure 'set-additional-paths
1257 (lambda* (#:key inputs #:allow-other-keys)
1258 (substitute* "openjdk.src/jdk/make/common/shared/Sanity.gmk"
1259 (("ALSA_INCLUDE=/usr/include/alsa/version.h")
1260 (string-append "ALSA_INCLUDE="
1261 (assoc-ref inputs "alsa-lib")
1262 "/include/alsa/version.h")))
1265 (string-append (assoc-ref inputs "libxcomposite")
1266 "/include/X11/extensions" ":"
1267 (assoc-ref inputs "libxrender")
1268 "/include/X11/extensions" ":"
1269 (assoc-ref inputs "libxtst")
1270 "/include/X11/extensions" ":"
1271 (assoc-ref inputs "libxinerama")
1272 "/include/X11/extensions" ":"
1273 (or (getenv "CPATH") "")))
1274 (setenv "ALT_OBJCOPY" (which "objcopy"))
1275 (setenv "ALT_CUPS_HEADERS_PATH"
1276 (string-append (assoc-ref inputs "cups")
1278 (setenv "ALT_FREETYPE_HEADERS_PATH"
1279 (string-append (assoc-ref inputs "freetype")
1281 (setenv "ALT_FREETYPE_LIB_PATH"
1282 (string-append (assoc-ref inputs "freetype")
1285 (add-before 'build 'disable-os-version-check
1286 ;; allow build on linux major version change
1288 (setenv "DISABLE_HOTSPOT_OS_VERSION_CHECK" "ok")
1290 (add-before 'check 'fix-test-framework
1292 ;; Fix PATH in test environment
1293 (substitute* "test/jtreg/com/sun/javatest/regtest/Main.java"
1294 (("PATH=/bin:/usr/bin")
1295 (string-append "PATH=" (getenv "PATH"))))
1296 (substitute* "test/jtreg/com/sun/javatest/util/SysEnv.java"
1297 (("/usr/bin/env") (which "env")))
1298 (substitute* "openjdk.src/hotspot/test/test_env.sh"
1299 (("/bin/rm") (which "rm"))
1300 (("/bin/cp") (which "cp"))
1301 (("/bin/mv") (which "mv")))
1303 (add-before 'check 'fix-hotspot-tests
1305 (with-directory-excursion "openjdk.src/hotspot/test/"
1306 (substitute* "jprt.config"
1307 (("PATH=\"\\$\\{path4sdk\\}\"")
1308 (string-append "PATH=" (getenv "PATH")))
1309 (("make=/usr/bin/make")
1310 (string-append "make=" (which "make"))))
1311 (substitute* '("runtime/6626217/Test6626217.sh"
1312 "runtime/7110720/Test7110720.sh")
1313 (("/bin/rm") (which "rm"))
1314 (("/bin/cp") (which "cp"))
1315 (("/bin/mv") (which "mv"))))
1317 (add-before 'check 'fix-jdk-tests
1319 (with-directory-excursion "openjdk.src/jdk/test/"
1320 (substitute* "com/sun/jdi/JdbReadTwiceTest.sh"
1321 (("/bin/pwd") (which "pwd")))
1322 (substitute* "com/sun/jdi/ShellScaffold.sh"
1323 (("/bin/kill") (which "kill")))
1324 (substitute* "start-Xvfb.sh"
1325 ;;(("/usr/bin/X11/Xvfb") (which "Xvfb"))
1326 (("/usr/bin/nohup") (which "nohup")))
1327 (substitute* "javax/security/auth/Subject/doAs/Test.sh"
1328 (("/bin/rm") (which "rm")))
1329 (substitute* "tools/launcher/MultipleJRE.sh"
1330 (("echo \"#!/bin/sh\"")
1331 (string-append "echo \"#!" (which "rm") "\""))
1332 (("/usr/bin/zip") (which "zip")))
1333 (substitute* "com/sun/jdi/OnThrowTest.java"
1334 (("#!/bin/sh") (string-append "#!" (which "sh"))))
1335 (substitute* "java/lang/management/OperatingSystemMXBean/GetSystemLoadAverage.java"
1336 (("/usr/bin/uptime") (which "uptime")))
1337 (substitute* "java/lang/ProcessBuilder/Basic.java"
1338 (("/usr/bin/env") (which "env"))
1339 (("/bin/false") (which "false"))
1340 (("/bin/true") (which "true"))
1341 (("/bin/cp") (which "cp"))
1342 (("/bin/sh") (which "sh")))
1343 (substitute* "java/lang/ProcessBuilder/FeelingLucky.java"
1344 (("/bin/sh") (which "sh")))
1345 (substitute* "java/lang/ProcessBuilder/Zombies.java"
1346 (("/usr/bin/perl") (which "perl"))
1347 (("/bin/ps") (which "ps"))
1348 (("/bin/true") (which "true")))
1349 (substitute* "java/lang/Runtime/exec/ConcurrentRead.java"
1350 (("/usr/bin/tee") (which "tee")))
1351 (substitute* "java/lang/Runtime/exec/ExecWithDir.java"
1352 (("/bin/true") (which "true")))
1353 (substitute* "java/lang/Runtime/exec/ExecWithInput.java"
1354 (("/bin/cat") (which "cat")))
1355 (substitute* "java/lang/Runtime/exec/ExitValue.java"
1356 (("/bin/sh") (which "sh"))
1357 (("/bin/true") (which "true"))
1358 (("/bin/kill") (which "kill")))
1359 (substitute* "java/lang/Runtime/exec/LotsOfDestroys.java"
1360 (("/usr/bin/echo") (which "echo")))
1361 (substitute* "java/lang/Runtime/exec/LotsOfOutput.java"
1362 (("/usr/bin/cat") (which "cat")))
1363 (substitute* "java/lang/Runtime/exec/SleepyCat.java"
1364 (("/bin/cat") (which "cat"))
1365 (("/bin/sleep") (which "sleep"))
1366 (("/bin/sh") (which "sh")))
1367 (substitute* "java/lang/Runtime/exec/StreamsSurviveDestroy.java"
1368 (("/bin/cat") (which "cat")))
1369 (substitute* "java/rmi/activation/CommandEnvironment/SetChildEnv.java"
1370 (("/bin/chmod") (which "chmod")))
1371 (substitute* "java/util/zip/ZipFile/Assortment.java"
1372 (("/bin/sh") (which "sh"))))
1376 ;; The "make check-*" targets always return zero, so we need to
1377 ;; check for errors in the associated log files to determine
1378 ;; whether any tests have failed.
1379 (use-modules (ice-9 rdelim))
1380 (let* ((error-pattern (make-regexp "^(Error|FAILED):.*"))
1381 (checker (lambda (port)
1383 (let ((line (read-line port)))
1385 ((eof-object? line) #t)
1386 ((regexp-exec error-pattern line)
1387 (error "test failed"))
1389 (run-test (lambda (test)
1390 (invoke "make" test)
1391 (call-with-input-file
1392 (string-append "test/" test ".log")
1394 (when #f ; skip tests
1395 (run-test "check-hotspot")
1396 (run-test "check-langtools")
1397 (run-test "check-jdk"))
1400 (lambda* (#:key outputs #:allow-other-keys)
1401 (let ((doc (string-append (assoc-ref outputs "doc")
1402 "/share/doc/icedtea"))
1403 (jre (assoc-ref outputs "out"))
1404 (jdk (assoc-ref outputs "jdk")))
1405 (copy-recursively "openjdk.build/docs" doc)
1406 (copy-recursively "openjdk.build/j2re-image" jre)
1407 (copy-recursively "openjdk.build/j2sdk-image" jdk))
1409 ;; Some of the libraries in the lib/amd64 folder link to libjvm.so.
1410 ;; But that shared object is located in the server/ folder, so it
1411 ;; cannot be found. This phase creates a symbolic link in the
1412 ;; lib/amd64 folder so that the other libraries can find it.
1415 ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
1417 ;; FIXME: Find the bug in the build system, so that this symlink is
1419 (add-after 'install 'install-libjvm
1420 (lambda* (#:key inputs outputs #:allow-other-keys)
1421 (let* ((lib-path (string-append (assoc-ref outputs "out")
1422 ;; See 'INSTALL_ARCH_DIR' in
1424 ,(match (%current-system)
1433 ;; We need a catch-all, dropping
1434 ;; '-linux' works in most cases.
1439 (%current-system) 6)))))))
1440 (symlink (string-append lib-path "/server/libjvm.so")
1441 (string-append lib-path "/libjvm.so")))
1443 ;; By default IcedTea only generates an empty keystore. In order to
1444 ;; be able to use certificates in Java programs we need to generate a
1445 ;; keystore from a set of certificates. For convenience we use the
1446 ;; certificates from the nss-certs package.
1447 (add-after 'install 'install-keystore
1448 (lambda* (#:key inputs outputs #:allow-other-keys)
1449 (let* ((keystore "cacerts")
1450 (certs-dir (string-append (assoc-ref inputs "nss-certs")
1452 (keytool (string-append (assoc-ref outputs "jdk")
1454 (define (extract-cert file target)
1455 (call-with-input-file file
1457 (call-with-output-file target
1459 (let loop ((line (read-line in 'concat))
1462 ((eof-object? line) #t)
1463 ((string-prefix? "-----BEGIN" line)
1465 (loop (read-line in 'concat) #t))
1466 ((string-prefix? "-----END" line)
1470 (when copying? (display line out))
1471 (loop (read-line in 'concat) copying?)))))))))
1472 (define (import-cert cert)
1473 (format #t "Importing certificate ~a\n" (basename cert))
1474 (let ((temp "tmpcert"))
1475 (extract-cert cert temp)
1476 (let ((port (open-pipe* OPEN_WRITE keytool
1478 "-alias" (basename cert)
1479 "-keystore" keystore
1480 "-storepass" "changeit"
1482 (display "yes\n" port)
1483 (when (not (zero? (status:exit-val (close-pipe port))))
1484 (format #t "failed to import ~a\n" cert)))
1485 (delete-file temp)))
1487 ;; This is necessary because the certificate directory contains
1488 ;; files with non-ASCII characters in their names.
1489 (setlocale LC_ALL "en_US.utf8")
1490 (setenv "LC_ALL" "en_US.utf8")
1492 (for-each import-cert (find-files certs-dir "\\.pem$"))
1493 (mkdir-p (string-append (assoc-ref outputs "out")
1495 (mkdir-p (string-append (assoc-ref outputs "jdk")
1496 "/jre/lib/security"))
1498 ;; The cacerts files we are going to overwrite are chmod'ed as
1499 ;; read-only (444) in icedtea-8 (which derives from this
1500 ;; package). We have to change this so we can overwrite them.
1501 (chmod (string-append (assoc-ref outputs "out")
1502 "/lib/security/" keystore) #o644)
1503 (chmod (string-append (assoc-ref outputs "jdk")
1504 "/jre/lib/security/" keystore) #o644)
1506 (install-file keystore
1507 (string-append (assoc-ref outputs "out")
1509 (install-file keystore
1510 (string-append (assoc-ref outputs "jdk")
1511 "/jre/lib/security"))
1516 "0l34ikyf62hbzlf9032alzkkqvf7bpmckz4gvirvph755w7gka8l"))
1519 "050gv2jbg1pi6qkn8w18bwpbklfa5b0kymjvan9pncddbj8m84fz"))
1522 "1k6yldwnxfzdg5926r1nlfv8d1r1j7rlp2nkz6gqh05vgyamnfhl"))
1525 "110j7jlz47x2gg6f7653x12mssan5kvj9l9h1m1c8c92drfxbqyk"))
1528 "0d1mca38ksxvdskp9im3pp7fdijhj1n3lwq9w13r9s4v3qyskgdd"))
1531 "0nq5236fzxn3p6x8cgncl56mzcmsj07q9gymysnws4c8byc6n0qj"))
1536 "http://icedtea.classpath.org/downloads/drops"
1537 "/icedtea7/" version "/hotspot.tar.bz2"))
1540 "17bdv39n4lh8l5737c96f3xgamx4y305m067p01cywgp7zaddqws"))
1541 (patches (search-patches
1542 "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
1543 ("ant" ,ant-bootstrap)
1545 ("coreutils" ,coreutils)
1546 ("diffutils" ,diffutils) ;for tests
1549 ("libtool" ,libtool)
1550 ("pkg-config" ,pkg-config)
1556 ("fastjar" ,fastjar)
1557 ("libxslt" ,libxslt) ;for xsltproc
1558 ("nss-certs" ,nss-certs)
1560 ("procps" ,procps) ;for "free", even though I'm not sure we should use it
1561 ("jdk" ,icedtea-6 "jdk")))
1563 `(("alsa-lib" ,alsa-lib)
1566 ("libxcomposite" ,libxcomposite)
1568 ("libxtst" ,libxtst)
1570 ("libxinerama" ,libxinerama)
1571 ("libxrender" ,libxrender)
1572 ("libjpeg" ,libjpeg)
1574 ("mit-krb5" ,mit-krb5)
1577 ("fontconfig" ,fontconfig)
1578 ("freetype" ,freetype)
1582 (home-page "http://icedtea.classpath.org")
1583 (synopsis "Java development kit")
1585 "This package provides the Java development kit OpenJDK built with the
1586 IcedTea build harness.")
1588 ;; 'configure' lists "mips" and "mipsel", but not "mips64el'.
1589 (supported-systems (delete "mips64el-linux" %supported-systems))
1591 ;; IcedTea is released under the GPL2 + Classpath exception, which is the
1592 ;; same license as both GNU Classpath and OpenJDK.
1593 (license license:gpl2+))))
1595 (define-public icedtea-8
1596 (let* ((version "3.7.0")
1597 (drop (lambda (name hash)
1601 "http://icedtea.classpath.org/download/drops"
1602 "/icedtea8/" version "/" name ".tar.xz"))
1603 (sha256 (base32 hash))))))
1604 (package (inherit icedtea-7)
1609 "http://icedtea.wildebeest.org/download/source/icedtea-"
1613 "09yqzn8rpccs7cyv89hhy5zlznpgqw5x3jz0w1ccp0cz1vgs8l5w"))
1614 (modules '((guix build utils)))
1617 (substitute* '("configure"
1619 ;; Do not embed build time
1620 (("(DIST_ID=\"Custom build).*$" _ prefix)
1621 (string-append prefix "\"\n"))
1622 ;; Do not leak information about the build host
1623 (("DIST_NAME=\"\\$build_os\"")
1624 "DIST_NAME=\"guix\""))
1627 `(#:imported-modules
1628 ((guix build ant-build-system)
1629 (guix build syscalls)
1630 ,@%gnu-build-system-modules)
1631 ,@(substitute-keyword-arguments (package-arguments icedtea-7)
1632 ((#:modules modules)
1633 `((guix build utils)
1634 (guix build gnu-build-system)
1635 ((guix build ant-build-system) #:prefix ant:)
1640 ((#:configure-flags flags)
1641 `(let ((jdk (assoc-ref %build-inputs "jdk")))
1642 `( ;;"--disable-bootstrap"
1643 "--enable-bootstrap"
1645 "--disable-downloading"
1646 "--disable-system-pcsc"
1647 "--disable-system-sctp"
1648 "--disable-tests" ;they are run in the check phase instead
1649 "--with-openjdk-src-dir=./openjdk.src"
1650 ,(string-append "--with-jdk-home=" jdk))))
1652 `(modify-phases ,phases
1653 (delete 'fix-x11-extension-include-path)
1654 (delete 'patch-paths)
1655 (delete 'set-additional-paths)
1656 (delete 'patch-patches)
1657 (delete 'patch-bitrot)
1658 ;; Prevent the keytool from recording the current time when
1659 ;; adding certificates at build time.
1660 (add-after 'unpack 'patch-keystore
1662 (substitute* "openjdk.src/jdk/src/share/classes/sun/security/provider/JavaKeyStore.java"
1663 (("date = new Date\\(\\);")
1665 date = (System.getenv(\"SOURCE_DATE_EPOCH\") != null) ?\
1666 new Date(Long.parseLong(System.getenv(\"SOURCE_DATE_EPOCH\"))) :\
1669 (add-after 'unpack 'patch-jni-libs
1670 ;; Hardcode dynamically loaded libraries.
1672 (let* ((library-path (search-path-as-string->list
1673 (getenv "LIBRARY_PATH")))
1674 (find-library (lambda (name)
1677 (string-append "lib" name ".so")))))
1680 (catch 'decoding-error
1683 (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
1685 (format #f "\"~a\"" (find-library name)))
1686 (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
1687 (format #f "\"~a\"" (find-library name)))))
1689 ;; Those are safe to skip.
1690 (format (current-error-port)
1691 "warning: failed to substitute: ~a~%"
1693 (find-files "openjdk.src/jdk/src/solaris/native"
1697 (lambda* (#:key outputs #:allow-other-keys)
1698 (let ((doc (string-append (assoc-ref outputs "doc")
1699 "/share/doc/icedtea"))
1700 (jre (assoc-ref outputs "out"))
1701 (jdk (assoc-ref outputs "jdk")))
1702 (copy-recursively "openjdk.build/docs" doc)
1703 (copy-recursively "openjdk.build/images/j2re-image" jre)
1704 (copy-recursively "openjdk.build/images/j2sdk-image" jdk)
1705 ;; Install the nss.cfg file to JRE to enable SSL/TLS
1707 (copy-file (string-append jdk "/jre/lib/security/nss.cfg")
1708 (string-append jre "/lib/security/nss.cfg"))
1710 (add-after 'install 'strip-jar-timestamps
1711 (assoc-ref ant:%standard-phases 'strip-jar-timestamps)))))))
1713 `(("jdk" ,icedtea-7 "jdk")
1716 "1mj6xgmw31i6qd30qi9dmv7160fbcfq5ikz1jwjihdg2793il19p"))
1719 "1wb8k5zm40zld0986dvmlh5xh3gyixbg9h26sl662zy92amhmyyg"))
1722 "11ma4zz0599cy70xd219v7a8vin7p96xrhhz3wsaw6cjhkzpagah"))
1725 "14m1y0z0fbm5z5zjw3vnq85py8dma84bi3f9cw8rhdyc6skk8q4i"))
1728 "09andnm6xaasnp963hgx42yiflifiljp9z7z85jrfyc5z8a5whmf"))
1731 "0s6lcpc0zckz2fnq98aqf28nz9y3wbi41a3kyaqqa2abwbkm1zwl"))
1734 "15wizy123vhk40chl1b4p552jf2pw2hdww0myf11qab425axz4nw"))
1739 "http://icedtea.classpath.org/download/drops"
1740 "/icedtea8/" version "/hotspot.tar.xz"))
1743 "1ciz1w9j0kz7s1dxdhyqq71nla9icyz6qvn0b9z2zgkklqa98qmm"))
1744 (patches (search-patches
1745 "icedtea-7-hotspot-gcc-segfault-workaround.patch"))))
1748 "19pzl3ppaw8j6r5cnyp8qiw3hxijh3hdc46l39g5yfhdl4pr4hpa"))
1751 "0k33anxdzw1icn072wynfmmdjhsv50hay0j1sfkfxny12rb3vgdy"))
1752 ,@(fold alist-delete (package-native-inputs icedtea-7)
1753 '("jdk" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop"
1754 "jdk-drop" "langtools-drop" "hotspot-drop")))))))
1756 (define-public openjdk9
1762 (uri "https://hg.openjdk.java.net/jdk/jdk/archive/3cc80be736f2.tar.bz2")
1763 (file-name (string-append name "-" version ".tar.bz2"))
1766 "01ihmyf7k5z17wbr7xig7y40l9f01d5zjgkcmawn1102hw5kchpq"))
1767 (modules '((guix build utils)))
1770 (for-each delete-file (find-files "." ".*.bin$"))
1771 (for-each delete-file (find-files "." ".*.exe$"))
1772 (for-each delete-file (find-files "." ".*.jar$"))
1774 (build-system gnu-build-system)
1775 (outputs '("out" "jdk" "doc"))
1777 `(#:tests? #f; require jtreg
1779 ((guix build syscalls)
1780 ,@%gnu-build-system-modules)
1782 (modify-phases %standard-phases
1783 (add-after 'patch-source-shebangs 'fix-java-shebangs
1785 ;; This file was "fixed" by patch-source-shebangs, but it requires
1786 ;; this exact first line.
1787 (substitute* "jdk/make/data/blacklistedcertsconverter/blacklisted.certs.pem"
1788 (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
1791 (lambda* (#:key inputs outputs #:allow-other-keys)
1792 ;; TODO: unbundle libpng and lcms
1793 (invoke "bash" "./configure"
1794 (string-append "--with-freetype=" (assoc-ref inputs "freetype"))
1795 "--disable-freetype-bundling"
1796 "--disable-warnings-as-errors"
1797 "--disable-hotspot-gtest"
1798 "--with-giflib=system"
1799 "--with-libjpeg=system"
1800 (string-append "--prefix=" (assoc-ref outputs "out")))
1804 (with-output-to-file ".src-rev"
1806 (display ,version)))
1807 (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "yes")
1808 (invoke "make" "all")
1810 ;; Some of the libraries in the lib/ folder link to libjvm.so.
1811 ;; But that shared object is located in the server/ folder, so it
1812 ;; cannot be found. This phase creates a symbolic link in the
1813 ;; lib/ folder so that the other libraries can find it.
1816 ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
1818 ;; FIXME: Find the bug in the build system, so that this symlink is
1820 (add-after 'install 'install-libjvm
1821 (lambda* (#:key inputs outputs #:allow-other-keys)
1822 (let* ((lib-out (string-append (assoc-ref outputs "out")
1824 (lib-jdk (string-append (assoc-ref outputs "jdk")
1826 (symlink (string-append lib-jdk "/server/libjvm.so")
1827 (string-append lib-jdk "/libjvm.so"))
1828 (symlink (string-append lib-out "/server/libjvm.so")
1829 (string-append lib-out "/libjvm.so")))
1832 (lambda* (#:key outputs #:allow-other-keys)
1833 (let ((out (assoc-ref outputs "out"))
1834 (jdk (assoc-ref outputs "jdk"))
1835 (doc (assoc-ref outputs "doc"))
1836 (images (car (find-files "build" ".*-server-release"
1837 #:directories? #t))))
1838 (copy-recursively (string-append images "/images/jdk") jdk)
1839 (copy-recursively (string-append images "/images/jre") out)
1840 (copy-recursively (string-append images "/images/docs") doc))
1842 (add-after 'install 'strip-zip-timestamps
1843 (lambda* (#:key outputs #:allow-other-keys)
1844 (use-modules (guix build syscalls))
1845 (for-each (lambda (zip)
1846 (let ((dir (mkdtemp! "zip-contents.XXXXXX")))
1847 (with-directory-excursion dir
1848 (invoke "unzip" zip))
1850 (for-each (lambda (file)
1851 (let ((s (lstat file)))
1852 (unless (eq? (stat:type s) 'symlink)
1853 (format #t "reset ~a~%" file)
1854 (utime file 0 0 0 0))))
1855 (find-files dir #:directories? #t))
1856 (with-directory-excursion dir
1857 (let ((files (find-files "." ".*" #:directories? #t)))
1858 (apply invoke "zip" "-0" "-X" zip files)))))
1859 (find-files (assoc-ref outputs "doc") ".*.zip$"))
1862 `(("alsa-lib" ,alsa-lib)
1864 ("fontconfig" ,fontconfig)
1865 ("freetype" ,freetype)
1869 ("libjpeg" ,libjpeg)
1873 ("libxcomposite" ,libxcomposite)
1875 ("libxinerama" ,libxinerama)
1876 ("libxrender" ,libxrender)
1878 ("libxtst" ,libxtst)))
1880 `(("icedtea-8" ,icedtea-8)
1881 ("icedtea-8:jdk" ,icedtea-8 "jdk")
1885 (home-page "https://openjdk.java.net/projects/jdk9/")
1886 (synopsis "Java development kit")
1888 "This package provides the Java development kit OpenJDK.")
1889 (license license:gpl2+)))
1891 (define-public openjdk10
1898 (uri "http://hg.openjdk.java.net/jdk/jdk/archive/6fa770f9f8ab.tar.bz2")
1899 (file-name (string-append name "-" version ".tar.bz2"))
1902 "0zywq2203b4hx4jms9vbwvjcj1d3k2v3qpx4s33729fkpmid97r4"))
1903 (patches (search-patches
1904 "openjdk-10-idlj-reproducibility.patch"))
1905 (modules '((guix build utils)))
1908 (for-each delete-file (find-files "." ".*.bin$"))
1909 (for-each delete-file (find-files "." ".*.exe$"))
1910 (for-each delete-file (find-files "." ".*.jar$"))
1913 (substitute-keyword-arguments (package-arguments openjdk9)
1915 `(modify-phases ,phases
1916 (replace 'fix-java-shebangs
1918 ;; This file was "fixed" by patch-source-shebangs, but it requires
1919 ;; this exact first line.
1920 (substitute* "make/data/blacklistedcertsconverter/blacklisted.certs.pem"
1921 (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
1924 (lambda* (#:key inputs outputs #:allow-other-keys)
1925 (invoke "bash" "./configure"
1926 (string-append "--with-freetype=" (assoc-ref inputs "freetype"))
1927 "--disable-freetype-bundling"
1928 "--disable-warnings-as-errors"
1929 "--disable-hotspot-gtest"
1930 "--with-giflib=system"
1931 "--with-libjpeg=system"
1932 "--with-native-debug-symbols=zipped"
1933 (string-append "--prefix=" (assoc-ref outputs "out")))
1936 `(("openjdk9" ,openjdk9)
1937 ("openjdk9:jdk" ,openjdk9 "jdk")
1942 (define-public openjdk11
1948 (uri "http://hg.openjdk.java.net/jdk/jdk/archive/76072a077ee1.tar.bz2")
1949 (file-name (string-append name "-" version ".tar.bz2"))
1952 "0v705w1s9lrqalzahir78pk397rkk9gfvzq821yv8h3xha0bqi6w"))
1953 (modules '((guix build utils)))
1956 (for-each delete-file (find-files "." ".*.bin$"))
1957 (for-each delete-file (find-files "." ".*.exe$"))
1958 (for-each delete-file (find-files "." ".*.jar$"))
1960 (build-system gnu-build-system)
1961 (outputs '("out" "jdk" "doc"))
1963 `(#:imported-modules
1964 ((guix build syscalls)
1965 (ice-9 binary-ports)
1967 ,@%gnu-build-system-modules)
1968 #:tests? #f; requires jtreg
1969 ;; TODO package jtreg
1970 ;; disable parallel builds, as the openjdk build system does not like -j
1971 #:parallel-build? #f
1972 #:parallel-tests? #f
1973 ;; reenable parallel builds and tests by adding the flags manually
1974 #:make-flags (list (string-append "JOBS=" (number->string (parallel-job-count))))
1976 `("--disable-option-checking" ; --enable-fast-install default flag errors otherwise
1977 "--disable-warnings-as-errors"
1978 ;; make validate-runpath pass, see: http://issues.guix.info/issue/32894
1979 "--with-native-debug-symbols=zipped"
1980 ;; do not use the bundled libraries
1981 "--with-giflib=system"
1982 "--with-lcms=system"
1983 "--with-libjpeg=system"
1984 "--with-libpng=system"
1985 "--with-version-pre="
1986 ;; allow the build system to locate the system freetype
1987 ,(string-append "--with-freetype-include="
1988 (assoc-ref %build-inputs "freetype") "/include")
1989 ,(string-append "--with-freetype-lib="
1990 (assoc-ref %build-inputs "freetype") "/lib"))
1993 (modify-phases %standard-phases
1994 (add-after 'patch-source-shebangs 'fix-java-shebangs
1996 ;; This file was "fixed" by patch-source-shebangs, but it requires
1997 ;; this exact first line.
1998 (substitute* "make/data/blacklistedcertsconverter/blacklisted.certs.pem"
1999 (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
2003 (with-output-to-file ".src-rev"
2005 (display ,version)))
2006 (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "yes")
2007 (invoke "make" "all")
2009 ;; jdk 11 does not build jre by default any more
2010 ;; building it anyways
2011 ;; for further information see:
2012 ;; https://github.com/AdoptOpenJDK/openjdk-build/issues/356
2013 (add-after 'build 'build-jre
2015 (invoke "make" "legacy-jre-image")
2018 (lambda* (#:key outputs #:allow-other-keys)
2019 (let ((out (assoc-ref outputs "out"))
2020 (jdk (assoc-ref outputs "jdk"))
2021 (doc (assoc-ref outputs "doc"))
2022 (images (car (find-files "build" ".*-server-release"
2023 #:directories? #t))))
2024 (copy-recursively (string-append images "/images/jdk") jdk)
2025 (copy-recursively (string-append images "/images/jre") out)
2026 (copy-recursively (string-append images "/images/docs") doc))
2028 ;; Some of the libraries in the lib/ folder link to libjvm.so.
2029 ;; But that shared object is located in the server/ folder, so it
2030 ;; cannot be found. This phase creates a symbolic link in the
2031 ;; lib/ folder so that the other libraries can find it.
2034 ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
2036 ;; FIXME: Find the bug in the build system, so that this symlink is
2038 (add-after 'install 'install-libjvm
2039 (lambda* (#:key inputs outputs #:allow-other-keys)
2040 (let* ((lib-out (string-append (assoc-ref outputs "out")
2042 (lib-jdk (string-append (assoc-ref outputs "jdk")
2044 (symlink (string-append lib-jdk "/server/libjvm.so")
2045 (string-append lib-jdk "/libjvm.so"))
2046 (symlink (string-append lib-out "/server/libjvm.so")
2047 (string-append lib-out "/libjvm.so")))
2049 (add-after 'install 'strip-character-data-timestamps
2050 (lambda* (#:key outputs #:allow-other-keys)
2051 (use-modules (guix build syscalls))
2052 (let ((archive (string-append
2053 (assoc-ref outputs "jdk") "/lib/src.zip"))
2054 (dir (mkdtemp! "zip-contents.XXXXXX")))
2055 (with-directory-excursion dir
2056 (invoke "unzip" archive))
2057 (delete-file archive)
2058 (with-directory-excursion dir
2059 (let ((char-data-files (find-files "." "CharacterData.*")))
2060 (for-each (lambda (file)
2062 (((string-append "This file was generated "
2063 "AUTOMATICALLY from a template "
2065 (string-append "This file was generated "
2066 "AUTOMATICALLY from a template "
2069 (with-directory-excursion dir
2070 (let ((files (find-files "." ".*" #:directories? #t)))
2071 (apply invoke "zip" "-0" "-X" archive files))))))
2072 (add-after 'strip-character-data-timestamps 'strip-archive-timestamps
2073 (lambda* (#:key outputs #:allow-other-keys)
2074 (use-modules (guix build syscalls)
2075 (ice-9 binary-ports)
2077 (letrec ((repack-archive
2079 (let ((dir (mkdtemp! "zip-contents.XXXXXX")))
2080 (with-directory-excursion dir
2081 (invoke "unzip" archive))
2082 (delete-file archive)
2083 (for-each (compose repack-archive canonicalize-path)
2084 (find-files dir "(ct.sym|.*.jar)$"))
2085 (let ((reset-file-timestamp
2087 (let ((s (lstat file)))
2088 (unless (eq? (stat:type s) 'symlink)
2089 (format #t "reset ~a~%" file)
2090 (utime file 0 0 0 0))))))
2091 (for-each reset-file-timestamp
2092 (find-files dir #:directories? #t)))
2093 (with-directory-excursion dir
2094 (let ((files (find-files "." ".*" #:directories? #t)))
2095 (apply invoke "zip" "-0" "-X" archive files)))))))
2096 (for-each repack-archive
2097 (find-files (assoc-ref outputs "doc") ".*.zip$"))
2098 (for-each repack-archive
2099 (find-files (assoc-ref outputs "jdk")
2100 ".*.(zip|jar|diz)$"))
2101 (repack-archive (string-append (assoc-ref outputs "jdk") "/lib/ct.sym"))
2104 (call-with-input-file file-name
2106 (let ((header #vu8(#x4a #x4d #x01 #x00)))
2107 (if (equal? (get-bytevector-n
2108 file (bytevector-length header))
2110 (let* ((header-length (bytevector-length header))
2111 (temp-file (mkstemp!
2113 "temp-file.XXXXXX")))
2114 (temp-filename (port-filename temp-file))
2116 (- (stat:size (stat file))
2118 (sendfile temp-file file content-length header-length)
2119 (delete-file file-name)
2120 (close-port temp-file)
2121 (repack-archive (canonicalize-path temp-filename))
2122 (call-with-output-file file-name
2124 (put-bytevector file header)
2125 (call-with-input-file temp-filename
2129 (stat:size (stat temp-file)) 0)))))))))))))
2130 (for-each repack-jmod
2131 (find-files (assoc-ref outputs "jdk") ".*.jmod$")))
2133 (add-after 'install 'remove-timestamp-from-api-summary
2134 (lambda* (#:key outputs #:allow-other-keys)
2135 (substitute* (string-append (assoc-ref outputs "doc")
2136 "/api/overview-summary.html")
2137 (("Generated by javadoc \\(11-internal\\).*$")
2138 "Generated by javadoc (11-internal) -->\n"))
2141 `(("alsa-lib" ,alsa-lib)
2143 ("fontconfig" ,fontconfig)
2144 ("freetype" ,freetype)
2147 ("libjpeg" ,libjpeg)
2150 ("libxext" ,libxext)
2151 ("libxrender" ,libxrender)
2153 ("libxtst" ,libxtst)))
2155 `(("autoconf" ,autoconf)
2156 ("openjdk10" ,openjdk10)
2157 ("openjdk10:jdk" ,openjdk10 "jdk")
2158 ("pkg-config" ,pkg-config)
2162 (home-page "https://openjdk.java.net/projects/jdk/11/")
2163 (synopsis "Java development kit")
2165 "This package provides the Java development kit OpenJDK.")
2166 (license license:gpl2+)))
2168 (define-public openjdk12
2175 (uri "http://hg.openjdk.java.net/jdk/jdk/archive/0276cba45aac.tar.bz2")
2176 (file-name (string-append name "-" version ".tar.bz2"))
2179 "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"))
2180 (modules '((guix build utils)))
2183 (for-each delete-file (find-files "." ".*.bin$"))
2184 (for-each delete-file (find-files "." ".*.exe$"))
2185 (for-each delete-file (find-files "." ".*.jar$"))
2188 `(("alsa-lib" ,alsa-lib)
2190 ("fontconfig" ,fontconfig)
2191 ("freetype" ,freetype)
2194 ("libjpeg" ,libjpeg)
2197 ("libxext" ,libxext)
2198 ("libxrandr" ,libxrandr)
2199 ("libxrender" ,libxrender)
2201 ("libxtst" ,libxtst)))
2203 `(("autoconf" ,autoconf)
2204 ("openjdk11" ,openjdk11)
2205 ("openjdk11:jdk" ,openjdk11 "jdk")
2206 ("pkg-config" ,pkg-config)
2210 (home-page "https://openjdk.java.net/projects/jdk/12")))
2212 (define-public icedtea icedtea-8)
2215 (define-public ant/java8
2216 (package (inherit ant-bootstrap)
2221 (uri (string-append "mirror://apache/ant/source/apache-ant-"
2222 version "-src.tar.gz"))
2225 "10p3dh77lkzzzcy32dk9azljixzadp46fggjfbvgkl8mmb8cxxv8"))
2226 (modules '((guix build utils)))
2229 (for-each delete-file
2230 (find-files "lib/optional" "\\.jar$"))
2233 (substitute-keyword-arguments (package-arguments ant-bootstrap)
2235 `(modify-phases ,phases
2236 (add-after 'unpack 'remove-scripts
2237 ;; Remove bat / cmd scripts for DOS as well as the antRun and runant
2240 (for-each delete-file
2241 (find-files "src/script"
2242 "(.*\\.(bat|cmd)|runant.*|antRun.*)"))
2245 (lambda* (#:key inputs outputs #:allow-other-keys)
2246 (setenv "JAVA_HOME" (assoc-ref inputs "jdk"))
2248 ;; Disable tests to avoid dependency on hamcrest-core, which needs
2249 ;; Ant to build. This is necessary in addition to disabling the
2250 ;; "check" phase, because the dependency on "test-jar" would always
2251 ;; result in the tests to be run.
2252 (substitute* "build.xml"
2253 (("depends=\"jars,test-jar\"") "depends=\"jars\""))
2254 (invoke "bash" "bootstrap.sh"
2255 (string-append "-Ddist.dir="
2256 (assoc-ref outputs "out")))))))))
2258 `(("jdk" ,icedtea-8 "jdk")
2260 ("unzip" ,unzip)))))
2262 ;; The 1.9.x series is the last that can be built with GCJ. The 1.10.x series
2265 (package (inherit ant/java8)
2269 (uri (string-append "mirror://apache/ant/source/apache-ant-"
2270 version "-src.tar.gz"))
2273 "1k28mka0m3isy9yr8gz84kz1f3f879rwaxrd44vdn9xbfwvwk86n"))))
2275 `(("jdk" ,icedtea-7 "jdk")
2277 ("unzip" ,unzip)))))
2279 (define-public ant-apache-bcel
2282 (name "ant-apache-bcel")
2284 (substitute-keyword-arguments (package-arguments ant/java8)
2286 `(modify-phases ,phases
2287 (add-after 'unpack 'link-bcel
2288 (lambda* (#:key inputs #:allow-other-keys)
2289 (for-each (lambda (file)
2291 (string-append "lib/optional/"
2293 (find-files (assoc-ref inputs "java-commons-bcel")
2296 (add-after 'build 'install
2297 (lambda* (#:key outputs #:allow-other-keys)
2298 (let* ((out (assoc-ref outputs "out"))
2299 (share (string-append out "/share/java"))
2300 (bin (string-append out "/bin"))
2301 (lib (string-append out "/lib")))
2303 (install-file (string-append lib "/ant-apache-bcel.jar") share)
2304 (delete-file-recursively bin)
2305 (delete-file-recursively lib)
2308 `(("java-commons-bcel" ,java-commons-bcel)
2309 ,@(package-inputs ant/java8)))))
2311 (define-public ant-junit
2316 (substitute-keyword-arguments (package-arguments ant/java8)
2318 `(modify-phases ,phases
2319 (add-after 'unpack 'link-junit
2320 (lambda* (#:key inputs #:allow-other-keys)
2321 (for-each (lambda (file)
2323 (string-append "lib/optional/"
2325 (find-files (assoc-ref inputs "java-junit")
2328 (add-after 'build 'install
2329 (lambda* (#:key outputs #:allow-other-keys)
2330 (let* ((out (assoc-ref outputs "out"))
2331 (share (string-append out "/share/java"))
2332 (bin (string-append out "/bin"))
2333 (lib (string-append out "/lib")))
2335 (install-file (string-append lib "/ant-junit.jar") share)
2336 (delete-file-recursively bin)
2337 (delete-file-recursively lib)
2340 `(("java-junit" ,java-junit)
2341 ,@(package-inputs ant/java8)))))
2343 (define-public java-openjfx-build
2345 (name "java-openjfx-build")
2346 ;; This is a java-8 version
2351 (url "http://hg.openjdk.java.net/openjfx/8u-dev/rt")
2352 (changeset (string-append
2353 (string-join (string-split version #\.) "u")
2355 (file-name (string-append name "-" version "-checkout"))
2356 (modules '((guix build utils)))
2359 ;; Delete included gradle jar
2360 (delete-file-recursively "gradle/wrapper")
2364 "0yg38mwpivswccv9n96k06x3iv82i4px1a9xg9l8dswzwmfj259f"))))
2365 (build-system ant-build-system)
2367 `(#:jar-name "java-openjfx.jar"
2368 #:source-dir "buildSrc/src/main/java"
2369 #:test-dir "buildSrc/src/test"
2371 (modify-phases %standard-phases
2372 (add-before 'configure 'generate-jsl-parser
2374 (invoke "antlr3" "-o"
2375 "buildSrc/src/main/java/com/sun/scenario/effect/compiler"
2376 "buildSrc/src/main/antlr/JSL.g"))))))
2378 `(("antlr3" ,antlr3)
2379 ("java-stringtemplate" ,java-stringtemplate)))
2381 `(("java-junit" ,java-junit)
2382 ("java-hamcrest-core" ,java-hamcrest-core)))
2383 (home-page "https://openjfx.io")
2384 (synopsis "Graphical application toolkit in Java")
2385 (description "OpenJFX is a client application platform for desktop,
2386 mobile and embedded systems built on Java. Its goal is to produce a
2387 modern, efficient, and fully featured toolkit for developing rich client
2388 applications. This package contains base classes for the OpenJFX
2389 distribution and helper classes for building other parts of the
2391 (license license:gpl2))) ;gpl2 only, with classpath exception
2393 (define-public java-openjfx-base
2394 (package (inherit java-openjfx-build)
2395 (name "java-openjfx-base")
2397 `(#:jar-name "java-openjfx-base.jar"
2398 #:source-dir "modules/base/src/main/java:modules/base/src/main/java8:modules/base/src/main/version-info"
2399 #:test-dir "modules/base/src/test"
2401 (modify-phases %standard-phases
2402 (add-before 'check 'remove-empty-file
2404 (with-directory-excursion "modules/base/src/test/java"
2405 ;; These files are completely commented, but junit expects them to
2406 ;; contain a class, so tests fail.
2408 "com/sun/javafx/property/adapter/PropertyDescriptorTest.java")
2410 "com/sun/javafx/property/adapter/ReadOnlyPropertyDescriptorTest.java")
2411 (delete-file "javafx/beans/property/PropertiesTest.java")
2413 "javafx/beans/property/adapter/ReadOnlyJavaBeanPropertyBuilder_General_Test.java")
2415 (delete-file "com/sun/javafx/runtime/VersionInfoTest.java"))
2418 `(("java-openjfx-build" ,java-openjfx-build)))
2419 (description "OpenJFX is a client application platform for desktop,
2420 mobile and embedded systems built on Java. Its goal is to produce a
2421 modern, efficient, and fully featured toolkit for developing rich client
2422 applications. This package contains base classes for the OpenJFX
2425 (define-public java-openjfx-graphics
2426 (package (inherit java-openjfx-build)
2427 (name "java-openjfx-graphics")
2429 `(#:jar-name "java-openjfx-graphics.jar"
2430 #:source-dir "modules/graphics/src/main/java"
2431 #:tests? #f; require X
2432 #:test-dir "modules/graphics/src/test"))
2434 `(("java-openjfx-base" ,java-openjfx-base)
2435 ("java-swt" ,java-swt)))
2436 (description "OpenJFX is a client application platform for desktop,
2437 mobile and embedded systems built on Java. Its goal is to produce a
2438 modern, efficient, and fully featured toolkit for developing rich client
2439 applications. This package contains graphics-related classes for the
2440 OpenJFX distribution.")))
2442 (define-public java-openjfx-media
2443 (package (inherit java-openjfx-build)
2444 (name "java-openjfx-media")
2446 `(("java-openjxf-graphics" ,java-openjfx-graphics)))
2448 `(#:jar-name "java-openjfx-media.jar"
2449 #:source-dir "modules/media/src/main/java"
2450 #:tests? #f)); no tests
2451 (description "OpenJFX is a client application platform for desktop,
2452 mobile and embedded systems built on Java. Its goal is to produce a
2453 modern, efficient, and fully featured toolkit for developing rich client
2454 applications. This package contains media-related classes for the
2455 OpenJFX distribution.")))
2457 (define-public javacc-4
2464 (url "https://github.com/javacc/javacc.git")
2465 (commit "release_41")))
2466 (file-name (string-append "javacc-" version "-checkout"))
2469 "07ysav7j8r1c6h8qxrgqk6lwdp74ly0ad1935lragxml0qqc3ka0"))
2470 (modules '((guix build utils)))
2471 ;; delete bundled jars
2472 (snippet '(begin (delete-file-recursively "lib") #t))))
2473 (build-system ant-build-system)
2475 ;; /tmp/guix-build-javacc-4.1.drv-0/source/test/javacodeLA/build.xml:60:
2480 (modify-phases %standard-phases
2481 ;; Delete tests to avoid build failure (we don't run them anyway).
2482 (add-after 'unpack 'delete-tests
2484 (for-each delete-file
2485 '("src/org/javacc/JavaCCTestCase.java"
2486 "src/org/javacc/parser/ExpansionTest.java"
2487 "src/org/javacc/parser/OptionsTest.java"
2488 "src/org/javacc/jjtree/JJTreeOptionsTest.java"))
2489 (for-each delete-file-recursively
2490 '("src/org/javacc/parser/test"
2491 "src/org/javacc/jjdoc/test"))
2493 (replace 'install (install-jars "bin/lib")))))
2494 (home-page "https://javacc.org/")
2495 (synopsis "Java parser generator")
2496 (description "Java Compiler Compiler (JavaCC) is the most popular parser
2497 generator for use with Java applications. A parser generator is a tool that
2498 reads a grammar specification and converts it to a Java program that can
2499 recognize matches to the grammar. In addition to the parser generator itself,
2500 JavaCC provides other standard capabilities related to parser generation such
2501 as tree building (via a tool called JJTree included with JavaCC), actions,
2503 (license license:bsd-3)))
2505 (define-public javacc
2513 (url "https://github.com/javacc/javacc.git")
2515 (file-name (git-file-name "javacc" version))
2517 (base32 "18kkak3gda93gr25jrgy6q00g0jr8i24ri2wk4kybz1v234fxx9i"))
2518 (modules '((guix build utils)))
2519 ;; Delete bundled jars.
2520 (snippet '(begin (for-each delete-file-recursively
2521 '("bootstrap" "lib"))
2524 `(#:make-flags ; bootstrap from javacc-4
2525 (list (string-append "-Dbootstrap-jar="
2526 (assoc-ref %build-inputs "javacc")
2527 "/share/java/javacc.jar"))
2528 #:test-target "test"
2530 (modify-phases %standard-phases
2531 (replace 'install (install-jars "target"))
2532 (add-after 'install 'install-bin
2533 (lambda* (#:key outputs inputs #:allow-other-keys)
2534 (let* ((out (assoc-ref outputs "out"))
2535 (dir (string-append out "/share/java"))
2536 (bin (string-append out "/bin"))
2537 (javacc (string-append bin "/javacc")))
2539 (with-output-to-file javacc
2542 (string-append "#!/bin/sh\n"
2543 (assoc-ref inputs "jdk") "/bin/java"
2544 " -cp " dir "/javacc.jar" " `basename $0`" " $*"))))
2545 (chmod javacc #o755)
2546 ;; symlink to different names to affect the first argument and
2547 ;; change the behavior of the jar file.
2548 (symlink javacc (string-append bin "/jjdoc"))
2549 (symlink javacc (string-append bin "/jjtree"))
2553 `(("javacc" ,javacc-4)))))
2555 ;; This is the last 3.x release of ECJ
2556 (define-public java-ecj-3
2562 (uri (string-append "http://archive.eclipse.org/eclipse/"
2563 "downloads/drops/R-" version
2564 "-201301310800/ecjsrc-" version ".jar"))
2567 "01mdj14jw11g1jfnki4fi8229p0c6zzckd38zqy2w4m3cjcvsx04"))))
2568 (build-system ant-build-system)
2570 `(#:tests? #f ; none included
2571 #:jdk ,icedtea-7 ; doesn't build with JDK8+
2572 #:make-flags (list "-f" "src/build.xml")
2573 #:build-target "build"
2575 (modify-phases %standard-phases
2576 (add-after 'unpack 'fix-manifest
2578 ;; Record the main class to make ecj executable.
2579 (with-atomic-file-replacement "src/META-INF/MANIFEST.MF"
2581 (display "Manifest-Version: 1.0
2582 Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
2585 (replace 'install (install-jars ".")))))
2586 (home-page "https://eclipse.org")
2587 (synopsis "Eclipse Java development tools core batch compiler")
2588 (description "This package provides the Eclipse Java core batch compiler.")
2589 (license license:epl1.0)))
2591 ;; This is needed for java-cisd-args4j
2592 (define-public java-ecj-3.5
2593 (package (inherit java-ecj-3)
2596 (method url-fetch/zipbomb)
2597 (uri (string-append "http://archive.eclipse.org/eclipse/"
2598 "downloads/drops/R-" version
2599 "-200909170800/ecjsrc-" version ".zip"))
2602 "1vnl2mavisc567bip736xzsvvbjif5279wc4a7pbdik5wlir8qr7"))))
2603 (build-system ant-build-system)
2605 `(#:tests? #f ; none included
2606 #:jdk ,icedtea-7 ; doesn't build with JDK8+
2607 #:build-target "build"
2609 (modify-phases %standard-phases
2610 (add-after 'unpack 'fix-manifest
2612 ;; Record the main class to make ecj executable.
2613 (with-atomic-file-replacement "META-INF/MANIFEST.MF"
2616 (display "Main-Class: org.eclipse.jdt.internal.compiler.batch.Main\n"
2619 (replace 'install (install-jars ".")))))
2621 `(("unzip" ,unzip)))))
2623 (define-public java-ecj
2624 (package (inherit java-ecj-3)
2630 "http://archive.eclipse.org/eclipse/downloads/drops4/R-"
2632 "-201703010400/ecjsrc-"
2637 "11cfgsdgznja1pvlxkjbqykxd7pcd5655vkm7s44xmahmap15gpl"))))
2639 `(#:tests? #f ; none included
2640 #:build-target "build"
2642 (modify-phases %standard-phases
2643 (add-after 'unpack 'fix-build.xml
2645 (substitute* "src/build.xml"
2649 (add-after 'unpack 'fix-prop
2651 (substitute* "src/build.xml"
2652 (("^.*properties.*$")
2653 "<include name=\"**/*.properties\"/>
2654 <include name=\"**/*.props\"/>"))
2656 (add-before 'build 'chdir
2660 (replace 'install (install-jars ".")))))))
2662 (define-public java-cisd-base
2663 (let ((revision 38938)
2664 (base-version "14.12.0"))
2666 (name "java-cisd-base")
2667 (version (string-append base-version "-" (number->string revision)))
2671 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
2672 "base/tags/release/"
2673 (version-major+minor base-version)
2674 ".x/" base-version "/base/"))
2675 (revision revision)))
2676 (file-name (string-append "java-cisd-base-" version "-checkout"))
2679 "1i5adyf7nzclb0wydgwa1az04qliid8035vpahaandmkmigbnxiy"))
2680 (modules '((guix build utils)))
2683 ;; Delete included gradle jar
2684 (delete-file-recursively "gradle/wrapper")
2685 ;; Delete pre-built native libraries
2686 (delete-file-recursively "libs")
2688 (build-system ant-build-system)
2690 `(#:make-flags '("-file" "build/build.xml")
2691 #:test-target "jar-test"
2694 (modify-phases %standard-phases
2695 (add-after 'unpack 'unpack-build-resources
2696 (lambda* (#:key inputs #:allow-other-keys)
2697 (copy-recursively (assoc-ref inputs "build-resources")
2698 "../build_resources")
2700 (add-after 'unpack-build-resources 'fix-dependencies
2701 (lambda* (#:key inputs #:allow-other-keys)
2702 (substitute* "build/build.xml"
2703 (("\\$\\{lib\\}/testng/testng-jdk15.jar")
2704 (string-append (assoc-ref inputs "java-testng")
2705 "/share/java/java-testng.jar"))
2706 (("\\$\\{lib\\}/commons-lang/commons-lang.jar")
2707 (string-append (assoc-ref inputs "java-commons-lang")
2708 "/share/java/commons-lang-"
2709 ,(package-version java-commons-lang) ".jar"))
2710 (("\\$\\{lib\\}/commons-io/commons-io.jar")
2711 (string-append (assoc-ref inputs "java-commons-io")
2712 "/share/java/commons-io-"
2713 ,(package-version java-commons-io)
2715 ;; Remove dependency on svn
2716 (("<build-info.*") "")
2717 (("\\$\\{revision.number\\}")
2718 ,(number->string revision))
2719 (("\\$\\{version.number\\}") ,base-version))
2720 ;; Remove dependency on classycle
2721 (substitute* "../build_resources/ant/build-common.xml"
2722 (("<taskdef name=\"dependency-checker.*") "")
2723 (("classname=\"classycle.*") "")
2724 (("classpath=\"\\$\\{lib\\}/classycle.*") ""))
2726 ;; A few tests fail because of the lack of a proper /etc/groups and
2727 ;; /etc/passwd file in the build container.
2728 (add-after 'unpack 'disable-broken-tests
2730 (substitute* "sourceTest/java/ch/systemsx/cisd/base/AllTests.java"
2731 (("Unix.isOperational\\(\\)") "false"))
2733 ;; These decorators are almost useless and pull in an unpackaged
2735 (add-after 'unpack 'remove-useless-decorators
2737 (substitute* "source/java/ch/systemsx/cisd/base/unix/Unix.java"
2739 (("import ch.rinn.restrictions.Private;") ""))
2740 (substitute* "sourceTest/java/ch/systemsx/cisd/base/unix/UnixTests.java"
2742 (("import ch.rinn.restrictions.Friend;") ""))
2744 (add-before 'configure 'build-native-code
2745 (lambda* (#:key inputs #:allow-other-keys)
2746 (let ((jdk (assoc-ref inputs "jdk"))
2747 (dir ,(match (%current-system)
2750 ((or "armhf-linux" "aarch64-linux")
2752 ((or "x86_64-linux")
2754 (_ "unknown-Linux"))))
2755 (with-directory-excursion "source/c"
2756 (invoke "gcc" "-shared" "-O3" "-fPIC" "unix.c"
2757 (string-append "-I" jdk "/include")
2758 (string-append "-I" jdk "/include/linux")
2760 (invoke "gcc" "-shared" "-O3" "-fPIC"
2761 "-DMACHINE_BYTE_ORDER=1"
2769 (string-append "-I" jdk "/include")
2770 (string-append "-I" jdk "/include/linux")
2771 "-o" "libnativedata.so"))
2772 (install-file "source/c/libunix.so"
2773 (string-append "libs/native/unix/" dir))
2774 (install-file "source/c/libnativedata.so"
2775 (string-append "libs/native/nativedata/" dir))
2777 ;; In the "check" phase we only build the test executable.
2778 (add-after 'check 'run-tests
2780 (invoke "java" "-jar" "targets/dist/sis-base-test.jar")
2781 (delete-file "targets/dist/sis-base-test.jar")
2783 (replace 'install (install-jars "targets/dist")))))
2785 `(("jdk" ,icedtea-8)
2786 ("java-commons-lang" ,java-commons-lang)
2787 ("java-commons-io" ,java-commons-io)
2788 ("java-testng" ,java-testng)
2793 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
2794 "base/tags/release/"
2795 (version-major+minor base-version)
2797 "/build_resources/"))
2798 (revision revision)))
2801 "0b6335gkm4x895rac6kfg9d3rpq0sy19ph4zpg2gyw6asfsisjhk"))))))
2802 (home-page "http://svnsis.ethz.ch")
2803 (synopsis "Utility classes for libraries from ETH Zurich")
2804 (description "This library supplies some utility classes needed for
2805 libraries from the SIS division at ETH Zurich like jHDF5.")
2806 ;; The C sources are under a non-copyleft license, which looks like a
2807 ;; variant of the BSD licenses. The whole package is under the ASL2.0.
2808 (license (list license:asl2.0
2809 (license:non-copyleft "file://source/c/COPYING"))))))
2811 (define-public java-cisd-args4j
2812 (let ((revision 39162)
2813 (base-version "9.11.2"))
2815 (name "java-cisd-args4j")
2816 (version (string-append base-version "-" (number->string revision)))
2820 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
2821 "args4j/tags/release/"
2822 (version-major+minor base-version)
2823 ".x/" base-version "/args4j/"))
2824 (revision revision)))
2825 (file-name (string-append "java-cisd-args4j-" version "-checkout"))
2828 "0hhqznjaivq7ips7mkwas78z42s6djsm20rrs7g1zd59rcsakxn2"))))
2829 (build-system ant-build-system)
2831 `(#:make-flags '("-file" "build/build.xml")
2832 #:tests? #f ; there are no tests
2833 ;; There are weird build failures with JDK8, such as: "The type
2834 ;; java.io.ObjectInputStream cannot be resolved. It is indirectly
2835 ;; referenced from required .class files"
2837 #:modules ((guix build ant-build-system)
2839 (guix build java-utils)
2844 (modify-phases %standard-phases
2845 (add-after 'unpack 'unpack-build-resources
2846 (lambda* (#:key inputs #:allow-other-keys)
2847 (mkdir-p "../build_resources")
2848 (invoke "tar" "xf" (assoc-ref inputs "build-resources")
2849 "-C" "../build_resources"
2850 "--strip-components=1")
2851 (mkdir-p "../build_resources/lib")
2853 (add-after 'unpack-build-resources 'fix-dependencies
2854 (lambda* (#:key inputs #:allow-other-keys)
2855 ;; FIXME: There should be a more convenient abstraction for
2856 ;; editing XML files.
2857 (with-directory-excursion "../build_resources/ant/"
2858 (chmod "build-common.xml" #o664)
2859 (call-with-output-file "build-common.xml.new"
2863 (with-input-from-file "build-common.xml"
2864 (lambda _ (xml->sxml #:trim-whitespace? #t)))
2865 `(;; Remove dependency on classycle and custom ant tasks
2866 (taskdef . ,(lambda (tag . kids)
2867 (let ((name ((sxpath '(name *text*)) kids)))
2868 (if (or (member "build-info" name)
2869 (member "dependency-checker" name)
2870 (member "build-java-subprojects" name)
2871 (member "project-classpath" name))
2874 (typedef . ,(lambda (tag . kids)
2875 (let ((name ((sxpath '(name *text*)) kids)))
2876 (if (member "recursive-jar" name)
2879 (build-java-subprojects . ,(lambda _ '()))
2880 ;; Ignore everything else
2881 (*default* . ,(lambda (tag . kids) `(,tag ,@kids)))
2882 (*text* . ,(lambda (_ txt) txt))))
2884 (rename-file "build-common.xml.new" "build-common.xml"))
2885 (substitute* "build/build.xml"
2886 (("\\$\\{lib\\}/cisd-base/cisd-base.jar")
2887 (string-append (assoc-ref inputs "java-cisd-base")
2888 "/share/java/sis-base.jar"))
2889 ;; Remove dependency on svn
2890 (("<build-info.*") "")
2891 (("\\$\\{revision.number\\}")
2892 ,(number->string revision))
2893 (("\\$\\{version.number\\}") ,base-version)
2894 ;; Don't use custom ant tasks.
2895 (("recursive-jar") "jar")
2896 (("<project-classpath.*") ""))
2898 (replace 'install (install-jars "targets/dist")))))
2900 `(("java-cisd-base" ,java-cisd-base)))
2902 `(("ecj" ,java-ecj-3.5)
2907 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
2908 "args4j/tags/release/"
2909 (version-major+minor base-version)
2911 "/build_resources/"))
2912 (revision revision)))
2915 "056cam4k8pll7ass31sy6gwn8g8719njc41yf4l02b0342nilkyf"))
2916 (modules '((guix build utils)))
2917 ;; Delete bundled pre-built jars.
2919 '(begin (delete-file-recursively "lib/") #t))))))
2920 (home-page "http://svnsis.ethz.ch")
2921 (synopsis "Command line parser library")
2922 (description "This package provides a parser for command line arguments.")
2923 (license license:asl2.0))))
2925 (define-public java-cisd-jhdf5
2926 (let ((revision 39162)
2927 (base-version "14.12.6"))
2929 (name "java-cisd-jhdf5")
2930 (version (string-append base-version "-" (number->string revision)))
2934 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
2935 "jhdf5/tags/release/"
2936 (version-major+minor base-version)
2937 ".x/" base-version "/jhdf5/"))
2938 (revision revision)))
2939 (file-name (string-append "java-cisd-jhdf5-" version "-checkout"))
2942 "13i17s2hn0q9drdqvp8csy7770p3hdbh9rp30ihln2ldkfawdmz0"))
2943 (modules '((guix build utils)))
2946 ;; Delete included gradle jar
2947 (delete-file-recursively "gradle/wrapper")
2948 ;; Delete pre-built native libraries
2949 (delete-file-recursively "libs")
2951 (build-system ant-build-system)
2953 `(#:make-flags '("-file" "build/build.xml")
2954 #:build-target "jar-all"
2955 #:test-target "jar-test"
2958 (modify-phases %standard-phases
2959 ;; FIXME: this build phase fails.
2960 (delete 'generate-jar-indices)
2961 ;; Don't erase results from the build phase when building tests.
2962 (add-after 'unpack 'separate-test-target-from-clean
2964 (substitute* "build/build.xml"
2965 (("\"jar-test\" depends=\"clean, ")
2966 "\"jar-test\" depends=\""))
2968 (add-after 'unpack 'unpack-build-resources
2969 (lambda* (#:key inputs #:allow-other-keys)
2970 (copy-recursively (assoc-ref inputs "build-resources")
2971 "../build_resources")
2972 (delete-file-recursively "../build_resources/lib/")
2973 (mkdir-p "../build_resources/lib")
2974 ;; Remove dependency on classycle
2975 (substitute* "../build_resources/ant/build-common.xml"
2976 (("<taskdef name=\"dependency-checker.*") "")
2977 (("classname=\"classycle.*") "")
2978 (("classpath=\"\\$\\{lib\\}/classycle.*") ""))
2979 ;; Remove dependency on svn
2980 (substitute* "build/build.xml"
2981 (("<build-info.*") "")
2982 (("\\$\\{revision.number\\}")
2983 ,(number->string revision))
2984 (("\\$\\{version.number\\}") ,base-version))
2986 (add-after 'unpack-build-resources 'fix-dependencies
2987 (lambda* (#:key inputs #:allow-other-keys)
2988 (substitute* "../build_resources/ant/build-common.xml"
2989 (("../libraries/testng/testng-jdk15.jar")
2990 (string-append (assoc-ref inputs "java-testng")
2991 "/share/java/java-testng.jar")))
2992 (substitute* "build/build.xml"
2993 (("\\$\\{lib\\}/sis-base/sis-base.jar")
2994 (string-append (assoc-ref inputs "java-cisd-base")
2995 "/share/java/sis-base.jar"))
2996 (("\\$\\{lib\\}/cisd-args4j/cisd-args4j.jar")
2997 (string-append (assoc-ref inputs "java-cisd-args4j")
2998 "/share/java/cisd-args4j.jar"))
2999 (("\\$\\{lib\\}/commons-lang/commons-lang.jar")
3000 (string-append (assoc-ref inputs "java-commons-lang")
3001 "/share/java/commons-lang-"
3002 ,(package-version java-commons-lang) ".jar"))
3003 (("\\$\\{lib\\}/commons-io/commons-io.jar")
3004 (string-append (assoc-ref inputs "java-commons-io")
3005 "/share/java/commons-io-"
3006 ,(package-version java-commons-io)
3008 (("\\$\\{lib\\}/testng/testng-jdk15.jar")
3009 (string-append (assoc-ref inputs "java-testng")
3010 "/share/java/java-testng.jar"))
3011 (("\\$\\{lib\\}/junit4/junit.jar")
3012 (string-append (assoc-ref inputs "java-junit")
3013 "/share/java/junit.jar"))
3014 (("\\$\\{lib\\}/jmock/hamcrest/hamcrest-core.jar")
3015 (string-append (assoc-ref inputs "java-hamcrest-core")
3016 "/share/java/hamcrest-core.jar")))
3017 ;; Remove dependency on ch.rinn.restrictions
3018 (with-directory-excursion "source/java/ch/systemsx/cisd/hdf5/"
3019 (substitute* '("BitSetConversionUtils.java"
3021 (("import ch.rinn.restrictions.Private;") "")
3023 (with-directory-excursion "sourceTest/java/ch/systemsx/cisd/hdf5/"
3024 (substitute* '("BitSetConversionTest.java"
3025 "h5ar/HDF5ArchiverTest.java")
3026 (("import ch.rinn.restrictions.Friend;") "")
3028 ;; Remove leftovers from removing @Friend
3029 (substitute* "h5ar/HDF5ArchiverTest.java"
3030 (("\\{ HDF5Archiver.class, IdCache.class, LinkRecord.class \\}\\)")
3033 (add-before 'configure 'build-native-library
3034 (lambda* (#:key inputs #:allow-other-keys)
3035 (let ((jdk (assoc-ref inputs "jdk"))
3036 (hdf5 (assoc-ref inputs "hdf5"))
3037 (dir ,(match (%current-system)
3040 ((or "armhf-linux" "aarch64-linux")
3042 ((or "x86_64-linux")
3044 (_ "unknown-Linux"))))
3045 (with-directory-excursion "source/c"
3046 (apply invoke `("gcc" "-shared" "-O3"
3048 "-Wl,--exclude-libs,ALL"
3049 ,@(find-files "jhdf5" "\\.c$")
3050 ,@(find-files "hdf-java" "\\.c$")
3051 ,(string-append "-I" hdf5 "/include")
3052 ,(string-append "-I" jdk "/include")
3053 ,(string-append "-I" jdk "/include/linux")
3054 ,(string-append hdf5 "/lib/libhdf5.a")
3055 "-o" "libjhdf5.so" "-lz")))
3056 (install-file "source/c/libjhdf5.so"
3057 (string-append "libs/native/jhdf5/" dir))
3059 ;; In the "check" phase we only build the test executable.
3060 (add-after 'check 'run-tests
3062 (invoke "java" "-jar" "targets/dist/sis-jhdf5-test.jar")
3063 (delete-file "targets/dist/sis-jhdf5-test.jar")
3066 (install-jars "targets/dist")))))
3068 `(("java-cisd-base" ,java-cisd-base)
3069 ("java-cisd-args4j" ,java-cisd-args4j)
3070 ("java-commons-lang" ,java-commons-lang)
3071 ("java-commons-io" ,java-commons-io)
3075 `(("jdk" ,icedtea-8)
3076 ("java-testng" ,java-testng)
3077 ("java-junit" ,java-junit)
3078 ("java-jmock" ,java-jmock)
3079 ("java-hamcrest-core" ,java-hamcrest-core)
3084 (url (string-append "http://svnsis.ethz.ch/repos/cisd/"
3085 "jhdf5/tags/release/"
3086 (version-major+minor base-version)
3088 "/build_resources/"))
3089 (revision revision)))
3092 "0b6335gkm4x895rac6kfg9d3rpq0sy19ph4zpg2gyw6asfsisjhk"))))))
3093 (home-page "https://wiki-bsse.ethz.ch/display/JHDF5/")
3094 (synopsis "Java binding for HDF5")
3095 (description "JHDF5 is a high-level API in Java for reading and writing
3096 HDF5 files, building on the libraries provided by the HDF Group.")
3097 ;; The C sources are under a non-copyleft license, which looks like a
3098 ;; variant of the BSD licenses. The whole package is under the ASL2.0.
3099 (license (list license:asl2.0
3100 (license:non-copyleft "file://source/c/COPYING"))))))
3102 (define-public java-classpathx-servletapi
3104 (name "java-classpathx-servletapi")
3108 (uri (string-append "mirror://gnu/classpathx/servletapi/"
3109 "servletapi-" version ".tar.gz"))
3112 "07d8h051siga2f33fra72hk12sbq1bxa4jifjg0qj0vfazjjff0x"))))
3113 (build-system ant-build-system)
3115 `(#:tests? #f ; there is no test target
3116 #:build-target "compile"
3118 (list "-Dbuild.compiler=javac1.8"
3119 (string-append "-Ddist=" (assoc-ref %outputs "out")))
3121 (modify-phases %standard-phases
3123 (lambda* (#:key make-flags #:allow-other-keys)
3124 (apply invoke `("ant" "dist" ,@make-flags)))))))
3125 (home-page "https://www.gnu.org/software/classpathx/")
3126 (synopsis "Java servlet API implementation")
3127 (description "This is the GNU servlet API distribution, part of the
3128 ClasspathX project. It provides implementations of version 3.0 of the servlet
3129 API and version 2.1 of the Java ServerPages API.")
3130 (license license:gpl3+)))
3132 (define-public java-javaee-servletapi
3134 (name "java-javaee-servletapi")
3139 (url "https://github.com/javaee/servlet-spec.git")
3141 (file-name (git-file-name name version))
3144 "0s03lj8w5an70lkqbjycgfrfk0kc07vbfav91jzk87gh3awf9ksl"))))
3145 (build-system ant-build-system)
3147 `(#:jar-name "javax-servletapi.jar"
3150 #:source-dir "src/main/java"
3152 (modify-phases %standard-phases
3153 (add-before 'build 'copy-resources
3155 (mkdir-p "build/classes/javax/servlet/http")
3156 (let ((from-prefix "src/main/java/javax/servlet/")
3157 (to-prefix "build/classes/javax/servlet/"))
3158 (for-each (lambda (f)
3159 (copy-file (string-append from-prefix f)
3160 (string-append to-prefix f)))
3161 (list "LocalStrings_ja.properties"
3162 "LocalStrings.properties"
3163 "LocalStrings_fr.properties"
3164 "http/LocalStrings_es.properties"
3165 "http/LocalStrings_ja.properties"
3166 "http/LocalStrings.properties"
3167 "http/LocalStrings_fr.properties")))
3170 `(("unzip" ,unzip)))
3171 (home-page "https://javaee.github.io/servlet-spec/")
3172 (synopsis "Java servlet API")
3173 (description "Java Servlet is the foundation web specification in the
3174 Java Enterprise Platform. Developers can build web applications using the
3175 Servlet API to interact with the request/response workflow. This project
3176 provides information on the continued development of the Java Servlet
3178 ;; Main code is dual-licensed by Oracle under either GLP2 or CDDL 1.1.
3179 ;; Some files are licensed under ASL 2.0.
3180 (license (list license:asl2.0 license:gpl2 license:cddl1.1))))
3182 (define-public java-swt
3187 ;; The types of many variables and procedures differ in the sources
3188 ;; dependent on whether the target architecture is a 32-bit system or a
3189 ;; 64-bit system. Instead of patching the sources on demand in a build
3190 ;; phase we download either the 32-bit archive (which mostly uses "int"
3191 ;; types) or the 64-bit archive (which mostly uses "long" types).
3192 (let ((hash32 "09q0cbh90d90q3a7dx9430kc4m6bijrkr4lajrmzzvi0jjdpq4v9")
3193 (hash64 "17k5hs75a87ssmc5xhwdfdm2gn4zba0r837l2455za01krnkaa2q")
3196 (let-values (((hash file)
3197 (match (or (%current-target-system) (%current-system))
3198 ("x86_64-linux" (values hash64 file64))
3199 (_ (values hash32 file32)))))
3203 "http://download.eclipse.org/eclipse/downloads/drops4/"
3204 "R-" version "-201710090410/swt-" version
3205 "-gtk-linux-" file ".zip"))
3206 (sha256 (base32 hash))))))
3207 (build-system ant-build-system)
3209 `(#:jar-name "swt.jar"
3211 #:tests? #f ; no "check" target
3213 (modify-phases %standard-phases
3215 (lambda* (#:key source #:allow-other-keys)
3217 (invoke "unzip" source "-d" "swt")
3220 (invoke "unzip" "src.zip" "-d" "src")))
3221 ;; The classpath contains invalid icecat jars. Since we don't need
3222 ;; anything other than the JDK on the classpath, we can simply unset
3224 (add-after 'configure 'unset-classpath
3225 (lambda _ (unsetenv "CLASSPATH") #t))
3226 (add-before 'build 'build-native
3227 (lambda* (#:key inputs outputs #:allow-other-keys)
3228 (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
3229 ;; Build shared libraries. Users of SWT have to set the system
3230 ;; property swt.library.path to the "lib" directory of this
3233 (setenv "OUTPUT_DIR" lib)
3234 (with-directory-excursion "src"
3235 (invoke "bash" "build.sh")))))
3236 (add-after 'install 'install-native
3237 (lambda* (#:key outputs #:allow-other-keys)
3238 (let ((lib (string-append (assoc-ref outputs "out") "/lib")))
3239 (for-each (lambda (file)
3240 (install-file file lib))
3241 (find-files "." "\\.so$"))
3245 ("libxtst" ,libxtst)
3250 `(("pkg-config" ,pkg-config)
3252 (home-page "https://www.eclipse.org/swt/")
3253 (synopsis "Widget toolkit for Java")
3255 "SWT is a widget toolkit for Java designed to provide efficient, portable
3256 access to the user-interface facilities of the operating systems on which it
3258 ;; SWT code is licensed under EPL1.0
3259 ;; Gnome and Gtk+ bindings contain code licensed under LGPLv2.1
3260 ;; Cairo bindings contain code under MPL1.1
3261 ;; XULRunner 1.9 bindings contain code under MPL2.0
3266 license:lgpl2.1+))))
3268 (define-public java-xz
3274 (uri (string-append "http://tukaani.org/xz/xz-java-" version ".zip"))
3277 "1z3p1ri1gvl07inxn0agx44ck8n7wrzfmvkz8nbq3njn8r9wba8x"))))
3278 (build-system ant-build-system)
3280 `(#:tests? #f ; There are no tests to run.
3281 #:jar-name ,(string-append "xz-" version ".jar")
3283 (modify-phases %standard-phases
3284 ;; The unpack phase enters the "maven" directory by accident.
3285 (add-after 'unpack 'chdir
3286 (lambda _ (chdir "..") #t)))))
3288 `(("unzip" ,unzip)))
3289 (home-page "https://tukaani.org/xz/java.html")
3290 (synopsis "Implementation of XZ data compression in pure Java")
3291 (description "This library aims to be a complete implementation of XZ data
3292 compression in pure Java. Single-threaded streamed compression and
3293 decompression and random access decompression have been fully implemented.")
3294 (license license:public-domain)))
3296 ;; java-hamcrest-core uses qdox version 1.12. We package this version instead
3297 ;; of the latest release.
3298 (define-public java-qdox-1.12
3304 (uri (string-append "https://repo1.maven.org/maven2/"
3305 "com/thoughtworks/qdox/qdox/" version
3306 "/qdox-" version "-sources.jar"))
3309 "0hlfbqq2avf5s26wxkksqmkdyk6zp9ggqn37c468m96mjv0n9xfl"))))
3310 (build-system ant-build-system)
3312 `(;; Tests require junit
3314 #:jar-name "qdox.jar"
3316 (modify-phases %standard-phases
3318 (lambda* (#:key source #:allow-other-keys)
3320 (with-directory-excursion "src"
3321 (invoke "jar" "-xf" source))))
3322 ;; At this point we don't have junit, so we must remove the API
3324 (add-after 'unpack 'delete-tests
3326 (delete-file-recursively "src/com/thoughtworks/qdox/junit")
3328 (home-page "https://github.com/codehaus/qdox")
3329 (synopsis "Parse definitions from Java source files")
3331 "QDox is a high speed, small footprint parser for extracting
3332 class/interface/method definitions from source files complete with JavaDoc
3333 @code{@@tags}. It is designed to be used by active code generators or
3334 documentation tools.")
3335 (license license:asl2.0)))
3337 (define-public java-qdox
3340 ; Newer version exists, but this version is required by java-plexus-component-metadata
3344 ;; 2.0-M4, -M5 at https://github.com/paul-hammant/qdox
3345 ;; Older releases at https://github.com/codehaus/qdox/
3346 ;; Note: The release at maven is pre-generated. The release at
3347 ;; github requires jflex.
3348 (uri (string-append "https://repo1.maven.org/maven2/"
3349 "com/thoughtworks/qdox/qdox/" version
3350 "/qdox-" version "-sources.jar"))
3353 "10xxrcaicq6axszcr2jpygisa4ch4sinyx5q7kqqxv4lknrmxp5x"))))
3354 (build-system ant-build-system)
3356 `(#:jar-name "qdox.jar"
3357 #:tests? #f)); no tests
3358 (home-page "https://github.com/codehaus/qdox")
3359 (synopsis "Parse definitions from Java source files")
3360 (description "QDox is a high speed, small footprint parser for extracting
3361 class/interface/method definitions from source files complete with JavaDoc
3362 @code{@@tags}. It is designed to be used by active code generators or
3363 documentation tools.")
3364 (license license:asl2.0)))
3366 (define-public java-jarjar
3368 (name "java-jarjar")
3373 "https://storage.googleapis.com/google-code-archive-downloads/v2/"
3374 "code.google.com/jarjar/jarjar-src-" version ".zip"))
3377 "1v8irhni9cndcw1l1wxqgry013s2kpj0qqn57lj2ji28xjq8ndjl"))
3378 (modules '((guix build utils)))
3381 ;; Delete bundled thirds-party jar archives.
3382 ;; TODO: unbundle maven-plugin-api.
3383 (delete-file "lib/asm-4.0.jar")
3384 (delete-file "lib/asm-commons-4.0.jar")
3385 (delete-file "lib/junit-4.8.1.jar")
3387 (build-system ant-build-system)
3389 `(;; Tests require junit, which ultimately depends on this package.
3391 #:build-target "jar"
3393 (modify-phases %standard-phases
3394 (add-before 'build 'do-not-use-bundled-asm
3395 (lambda* (#:key inputs #:allow-other-keys)
3396 (substitute* "build.xml"
3397 (("<path id=\"path.build\">")
3398 (string-append "<path id=\"path.build\"><fileset dir=\""
3399 (assoc-ref inputs "java-asm-bootstrap")
3400 "/share/java\" includes=\"**/*.jar\"/>"))
3401 (("<zipfileset src=\"lib/asm-4.0.jar\"/>") "")
3402 (("lib/asm-commons-4.0.jar")
3403 (string-append (assoc-ref inputs "java-asm-bootstrap")
3404 "/share/java/asm-6.0.jar"))
3405 (("<include name=\"org/objectweb/asm/commons/Remap\\*\\.class\"/>")
3406 (string-append "<include name=\"org/objectweb/asm/"
3407 "commons/Remap*.class\"/>"
3408 "<include name=\"org/objectweb/asm/*.class\"/>"
3409 "<include name=\"org/objectweb/asm/"
3410 "signature/*.class\"/>"
3411 "<include name=\"org/objectweb/asm/"
3412 "commons/SignatureRemapper.class\"/>")))
3415 (lambda* (#:key outputs #:allow-other-keys)
3416 (let ((target (string-append (assoc-ref outputs "out")
3418 (install-file (string-append "dist/jarjar-" ,version ".jar")
3422 `(("java-asm-bootstrap" ,java-asm-bootstrap)))
3424 `(("unzip" ,unzip)))
3425 (home-page "https://code.google.com/archive/p/jarjar/")
3426 (synopsis "Repackage Java libraries")
3428 "Jar Jar Links is a utility that makes it easy to repackage Java
3429 libraries and embed them into your own distribution. Jar Jar Links includes
3430 an Ant task that extends the built-in @code{jar} task.")
3431 (license license:asl2.0)))
3433 (define-public java-hamcrest-core
3435 (name "java-hamcrest-core")
3440 (url "https://github.com/hamcrest/JavaHamcrest/")
3441 (commit (string-append "hamcrest-java-" version))))
3442 (file-name (git-file-name name version))
3445 "16fxxkrd31ahqvcaby30jgh3z1i0zxh51m24hxgz0z2agxj6bc63"))
3446 (modules '((guix build utils)))
3449 ;; Delete bundled thirds-party jar archives.
3450 (delete-file-recursively "lib")
3452 (build-system ant-build-system)
3454 `(#:tests? #f ; Tests require junit
3455 #:modules ((guix build ant-build-system)
3458 #:make-flags (list (string-append "-Dversion=" ,version))
3459 #:test-target "unit-test"
3460 #:build-target "core"
3462 (modify-phases %standard-phases
3463 ;; Disable unit tests, because they require junit, which requires
3464 ;; hamcrest-core. We also give a fixed value to the "Built-Date"
3465 ;; attribute from the manifest for reproducibility.
3466 (add-before 'configure 'patch-build.xml
3468 (substitute* "build.xml"
3469 (("unit-test, ") "")
3470 (("\\$\\{build.timestamp\\}") "guix"))
3472 ;; Java's "getMethods()" returns methods in an unpredictable order.
3473 ;; To make the output of the generated code deterministic we must
3474 ;; sort the array of methods.
3475 (add-after 'unpack 'make-method-order-deterministic
3477 (substitute* "hamcrest-generator/src/main/java/org/hamcrest/generator/ReflectiveFactoryReader.java"
3478 (("import java\\.util\\.Iterator;" line)
3479 (string-append line "\n"
3480 "import java.util.Arrays; import java.util.Comparator;"))
3481 (("allMethods = cls\\.getMethods\\(\\);" line)
3482 (string-append "_" line
3484 private Method[] getSortedMethods() {
3485 Arrays.sort(_allMethods, new Comparator<Method>() {
3487 public int compare(Method a, Method b) {
3488 return a.toString().compareTo(b.toString());
3494 private Method[] allMethods = getSortedMethods();")))
3496 (add-before 'build 'do-not-use-bundled-qdox
3497 (lambda* (#:key inputs #:allow-other-keys)
3498 (substitute* "build.xml"
3499 (("lib/generator/qdox-1.12.jar")
3500 (string-append (assoc-ref inputs "java-qdox-1.12")
3501 "/share/java/qdox.jar")))
3503 ;; build.xml searches for .jar files in this directoy, which
3504 ;; we remove from the source archive.
3505 (add-before 'build 'create-dummy-directories
3507 (mkdir-p "lib/integration")
3510 (lambda* (#:key outputs #:allow-other-keys)
3511 (let* ((target (string-append (assoc-ref outputs "out")
3513 (version-suffix ,(string-append "-" version ".jar"))
3514 (install-without-version-suffix
3517 (string-append target
3518 (basename jar version-suffix)
3522 install-without-version-suffix
3525 (and (string-suffix? ".jar" name)
3526 (not (string-suffix? "-sources.jar" name)))))))
3529 `(("java-qdox-1.12" ,java-qdox-1.12)
3530 ("java-jarjar" ,java-jarjar)))
3531 (home-page "http://hamcrest.org/")
3532 (synopsis "Library of matchers for building test expressions")
3534 "This package provides a library of matcher objects (also known as
3535 constraints or predicates) allowing @code{match} rules to be defined
3536 declaratively, to be used in other frameworks. Typical scenarios include
3537 testing frameworks, mocking libraries and UI validation rules.")
3538 (license license:bsd-2)))
3540 (define-public java-junit
3547 (url "https://github.com/junit-team/junit/")
3548 (commit (string-append "r" version))))
3549 (file-name (git-file-name name version))
3552 "1j8avi91px1z8rjc89cfikwrvfifdmmsarwiyrcnr59ynvpz0v8h"))
3553 (modules '((guix build utils)))
3556 ;; Delete bundled jar archives.
3557 (delete-file-recursively "lib")
3559 (build-system ant-build-system)
3561 `(#:tests? #f ; no tests
3562 #:jar-name "junit.jar"))
3564 `(("java-hamcrest-core" ,java-hamcrest-core)))
3565 (home-page "https://junit.org/junit4/")
3566 (synopsis "Test framework for Java")
3568 "JUnit is a simple framework to write repeatable tests for Java projects.
3569 JUnit provides assertions for testing expected results, test fixtures for
3570 sharing common test data, and test runners for running tests.")
3571 (license license:epl1.0)))
3573 (define-public java-plexus-utils
3575 (name "java-plexus-utils")
3580 (url "https://github.com/codehaus-plexus/plexus-utils")
3581 (commit (string-append "plexus-utils-" version))))
3582 (file-name (git-file-name name version))
3585 "1mlx7xrq7lgqjqcpg7y4hi1ghavf28vvk3har82037dqx61n0f15"))))
3586 (build-system ant-build-system)
3587 ;; FIXME: The default build.xml does not include a target to install
3590 `(#:jar-name "plexus-utils.jar"
3591 #:source-dir "src/main"
3593 (modify-phases %standard-phases
3594 (add-after 'unpack 'fix-reference-to-/bin-and-/usr
3596 (substitute* "src/main/java/org/codehaus/plexus/util/\
3597 cli/shell/BourneShell.java"
3598 (("/bin/sh") (which "sh"))
3599 (("/usr/") (getcwd)))
3601 (add-after 'unpack 'fix-or-disable-broken-tests
3603 (with-directory-excursion "src/test/java/org/codehaus/plexus/util"
3604 (substitute* '("cli/CommandlineTest.java"
3605 "cli/shell/BourneShellTest.java")
3606 (("/bin/sh") (which "sh"))
3607 (("/bin/echo") (which "echo")))
3609 ;; This test depends on MavenProjectStub, but we don't have
3610 ;; a package for Maven.
3611 (delete-file "introspection/ReflectionValueExtractorTest.java")
3613 ;; FIXME: The command line tests fail, maybe because they use
3615 (delete-file "cli/CommandlineTest.java"))
3618 `(("java-hamcrest-core" ,java-hamcrest-core)
3619 ("java-junit" ,java-junit)))
3620 (home-page "https://codehaus-plexus.github.io/plexus-utils/")
3621 (synopsis "Common utilities for the Plexus framework")
3622 (description "This package provides various Java utility classes for the
3623 Plexus framework to ease working with strings, files, command lines, XML and
3625 (license license:asl2.0)))
3627 (define-public java-plexus-interpolation
3629 (name "java-plexus-interpolation")
3634 (url "https://github.com/codehaus-plexus/plexus-interpolation")
3635 (commit (string-append "plexus-interpolation-" version))))
3636 (file-name (git-file-name name version))
3639 "005hxxg1adv71a96lz4vp65bk3v1pi76j4c45z29xzizclib16vl"))))
3640 (build-system ant-build-system)
3642 `(#:jar-name "plexus-interpolation.jar"
3643 #:source-dir "src/main"))
3645 `(("java-junit" ,java-junit)
3646 ("java-hamcrest-core" ,java-hamcrest-core)))
3647 (home-page "https://codehaus-plexus.github.io/plexus-interpolation/")
3648 (synopsis "Java components for interpolating ${} strings and the like")
3649 (description "Plexus interpolator is a modular, flexible interpolation
3650 framework for the expression language style commonly seen in Maven, Plexus,
3651 and other related projects.
3653 It has its foundation in the @code{org.codehaus.plexus.utils.interpolation}
3654 package within @code{plexus-utils}, but has been separated in order to allow
3655 these two libraries to vary independently of one another.")
3656 (license license:asl2.0)))
3658 (define-public java-plexus-classworlds
3660 (name "java-plexus-classworlds")
3665 (url "https://github.com/codehaus-plexus/plexus-classworlds")
3666 (commit (string-append "plexus-classworlds-" version))))
3667 (file-name (git-file-name name version))
3670 "1iv8x55fbni2hg4l7pdpbwfq75xmvq1f25g6nxma8rcdpihsh13r"))))
3671 (build-system ant-build-system)
3673 `(#:jar-name "plexus-classworlds.jar"
3674 #:source-dir "src/main"
3675 #:tests? #f));; FIXME: we need to generate some resources as in pom.xml
3677 `(("java-junit" ,java-junit)))
3678 (home-page "https://codehaus-plexus.github.io/plexus-classworlds/")
3679 (synopsis "Java class loader framework")
3680 (description "Plexus classworlds replaces the native @code{ClassLoader}
3681 mechanism of Java. It is especially useful for dynamic loading of application
3683 (license license:asl2.0)))
3685 (define java-plexus-container-default-bootstrap
3687 (name "java-plexus-container-default-bootstrap")
3691 (uri (string-append "https://github.com/codehaus-plexus/plexus-containers"
3692 "/archive/plexus-containers-" version ".tar.gz"))
3695 "0xw5g30qf4a83608rw9v2hv8pfsz7d69dkdhk6r0wia4q78hh1pc"))))
3696 (build-system ant-build-system)
3698 `(#:jar-name "container-default.jar"
3699 #:source-dir "plexus-container-default/src/main/java"
3700 #:test-dir "plexus-container-default/src/test"
3702 #:tests? #f; requires plexus-archiver, which depends on this package
3704 (modify-phases %standard-phases
3705 (add-before 'build 'copy-resources
3708 "plexus-container-default/src/main/resources/"
3712 `(("worldclass" ,java-plexus-classworlds)
3713 ("xbean" ,java-geronimo-xbean-reflect)
3714 ("utils" ,java-plexus-utils)
3715 ("junit" ,java-junit)
3716 ("guava" ,java-guava)))
3717 (home-page "https://github.com/codehaus-plexus/plexus-containers")
3718 (synopsis "Inversion-of-control container")
3719 (description "Plexus-default-container is Plexus' inversion-of-control
3720 (@dfn{IoC}) container. It is composed of its public API and its default
3722 (license license:asl2.0)))
3724 (define-public java-plexus-io
3726 (name "java-plexus-io")
3730 (uri (string-append "https://github.com/codehaus-plexus/plexus-io"
3731 "/archive/plexus-io-" version ".tar.gz"))
3734 "0f2j41kihaymxkpbm55smpxjja235vad8cgz94frfy3ppcp021dw"))))
3735 (build-system ant-build-system)
3737 `(#:jar-name "plexus-io.jar"
3738 #:source-dir "src/main/java"
3739 #:test-dir "src/test"
3742 (modify-phases %standard-phases
3743 (add-before 'build 'copy-resources
3745 (mkdir-p "build/classes/META-INF/plexus")
3746 (copy-file "src/main/resources/META-INF/plexus/components.xml"
3747 "build/classes/META-INF/plexus/components.xml")
3750 `(("utils" ,java-plexus-utils)
3751 ("commons-io" ,java-commons-io)
3752 ("java-jsr305" ,java-jsr305)))
3754 `(("junit" ,java-junit)
3755 ("hamcrest" ,java-hamcrest-core)
3756 ("guava" ,java-guava)
3757 ("classworlds" ,java-plexus-classworlds)
3758 ("xbean" ,java-geronimo-xbean-reflect)
3759 ("container-default" ,java-plexus-container-default-bootstrap)))
3760 (home-page "https://github.com/codehaus-plexus/plexus-io")
3761 (synopsis "I/O plexus components")
3762 (description "Plexus IO is a set of plexus components, which are designed
3763 for use in I/O operations. This implementation using plexus components allows
3764 reusing it in maven.")
3765 (license license:asl2.0)))
3767 (define-public java-plexus-archiver
3769 (name "java-plexus-archiver")
3773 (uri (string-append "https://github.com/codehaus-plexus/plexus-archiver"
3774 "/archive/plexus-archiver-" version ".tar.gz"))
3777 "0ry6i92gli0mvdmfih2vgs0lkf9yvx18h2ajxim66yg6yipnp0hg"))))
3778 (build-system ant-build-system)
3780 `(#:jar-name "plexus-archiver.jar"
3781 #:source-dir "src/main/java"
3783 #:test-dir "src/test"
3784 #:test-exclude (list "**/Abstract*.java" "**/Base*.java")
3786 (modify-phases %standard-phases
3787 (add-before 'check 'remove-failing
3789 ;; Requires an older version of plexus container
3791 "src/test/java/org/codehaus/plexus/archiver/DuplicateFilesTest.java")
3793 (add-before 'check 'fix-test-building
3795 (substitute* "build.xml"
3796 (("srcdir=\"src/test\"") "srcdir=\"src/test/java\""))
3798 (add-before 'build 'copy-resources
3800 (mkdir-p "build/classes/META-INF/plexus")
3801 (copy-file "src/main/resources/META-INF/plexus/components.xml"
3802 "build/classes/META-INF/plexus/components.xml")
3805 `(("utils" ,java-plexus-utils)
3806 ("commons-io" ,java-commons-io)
3807 ("snappy" ,java-iq80-snappy)
3808 ("io" ,java-plexus-io)
3809 ("compress" ,java-commons-compress)
3810 ("container-default" ,java-plexus-container-default-bootstrap)
3811 ("snappy" ,java-snappy)
3812 ("java-jsr305" ,java-jsr305)))
3814 `(("java-hamcrest-core" ,java-hamcrest-core)
3815 ("junit" ,java-junit)
3816 ("classworld" ,java-plexus-classworlds)
3817 ("xbean" ,java-geronimo-xbean-reflect)
3818 ("xz" ,java-tukaani-xz)
3819 ("guava" ,java-guava)))
3820 (home-page "https://github.com/codehaus-plexus/plexus-archiver")
3821 (synopsis "Archiver component of the Plexus project")
3822 (description "Plexus-archiver contains a component to deal with project
3824 (license license:asl2.0)))
3826 (define-public java-plexus-container-default
3828 (inherit java-plexus-container-default-bootstrap)
3829 (name "java-plexus-container-default")
3831 `(#:jar-name "container-default.jar"
3832 #:source-dir "plexus-container-default/src/main/java"
3833 #:test-dir "plexus-container-default/src/test"
3834 #:test-exclude (list ;"**/*Test.java"
3836 ;; Requires plexus-hierarchy
3837 "**/PlexusHierarchyTest.java"
3839 "**/ComponentRealmCompositionTest.java"
3840 "**/PlexusContainerTest.java")
3843 (modify-phases %standard-phases
3844 (add-before 'build 'copy-resources
3847 "plexus-container-default/src/main/resources/"
3850 (add-before 'check 'fix-paths
3852 (let ((dir "plexus-container-default/src/test/java/org/codehaus"))
3855 dir "/plexus/component/composition/"
3856 "ComponentRealmCompositionTest.java")
3857 (("src/test") "plexus-container-default/src/test"))
3860 `(("worldclass" ,java-plexus-classworlds)
3861 ("xbean" ,java-geronimo-xbean-reflect)
3862 ("utils" ,java-plexus-utils)
3863 ("junit" ,java-junit)
3864 ("guava" ,java-guava)))
3866 `(("archiver" ,java-plexus-archiver)
3867 ("hamcrest" ,java-hamcrest-core)))))
3869 (define-public java-plexus-component-annotations
3871 (inherit java-plexus-container-default)
3872 (name "java-plexus-component-annotations")
3874 `(#:jar-name "plexus-component-annotations.jar"
3875 #:source-dir "plexus-component-annotations/src/main/java"
3876 #:tests? #f)); no tests
3879 (synopsis "Plexus descriptors generator")
3880 (description "This package is a Maven plugin to generate Plexus descriptors
3881 from source tags and class annotations.")))
3883 (define-public java-plexus-cipher
3885 (name "java-plexus-cipher")
3889 (uri (string-append "https://github.com/codehaus-plexus/plexus-cipher"
3890 "/archive/plexus-cipher-" version ".tar.gz"))
3893 "1j3r8xzlxlk340snkjp6lk2ilkxlkn8qavsfiq01f43xmvv8ymk3"))))
3894 (build-system ant-build-system)
3896 `(#:jar-name "plexus-cipher.jar"
3897 #:source-dir "src/main/java"
3899 #:tests? #f; FIXME: requires sisu-inject-bean
3901 (modify-phases %standard-phases
3902 (add-before 'build 'copy-resources
3904 (copy-recursively "src/main/resources" "build/classes")
3905 (mkdir-p "build/classes/META-INF/sisu")
3906 (with-output-to-file "build/classes/META-INF/sisu/javax.inject.Named"
3908 (display "org.sonatype.plexus.components.cipher.DefaultPlexusCipher\n")))
3911 `(("java-cdi-api" ,java-cdi-api)
3912 ("java-javax-inject" ,java-javax-inject)))
3913 (home-page "https://github.com/sonatype/plexus-cipher")
3914 (synopsis "Encryption/decryption Component")
3915 (description "Plexus-cipher contains a component to deal with encryption
3917 (license license:asl2.0)))
3919 (define-public java-plexus-compiler-api
3921 (name "java-plexus-compiler-api")
3925 (uri (string-append "https://github.com/codehaus-plexus/plexus-compiler"
3926 "/archive/plexus-compiler-" version ".tar.gz"))
3929 "09vmxs0807wsd26nbrwwj5l8ycmzazqycj52l7w6wjvkryywi69h"))))
3930 (build-system ant-build-system)
3932 `(#:jar-name "plexus-compiler-api.jar"
3933 #:source-dir "plexus-compiler-api/src/main/java"
3935 #:test-dir "plexus-compiler-api/src/test"))
3937 `(("java-plexus-container-default" ,java-plexus-container-default)
3938 ("java-plexus-util" ,java-plexus-utils)))
3940 `(("java-junit" ,java-junit)))
3941 (home-page "https://github.com/codehaus-plexus/plexus-compiler")
3942 (synopsis "Plexus Compilers component's API to manipulate compilers")
3943 (description "This package contains the API used by components to manipulate
3945 (license (list license:asl2.0
3948 (define-public java-plexus-compiler-javac
3950 (inherit java-plexus-compiler-api)
3951 (name "java-plexus-compiler-javac")
3953 `(#:jar-name "plexus-compiler-javac.jar"
3954 #:source-dir "plexus-compilers/plexus-compiler-javac/src/main/java"
3956 #:tests? #f; depends on compiler-test -> maven-core -> ... -> this package.
3957 #:test-dir "plexus-compilers/plexus-compiler-javac/src/test"))
3959 `(("java-plexus-compiler-api" ,java-plexus-compiler-api)
3960 ("java-plexus-utils" ,java-plexus-utils)
3961 ("java-plexus-container-default" ,java-plexus-container-default)))
3963 `(("java-junit" ,java-junit)))
3964 (synopsis "Javac Compiler support for Plexus Compiler component")
3965 (description "This package contains the Javac Compiler support for Plexus
3966 Compiler component.")))
3968 (define-public java-plexus-sec-dispatcher
3970 (name "java-plexus-sec-dispatcher")
3971 (version "1.4") ;; Newest release listed at the Maven Central Repository.
3973 ;; This project doesn't tag releases or publish tarballs, so we take
3974 ;; the "prepare release plexus-sec-dispatcher-1.4" git commit.
3976 (uri (string-append "https://github.com/sonatype/plexus-sec-dispatcher/"
3977 "archive/7db8f88048.tar.gz"))
3980 "1smfrk4n7xbrsxpxcp2j4i0j8q86j73w0w6xg7qz83dp6dagdjgp"))
3981 (file-name (string-append name "-" version ".tar.gz"))))
3983 `(#:jar-name "plexus-sec-dispatcher.jar"
3984 #:source-dir "src/main/java"
3987 (modify-phases %standard-phases
3988 (add-before 'build 'generate-models
3989 (lambda* (#:key inputs #:allow-other-keys)
3990 (define (modello-single-mode file version mode)
3992 "org.codehaus.modello.ModelloCli"
3993 file mode "src/main/java" version
3995 (let ((file "src/main/mdo/settings-security.mdo"))
3996 (modello-single-mode file "1.0.0" "java")
3997 (modello-single-mode file "1.0.0" "xpp3-reader")
3998 (modello-single-mode file "1.0.0" "xpp3-writer"))
4000 (add-before 'build 'generate-components.xml
4002 (mkdir-p "build/classes/META-INF/plexus")
4003 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
4009 <role>org.sonatype.plexus.components.sec.dispatcher.SecDispatcher</role>\n
4010 <role-hint>default</role-hint>\n
4011 <implementation>org.sonatype.plexus.components.sec.dispatcher.DefaultSecDispatcher</implementation>\n
4012 <description></description>\n
4015 <role>org.sonatype.plexus.components.cipher.PlexusCipher</role>\n
4016 <field-name>_cipher</field-name>\n
4019 <role>org.sonatype.plexus.components.sec.dispatcher.PasswordDecryptor</role>\n
4020 <field-name>_decryptors</field-name>\n
4024 <_configuration-file>~/.settings-security.xml</_configuration-file>\n
4028 </component-set>\n")))
4030 (add-before 'check 'fix-paths
4032 (copy-recursively "src/test/resources" "target")
4035 `(("java-plexus-cipher" ,java-plexus-cipher)))
4037 `(("java-modello-core" ,java-modello-core)
4039 ("java-plexus-container-default" ,java-plexus-container-default)
4040 ("java-plexus-classworlds" ,java-plexus-classworlds)
4041 ("java-plexus-utils" ,java-plexus-utils)
4042 ("java-guava" ,java-guava)
4043 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
4044 ("java-sisu-build-api" ,java-sisu-build-api)
4046 ("java-modellop-plugins-java" ,java-modello-plugins-java)
4047 ("java-modellop-plugins-xml" ,java-modello-plugins-xml)
4048 ("java-modellop-plugins-xpp3" ,java-modello-plugins-xpp3)
4050 ("java-junit" ,java-junit)))
4051 (build-system ant-build-system)
4052 (home-page "https://github.com/sonatype/plexus-sec-dispatcher")
4053 (synopsis "Plexus Security Dispatcher Component")
4054 (description "This package is the Plexus Security Dispatcher Component.
4055 This component decrypts a string passed to it.")
4056 (license license:asl2.0)))
4058 (define-public java-plexus-cli
4060 (name "java-plexus-cli")
4065 (url "https://github.com/sonatype/plexus-cli")
4066 (commit "a776afa6bca84e5107bedb69440329cdb24ed645")))
4067 (file-name (string-append name "-" version))
4070 "0xjrlay605rypv3zd7y24vlwf0039bil3n2cqw54r1ddpysq46vx"))))
4071 (build-system ant-build-system)
4073 `(#:jar-name "plexus-cli.jar"
4074 #:source-dir "src/main/java"
4076 #:test-dir "src/test"))
4078 `(("java-commons-cli" ,java-commons-cli)
4079 ("java-plexus-container-default" ,java-plexus-container-default)
4080 ("java-plexus-classworlds" ,java-plexus-classworlds)))
4082 `(("java-plexus-utils" ,java-plexus-utils)
4083 ("java-junit" ,java-junit)
4084 ("java-guava" ,java-guava)))
4085 (home-page "https://codehaus-plexus.github.io/plexus-cli")
4086 (synopsis "CLI building library for plexus")
4087 (description "This package is a library to help creating CLI around
4088 Plexus components.")
4089 (license license:asl2.0)))
4091 (define-public java-sisu-build-api
4093 (name "java-sisu-build-api")
4097 (uri (string-append "https://github.com/sonatype/sisu-build-api/"
4098 "archive/plexus-build-api-" version ".tar.gz"))
4101 "1c3rrpma3x634xp2rm2p5iskfhzdyc7qfbhjzr70agrl1jwghgy2"))))
4102 (build-system ant-build-system)
4104 `(#:jar-name "sisu-build-api.jar"
4105 #:source-dir "src/main/java"
4107 #:tests? #f; FIXME: how to run the tests?
4109 (modify-phases %standard-phases
4110 (add-before 'build 'copy-resources
4112 (copy-recursively "src/main/resources" "build/classes")
4113 (substitute* (find-files "build/classes")
4114 (("\\$\\{project.version\\}") ,version))
4116 (add-before 'build 'generate-plexus-compontent
4118 (mkdir-p "build/classes/META-INF/plexus")
4119 ;; This file is required for plexus to inject this package.
4120 ;; FIXME: how is it generated?
4121 (with-output-to-file "build/classes/META-INF/plexus/components.xml"
4127 <role>org.sonatype.plexus.build.incremental.BuildContext</role>\n
4128 <role-hint>default</role-hint>\n
4129 <implementation>org.sonatype.plexus.build.incremental.DefaultBuildContext</implementation>\n
4130 <description>Filesystem based non-incremental build context implementation\n
4131 which behaves as if all files were just created.</description>\n
4134 </component-set>\n")))
4137 `(("java-plexus-utils" ,java-plexus-utils)
4138 ("java-plexus-container-default" ,java-plexus-container-default)))
4139 (home-page "https://github.com/sonatype/sisu-build-api/")
4140 (synopsis "Base build API for maven")
4141 (description "This package contains the base build API for maven and
4142 a default implementation of it. This API is about scanning files in a
4143 project and determining what files need to be rebuilt.")
4144 (license license:asl2.0)))
4146 (define-public java-modello-core
4148 (name "java-modello-core")
4152 (uri (string-append "https://github.com/codehaus-plexus/modello"
4153 "/archive/modello-" version ".tar.gz"))
4156 "0l2pvns8pmlrmjm3iknp7gpg3654y1m8qhy55b19sdwdchdcyxfh"))))
4157 (build-system ant-build-system)
4159 `(#:jar-name "modello-core.jar"
4160 #:source-dir "modello-core/src/main/java"
4161 #:test-dir "modello-core/src/test"
4162 #:main-class "org.codehaus.modello.ModelloCli"
4165 (modify-phases %standard-phases
4166 (add-before 'build 'copy-resources
4168 (mkdir-p "build/classes/META-INF/plexus")
4169 (copy-file "modello-core/src/main/resources/META-INF/plexus/components.xml"
4170 "build/classes/META-INF/plexus/components.xml")
4172 (add-before 'check 'fix-tests
4174 (with-directory-excursion "modello-core/src/test/java/org/codehaus"
4175 (substitute* '("modello/core/DefaultModelloCoreTest.java"
4176 "modello/core/io/ModelReaderTest.java")
4177 (("src/test") "modello-core/src/test")))
4180 `(("java-plexus-utils" ,java-plexus-utils)
4181 ("java-plexus-container-default" ,java-plexus-container-default)
4182 ("java-sisu-build-api" ,java-sisu-build-api)))
4184 `(("java-junit" ,java-junit)
4185 ("java-plexus-classworlds" ,java-plexus-classworlds)
4186 ("java-geronimo-xbean-reflect" ,java-geronimo-xbean-reflect)
4187 ("java-guava" ,java-guava)))
4188 (home-page "https://codehaus-plexus.github.io/modello/")
4189 (synopsis "Framework for code generation from a simple model")
4190 (description "Modello is a framework for code generation from a simple model.
4192 Modello generates code from a simple model format: based on a plugin
4193 architecture, various types of code and descriptors can be generated from the
4194 single model, including Java POJOs, XML/JSON/YAML marshallers/unmarshallers,
4195 XSD and documentation.")
4198 ;; Although this package uses only files licensed under expat,
4199 ;; other parts of the source are licensed under different
4200 ;; licenses. We include them to be inherited by other packages.
4202 ;; Some files in modello-plugin-java are licensed under a
4203 ;; 5-clause BSD license.
4204 (license:non-copyleft
4205 (string-append "file:///modello-plugins/modello-plugin-java/"
4206 "src/main/java/org/codehaus/modello/plugin/"
4207 "java/javasource/JNaming.java"))))))
4209 (define-public java-modello-plugins-java
4211 (inherit java-modello-core)
4212 (name "java-modello-plugins-java")
4214 `(#:jar-name "modello-plugins-java.jar"
4215 #:source-dir "modello-plugins/modello-plugin-java/src/main/java"
4216 #:test-dir "modello-plugins/modello-plugin-java/src/test"
4218 #:tests? #f; requires maven-model, which depends on this package
4220 (modify-phases %standard-phases
4221 (add-before 'build 'copy-resources
4223 (mkdir-p "build/classes")
4224 (copy-recursively "modello-plugins/modello-plugin-java/src/main/resources"
4228 `(("java-modello-core" ,java-modello-core)
4229 ,@(package-inputs java-modello-core)))
4230 (synopsis "Modello Java Plugin")
4231 (description "Modello Java Plugin generates Java objects for the model.")))
4233 (define-public java-modello-plugins-xml
4235 (inherit java-modello-core)
4236 (name "java-modello-plugins-xml")
4238 `(#:jar-name "modello-plugins-xml.jar"
4239 #:source-dir "modello-plugins/modello-plugin-xml/src/main/java"
4240 #:test-dir "modello-plugins/modello-plugin-xml/src/test"
4243 (modify-phases %standard-phases
4244 (add-before 'build 'copy-resources
4246 (mkdir-p "build/classes")
4248 "modello-plugins/modello-plugin-xml/src/main/resources"
4251 (add-before 'check 'fix-paths
4253 (with-directory-excursion "modello-plugins/modello-plugin-xml/src/test"
4255 "java/org/codehaus/modello/plugins/xml/XmlModelloPluginTest.java"
4256 (("src/test") "modello-plugins/modello-plugin-xml/src/test")))
4259 `(("java-modello-core" ,java-modello-core)
4260 ("java-modello-plugins-java" ,java-modello-plugins-java)
4261 ,@(package-inputs java-modello-core)))
4262 (synopsis "Modello XML Plugin")
4263 (description "Modello XML Plugin contains shared code for every plugins
4264 working on XML representation of the model.")))
4266 (define-public java-modello-test
4268 (inherit java-modello-core)
4269 (name "java-modello-test")
4271 `(#:jar-name "modello-test.jar"
4272 #:source-dir "modello-test/src/main/java"
4273 #:tests? #f; no tests
4276 `(("java-plexus-utils" ,java-plexus-utils)
4277 ("java-plexus-compiler-api" ,java-plexus-compiler-api)
4278 ("java-plexus-compiler-javac" ,java-plexus-compiler-javac)
4279 ("java-plexus-container-default" ,java-plexus-container-default)))
4280 (synopsis "Modello test package")
4281 (description "The modello test package contains the basis to create
4282 Modello generator unit-tests, including sample models and xml files to test
4283 every feature for every plugin.")))
4285 (define-public java-modello-plugins-xpp3
4287 (inherit java-modello-core)
4288 (name "java-modello-plugins-xpp3")
4290 `(#:jar-name "modello-plugins-xpp3.jar"
4291 #:source-dir "modello-plugins/modello-plugin-xpp3/src/main/java"
4292 #:test-dir "modello-plugins/modello-plugin-xpp3/src/test"
4293 ;; One of the test dependencies is maven-model which depends on this package.
4297 (modify-phases %standard-phases
4298 (add-before 'build 'copy-resources
4300 (mkdir-p "build/classes")
4301 (copy-recursively "modello-plugins/modello-plugin-xpp3/src/main/resources"
4305 `(("java-modello-core" ,java-modello-core)
4306 ("java-modello-plugins-java" ,java-modello-plugins-java)
4307 ("java-modello-plugins-xml" ,java-modello-plugins-xml)
4308 ,@(package-inputs java-modello-core)))
4310 `(("java-xmlunit" ,java-xmlunit)
4311 ("java-modello-test" ,java-modello-test)
4312 ,@(package-native-inputs java-modello-core)))
4313 (synopsis "Modello XPP3 Plugin")
4314 (description "The modello XPP3 plugin generates XML readers and writers based
4315 on the XPP3 API (XML Pull Parser).")))
4317 (define-public java-asm
4323 (uri (string-append "http://download.forge.ow2.org/asm/"
4324 "asm-" version ".tar.gz"))
4327 "115l5pqblirdkmzi32dxx7gbcm4jy0s14y5wircr6h8jdr9aix00"))))
4328 (build-system ant-build-system)
4330 `(("java-aqute-bndlib" ,java-aqute-bndlib)
4331 ("java-aqute-libg" ,java-aqute-libg)))
4333 `(#:build-target "compile"
4334 ;; The tests require an old version of Janino, which no longer compiles
4339 ;; We don't need these extra ant tasks, but the build system asks us to
4340 ;; provide a path anyway.
4341 "-Dobjectweb.ant.tasks.path=dummy-path"
4342 ;; The java-aqute.bndlib JAR file will be put onto the classpath and
4343 ;; used during the build automatically by ant-build-system, but
4344 ;; java-asm's build.xml fails unless we provide something here.
4345 "-Dbiz.aQute.bnd.path=dummy-path")
4347 (modify-phases %standard-phases
4348 (add-before 'install 'build-jars
4349 (lambda* (#:key make-flags #:allow-other-keys)
4350 ;; We cannot use the "jar" target because it depends on a couple
4351 ;; of unpackaged, complicated tools.
4354 "-cf" (string-append "dist/asm-" ,version ".jar")
4355 "-C" "output/build/tmp" ".")))
4357 (install-jars "dist")))))
4359 `(("java-junit" ,java-junit)))
4360 (home-page "https://asm.ow2.io/")
4361 (synopsis "Very small and fast Java bytecode manipulation framework")
4362 (description "ASM is an all purpose Java bytecode manipulation and
4363 analysis framework. It can be used to modify existing classes or dynamically
4364 generate classes, directly in binary form. The provided common
4365 transformations and analysis algorithms allow to easily assemble custom
4366 complex transformations and code analysis tools.")
4367 (license license:bsd-3)))
4369 (define java-asm-bootstrap
4372 (name "java-asm-bootstrap")
4374 (substitute-keyword-arguments (package-arguments java-asm)
4378 `(("java-aqute-bndlib" ,java-aqute-bndlib-bootstrap)
4379 ("java-aqute-libg" ,java-aqute-libg-bootstrap)
4380 ,@(delete `("java-aqute-bndlib" ,java-aqute-bndlib)
4381 (delete `("java-aqute-libg" ,java-aqute-libg)
4382 (package-inputs java-asm)))))))
4384 (define-public java-cglib
4392 (url "https://github.com/cglib/cglib.git")
4393 (commit (string-append
4395 (string-map (lambda (c) (if (char=? c #\.) #\_ c))
4397 (file-name (git-file-name name version))
4399 (base32 "186451jms2zfp47yd8kxd77az2cqal1my2br7klgyp8fpl4qfg8v"))))
4400 (build-system ant-build-system)
4402 `(;; FIXME: tests fail because junit runs
4403 ;; "net.sf.cglib.transform.AbstractTransformTest", which does not seem
4404 ;; to describe a test at all.
4406 #:jar-name "cglib.jar"
4408 (modify-phases %standard-phases
4409 (add-after 'unpack 'chdir
4410 (lambda _ (chdir "cglib") #t)))))
4412 `(("java-asm" ,java-asm)
4413 ("java-junit" ,java-junit)))
4414 (home-page "https://github.com/cglib/cglib/")
4415 (synopsis "Java byte code generation library")
4416 (description "The byte code generation library CGLIB is a high level API
4417 to generate and transform Java byte code.")
4418 (license license:asl2.0)))
4420 (define-public java-objenesis
4422 (name "java-objenesis")
4426 (uri (string-append "https://github.com/easymock/objenesis/"
4427 "archive/" version ".tar.gz"))
4428 (file-name (string-append "objenesis-" version ".tar.gz"))
4431 "1va5qz1i2wawwavhnxfzxnfgrcaflz9p1pg03irrjh4nd3rz8wh6"))))
4432 (build-system ant-build-system)
4434 `(#:jar-name "objenesis.jar"
4435 #:source-dir "main/src/"
4436 #:test-dir "main/src/test/"))
4438 `(("java-junit" ,java-junit)
4439 ("java-hamcrest-core" ,java-hamcrest-core)))
4440 (home-page "http://objenesis.org/")
4441 (synopsis "Bypass the constructor when creating an object")
4442 (description "Objenesis is a small Java library that serves one purpose:
4443 to instantiate a new object of a particular class. It is common to see
4444 restrictions in libraries stating that classes must require a default
4445 constructor. Objenesis aims to overcome these restrictions by bypassing the
4446 constructor on object instantiation.")
4447 (license license:asl2.0)))
4449 (define-public java-easymock
4451 (name "java-easymock")
4455 (uri (string-append "https://github.com/easymock/easymock/"
4456 "archive/easymock-" version ".tar.gz"))
4459 "1yzg0kv256ndr57gpav46cyv4a1ns5sj722l50zpxk3j6sk9hnmi"))))
4460 (build-system ant-build-system)
4462 `(#:jar-name "easymock.jar"
4463 #:source-dir "core/src/main"
4464 #:test-dir "core/src/test"
4466 (modify-phases %standard-phases
4467 ;; FIXME: Android support requires the following packages to be
4468 ;; available: com.google.dexmaker.stock.ProxyBuilder
4469 (add-after 'unpack 'delete-android-support
4471 (with-directory-excursion "core/src/main/java/org/easymock/internal"
4472 (substitute* "MocksControl.java"
4473 (("AndroidSupport.isAndroid\\(\\)") "false")
4474 (("return classProxyFactory = new AndroidClassProxyFactory\\(\\);") ""))
4475 (delete-file "AndroidClassProxyFactory.java"))
4477 (add-after 'unpack 'delete-broken-tests
4479 (with-directory-excursion "core/src/test/java/org/easymock"
4480 ;; This test depends on dexmaker.
4481 (delete-file "tests2/ClassExtensionHelperTest.java")
4483 ;; This is not a test.
4484 (delete-file "tests/BaseEasyMockRunnerTest.java")
4486 ;; This test should be executed with a different runner...
4487 (delete-file "tests2/EasyMockAnnotationsTest.java")
4488 ;; ...but deleting it means that we also have to delete these
4490 (delete-file "tests2/EasyMockRunnerTest.java")
4491 (delete-file "tests2/EasyMockRuleTest.java")
4493 ;; This test fails because the file "easymock.properties" does
4495 (delete-file "tests2/EasyMockPropertiesTest.java"))
4498 `(("java-asm" ,java-asm)
4499 ("java-cglib" ,java-cglib)
4500 ("java-objenesis" ,java-objenesis)))
4502 `(("java-junit" ,java-junit)
4503 ("java-hamcrest-core" ,java-hamcrest-core)))
4504 (home-page "http://easymock.org")
4505 (synopsis "Java library providing mock objects for unit tests")
4506 (description "EasyMock is a Java library that provides an easy way to use
4507 mock objects in unit testing.")
4508 (license license:asl2.0)))
4510 (define-public java-jmock-1
4516 (uri (string-append "https://github.com/jmock-developers/"
4517 "jmock-library/archive/" version ".tar.gz"))
4518 (file-name (string-append "jmock-" version ".tar.gz"))
4521 "0xmrlhq0fszldkbv281k9463mv496143vvmqwpxp62yzjvdkx9w0"))))
4522 (build-system ant-build-system)
4524 `(#:build-target "jars"
4525 #:test-target "run.tests"
4527 (modify-phases %standard-phases
4528 (replace 'install (install-jars "build")))))
4529 (home-page "http://www.jmock.org")
4530 (synopsis "Mock object library for test-driven development")
4531 (description "JMock is a library that supports test-driven development of
4532 Java code with mock objects. Mock objects help you design and test the
4533 interactions between the objects in your programs.
4538 @item makes it quick and easy to define mock objects
4539 @item lets you precisely specify the interactions between
4540 your objects, reducing the brittleness of your tests
4541 @item plugs into your favourite test framework
4542 @item is easy to extend.
4544 (license license:bsd-3)))
4546 (define-public java-jmock
4548 (inherit java-jmock-1)
4553 (uri (string-append "https://github.com/jmock-developers/"
4554 "jmock-library/archive/" version ".tar.gz"))
4555 (file-name (string-append name "-" version ".tar.gz"))
4558 "18650a9g8xffcsdb6w91pbswa7f40fp2sh6s3nclkclz5dbzq8f0"))))
4560 `(("java-hamcrest-all" ,java-hamcrest-all)
4561 ("java-asm" ,java-asm)
4562 ("java-bsh" ,java-bsh)
4563 ("java-junit" ,java-junit)))
4565 `(("cglib" ,java-cglib)))
4567 `(#:jar-name "java-jmock.jar"
4568 #:source-dir "jmock/src/main/java"
4569 #:test-dir "jmock/src/test"))))
4571 (define-public java-jmock-junit4
4573 (inherit java-jmock)
4574 (name "java-jmock-junit4")
4576 `(#:jar-name "java-jmock-junit4.jar"
4577 #:source-dir "jmock-junit4/src/main/java"
4578 #:test-dir "jmock-junit4/src/test"))
4580 `(("java-hamcrest-all" ,java-hamcrest-all)
4581 ("java-asm" ,java-asm)
4582 ("java-bsh" ,java-bsh)
4583 ("java-jmock" ,java-jmock)
4584 ("java-jumit" ,java-junit)))))
4586 (define-public java-jmock-legacy
4588 (inherit java-jmock)
4589 (name "java-jmock-legacy")
4591 `(#:jar-name "java-jmock-legacy.jar"
4592 #:source-dir "jmock-legacy/src/main/java"
4593 #:test-dir "jmock-legacy/src/test"
4595 (modify-phases %standard-phases
4596 (add-before 'check 'copy-tests
4598 ;; This file is a dependancy of some tests
4599 (let ((file "org/jmock/test/acceptance/PackageProtectedType.java"))
4600 (copy-file (string-append "jmock/src/test/java/" file)
4601 (string-append "jmock-legacy/src/test/java/" file))
4604 `(("java-hamcrest-all" ,java-hamcrest-all)
4605 ("java-objenesis" ,java-objenesis)
4606 ("java-cglib" ,java-cglib)
4607 ("java-jmock" ,java-jmock)
4608 ("java-asm" ,java-asm)
4609 ("java-bsh" ,java-bsh)
4610 ("java-junit" ,java-junit)))
4612 `(("java-jmock-junit4" ,java-jmock-junit4)))))
4614 (define-public java-hamcrest-all
4615 (package (inherit java-hamcrest-core)
4616 (name "java-hamcrest-all")
4619 ,@(substitute-keyword-arguments (package-arguments java-hamcrest-core)
4620 ((#:build-target _) "bigjar")
4622 `(modify-phases ,phases
4623 ;; Some build targets override the classpath, so we need to patch
4624 ;; the build.xml to ensure that required dependencies are on the
4626 (add-after 'unpack 'patch-classpath-for-integration
4627 (lambda* (#:key inputs #:allow-other-keys)
4628 (substitute* "build.xml"
4629 ((" build/hamcrest-library-\\$\\{version\\}.jar" line)
4633 (find-files (assoc-ref inputs "java-junit") "\\.jar$")
4634 (find-files (assoc-ref inputs "java-jmock") "\\.jar$")
4635 (find-files (assoc-ref inputs "java-easymock") "\\.jar$")))
4637 (("build/hamcrest-core-\\$\\{version\\}\\.jar")
4638 (string-append (assoc-ref inputs "java-hamcrest-core")
4639 "/share/java/hamcrest-core.jar")))
4642 `(("java-junit" ,java-junit)
4643 ("java-jmock" ,java-jmock-1)
4644 ;; This is necessary because of what seems to be a race condition.
4645 ;; This package would sometimes fail to build because hamcrest-core.jar
4646 ;; could not be found, even though it is built as part of this package.
4647 ;; Adding java-hamcrest-core appears to fix this problem. See
4648 ;; https://debbugs.gnu.org/31390 for more information.
4649 ("java-hamcrest-core" ,java-hamcrest-core)
4650 ("java-easymock" ,java-easymock)
4651 ,@(package-inputs java-hamcrest-core)))))
4653 (define-public java-jopt-simple
4655 (name "java-jopt-simple")
4659 (uri (string-append "http://repo1.maven.org/maven2/"
4660 "net/sf/jopt-simple/jopt-simple/"
4661 version "/jopt-simple-"
4662 version "-sources.jar"))
4665 "1v8bzmwmw6qq20gm42xyay6vrd567dra4vqwhgjnqqjz1gs9f8qa"))))
4666 (build-system ant-build-system)
4668 `(#:tests? #f ; there are no tests
4669 #:jar-name "jopt-simple.jar"))
4670 (home-page "https://pholser.github.io/jopt-simple/")
4671 (synopsis "Java library for parsing command line options")
4672 (description "JOpt Simple is a Java library for parsing command line
4673 options, such as those you might pass to an invocation of @code{javac}. In
4674 the interest of striving for simplicity, as closely as possible JOpt Simple
4675 attempts to honor the command line option syntaxes of POSIX @code{getopt} and
4676 GNU @code{getopt_long}. It also aims to make option parser configuration and
4677 retrieval of options and their arguments simple and expressive, without being
4679 (license license:expat)))
4681 (define-public java-commons-math3
4683 (name "java-commons-math3")
4687 (uri (string-append "mirror://apache/commons/math/source/"
4688 "commons-math3-" version "-src.tar.gz"))
4691 "19l6yp44qc5g7wg816nbn5z3zq3xxzwimvbm4a8pczgvpi4i85s6"))))
4692 (build-system ant-build-system)
4694 `(#:build-target "jar"
4695 #:test-target "test"
4697 (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
4698 (junit (assoc-ref %build-inputs "java-junit")))
4699 (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
4700 (string-append "-Dhamcrest.jar=" hamcrest
4701 "/share/java/hamcrest-core.jar")))
4703 (modify-phases %standard-phases
4704 ;; We want to build the jar in the build phase and run the tests
4705 ;; later in a separate phase.
4706 (add-after 'unpack 'untangle-targets
4708 (substitute* "build.xml"
4709 (("name=\"jar\" depends=\"test\"")
4710 "name=\"jar\" depends=\"compile\""))
4712 ;; There is no install target.
4714 (install-jars "target")))))
4716 `(("java-junit" ,java-junit)
4717 ("java-hamcrest-core" ,java-hamcrest-core)))
4718 (home-page "https://commons.apache.org/math/")
4719 (synopsis "Apache Commons mathematics library")
4720 (description "Commons Math is a library of lightweight, self-contained
4721 mathematics and statistics components addressing the most common problems not
4722 available in the Java programming language or Commons Lang.")
4723 (license license:asl2.0)))
4725 (define-public java-jmh
4732 (url "http://hg.openjdk.java.net/code-tools/jmh/")
4733 (changeset version)))
4734 (file-name (string-append name "-" version "-checkout"))
4737 "1fxyxhg9famwcg1prc4cgwb5wzyxqavn3cjm5vz8605xz7x5k084"))))
4738 (build-system ant-build-system)
4740 `(#:jar-name "jmh-core.jar"
4741 #:source-dir "jmh-core/src/main"
4742 #:test-dir "jmh-core/src/test"
4744 (modify-phases %standard-phases
4745 ;; This seems to be a bug in the JDK. It may not be necessary in
4746 ;; future versions of the JDK.
4747 (add-after 'unpack 'fix-bug
4749 (with-directory-excursion
4750 "jmh-core/src/main/java/org/openjdk/jmh/runner/options"
4751 (substitute* '("IntegerValueConverter.java"
4752 "ThreadsValueConverter.java")
4753 (("public Class<Integer> valueType")
4754 "public Class<? extends Integer> valueType")))
4757 `(("java-jopt-simple" ,java-jopt-simple)
4758 ("java-commons-math3" ,java-commons-math3)))
4760 `(("java-junit" ,java-junit)
4761 ("java-hamcrest-core" ,java-hamcrest-core)))
4762 (home-page "https://openjdk.java.net/projects/code-tools/jmh/")
4763 (synopsis "Benchmark harness for the JVM")
4764 (description "JMH is a Java harness for building, running, and analysing
4765 nano/micro/milli/macro benchmarks written in Java and other languages
4766 targeting the JVM.")
4768 (license license:gpl2)))
4770 (define-public java-commons-collections4
4772 (name "java-commons-collections4")
4776 (uri (string-append "mirror://apache/commons/collections/source/"
4777 "commons-collections4-" version "-src.tar.gz"))
4780 "1krfhvggympq4avk7gh6qafzf6b9ip6r1m4lmacikyx04039m0wl"))))
4781 (build-system ant-build-system)
4783 `(#:test-target "test"
4785 (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
4786 (junit (assoc-ref %build-inputs "java-junit"))
4787 (easymock (assoc-ref %build-inputs "java-easymock")))
4788 (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
4789 (string-append "-Dhamcrest.jar=" hamcrest
4790 "/share/java/hamcrest-core.jar")
4791 (string-append "-Deasymock.jar=" easymock
4792 "/share/java/easymock.jar")))
4794 (modify-phases %standard-phases
4796 (install-jars "target")))))
4798 `(("java-junit" ,java-junit)
4799 ("java-hamcrest-core" ,java-hamcrest-core)
4800 ("java-easymock" ,java-easymock)))
4801 (home-page "https://commons.apache.org/collections/")
4802 (synopsis "Collections framework")
4803 (description "The Java Collections Framework is the recognised standard
4804 for collection handling in Java. Commons-Collections seek to build upon the
4805 JDK classes by providing new interfaces, implementations and utilities. There
4806 are many features, including:
4809 @item @code{Bag} interface for collections that have a number of copies of
4811 @item @code{BidiMap} interface for maps that can be looked up from value to
4812 key as well and key to value
4813 @item @code{MapIterator} interface to provide simple and quick iteration over
4815 @item Transforming decorators that alter each object as it is added to the
4817 @item Composite collections that make multiple collections look like one
4818 @item Ordered maps and sets that retain the order elements are added in,
4819 including an LRU based map
4820 @item Reference map that allows keys and/or values to be garbage collected
4822 @item Many comparator implementations
4823 @item Many iterator implementations
4824 @item Adapter classes from array and enumerations to collections
4825 @item Utilities to test or create typical set-theory properties of collections
4826 such as union, intersection, and closure.
4828 (license license:asl2.0)))
4830 (define-public java-commons-collections
4832 (inherit java-commons-collections4)
4833 (name "java-commons-collections")
4837 (uri (string-append "mirror://apache/commons/collections/source/"
4838 "commons-collections-" version "-src.tar.gz"))
4841 "055r51a5lfc3z7rkxnxmnn1npvkvda7636hjpm4qk7cnfzz98387"))
4843 (search-patches "java-commons-collections-fix-java8.patch"))))
4845 (substitute-keyword-arguments (package-arguments java-commons-collections4)
4847 `(modify-phases ,phases
4848 ;; The manifest is required by the build procedure
4849 (add-before 'build 'add-manifest
4851 (mkdir-p "build/conf")
4852 (call-with-output-file "build/conf/MANIFEST.MF"
4854 (format file "Manifest-Version: 1.0\n")))
4857 (install-jars "build"))))))))
4859 (define java-commons-collections-test-classes
4861 (inherit java-commons-collections)
4863 `(#:jar-name "commons-collections-test-classes.jar"
4864 #:source-dir "src/test"
4867 `(("collection" ,java-commons-collections)))))
4869 (define-public java-commons-beanutils
4871 (name "java-commons-beanutils")
4875 (uri (string-append "mirror://apache/commons/beanutils/source/"
4876 "commons-beanutils-" version "-src.tar.gz"))
4879 "03cs0bq3sl1sdc7py9g3qnf8n9h473nrkvd3d251kaqv6a2ab7qk"))))
4880 (build-system ant-build-system)
4882 `(#:test-target "test"
4885 (modify-phases %standard-phases
4887 (lambda* (#:key outputs #:allow-other-keys)
4888 (rename-file (string-append "dist/commons-beanutils-" ,version
4890 "commons-beanutils.jar")
4891 (install-file "commons-beanutils.jar"
4892 (string-append (assoc-ref outputs "out") "/share/java/"))
4895 `(("logging" ,java-commons-logging-minimal)
4896 ("collections" ,java-commons-collections)))
4898 `(("junit" ,java-junit)
4899 ("collections-test" ,java-commons-collections-test-classes)))
4900 (home-page "https://commons.apache.org/beanutils/")
4901 (synopsis "Dynamically set or get properties in Java")
4902 (description "BeanUtils provides a simplified interface to reflection and
4903 introspection to set or get dynamically determined properties through their
4904 setter and getter method.")
4905 (license license:asl2.0)))
4907 (define-public java-commons-io
4909 (name "java-commons-io")
4914 (uri (string-append "mirror://apache/commons/io/source/"
4915 "commons-io-" version "-src.tar.gz"))
4918 "0q5y41jrcjvx9hzs47x5kdhnasdy6rm4bzqd2jxl02w717m7a7v3"))))
4919 (build-system ant-build-system)
4920 (outputs '("out" "doc"))
4922 `(#:test-target "test"
4924 (list (string-append "-Djunit.jar="
4925 (assoc-ref %build-inputs "java-junit")
4926 "/share/java/junit.jar"))
4928 (modify-phases %standard-phases
4929 (add-after 'build 'build-javadoc ant-build-javadoc)
4930 (replace 'install (install-jars "target"))
4931 (add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
4933 `(("java-junit" ,java-junit)
4934 ("java-hamcrest-core" ,java-hamcrest-core)))
4935 (home-page "https://commons.apache.org/io/")
4936 (synopsis "Common useful IO related classes")
4937 (description "Commons-IO contains utility classes, stream implementations,
4938 file filters and endian classes.")
4939 (license license:asl2.0)))
4941 (define-public java-commons-exec-1.1
4943 (name "java-commons-exec")
4948 (uri (string-append "mirror://apache/commons/exec/source/"
4949 "commons-exec-" version "-src.tar.gz"))
4952 "025dk8xgj10lxwwwqp0hng2rn7fr4vcirxzydqzx9k4dim667alk"))))
4953 (build-system ant-build-system)
4955 `(#:test-target "test"
4957 (list (string-append "-Dmaven.junit.jar="
4958 (assoc-ref %build-inputs "java-junit")
4959 "/share/java/junit.jar"))
4961 (modify-phases %standard-phases
4962 (add-before 'build 'delete-network-tests
4964 (delete-file "src/test/java/org/apache/commons/exec/DefaultExecutorTest.java")
4965 (substitute* "src/test/java/org/apache/commons/exec/TestRunner.java"
4966 (("suite\\.addTestSuite\\(DefaultExecutorTest\\.class\\);") ""))
4968 ;; The "build" phase automatically tests.
4970 (replace 'install (install-jars "target")))))
4972 `(("java-junit" ,java-junit)))
4973 (home-page "https://commons.apache.org/proper/commons-exec/")
4974 (synopsis "Common program execution related classes")
4975 (description "Commons-Exec simplifies executing external processes.")
4976 (license license:asl2.0)))
4978 (define-public java-commons-exec
4980 (inherit java-commons-exec-1.1)
4985 (uri (string-append "mirror://apache/commons/exec/source/"
4986 "commons-exec-" version "-src.tar.gz"))
4989 "17yb4h6f8l49c5iyyvda4z2nmw0bxrx857nrwmsr7mmpb7x441yv"))))
4991 `(#:test-target "test"
4993 (list (string-append "-Dmaven.junit.jar="
4994 (assoc-ref %build-inputs "java-junit")
4995 "/share/java/junit.jar")
4996 "-Dmaven.compiler.source=1.7"
4997 "-Dmaven.compiler.target=1.7")
4999 (modify-phases %standard-phases
5000 (add-before 'build 'delete-network-tests
5001 (lambda* (#:key inputs #:allow-other-keys)
5002 ;; This test hangs indefinitely.
5003 (delete-file "src/test/java/org/apache/commons/exec/issues/Exec60Test.java")
5004 (substitute* "src/test/java/org/apache/commons/exec/issues/Exec41Test.java"
5005 (("ping -c 10 127.0.0.1") "sleep 10"))
5006 (substitute* "src/test/java/org/apache/commons/exec/issues/Exec49Test.java"
5008 (call-with-output-file "src/test/scripts/ping.sh"
5010 (format port "#!~a/bin/sh\nsleep $1\n"
5011 (assoc-ref inputs "bash"))))
5013 ;; The "build" phase automatically tests.
5015 (replace 'install (install-jars "target")))))
5017 `(("java-junit" ,java-junit)
5018 ("java-hamcrest-core" ,java-hamcrest-core)))))
5020 (define-public java-commons-lang
5022 (name "java-commons-lang")
5027 (uri (string-append "mirror://apache/commons/lang/source/"
5028 "commons-lang-" version "-src.tar.gz"))
5030 (base32 "1mxwagqadzx1b2al7i0z1v0r235aj2njdyijf02szq0vhmqrfiq5"))))
5031 (build-system ant-build-system)
5032 (outputs '("out" "doc"))
5034 `(#:test-target "test"
5035 #:test-exclude (list "**/Abstract*.java" "**/Random*.java")
5037 (modify-phases %standard-phases
5038 (add-after 'build 'build-javadoc ant-build-javadoc)
5039 (add-before 'check 'disable-failing-test
5041 ;; Disable a failing test
5042 (substitute* "src/test/java/org/apache/commons/lang/\
5043 time/FastDateFormatTest.java"
5044 (("public void testFormat\\(\\)")
5045 "public void disabled_testFormat()"))
5047 (replace 'install (install-jars "target"))
5048 (add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
5050 `(("java-junit" ,java-junit)))
5051 (home-page "https://commons.apache.org/lang/")
5052 (synopsis "Extension of the java.lang package")
5053 (description "The Commons Lang components contains a set of Java classes
5054 that provide helper methods for standard Java classes, especially those found
5055 in the @code{java.lang} package in the Sun JDK. The following classes are
5059 @item StringUtils - Helper for @code{java.lang.String}.
5060 @item CharSetUtils - Methods for dealing with @code{CharSets}, which are sets
5061 of characters such as @code{[a-z]} and @code{[abcdez]}.
5062 @item RandomStringUtils - Helper for creating randomised strings.
5063 @item NumberUtils - Helper for @code{java.lang.Number} and its subclasses.
5064 @item NumberRange - A range of numbers with an upper and lower bound.
5065 @item ObjectUtils - Helper for @code{java.lang.Object}.
5066 @item SerializationUtils - Helper for serializing objects.
5067 @item SystemUtils - Utility class defining the Java system properties.
5068 @item NestedException package - A sub-package for the creation of nested
5070 @item Enum package - A sub-package for the creation of enumerated types.
5071 @item Builder package - A sub-package for the creation of @code{equals},
5072 @code{hashCode}, @code{compareTo} and @code{toString} methods.
5074 (license license:asl2.0)))
5076 (define-public java-commons-lang3
5078 (name "java-commons-lang3")
5083 (uri (string-append "mirror://apache/commons/lang/source/"
5084 "commons-lang3-" version "-src.tar.gz"))
5086 (base32 "0xpshb9spjhplq5a7mr0y1bgfw8190ik4xj8f569xidfcki1d6kg"))))
5087 (build-system ant-build-system)
5088 (outputs '("out" "doc"))
5090 `(#:test-target "test"
5092 (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-all"))
5093 (junit (assoc-ref %build-inputs "java-junit"))
5094 (easymock (assoc-ref %build-inputs "java-easymock"))
5095 (io (assoc-ref %build-inputs "java-commons-io")))
5096 (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
5097 (string-append "-Dhamcrest.jar=" hamcrest
5098 "/share/java/hamcrest-all.jar")
5099 (string-append "-Dcommons-io.jar=" io
5100 "/share/java/commons-io-"
5101 ,(package-version java-commons-io)
5103 (string-append "-Deasymock.jar=" easymock
5104 "/share/java/easymock.jar")))
5106 (modify-phases %standard-phases
5107 (add-after 'build 'build-javadoc ant-build-javadoc)
5108 (replace 'install (install-jars "target"))
5109 (add-after 'install 'install-doc (install-javadoc "target/apidocs")))))
5111 `(("java-junit" ,java-junit)
5112 ("java-commons-io" ,java-commons-io)
5113 ("java-hamcrest-all" ,java-hamcrest-all)
5114 ("java-easymock" ,java-easymock)))
5115 (home-page "https://commons.apache.org/lang/")
5116 (synopsis "Extension of the java.lang package")
5117 (description "The Commons Lang components contains a set of Java classes
5118 that provide helper methods for standard Java classes, especially those found
5119 in the @code{java.lang} package. The following classes are included:
5122 @item StringUtils - Helper for @code{java.lang.String}.
5123 @item CharSetUtils - Methods for dealing with @code{CharSets}, which are sets of
5124 characters such as @code{[a-z]} and @code{[abcdez]}.
5125 @item RandomStringUtils - Helper for creating randomised strings.
5126 @item NumberUtils - Helper for @code{java.lang.Number} and its subclasses.
5127 @item NumberRange - A range of numbers with an upper and lower bound.
5128 @item ObjectUtils - Helper for @code{java.lang.Object}.
5129 @item SerializationUtils - Helper for serializing objects.
5130 @item SystemUtils - Utility class defining the Java system properties.
5131 @item NestedException package - A sub-package for the creation of nested
5133 @item Enum package - A sub-package for the creation of enumerated types.
5134 @item Builder package - A sub-package for the creation of @code{equals},
5135 @code{hashCode}, @code{compareTo} and @code{toString} methods.
5137 (license license:asl2.0)))
5139 (define-public java-commons-bsf
5141 (name "java-commons-bsf")
5145 (uri (string-append "mirror://apache/commons/bsf/source/bsf-src-"
5149 "1sbamr8jl32p1jgf59nw0b2w9qivyg145954hm6ly54cfgsqrdas"))
5150 (modules '((guix build utils)))
5153 (for-each delete-file
5154 (find-files "." "\\.jar$"))
5156 (build-system ant-build-system)
5158 `(#:build-target "jar"
5159 #:tests? #f; No test file
5160 #:modules ((guix build ant-build-system)
5162 (guix build java-utils)
5165 (modify-phases %standard-phases
5166 (add-before 'build 'create-properties
5168 ;; This file is missing from the distribution
5169 (call-with-output-file "build-properties.xml"
5172 `(project (@ (basedir ".") (name "build-properties") (default ""))
5173 (property (@ (name "project.name") (value "bsf")))
5174 (property (@ (name "source.level") (value "1.5")))
5175 (property (@ (name "build.lib") (value "build/jar")))
5176 (property (@ (name "src.dir") (value "src")))
5177 (property (@ (name "tests.dir") (value "src/org/apache/bsf/test")))
5178 (property (@ (name "build.tests") (value "build/test-classes")))
5179 (property (@ (name "build.dest") (value "build/classes"))))
5182 (replace 'install (install-jars "build")))))
5184 `(("java-junit" ,java-junit)))
5186 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)))
5187 (home-page "https://commons.apache.org/proper/commons-bsf")
5188 (synopsis "Bean Scripting Framework")
5189 (description "The Bean Scripting Framework (BSF) is a set of Java classes
5190 which provides scripting language support within Java applications, and access
5191 to Java objects and methods from scripting languages. BSF allows one to write
5192 JSPs in languages other than Java while providing access to the Java class
5193 library. In addition, BSF permits any Java application to be implemented in
5194 part (or dynamically extended) by a language that is embedded within it. This
5195 is achieved by providing an API that permits calling scripting language engines
5196 from within Java, as well as an object registry that exposes Java objects to
5197 these scripting language engines.")
5198 (license license:asl2.0)))
5200 (define-public java-commons-jxpath
5202 (name "java-commons-jxpath")
5206 (uri (string-append "mirror://apache/commons/jxpath/source/"
5207 "commons-jxpath-" version "-src.tar.gz"))
5210 "1rpgg31ayn9fwr4bfi2i1ij0npcg79ad2fv0w9hacvawsyc42cfs"))))
5211 (build-system ant-build-system)
5213 `(#:jar-name "commons-jxpath.jar"
5214 ;; tests require more dependencies, including mockrunner which depends on old software
5216 #:source-dir "src/java"))
5218 `(("servlet" ,java-classpathx-servletapi)
5219 ("java-jdom" ,java-jdom)
5220 ("java-commons-beanutils" ,java-commons-beanutils)))
5222 `(("java-junit" ,java-junit)))
5223 (home-page "https://commons.apache.org/jxpath/")
5224 (synopsis "Simple interpreter of an expression language called XPath.")
5225 (description "The org.apache.commons.jxpath package defines a simple
5226 interpreter of an expression language called XPath. JXPath applies XPath
5227 expressions to graphs of objects of all kinds: JavaBeans, Maps, Servlet
5228 contexts, DOM etc, including mixtures thereof.")
5229 (license license:asl2.0)))
5231 (define-public java-commons-pool
5233 (name "java-commons-pool")
5237 (uri (string-append "mirror://apache/commons/pool/source/"
5238 "commons-pool2-" version "-src.tar.gz"))
5241 "1fi1hgqmq01bs6azbj3sfswxzadp2r8sjjfiq6ryilz1m50kvrv6"))))
5243 `(#:jar-name "common-pool.jar"
5244 #:source-dir "src/main/java"
5246 (list "**/PerformanceTest.java")))
5247 (build-system ant-build-system)
5249 `(("java-cglib" ,java-cglib)))
5251 `(("java-junit" ,java-junit)
5252 ("java-hamcrest-core" ,java-hamcrest-core)
5253 ("java-asm" ,java-asm)
5254 ("java-objenesis" ,java-objenesis)))
5255 (home-page "https://commons.apache.org/proper/commons-pool/")
5256 (synopsis "Object-pooling API in Java")
5257 (description "The commons-pool package provides an object-pooling API
5258 and a number of object pool implementations. This package defines a
5259 handful of pooling interfaces and some base classes that may be useful when
5260 creating new pool implementations.")
5261 (license license:asl2.0)))
5263 (define-public java-commons-dbcp
5265 (name "java-commons-dbcp")
5269 (uri (string-append "mirror://apache/commons/dbcp/source/"
5270 "commons-dbcp2-" version "-src.tar.gz"))
5273 "0axbvcbnf2l70fc3ybrlp3siw2w4ka9mia2pnx4py8gz54cpw3rc"))))
5275 `(#:source-dir "src/main/java"
5276 #:jar-name "java-commons-dbcp.jar"
5277 #:tests? #f)); requires apache-geronimo
5279 `(("java-commons-pool" ,java-commons-pool)
5280 ("java-commons-logging" ,java-commons-logging-minimal)
5281 ("java-jboss-transaction-api-spec" ,java-jboss-transaction-api-spec)))
5283 `(("java-junit" ,java-junit)))
5284 (build-system ant-build-system)
5285 (home-page "https://commons.apache.org/proper/commons-dbcp/")
5286 (synopsis "Database Connection Pool for Java")
5287 (description "Commons-dbcp allows you to share a pool of database
5288 connections between users. Creating a new connection for each user can be
5289 time consuming and even unfeasible when the number of simultaneous users is
5290 very large. This package provides a way to share a poole of connections to
5292 (license license:asl2.0)))
5294 (define-public java-commons-jcs
5296 (name "java-commons-jcs")
5300 (uri (string-append "mirror://apache/commons/jcs/source/"
5301 "commons-jcs-dist-" version "-src.tar.gz"))
5304 "0syhq2npjbrl0azqfjm0gvash1qd5qjy4qmysxcrqjsk0nf9fa1q"))))
5305 (build-system ant-build-system)
5307 `(#:jar-name "commons-jcs.jar"
5308 #:source-dir "commons-jcs-core/src/main/java"
5309 #:test-dir "commons-jcs-core/src/test"
5310 #:tests? #f; requires hsqldb
5312 (modify-phases %standard-phases
5313 (add-before 'build 'prepare
5315 (with-directory-excursion
5316 "commons-jcs-core/src/main/java/org/apache/commons/jcs"
5318 "auxiliary/disk/jdbc/dsfactory/SharedPoolDataSourceFactory.java"
5319 (("commons.dbcp") "commons.dbcp2")
5320 ((".*\\.setMaxActive.*") ""))
5321 ;;; Remove dependency on velocity-tools
5322 (delete-file "admin/servlet/JCSAdminServlet.java"))
5325 `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
5326 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
5327 ("java-commons-httpclient" ,java-commons-httpclient)
5328 ("java-commons-dbcp" ,java-commons-dbcp)))
5330 `(("java-junit" ,java-junit)))
5331 (home-page "https://commons.apache.org/proper/commons-jcs/")
5332 (synopsis "Distributed caching system in Java")
5333 (description "JCS is a distributed caching system written in Java. It
5334 is intended to speed up applications by providing a means to manage cached
5335 data of various dynamic natures. Like any caching system, JCS is most useful
5336 for high read, low put applications. Latency times drop sharply and
5337 bottlenecks move away from the database in an effectively cached system.")
5338 (license license:asl2.0)))
5340 (define-public java-jsr250
5342 (name "java-jsr250")
5346 (uri (string-append "https://repo1.maven.org/maven2/"
5347 "javax/annotation/javax.annotation-api/"
5348 version "/javax.annotation-api-"
5349 version "-sources.jar"))
5352 "08clh8n4n9wfglf75qsqfjs6yf79f7x6hqx38cn856pksszv50kz"))))
5353 (build-system ant-build-system)
5355 `(#:tests? #f ; no tests included
5357 #:jar-name "jsr250.jar"))
5358 (home-page "https://jcp.org/en/jsr/detail?id=250")
5359 (synopsis "Security-related annotations")
5360 (description "This package provides annotations for security. It provides
5361 packages in the @code{javax.annotation} and @code{javax.annotation.security}
5363 ;; either cddl or gpl2 only, with classpath exception
5364 (license (list license:cddl1.0
5367 (define-public java-jsr305
5369 (name "java-jsr305")
5373 (uri (string-append "https://repo1.maven.org/maven2/"
5374 "com/google/code/findbugs/"
5375 "jsr305/" version "/jsr305-"
5376 version "-sources.jar"))
5379 "1rh6jin9v7jqpq3kf1swl868l8i94r636n03pzpsmgr8v0lh9j2n"))))
5380 (build-system ant-build-system)
5382 `(#:tests? #f ; no tests included
5383 #:jar-name "jsr305.jar"))
5384 (home-page "http://findbugs.sourceforge.net/")
5385 (synopsis "Annotations for the static analyzer called findbugs")
5386 (description "This package provides annotations for the findbugs package.
5387 It provides packages in the @code{javax.annotations} namespace.")
5388 (license license:asl2.0)))
5390 (define-public java-guava
5393 ;; This is the last release of Guava that can be built with Java 7.
5397 (uri (string-append "https://github.com/google/guava/"
5398 "releases/download/v" version
5399 "/guava-" version "-sources.jar"))
5402 "1gawrs5gi6j5hcfxdgpnfli75vb9pfi4sn09pnc8xacr669yajwr"))))
5403 (build-system ant-build-system)
5405 `(#:tests? #f ; no tests included
5406 #:jar-name "guava.jar"
5408 (modify-phases %standard-phases
5409 (add-after 'unpack 'trim-sources
5411 (with-directory-excursion "src/com/google/common"
5412 ;; Remove annotations to avoid extra dependencies:
5413 ;; * "j2objc" annotations are used when converting Java to
5415 ;; * "errorprone" annotations catch common Java mistakes at
5417 ;; * "IgnoreJRERequirement" is used for Android.
5418 (substitute* (find-files "." "\\.java$")
5419 (("import com.google.j2objc.*") "")
5420 (("import com.google.errorprone.annotation.*") "")
5421 (("import org.codehaus.mojo.animal_sniffer.*") "")
5422 (("@CanIgnoreReturnValue") "")
5425 (("@RetainedWith") "")
5427 (("@ForOverride") "")
5428 (("@J2ObjCIncompatible") "")
5429 (("@IgnoreJRERequirement") "")))
5432 `(("java-jsr305" ,java-jsr305)))
5433 (home-page "https://github.com/google/guava")
5434 (synopsis "Google core libraries for Java")
5435 (description "Guava is a set of core libraries that includes new
5436 collection types (such as multimap and multiset), immutable collections, a
5437 graph library, functional types, an in-memory cache, and APIs/utilities for
5438 concurrency, I/O, hashing, primitives, reflection, string processing, and much
5440 (license license:asl2.0)))
5442 ;; The java-commons-logging package provides adapters to many different
5443 ;; logging frameworks. To avoid an excessive dependency graph we try to build
5444 ;; it with only a minimal set of adapters.
5445 (define-public java-commons-logging-minimal
5447 (name "java-commons-logging-minimal")
5451 (uri (string-append "mirror://apache/commons/logging/source/"
5452 "commons-logging-" version "-src.tar.gz"))
5455 "10bwcy5w8d7y39n0krlwhnp8ds3kj5zhmzj0zxnkw0qdlsjmsrj9"))))
5456 (build-system ant-build-system)
5458 `(#:tests? #f ; avoid dependency on logging frameworks
5459 #:jar-name "commons-logging-minimal.jar"
5461 (modify-phases %standard-phases
5462 (add-after 'unpack 'delete-adapters-and-tests
5464 ;; Delete all adapters except for NoOpLog, SimpleLog, and
5465 ;; LogFactoryImpl. NoOpLog is required to build; LogFactoryImpl
5466 ;; is used by applications; SimpleLog is the only actually usable
5467 ;; implementation that does not depend on another logging
5471 (delete-file (string-append
5472 "src/main/java/org/apache/commons/logging/impl/" file)))
5473 (list "Jdk13LumberjackLogger.java"
5474 "WeakHashtable.java"
5476 "ServletContextCleaner.java"
5479 "LogKitLogger.java"))
5480 (delete-file-recursively "src/test")
5482 (home-page "https://commons.apache.org/logging/")
5483 (synopsis "Common API for logging implementations")
5484 (description "The Logging package is a thin bridge between different
5485 logging implementations. A library that uses the commons-logging API can be
5486 used with any logging implementation at runtime.")
5487 (license license:asl2.0)))
5489 ;; This is the last release of the 1.x series.
5490 (define-public java-mockito-1
5492 (name "java-mockito")
5496 (uri (string-append "http://repo1.maven.org/maven2/"
5497 "org/mockito/mockito-core/" version
5498 "/mockito-core-" version "-sources.jar"))
5501 "0vmiwnwpf83g2q7kj1rislmja8fpvqkixjhawh7nxnygx6pq11kc"))))
5502 (build-system ant-build-system)
5504 `(#:jar-name "mockito.jar"
5505 #:tests? #f ; no tests included
5506 ;; FIXME: patch-and-repack does not support jars, so we have to apply
5507 ;; patches in build phases.
5509 (modify-phases %standard-phases
5510 ;; Mockito was developed against a different version of hamcrest,
5511 ;; which does not require matcher implementations to provide an
5512 ;; implementation of the "describeMismatch" method. We add this
5513 ;; simple definition to pass the build with our version of hamcrest.
5514 (add-after 'unpack 'fix-hamcrest-build-error
5516 (substitute* "src/org/mockito/internal/matchers/LocalizedMatcher.java"
5517 (("public Matcher getActualMatcher\\(\\) .*" line)
5519 public void describeMismatch(Object item, Description description) {
5520 actualMatcher.describeMismatch(item, description);
5524 ;; Mockito bundles cglib. We have a cglib package, so let's use
5526 (add-after 'unpack 'use-system-libraries
5528 (with-directory-excursion "src/org/mockito/internal/creation/cglib"
5529 (substitute* '("CGLIBHacker.java"
5530 "CglibMockMaker.java"
5531 "ClassImposterizer.java"
5532 "DelegatingMockitoMethodProxy.java"
5533 "MethodInterceptorFilter.java"
5534 "MockitoNamingPolicy.java"
5535 "SerializableMockitoMethodProxy.java"
5536 "SerializableNoOp.java")
5537 (("import org.mockito.cglib") "import net.sf.cglib")))
5540 `(("java-junit" ,java-junit)
5541 ("java-objenesis" ,java-objenesis)
5542 ("java-cglib" ,java-cglib)
5543 ("java-hamcrest-core" ,java-hamcrest-core)))
5544 (home-page "http://mockito.org")
5545 (synopsis "Mockito is a mock library for Java")
5546 (description "Mockito is a mocking library for Java which lets you write
5547 tests with a clean and simple API. It generates mocks using reflection, and
5548 it records all mock invocations, including methods arguments.")
5549 (license license:asl2.0)))
5551 (define-public java-httpcomponents-httpcore
5553 (name "java-httpcomponents-httpcore")
5557 (uri (string-append "mirror://apache//httpcomponents/httpcore/"
5558 "source/httpcomponents-core-"
5559 version "-src.tar.gz"))
5562 "02bwcf38y4vgwq7kj2s6q7qrmma641r5lacivm16kgxvb2j6h1vy"))))
5563 (build-system ant-build-system)
5565 `(#:jar-name "httpcomponents-httpcore.jar"
5567 (modify-phases %standard-phases
5568 (add-after 'unpack 'chdir
5569 (lambda _ (chdir "httpcore") #t)))))
5571 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)
5572 ("java-commons-lang3" ,java-commons-lang3)))
5574 `(("java-junit" ,java-junit)
5575 ("java-mockito" ,java-mockito-1)))
5576 (home-page "https://hc.apache.org/httpcomponents-core-4.4.x/index.html")
5577 (synopsis "Low level HTTP transport components")
5578 (description "HttpCore is a set of low level HTTP transport components
5579 that can be used to build custom client and server side HTTP services with a
5580 minimal footprint. HttpCore supports two I/O models: blocking I/O model based
5581 on the classic Java I/O and non-blocking, event driven I/O model based on Java
5584 This package provides the blocking I/O model library.")
5585 (license license:asl2.0)))
5587 (define-public java-httpcomponents-httpcore-nio
5588 (package (inherit java-httpcomponents-httpcore)
5589 (name "java-httpcomponents-httpcore-nio")
5591 `(#:jar-name "httpcomponents-httpcore-nio.jar"
5593 (modify-phases %standard-phases
5594 (add-after 'unpack 'chdir
5595 (lambda _ (chdir "httpcore-nio") #t)))))
5597 `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
5598 ("java-hamcrest-core" ,java-hamcrest-core)
5599 ,@(package-inputs java-httpcomponents-httpcore)))
5600 (description "HttpCore is a set of low level HTTP transport components
5601 that can be used to build custom client and server side HTTP services with a
5602 minimal footprint. HttpCore supports two I/O models: blocking I/O model based
5603 on the classic Java I/O and non-blocking, event driven I/O model based on Java
5606 This package provides the non-blocking I/O model library based on Java
5609 (define-public java-httpcomponents-httpcore-ab
5610 (package (inherit java-httpcomponents-httpcore)
5611 (name "java-httpcomponents-httpcore-ab")
5613 `(#:jar-name "httpcomponents-httpcore-ab.jar"
5615 (modify-phases %standard-phases
5616 (add-after 'unpack 'chdir
5617 (lambda _ (chdir "httpcore-ab") #t)))))
5619 `(("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
5620 ("java-commons-cli" ,java-commons-cli)
5621 ("java-hamcrest-core" ,java-hamcrest-core)
5622 ,@(package-inputs java-httpcomponents-httpcore)))
5623 (synopsis "Apache HttpCore benchmarking tool")
5624 (description "This package provides the HttpCore benchmarking tool. It is
5625 an Apache AB clone based on HttpCore.")))
5627 (define-public java-httpcomponents-httpclient
5629 (name "java-httpcomponents-httpclient")
5633 (uri (string-append "mirror://apache/httpcomponents/httpclient/"
5634 "source/httpcomponents-client-"
5635 version "-src.tar.gz"))
5638 "1428399s7qy3cim5wc6f3ks4gl9nf9vkjpfmnlap3jflif7g2pj1"))))
5639 (build-system ant-build-system)
5641 `(#:jar-name "httpcomponents-httpclient.jar"
5643 (modify-phases %standard-phases
5644 (add-after 'unpack 'chdir
5645 (lambda _ (chdir "httpclient") #t)))))
5647 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)
5648 ("java-commons-codec" ,java-commons-codec)
5649 ("java-hamcrest-core" ,java-hamcrest-core)
5650 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
5651 ("java-mockito" ,java-mockito-1)
5652 ("java-junit" ,java-junit)))
5653 (home-page "https://hc.apache.org/httpcomponents-client-ga/")
5654 (synopsis "HTTP client library for Java")
5655 (description "Although the @code{java.net} package provides basic
5656 functionality for accessing resources via HTTP, it doesn't provide the full
5657 flexibility or functionality needed by many applications. @code{HttpClient}
5658 seeks to fill this void by providing an efficient, up-to-date, and
5659 feature-rich package implementing the client side of the most recent HTTP
5660 standards and recommendations.")
5661 (license license:asl2.0)))
5663 (define-public java-httpcomponents-httpmime
5664 (package (inherit java-httpcomponents-httpclient)
5665 (name "java-httpcomponents-httpmime")
5667 `(#:jar-name "httpcomponents-httpmime.jar"
5669 (modify-phases %standard-phases
5670 (add-after 'unpack 'chdir
5671 (lambda _ (chdir "httpmime") #t)))))
5673 `(("java-httpcomponents-httpclient" ,java-httpcomponents-httpclient)
5674 ("java-httpcomponents-httpcore" ,java-httpcomponents-httpcore)
5675 ("java-junit" ,java-junit)
5676 ("java-hamcrest-core" ,java-hamcrest-core)))))
5678 (define-public java-commons-net
5680 (name "java-commons-net")
5684 (uri (string-append "mirror://apache/commons/net/source/"
5685 "commons-net-" version "-src.tar.gz"))
5688 "0n0cmnddk9qdqhjvka8pc6hd9mn2qi3166f1s6xk32h7rfy1adxr"))))
5689 (build-system ant-build-system)
5691 `(;; FIXME: MainTest.java tries to read "examples.properties" (which
5692 ;; should be "resources/examples/examples.properties"), but gets "null"
5695 #:jar-name "commons-net.jar"))
5697 `(("java-junit" ,java-junit)
5698 ("java-hamcrest-core" ,java-hamcrest-core)))
5699 (home-page "https://commons.apache.org/net/")
5700 (synopsis "Client library for many basic Internet protocols")
5701 (description "The Apache Commons Net library implements the client side of
5702 many basic Internet protocols. The purpose of the library is to provide
5703 fundamental protocol access, not higher-level abstractions.")
5704 (license license:asl2.0)))
5706 (define-public java-jsch
5712 (uri (string-append "mirror://sourceforge/jsch/jsch/"
5713 version "/jsch-" version ".zip"))
5716 "1lxyjwvmwa723wcf3bqn816hkvc03vz4xhbsi7bvfhrz2rpgcfq6"))))
5717 (build-system ant-build-system)
5719 `(#:build-target "dist"
5720 #:tests? #f ; no tests included
5722 (modify-phases %standard-phases
5723 (replace 'install (install-jars "dist")))))
5725 `(("unzip" ,unzip)))
5726 (home-page "http://www.jcraft.com/jsch/")
5727 (synopsis "Pure Java implementation of SSH2")
5728 (description "JSch is a pure Java implementation of SSH2. JSch allows you
5729 to connect to an SSH server and use port forwarding, X11 forwarding, file
5730 transfer, etc., and you can integrate its functionality into your own Java
5732 (license license:bsd-3)))
5734 (define-public java-commons-compress
5736 (name "java-commons-compress")
5740 (uri (string-append "mirror://apache/commons/compress/source/"
5741 "commons-compress-" version "-src.tar.gz"))
5744 "1vjqvavrn0babffn1kciz6v52ibwq2vwhzlb95hazis3lgllnxc8"))))
5745 (build-system ant-build-system)
5747 `(#:jar-name "commons-compress.jar"
5749 (modify-phases %standard-phases
5750 (add-after 'unpack 'delete-bad-tests
5752 (with-directory-excursion "src/test/java/org/apache/commons/compress/"
5753 ;; FIXME: These tests really should not fail. Maybe they are
5754 ;; indicative of problems with our Java packaging work.
5756 ;; This test fails with a null pointer exception.
5757 (delete-file "archivers/sevenz/SevenZOutputFileTest.java")
5758 ;; This test fails to open test resources.
5759 (delete-file "archivers/zip/ExplodeSupportTest.java")
5761 ;; FIXME: This test adds a dependency on powermock, which is hard to
5762 ;; package at this point.
5763 ;; https://github.com/powermock/powermock
5764 (delete-file "archivers/sevenz/SevenZNativeHeapTest.java"))
5767 `(("java-junit" ,java-junit)
5768 ("java-hamcrest-core" ,java-hamcrest-core)
5769 ("java-mockito" ,java-mockito-1)
5770 ("java-xz" ,java-xz)))
5771 (home-page "https://commons.apache.org/proper/commons-compress/")
5772 (synopsis "Java library for working with compressed files")
5773 (description "The Apache Commons Compress library defines an API for
5774 working with compressed files such as ar, cpio, Unix dump, tar, zip, gzip, XZ,
5775 Pack200, bzip2, 7z, arj, lzma, snappy, DEFLATE, lz4 and Z files.")
5776 (license license:asl2.0)))
5778 (define-public java-commons-csv
5780 (name "java-commons-csv")
5784 (uri (string-append "mirror://apache/commons/csv/source/"
5785 "commons-csv-" version "-src.tar.gz"))
5788 "1l89m0fm2s3xx3v3iynvangymfg2vlyngaj6fgsi457nmsw7m7ij"))))
5789 (build-system ant-build-system)
5791 `(#:jar-name "commons-csv.jar"
5792 #:source-dir "src/main/java"
5793 #:tests? #f)); FIXME: requires java-h2
5795 `(("java-hamcrest-core" ,java-hamcrest-core)
5796 ("java-commons-io" ,java-commons-io)
5797 ("java-commons-lang3" ,java-commons-lang3)
5798 ("junit" ,java-junit)))
5799 (home-page "https://commons.apache.org/proper/commons-csv/")
5800 (synopsis "Read and write CSV documents")
5801 (description "Commons CSV reads and writes files in variations of the Comma
5802 Separated Value (CSV) format. The most common CSV formats are predefined in the
5806 @item Microsoft Excel
5807 @item Informix UNLOAD
5808 @item Informix UNLOAD CSV
5814 Custom formats can be created using a fluent style API.")
5815 (license license:asl2.0)))
5817 (define-public java-osgi-annotation
5819 (name "java-osgi-annotation")
5823 (uri (string-append "https://repo1.maven.org/maven2/"
5824 "org/osgi/org.osgi.annotation/" version "/"
5825 "org.osgi.annotation-" version "-sources.jar"))
5828 "1q718mb7gqg726rh6pc2hcisn8v50nv35abbir0jypmffhiii85w"))))
5829 (build-system ant-build-system)
5831 `(#:tests? #f ; no tests
5832 #:jar-name "osgi-annotation.jar"))
5833 (home-page "https://www.osgi.org")
5834 (synopsis "Annotation module of OSGi framework")
5836 "OSGi, for Open Services Gateway initiative framework, is a module system
5837 and service platform for the Java programming language. This package contains
5838 the OSGi annotation module, providing additional services to help dynamic
5840 (license license:asl2.0)))
5842 (define-public java-osgi-core
5844 (name "java-osgi-core")
5848 (uri (string-append "https://repo1.maven.org/maven2/"
5849 "org/osgi/org.osgi.core/" version "/"
5850 "org.osgi.core-" version "-sources.jar"))
5853 "19bpf5jx32jq9789gyhin35q5v7flmw0p9mk7wbgqpxqfmxyiabv"))))
5854 (build-system ant-build-system)
5856 `(#:tests? #f ; no tests
5857 #:jar-name "osgi-core.jar"))
5859 `(("java-osgi-annotation" ,java-osgi-annotation)))
5860 (home-page "https://www.osgi.org")
5861 (synopsis "Core module of OSGi framework")
5863 "OSGi, for Open Services Gateway initiative framework, is a module system
5864 and service platform for the Java programming language. This package contains
5865 the OSGi Core module.")
5866 (license license:asl2.0)))
5868 (define-public java-osgi-service-event
5870 (name "java-osgi-service-event")
5874 (uri (string-append "https://repo1.maven.org/maven2/"
5875 "org/osgi/org.osgi.service.event/"
5876 version "/org.osgi.service.event-"
5877 version "-sources.jar"))
5880 "1nyhlgagwym75bycnjczwbnpymv2iw84zbhvvzk84g9q736i6qxm"))))
5881 (build-system ant-build-system)
5883 `(#:tests? #f ; no tests
5884 #:jar-name "osgi-service-event.jar"))
5886 `(("java-osgi-annotation" ,java-osgi-annotation)
5887 ("java-osgi-core" ,java-osgi-core)))
5888 (home-page "https://www.osgi.org")
5889 (synopsis "OSGi service event module")
5891 "OSGi, for Open Services Gateway initiative framework, is a module system
5892 and service platform for the Java programming language. This package contains
5893 the OSGi @code{org.osgi.service.event} module.")
5894 (license license:asl2.0)))
5896 (define-public java-eclipse-osgi
5898 (name "java-eclipse-osgi")
5902 (uri (string-append "https://repo1.maven.org/maven2/"
5903 "org/eclipse/platform/org.eclipse.osgi/"
5904 version "/org.eclipse.osgi-"
5905 version "-sources.jar"))
5908 "00cqc6lb29n0zv68b4l842vzkwawvbr7gshfdygsk8sicvcq2c7b"))))
5909 (build-system ant-build-system)
5911 `(#:tests? #f ; no tests included
5912 #:jar-name "eclipse-equinox-osgi.jar"))
5914 `(("java-osgi-annotation" ,java-osgi-annotation)))
5915 (home-page "http://www.eclipse.org/equinox/")
5916 (synopsis "Eclipse Equinox OSGi framework")
5917 (description "This package provides an implementation of the OSGi Core
5919 (license license:epl1.0)))
5921 (define-public java-eclipse-equinox-common
5923 (name "java-eclipse-equinox-common")
5924 (version "3.10.200")
5927 (uri (string-append "https://repo1.maven.org/maven2/"
5928 "org/eclipse/platform/org.eclipse.equinox.common/"
5929 version "/org.eclipse.equinox.common-"
5930 version "-sources.jar"))
5933 "1yn8ij6xsljlf35sr2l7wvyvc0ss4n1rv0ry5zkgb49dj4hyrqrj"))))
5934 (build-system ant-build-system)
5936 `(#:tests? #f ; no tests included
5937 #:jar-name "eclipse-equinox-common.jar"))
5939 `(("java-eclipse-osgi" ,java-eclipse-osgi)))
5940 (home-page "http://www.eclipse.org/equinox/")
5941 (synopsis "Common Eclipse runtime")
5942 (description "This package provides the common Eclipse runtime.")
5943 (license license:epl1.0)))
5945 (define-public java-eclipse-core-jobs
5947 (name "java-eclipse-core-jobs")
5951 (uri (string-append "https://repo1.maven.org/maven2/"
5952 "org/eclipse/platform/org.eclipse.core.jobs/"
5953 version "/org.eclipse.core.jobs-"
5954 version "-sources.jar"))
5957 "0395b8lh0km8vhzjnchvs1rii1qz48hyvb2wqfaq4yhklbwihq4b"))))
5958 (build-system ant-build-system)
5960 `(#:tests? #f ; no tests included
5961 #:jar-name "eclipse-core-jobs.jar"))
5963 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
5964 ("java-eclipse-osgi" ,java-eclipse-osgi)))
5965 (home-page "http://www.eclipse.org/equinox/")
5966 (synopsis "Eclipse jobs mechanism")
5967 (description "This package provides the Eclipse jobs mechanism.")
5968 (license license:epl1.0)))
5970 (define-public java-eclipse-equinox-registry
5972 (name "java-eclipse-equinox-registry")
5976 (uri (string-append "https://repo1.maven.org/maven2/"
5977 "org/eclipse/platform/org.eclipse.equinox.registry/"
5978 version "/org.eclipse.equinox.registry-"
5979 version "-sources.jar"))
5982 "1i9sgymh2fy5vdgk5y7s3qvrlbgh4l93ddqi3v4zmca7hwrlhf9k"))))
5983 (build-system ant-build-system)
5985 `(#:tests? #f ; no tests included
5986 #:jar-name "eclipse-equinox-registry.jar"))
5988 `(("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
5989 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
5990 ("java-eclipse-osgi" ,java-eclipse-osgi)))
5991 (home-page "http://www.eclipse.org/equinox/")
5992 (synopsis "Eclipse extension registry support")
5993 (description "This package provides support for the Eclipse extension
5995 (license license:epl1.0)))
5997 (define-public java-eclipse-equinox-app
5999 (name "java-eclipse-equinox-app")
6003 (uri (string-append "https://repo1.maven.org/maven2/"
6004 "org/eclipse/platform/org.eclipse.equinox.app/"
6005 version "/org.eclipse.equinox.app-"
6006 version "-sources.jar"))
6009 "0nhvbp93y203ar7y59gb0mz3w2d3jlqhr0c9hii9bcfpmr7imdab"))))
6010 (build-system ant-build-system)
6012 `(#:tests? #f ; no tests included
6013 #:jar-name "eclipse-equinox-app.jar"))
6015 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6016 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6017 ("java-eclipse-osgi" ,java-eclipse-osgi)
6018 ("java-osgi-service-event" ,java-osgi-service-event)))
6019 (home-page "http://www.eclipse.org/equinox/")
6020 (synopsis "Equinox application container")
6021 (description "This package provides the Equinox application container for
6023 (license license:epl1.0)))
6025 (define-public java-eclipse-equinox-preferences
6027 (name "java-eclipse-equinox-preferences")
6031 (uri (string-append "https://repo1.maven.org/maven2/"
6032 "org/eclipse/platform/org.eclipse.equinox.preferences/"
6033 version "/org.eclipse.equinox.preferences-"
6034 version "-sources.jar"))
6037 "0k7w6c141sqym4fy3af0qkwpy4pdh2vsjpjba6rp5fxyqa24v0a2"))))
6038 (build-system ant-build-system)
6040 `(#:tests? #f ; no tests included
6041 #:jar-name "eclipse-equinox-preferences.jar"))
6043 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6044 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6045 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6046 (home-page "http://www.eclipse.org/equinox/")
6047 (synopsis "Eclipse preferences mechanism")
6048 (description "This package provides the Eclipse preferences mechanism with
6049 the module @code{org.eclipse.equinox.preferences}.")
6050 (license license:epl1.0)))
6052 (define-public java-eclipse-core-contenttype
6054 (name "java-eclipse-core-contenttype")
6058 (uri (string-append "https://repo1.maven.org/maven2/"
6059 "org/eclipse/platform/org.eclipse.core.contenttype/"
6060 version "/org.eclipse.core.contenttype-"
6061 version "-sources.jar"))
6064 "1wcqcv7ijwv5rh748vz3x9pkmjl9w1r0k0026k56n8yjl4rrmspi"))))
6065 (build-system ant-build-system)
6067 `(#:tests? #f ; no tests included
6068 #:jar-name "eclipse-core-contenttype.jar"))
6070 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6071 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6072 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6073 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6074 (home-page "http://www.eclipse.org/")
6075 (synopsis "Eclipse content mechanism")
6076 (description "This package provides the Eclipse content mechanism in the
6077 @code{org.eclipse.core.contenttype} module.")
6078 (license license:epl1.0)))
6080 (define-public java-eclipse-core-runtime
6082 (name "java-eclipse-core-runtime")
6083 (version "3.15.100")
6086 (uri (string-append "https://repo1.maven.org/maven2/"
6087 "org/eclipse/platform/org.eclipse.core.runtime/"
6088 version "/org.eclipse.core.runtime-"
6089 version "-sources.jar"))
6092 "0l8xayacsbjvz5hypx2fv47vpw2n4dspamcfb3hx30x9hj8vmg7r"))))
6093 (build-system ant-build-system)
6095 `(#:tests? #f ; no tests included
6096 #:jar-name "eclipse-core-runtime.jar"))
6098 `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
6099 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
6100 ("java-eclipse-equinox-app" ,java-eclipse-equinox-app)
6101 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6102 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6103 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6104 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6105 (home-page "https://www.eclipse.org/")
6106 (synopsis "Eclipse core runtime")
6107 (description "This package provides the Eclipse core runtime with the
6108 module @code{org.eclipse.core.runtime}.")
6109 (license license:epl1.0)))
6111 (define-public java-eclipse-core-filesystem
6113 (name "java-eclipse-core-filesystem")
6117 (uri (string-append "https://repo1.maven.org/maven2/"
6118 "org/eclipse/platform/org.eclipse.core.filesystem/"
6119 version "/org.eclipse.core.filesystem-"
6120 version "-sources.jar"))
6123 "0km1bhwjim4rfy3pkvjhvy31kgsyf2ncx0mlkmbf5n6g57pphdyj"))))
6124 (build-system ant-build-system)
6126 `(#:tests? #f ; no tests included
6127 #:jar-name "eclipse-core-filesystem.jar"))
6129 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6130 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6131 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6132 (home-page "https://www.eclipse.org/")
6133 (synopsis "Eclipse core file system")
6134 (description "This package provides the Eclipse core file system with the
6135 module @code{org.eclipse.core.filesystem}.")
6136 (license license:epl1.0)))
6138 (define-public java-eclipse-core-expressions
6140 (name "java-eclipse-core-expressions")
6144 (uri (string-append "https://repo1.maven.org/maven2/"
6145 "org/eclipse/platform/org.eclipse.core.expressions/"
6146 version "/org.eclipse.core.expressions-"
6147 version "-sources.jar"))
6150 "18bw2l875gmygvpagpgk9l24qzbdjia4ag12nw6fi8v8yaq4987f"))))
6151 (build-system ant-build-system)
6153 `(#:tests? #f ; no tests included
6154 #:jar-name "eclipse-core-expressions.jar"))
6156 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6157 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6158 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6159 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6160 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6161 (home-page "https://www.eclipse.org/")
6162 (synopsis "Eclipse core expression language")
6163 (description "This package provides the Eclipse core expression language
6164 with the @code{org.eclipse.core.expressions} module.")
6165 (license license:epl1.0)))
6167 (define-public java-eclipse-core-variables
6169 (name "java-eclipse-core-variables")
6173 (uri (string-append "https://repo1.maven.org/maven2/"
6174 "org/eclipse/platform/org.eclipse.core.variables/"
6175 version "/org.eclipse.core.variables-"
6176 version "-sources.jar"))
6179 "12dirh03zi4n5x5cj07vzrhkmnqy6h9q10h9j605pagmpmifyxmy"))))
6180 (build-system ant-build-system)
6182 `(#:tests? #f ; no tests included
6183 #:jar-name "eclipse-core-variables.jar"))
6185 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6186 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6187 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6188 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6189 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6190 (home-page "https://www.eclipse.org/platform")
6191 (synopsis "Eclipse core variables")
6192 (description "This package provides the Eclipse core variables module
6193 @code{org.eclipse.core.variables}.")
6194 (license license:epl1.0)))
6196 (define-public java-eclipse-ant-core
6198 (name "java-eclipse-ant-core")
6202 (uri (string-append "https://repo1.maven.org/maven2/"
6203 "org/eclipse/platform/org.eclipse.ant.core/"
6204 version "/org.eclipse.ant.core-"
6205 version "-sources.jar"))
6208 "11g3if794qjlk98mz9zch22rr56sd7z63vn4i7k2icr8cq5bfqg7"))))
6209 (build-system ant-build-system)
6211 `(#:tests? #f ; no tests included
6212 #:jar-name "eclipse-ant-core.jar"))
6214 `(("java-eclipse-equinox-app" ,java-eclipse-equinox-app)
6215 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6216 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6217 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6218 ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
6219 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6220 ("java-eclipse-core-variables" ,java-eclipse-core-variables)
6221 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6222 (home-page "https://www.eclipse.org/platform")
6223 (synopsis "Ant build tool core libraries")
6224 (description "This package provides the ant build tool core libraries with
6225 the module @code{org.eclipse.ant.core}.")
6226 (license license:epl1.0)))
6228 (define-public java-eclipse-core-resources
6230 (name "java-eclipse-core-resources")
6231 (version "3.13.200")
6234 (uri (string-append "https://repo1.maven.org/maven2/"
6235 "org/eclipse/platform/org.eclipse.core.resources/"
6236 version "/org.eclipse.core.resources-"
6237 version "-sources.jar"))
6240 "1sn3b6ky72hkvxcgf9b2jkpbdh3y8lbhi9xxwv1dsiddpkkq91hs"))))
6241 (build-system ant-build-system)
6243 `(#:tests? #f ; no tests included
6244 #:jar-name "eclipse-core-resources.jar"))
6246 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6247 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6248 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6249 ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
6250 ("java-eclipse-core-expressions" ,java-eclipse-core-expressions)
6251 ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem)
6252 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
6253 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6254 ("java-eclipse-ant-core" ,java-eclipse-ant-core)
6255 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6256 (home-page "https://www.eclipse.org/")
6257 (synopsis "Eclipse core resource management")
6258 (description "This package provides the Eclipse core resource management
6259 module @code{org.eclipse.core.resources}.")
6260 (license license:epl1.0)))
6262 (define-public java-eclipse-compare-core
6264 (name "java-eclipse-compare-core")
6268 (uri (string-append "https://repo1.maven.org/maven2/"
6269 "org/eclipse/platform/org.eclipse.compare.core/"
6270 version "/org.eclipse.compare.core-"
6271 version "-sources.jar"))
6274 "10g37r0pbiffyv2wk35c6g5lwzkdipkl0kkjp41v84dln46xm4dg"))))
6275 (build-system ant-build-system)
6277 `(#:tests? #f ; no tests included
6278 #:jar-name "eclipse-compare-core.jar"))
6280 `(("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6281 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6282 ("java-eclipse-osgi" ,java-eclipse-osgi)
6283 ("java-icu4j" ,java-icu4j)))
6284 (home-page "https://www.eclipse.org/")
6285 (synopsis "Eclipse core compare support")
6286 (description "This package provides the Eclipse core compare support
6287 module @code{org.eclipse.compare.core}.")
6288 (license license:epl1.0)))
6290 (define-public java-eclipse-team-core
6292 (name "java-eclipse-team-core")
6296 (uri (string-append "https://repo1.maven.org/maven2/"
6297 "org/eclipse/platform/org.eclipse.team.core/"
6298 version "/org.eclipse.team.core-"
6299 version "-sources.jar"))
6302 "02j2jzqgb26zx2d5ahxmvijw6j4r0la90zl5c3i65x6z19ciyam7"))))
6303 (build-system ant-build-system)
6305 `(#:tests? #f ; no tests included
6306 #:jar-name "eclipse-team-core.jar"))
6308 `(("java-eclipse-compare-core" ,java-eclipse-compare-core)
6309 ("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
6310 ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem)
6311 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
6312 ("java-eclipse-core-resources" ,java-eclipse-core-resources)
6313 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6314 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6315 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6316 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6317 ("java-eclipse-osgi" ,java-eclipse-osgi)))
6318 (home-page "https://www.eclipse.org/platform")
6319 (synopsis "Eclipse team support core")
6320 (description "This package provides the Eclipse team support core module
6321 @code{org.eclipse.team.core}.")
6322 (license license:epl1.0)))
6324 (define-public java-eclipse-core-commands
6326 (name "java-eclipse-core-commands")
6330 (uri (string-append "https://repo1.maven.org/maven2/"
6331 "org/eclipse/platform/org.eclipse.core.commands/"
6332 version "/org.eclipse.core.commands-"
6333 version "-sources.jar"))
6336 "0yjn482qndcfrsq3jd6vnhcylp16420f5aqkrwr8spsprjigjcr9"))))
6337 (build-system ant-build-system)
6339 `(#:tests? #f ; no tests included
6340 #:jar-name "eclipse-core-commands.jar"))
6342 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)))
6343 (home-page "https://www.eclipse.org/platform")
6344 (synopsis "Eclipse core commands")
6345 (description "This package provides Eclipse core commands in the module
6346 @code{org.eclipse.core.commands}.")
6347 (license license:epl1.0)))
6349 (define-public java-eclipse-text
6351 (name "java-eclipse-text")
6355 (uri (string-append "https://repo1.maven.org/maven2/"
6356 "org/eclipse/platform/org.eclipse.text/"
6357 version "/org.eclipse.text-"
6358 version "-sources.jar"))
6361 "0scz70vzz5qs5caji9f5q01vkqnvip7dpri1q07l8wbbdcxn4cq1"))))
6362 (build-system ant-build-system)
6364 `(#:tests? #f ; no tests included
6365 #:jar-name "eclipse-text.jar"
6367 (modify-phases %standard-phases
6368 ;; When creating a new category we must make sure that the new list
6369 ;; matches List<Position>. By default it seems to be too generic
6370 ;; (ArrayList<Object>), so we specialize it to ArrayList<Position>.
6371 ;; Without this we get this error:
6373 ;; [javac] .../src/org/eclipse/jface/text/AbstractDocument.java:376:
6374 ;; error: method put in interface Map<K,V> cannot be applied to given types;
6375 ;; [javac] fPositions.put(category, new ArrayList<>());
6377 ;; [javac] required: String,List<Position>
6378 ;; [javac] found: String,ArrayList<Object>
6379 ;; [javac] reason: actual argument ArrayList<Object> cannot be converted
6380 ;; to List<Position> by method invocation conversion
6381 ;; [javac] where K,V are type-variables:
6382 ;; [javac] K extends Object declared in interface Map
6383 ;; [javac] V extends Object declared in interface Map
6385 ;; I don't know if this is a good fix. I suspect it is not, but it
6387 (add-after 'unpack 'fix-compilation-error
6389 (substitute* "src/org/eclipse/jface/text/AbstractDocument.java"
6390 (("Positions.put\\(category, new ArrayList<>\\(\\)\\);")
6391 "Positions.put(category, new ArrayList<Position>());"))
6394 `(("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6395 ("java-eclipse-core-commands" ,java-eclipse-core-commands)
6396 ("java-icu4j" ,java-icu4j)))
6397 (home-page "http://www.eclipse.org/platform")
6398 (synopsis "Eclipse text library")
6399 (description "Platform Text is part of the Platform UI project and
6400 provides the basic building blocks for text and text editors within Eclipse
6401 and contributes the Eclipse default text editor.")
6402 (license license:epl1.0)))
6404 (define-public java-eclipse-jdt-core
6406 (name "java-eclipse-jdt-core")
6410 (uri (string-append "https://repo1.maven.org/maven2/"
6411 "org/eclipse/jdt/org.eclipse.jdt.core/"
6412 version "/org.eclipse.jdt.core-"
6413 version "-sources.jar"))
6416 "1g560yr9v2kzv34gc2m3ifpgnj7krcdd6h4gd4z83pwqacwkfz0k"))))
6417 (build-system ant-build-system)
6419 `(#:tests? #f ; no tests included
6420 #:jar-name "eclipse-jdt-core.jar"
6422 (modify-phases %standard-phases
6423 (add-after 'unpack 'move-sources
6425 (with-directory-excursion "src/jdtCompilerAdaptersrc/"
6426 (for-each (lambda (file)
6427 (install-file file (string-append "../" (dirname file))))
6428 (find-files "." ".*")))
6429 (delete-file-recursively "src/jdtCompilerAdaptersrc/")
6431 (add-before 'build 'copy-resources
6433 (with-directory-excursion "src"
6434 (for-each (lambda (file)
6435 (install-file file (string-append "../build/classes/" (dirname file))))
6436 (find-files "." ".*.(props|properties|rsc)")))
6439 `(("java-eclipse-core-contenttype" ,java-eclipse-core-contenttype)
6440 ("java-eclipse-core-filesystem" ,java-eclipse-core-filesystem)
6441 ("java-eclipse-core-jobs" ,java-eclipse-core-jobs)
6442 ("java-eclipse-core-resources" ,java-eclipse-core-resources)
6443 ("java-eclipse-core-runtime" ,java-eclipse-core-runtime)
6444 ("java-eclipse-equinox-app" ,java-eclipse-equinox-app)
6445 ("java-eclipse-equinox-common" ,java-eclipse-equinox-common)
6446 ("java-eclipse-equinox-preferences" ,java-eclipse-equinox-preferences)
6447 ("java-eclipse-equinox-registry" ,java-eclipse-equinox-registry)
6448 ("java-eclipse-osgi" ,java-eclipse-osgi)
6449 ("java-eclipse-text" ,java-eclipse-text)))
6450 (home-page "https://www.eclipse.org/jdt")
6451 (synopsis "Java development tools core libraries")
6452 (description "This package provides the core libraries of the Eclipse Java
6453 development tools.")
6454 (license license:epl1.0)))
6456 (define-public java-eclipse-jdt-compiler-apt
6458 (name "java-eclipse-jdt-compiler-apt")
6462 (uri (string-append "https://repo1.maven.org/maven2/"
6463 "org/eclipse/jdt/org.eclipse.jdt.compiler.apt/"
6464 version "/org.eclipse.jdt.compiler.apt-"
6465 version "-sources.jar"))
6468 "1s285k9p2ixdqrknb40jbbvw682n9a7l5lqpn583a8pvlzg2l6r8"))))
6469 (build-system ant-build-system)
6471 `(#:tests? #f ; no tests included
6472 #:jar-name "eclipse-jdt-compiler-apt.jar"
6475 `(("java-eclipse-jdt-core" ,java-eclipse-jdt-core)))
6476 (home-page "https://www.eclipse.org/jdt/apt/")
6477 (synopsis "Annotation processing tool")
6478 (description "APT stands for Annotation Processing Tool. APT provides a
6479 means for generating files and compiling new Java classes based on annotations
6480 found in your source code.")
6481 (license license:epl2.0)))
6483 (define-public java-javax-mail
6485 (name "java-javax-mail")
6489 (uri (string-append "https://repo1.maven.org/maven2/"
6490 "com/sun/mail/javax.mail/"
6491 version "/javax.mail-"
6492 version "-sources.jar"))
6495 "0sdlfgsc2b5s89xv1261y8i0jijcja019k2x1c8ngfn582w4jly9"))))
6496 (build-system ant-build-system)
6498 `(#:tests? #f ; no tests
6499 #:jar-name "javax-mail.jar"))
6500 (home-page "https://javamail.java.net")
6501 (synopsis "Reference implementation of the JavaMail API")
6503 "This package provides versions of the JavaMail API implementation, IMAP,
6504 SMTP, and POP3 service providers, some examples, and documentation for the
6506 ;; GPLv2 only with "classpath exception".
6507 (license license:gpl2)))
6509 (define-public java-log4j-api
6511 (name "java-log4j-api")
6515 (uri (string-append "mirror://apache/logging/log4j/" version
6516 "/apache-log4j-" version "-src.tar.gz"))
6519 "0j5p9gik0jysh37nlrckqbky12isy95cpwg2gv5fas1rcdqbraxd"))))
6520 (build-system ant-build-system)
6522 `(#:tests? #f ; tests require unpackaged software
6523 #:jar-name "log4j-api.jar"
6525 (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out")
6528 (modify-phases %standard-phases
6529 (add-after 'unpack 'enter-dir
6530 (lambda _ (chdir "log4j-api") #t))
6531 ;; FIXME: The tests require additional software that has not been
6532 ;; packaged yet, such as
6533 ;; * org.apache.maven
6534 ;; * org.apache.felix
6535 (add-after 'enter-dir 'delete-tests
6536 (lambda _ (delete-file-recursively "src/test") #t)))))
6538 `(("java-osgi-core" ,java-osgi-core)
6539 ("java-hamcrest-core" ,java-hamcrest-core)
6540 ("java-junit" ,java-junit)))
6541 (home-page "https://logging.apache.org/log4j/2.x/")
6542 (synopsis "API module of the Log4j logging framework for Java")
6544 "This package provides the API module of the Log4j logging framework for
6546 (license license:asl2.0)))
6548 (define-public java-log4j-core
6550 (inherit java-log4j-api)
6551 (name "java-log4j-core")
6553 `(("java-osgi-core" ,java-osgi-core)
6554 ("java-hamcrest-core" ,java-hamcrest-core)
6555 ("java-log4j-api" ,java-log4j-api)
6556 ("java-mail" ,java-mail)
6557 ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec)
6558 ("java-lmax-disruptor" ,java-lmax-disruptor)
6559 ("java-kafka" ,java-kafka-clients)
6560 ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
6561 ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
6562 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
6563 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)
6564 ("java-fasterxml-jackson-dataformat-xml" ,java-fasterxml-jackson-dataformat-xml)
6565 ("java-fasterxml-jackson-dataformat-yaml" ,java-fasterxml-jackson-dataformat-yaml)
6566 ("java-commons-compress" ,java-commons-compress)
6567 ("java-commons-csv" ,java-commons-csv)
6568 ("java-jeromq" ,java-jeromq)
6569 ("java-junit" ,java-junit)))
6571 `(("hamcrest" ,java-hamcrest-all)
6572 ("java-commons-io" ,java-commons-io)
6573 ("java-commons-lang3" ,java-commons-lang3)
6574 ("slf4j" ,java-slf4j-api)))
6576 `(#:tests? #f ; tests require more dependencies
6577 #:test-dir "src/test"
6578 #:source-dir "src/main/java"
6579 #:jar-name "log4j-core.jar"
6582 (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out")
6585 (modify-phases %standard-phases
6586 (add-after 'unpack 'enter-dir
6587 (lambda _ (chdir "log4j-core") #t)))))
6588 (synopsis "Core component of the Log4j framework")
6589 (description "This package provides the core component of the Log4j
6590 logging framework for Java.")))
6592 (define-public java-log4j-1.2-api
6594 (inherit java-log4j-api)
6595 (name "java-log4j-1.2-api")
6597 `(#:jar-name "java-log4j-1.2-api.jar"
6598 #:source-dir "log4j-1.2-api/src/main/java"
6600 ;; Tests require maven-model (and other maven subprojects), which is a
6601 ;; cyclic dependency.
6604 `(("log4j-api" ,java-log4j-api)
6605 ("log4j-core" ,java-log4j-core)
6606 ("osgi-core" ,java-osgi-core)
6607 ("eclipse-osgi" ,java-eclipse-osgi)
6608 ("java-lmax-disruptor" ,java-lmax-disruptor)))))
6610 (define-public java-commons-cli
6612 (name "java-commons-cli")
6616 (uri (string-append "mirror://apache/commons/cli/source/"
6617 "commons-cli-" version "-src.tar.gz"))
6620 "05hgi2z01fqz374y719gl1dxzqvzci5af071zm7vxrjg9vczipm1"))))
6621 (build-system ant-build-system)
6624 `(#:jar-name "commons-cli.jar"))
6626 `(("java-junit" ,java-junit)
6627 ("java-hamcrest-core" ,java-hamcrest-core)))
6628 (home-page "https://commons.apache.org/cli/")
6629 (synopsis "Command line arguments and options parsing library")
6630 (description "The Apache Commons CLI library provides an API for parsing
6631 command line options passed to programs. It is also able to print help
6632 messages detailing the options available for a command line tool.
6634 Commons CLI supports different types of options:
6637 @item POSIX like options (ie. tar -zxvf foo.tar.gz)
6638 @item GNU like long options (ie. du --human-readable --max-depth=1)
6639 @item Java like properties (ie. java -Djava.awt.headless=true Foo)
6640 @item Short options with value attached (ie. gcc -O2 foo.c)
6641 @item long options with single hyphen (ie. ant -projecthelp)
6644 This is a part of the Apache Commons Project.")
6645 (license license:asl2.0)))
6647 (define-public java-commons-codec
6649 (name "java-commons-codec")
6653 (uri (string-append "mirror://apache/commons/codec/source/"
6654 "commons-codec-" version "-src.tar.gz"))
6657 "1w9qg30y4s0x8gnmr2fgj4lyplfn788jqxbcz27lf5kbr6n8xr65"))))
6658 (build-system ant-build-system)
6659 (outputs '("out" "doc"))
6661 `(#:test-target "test"
6663 (let ((hamcrest (assoc-ref %build-inputs "java-hamcrest-core"))
6664 (junit (assoc-ref %build-inputs "java-junit")))
6665 (list (string-append "-Djunit.jar=" junit "/share/java/junit.jar")
6666 (string-append "-Dhamcrest.jar=" hamcrest
6667 "/share/java/hamcrest-core.jar")
6668 ;; Do not append version to jar.
6669 "-Dfinal.name=commons-codec"))
6671 (modify-phases %standard-phases
6672 (add-after 'build 'build-javadoc ant-build-javadoc)
6673 (replace 'install (install-jars "dist"))
6674 (add-after 'install 'install-doc (install-javadoc "dist/docs/api")))))
6676 `(("java-junit" ,java-junit)
6677 ("java-hamcrest-core" ,java-hamcrest-core)))
6678 (home-page "https://commons.apache.org/codec/")
6679 (synopsis "Common encoders and decoders such as Base64, Hex, Phonetic and URLs")
6680 (description "The codec package contains simple encoder and decoders for
6681 various formats such as Base64 and Hexadecimal. In addition to these widely
6682 used encoders and decoders, the codec package also maintains a collection of
6683 phonetic encoding utilities.
6685 This is a part of the Apache Commons Project.")
6686 (license license:asl2.0)))
6688 (define-public java-commons-daemon
6690 (name "java-commons-daemon")
6694 (uri (string-append "mirror://apache/commons/daemon/source/"
6695 "commons-daemon-" version "-src.tar.gz"))
6698 "141gkhfzv5v3pdhic6y4ardq2dhsa3v36j8wmmhy6f8mac48fp7n"))))
6699 (build-system ant-build-system)
6701 `(#:test-target "test"
6703 (modify-phases %standard-phases
6704 (add-after 'build 'build-javadoc ant-build-javadoc)
6705 (replace 'install (install-jars "dist"))
6706 (add-after 'install 'install-doc (install-javadoc "dist/docs/api")))))
6708 `(("java-junit" ,java-junit)))
6709 (home-page "https://commons.apache.org/daemon/")
6710 (synopsis "Library to launch Java applications as daemons")
6711 (description "The Daemon package from Apache Commons can be used to
6712 implement Java applications which can be launched as daemons. For example the
6713 program will be notified about a shutdown so that it can perform cleanup tasks
6714 before its process of execution is destroyed by the operation system.
6716 This package contains the Java library. You will also need the actual binary
6717 for your architecture which is provided by the jsvc package.
6719 This is a part of the Apache Commons Project.")
6720 (license license:asl2.0)))
6722 (define-public java-javaewah
6724 (name "java-javaewah")
6728 (uri (string-append "https://github.com/lemire/javaewah/"
6729 "archive/JavaEWAH-" version ".tar.gz"))
6732 "1n7j1r1h24wlhwv9zdcj6yqjrhma2ixwyzm15l5vrv6yqjs6753b"))))
6733 (build-system ant-build-system)
6734 (arguments `(#:jar-name "javaewah.jar"))
6736 `(("java-junit" ,java-junit)
6737 ("java-hamcrest-core" ,java-hamcrest-core)))
6738 (home-page "https://github.com/lemire/javaewah")
6739 (synopsis "Compressed alternative to the Java @code{BitSet} class")
6740 (description "This is a word-aligned compressed variant of the Java
6741 @code{Bitset} class. It provides both a 64-bit and a 32-bit RLE-like
6742 compression scheme. It can be used to implement bitmap indexes.
6744 The goal of word-aligned compression is not to achieve the best compression,
6745 but rather to improve query processing time. Hence, JavaEWAH tries to save CPU
6746 cycles, maybe at the expense of storage. However, the EWAH scheme is always
6747 more efficient storage-wise than an uncompressed bitmap (as implemented in the
6748 @code{BitSet} class by Sun).")
6749 ;; GPL2.0 derivates are explicitly allowed.
6750 (license license:asl2.0)))
6752 (define-public java-slf4j-api
6754 (name "java-slf4j-api")
6758 (uri (string-append "https://www.slf4j.org/dist/slf4j-"
6762 "13j51sgzmhhdrfa74gkal5zpip7r1440dh7zsi2c8bpb2zs1v8kb"))
6763 (modules '((guix build utils)))
6764 ;; Delete bundled jars.
6767 (for-each delete-file (find-files "." "\\.jar$"))
6769 (build-system ant-build-system)
6771 `(#:jar-name "slf4j-api.jar"
6772 #:source-dir "slf4j-api/src/main"
6773 #:test-dir "slf4j-api/src/test"
6775 (modify-phases %standard-phases
6776 (add-after 'build 'regenerate-jar
6778 ;; pom.xml ignores these files in the jar creation process. If we don't,
6779 ;; we get the error "This code should have never made it into slf4j-api.jar"
6780 (delete-file-recursively "build/classes/org/slf4j/impl")
6781 (invoke "jar" "-cf" "build/jar/slf4j-api.jar" "-C"
6782 "build/classes" ".")))
6783 (add-before 'check 'dont-test-abstract-classes
6785 ;; abstract classes are not meant to be run with junit
6786 (substitute* "build.xml"
6787 (("<include name=\"\\*\\*/\\*Test.java\" />")
6788 (string-append "<include name=\"**/*Test.java\" />"
6789 "<exclude name=\"**/MultithreadedInitializationTest"
6793 `(("java-junit" ,java-junit)
6794 ("java-hamcrest-core" ,java-hamcrest-core)))
6795 (home-page "https://www.slf4j.org/")
6796 (synopsis "Simple logging facade for Java")
6797 (description "The Simple Logging Facade for Java (SLF4J) serves as a
6798 simple facade or abstraction for various logging
6799 frameworks (e.g. @code{java.util.logging}, @code{logback}, @code{log4j})
6800 allowing the end user to plug in the desired logging framework at deployment
6802 (license license:expat)))
6804 (define java-slf4j-api-bootstrap
6806 (inherit java-slf4j-api)
6807 (name "java-slf4j-api-bootstrap")
6810 (substitute-keyword-arguments (package-arguments java-slf4j-api)
6811 ((#:tests? _ #f) #f)))))
6813 (define-public java-slf4j-simple
6815 (name "java-slf4j-simple")
6817 (source (package-source java-slf4j-api))
6818 (build-system ant-build-system)
6820 `(#:jar-name "slf4j-simple.jar"
6821 #:source-dir "slf4j-simple/src/main"
6822 #:test-dir "slf4j-simple/src/test"
6824 (modify-phases %standard-phases
6825 ;; The tests need some test classes from slf4j-api
6826 (add-before 'check 'build-slf4j-api-test-helpers
6828 ;; Add current dir to CLASSPATH ...
6830 (string-append (getcwd) ":" (getenv "CLASSPATH")))
6831 ;; ... and build test helper classes here:
6834 ,@(find-files "slf4j-api/src/test" ".*\\.java"))))))))
6836 `(("java-junit" ,java-junit)
6837 ("java-hamcrest-core" ,java-hamcrest-core)
6838 ("java-slf4j-api" ,java-slf4j-api)))
6839 (home-page "https://www.slf4j.org/")
6840 (synopsis "Simple implementation of simple logging facade for Java")
6841 (description "SLF4J binding for the Simple implementation, which outputs
6842 all events to System.err. Only messages of level INFO and higher are
6844 (license license:expat)))
6846 (define-public antlr2
6852 (uri (string-append "https://www.antlr2.org/download/antlr-"
6856 "1ffvcwdw73id0dk6pj2mlxjvbg0662qacx4ylayqcxgg381fnfl5"))
6857 (modules '((guix build utils)))
6860 (delete-file "antlr.jar")
6861 (substitute* "lib/cpp/antlr/CharScanner.hpp"
6865 "#define EOF (-1)\n"
6866 "#include <strings.h>")))
6867 (substitute* "configure"
6870 (build-system gnu-build-system)
6872 `(#:tests? #f ; no test target
6873 #:imported-modules ((guix build ant-build-system)
6874 (guix build syscalls)
6875 ,@%gnu-build-system-modules)
6876 #:modules (((guix build ant-build-system) #:prefix ant:)
6877 (guix build gnu-build-system)
6880 (modify-phases %standard-phases
6881 (add-after 'install 'strip-jar-timestamps
6882 (assoc-ref ant:%standard-phases 'strip-jar-timestamps))
6883 (add-before 'configure 'fix-timestamp
6885 (substitute* "configure"
6886 (("^TIMESTAMP.*") "TIMESTAMP=19700101\n"))
6888 (add-after 'configure 'fix-bin-ls
6890 (substitute* (find-files "." "Makefile")
6896 ("java" ,icedtea "jdk")))
6898 `(("java" ,icedtea)))
6899 (home-page "https://www.antlr2.org")
6900 (synopsis "Framework for constructing recognizers, compilers, and translators")
6901 (description "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)
6902 is a language tool that provides a framework for constructing recognizers,
6903 compilers, and translators from grammatical descriptions containing Java, C#,
6904 C++, or Python actions. ANTLR provides excellent support for tree construction,
6905 tree walking, and translation.")
6906 (license license:public-domain)))
6908 (define-public java-stringtemplate-3
6910 (name "java-stringtemplate")
6914 (uri (string-append "https://github.com/antlr/website-st4/raw/"
6915 "gh-pages/download/stringtemplate-"
6919 "086yj68np1vqhkj7483diz3km6s6y4gmwqswa7524a0ca6vxn2is"))))
6920 (build-system ant-build-system)
6922 `(#:jar-name (string-append ,name "-" ,version ".jar")
6924 #:modules ((guix build ant-build-system)
6928 (modify-phases %standard-phases
6929 (add-before 'check 'fix-tests
6931 (substitute* "build.xml"
6932 (("\\$\\{test.home\\}/java")
6933 "${test.home}/org"))
6935 (add-before 'build 'generate-grammar
6937 (with-directory-excursion "src/org/antlr/stringtemplate/language/"
6938 (for-each (lambda (file)
6939 (format #t "~a\n" file)
6940 (invoke "antlr" file))
6941 '("template.g" "angle.bracket.template.g" "action.g"
6942 "eval.g" "group.g" "interface.g")))
6946 ("java-junit" ,java-junit)))
6947 (home-page "https://www.stringtemplate.org")
6948 (synopsis "Template engine to generate formatted text output")
6949 (description "StringTemplate is a java template engine (with ports for C#,
6950 Objective-C, JavaScript, Scala) for generating source code, web pages, emails,
6951 or any other formatted text output. StringTemplate is particularly good at
6952 code generators, multiple site skins, and internationalization / localization.
6953 StringTemplate also powers ANTLR.")
6954 (license license:bsd-3)))
6956 ;; antlr3 is partially written using antlr3 grammar files. It also depends on
6957 ;; ST4 (stringtemplate4), which is also partially written using antlr3 grammar
6958 ;; files and uses antlr3 at runtime. The latest version requires a recent version
6959 ;; of antlr3 at runtime.
6960 ;; Fortunately, ST4 4.0.6 can be built with an older antlr3, and we use antlr3.3.
6961 ;; This version of ST4 is sufficient for the latest antlr3.
6962 ;; We use ST4 4.0.6 to build a boostrap antlr3 (latest version), and build
6963 ;; the latest ST4 with it. Then we build our final antlr3 that will be linked
6964 ;; against the latest ST4.
6965 ;; antlr3.3 still depends on antlr3 to generate some files, so we use an
6966 ;; even older version, antlr3.1, to generate them. Fortunately antlr3.1 uses
6967 ;; only grammar files with the antlr2 syntax.
6968 ;; So we build antlr3.1 -> antlr3.3 -> ST4.0.6 -> antlr3-bootstrap -> ST4 -> antlr3.
6970 (define-public java-stringtemplate
6971 (package (inherit java-stringtemplate-3)
6972 (name "java-stringtemplate")
6976 (uri (string-append "https://github.com/antlr/stringtemplate4/archive/"
6978 (file-name (string-append name "-" version ".tar.gz"))
6981 "1pri8hqa95rfdkjy55icl5q1m09zwp5k67ib14abas39s4v3w087"))))
6982 (build-system ant-build-system)
6984 `(#:jar-name (string-append ,name "-" ,version ".jar")
6985 #:tests? #f ; FIXME: tests fail for unknown reasons
6987 #:modules ((guix build ant-build-system)
6991 (modify-phases %standard-phases
6992 (add-before 'check 'fix-test-target
6994 (substitute* "build.xml"
6995 (("\\$\\{test.home\\}/java") "${test.home}/")
6996 (("\\*Test.java") "Test*.java"))
6998 (add-before 'build 'generate-grammar
7000 (with-directory-excursion "src/org/stringtemplate/v4/compiler/"
7001 (for-each (lambda (file)
7002 (format #t "~a\n" file)
7003 (invoke "antlr3" file))
7004 '("STParser.g" "Group.g" "CodeGenerator.g")))
7007 `(("antlr3" ,antlr3-bootstrap)
7009 ("java-stringtemplate" ,java-stringtemplate-3)
7010 ("java-junit" ,java-junit)))))
7012 (define java-stringtemplate-4.0.6
7013 (package (inherit java-stringtemplate)
7014 (name "java-stringtemplate")
7018 (uri (string-append "https://github.com/antlr/stringtemplate4/archive/ST-"
7020 (file-name (string-append name "-" version ".tar.gz"))
7023 "0hjmh1ahdsh3w825i67mli9l4nncc4l6hdbf9ma91jvlj590sljp"))))
7025 `(("antlr3" ,antlr3-3.3)
7027 ("java-stringtemplate" ,java-stringtemplate-3)))))
7029 (define-public antlr3
7035 (uri (string-append "https://github.com/antlr/antlr3/archive/"
7037 (file-name (string-append name "-" version ".tar.gz"))
7040 "0218v683081lg54z9hvjxinhxd4dqp870jx6n39gslm0bkyi4vd6"))))
7041 (build-system ant-build-system)
7043 `(#:jar-name (string-append ,name "-" ,version ".jar")
7044 #:source-dir "tool/src/main/java:runtime/Java/src/main/java:tool/src/main/antlr3"
7047 (modify-phases %standard-phases
7048 (add-after 'install 'bin-install
7049 (lambda* (#:key inputs outputs #:allow-other-keys)
7050 (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
7051 (bin (string-append (assoc-ref outputs "out") "/bin")))
7053 (with-output-to-file (string-append bin "/antlr3")
7056 (string-append "#!" (which "sh") "\n"
7057 "java -cp " jar "/" ,name "-" ,version ".jar:"
7059 (find-files (assoc-ref inputs "stringtemplate")
7063 (find-files (assoc-ref inputs "stringtemplate4")
7067 (find-files (string-append
7068 (assoc-ref inputs "antlr")
7071 " org.antlr.Tool $*"))))
7072 (chmod (string-append bin "/antlr3") #o755))
7074 (add-before 'build 'generate-grammar
7076 (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/")
7077 (for-each (lambda (file)
7080 (invoke "antlr3" file))
7081 '("ANTLR.g" "ANTLRTreePrinter.g" "ActionAnalysis.g"
7082 "AssignTokenTypesWalker.g"
7083 "ActionTranslator.g" "TreeToNFAConverter.g"
7084 "ANTLRv3.g" "ANTLRv3Tree.g" "LeftRecursiveRuleWalker.g"
7085 "CodeGenTreeWalker.g" "DefineGrammarItemsWalker.g"))
7086 (substitute* "ANTLRParser.java"
7087 (("public Object getTree") "public GrammarAST getTree"))
7088 (substitute* "ANTLRv3Parser.java"
7089 (("public Object getTree") "public CommonTree getTree"))
7090 (chdir "../../../../../java")
7091 (substitute* "org/antlr/tool/LeftRecursiveRuleAnalyzer.java"
7092 (("import org.antlr.grammar.v3.\\*;") "import org.antlr.grammar.v3.*;
7093 import org.antlr.grammar.v3.ANTLRTreePrinter;"))
7094 (substitute* "org/antlr/tool/ErrorManager.java"
7095 (("case NO_SUCH_ATTRIBUTE_PASS_THROUGH:") ""))
7096 (chdir "../../../..")
7098 (add-before 'build 'fix-build-xml
7100 (substitute* "build.xml"
7101 (("target name=\"compile\">")
7102 "target name=\"compile\">
7103 <copy todir=\"${classes.dir}\">
7104 <fileset dir=\"tool/src/main/resources\">
7105 <include name=\"**/*.stg\"/>
7106 <include name=\"**/*.st\"/>
7107 <include name=\"**/*.sti\"/>
7108 <include name=\"**/STLexer.tokens\"/>
7114 ("antlr3" ,antlr3-bootstrap)))
7116 `(("junit" ,java-junit)
7117 ("stringtemplate" ,java-stringtemplate-3)
7118 ("stringtemplate4" ,java-stringtemplate)))
7120 `(("stringtemplate" ,java-stringtemplate-3)
7122 ("stringtemplate4" ,java-stringtemplate-4.0.6)))
7123 (home-page "https://www.antlr3.org")
7124 (synopsis "Framework for constructing recognizers, compilers, and translators")
7125 (description "ANTLR, ANother Tool for Language Recognition, (formerly PCCTS)
7126 is a language tool that provides a framework for constructing recognizers,
7127 compilers, and translators from grammatical descriptions containing Java, C#,
7128 C++, or Python actions. ANTLR provides excellent support for tree construction,
7129 tree walking, and translation.")
7130 (license license:bsd-3)))
7132 (define antlr3-bootstrap
7135 (name "antlr3-bootstrap")
7138 ("antlr3" ,antlr3-3.3)))
7140 `(("junit" ,java-junit)))))
7149 (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
7150 "gh-pages/download/antlr-"
7154 "0qgg5vgsm4l1d6dj9pfbaa25dpv2ry2gny8ajy4vvgvfklw97b3m"))
7156 (search-patches "antlr3-3_3-fix-java8-compilation.patch"))))
7158 `(#:jar-name (string-append ,name "-" ,version ".jar")
7159 #:source-dir (string-join '("tool/src/main/java"
7160 "runtime/Java/src/main/java"
7161 "tool/src/main/antlr2"
7162 "tool/src/main/antlr3")
7164 #:tests? #f ; FIXME: tests seem to require maven plugin
7165 #:modules ((guix build ant-build-system)
7169 (modify-phases %standard-phases
7170 (add-after 'install 'bin-install
7171 (lambda* (#:key inputs outputs #:allow-other-keys)
7172 (let* ((out (assoc-ref outputs "out"))
7173 (jar (string-append out "/share/java"))
7174 (bin (string-append out "/bin")))
7176 (with-output-to-file (string-append bin "/antlr3")
7180 "#!" (which "sh") "\n"
7181 "java -cp " jar "/antlr3-3.3.jar:"
7183 (append (find-files (assoc-ref inputs "java-stringtemplate")
7185 (find-files (string-append (assoc-ref inputs "antlr")
7189 " org.antlr.Tool $*"))))
7190 (chmod (string-append bin "/antlr3") #o755)
7192 (add-before 'build 'generate-grammar
7194 (substitute* "tool/src/main/java/org/antlr/tool/Grammar.java"
7195 (("import org.antlr.grammar.v2.\\*;")
7196 "import org.antlr.grammar.v2.*;\n
7197 import org.antlr.grammar.v2.TreeToNFAConverter;\n
7198 import org.antlr.grammar.v2.DefineGrammarItemsWalker;\n
7199 import org.antlr.grammar.v2.ANTLRTreePrinter;"))
7200 (with-directory-excursion "tool/src/main/antlr2/org/antlr/grammar/v2/"
7201 (for-each (lambda (file)
7202 (format #t "~a\n" file)
7203 (invoke "antlr" file))
7204 '("antlr.g" "antlr.print.g" "assign.types.g"
7205 "buildnfa.g" "codegen.g" "define.g")))
7206 (with-directory-excursion "tool/src/main/antlr3/org/antlr/grammar/v3/"
7207 (for-each (lambda (file)
7208 (format #t "~a\n" file)
7209 (invoke "antlr3" file))
7210 '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g"
7213 (add-before 'build 'fix-build-xml
7215 (substitute* "build.xml"
7216 (("target name=\"compile\">")
7217 "target name=\"compile\">
7218 <copy todir=\"${classes.dir}\">
7219 <fileset dir=\"tool/src/main/resources\">
7220 <include name=\"**/*.stg\"/>
7221 <include name=\"**/*.st\"/>
7222 <include name=\"**/*.sti\"/>
7223 <include name=\"**/STLexer.tokens\"/>
7229 ("antlr3" ,antlr3-3.1)))
7231 `(("junit" ,java-junit)))
7233 `(("java-stringtemplate" ,java-stringtemplate-3)
7235 ("antlr3" ,antlr3-3.1)))))
7237 (define-public antlr3-3.1
7243 (uri (string-append "https://github.com/antlr/website-antlr3/raw/"
7244 "gh-pages/download/antlr-"
7248 "0sfimc9cpbgrihz4giyygc8afgpma2c93yqpwb951giriri6x66z"))
7250 (search-patches "antlr3-3_1-fix-java8-compilation.patch"))))
7252 `(#:jar-name (string-append "antlr3-" ,version ".jar")
7253 #:source-dir "src:runtime/Java/src"
7256 (modify-phases %standard-phases
7257 (add-after 'install 'bin-install
7258 (lambda* (#:key inputs outputs #:allow-other-keys)
7259 (let ((jar (string-append (assoc-ref outputs "out") "/share/java"))
7260 (bin (string-append (assoc-ref outputs "out") "/bin")))
7262 (with-output-to-file (string-append bin "/antlr3")
7265 (string-append "#!" (which "sh") "\n"
7266 "java -cp " jar "/antlr3-3.1.jar:"
7268 (find-files (assoc-ref inputs "stringtemplate")
7272 (find-files (string-append
7273 (assoc-ref inputs "antlr")
7276 " org.antlr.Tool $*"))))
7277 (chmod (string-append bin "/antlr3") #o755))
7279 (add-before 'build 'generate-grammar
7281 (let ((dir "src/org/antlr/tool/"))
7282 (for-each (lambda (file)
7285 (invoke "antlr" "-o" dir (string-append dir file)))
7286 '("antlr.g" "antlr.print.g" "assign.types.g"
7287 "buildnfa.g" "define.g")))
7288 (format #t "codegen.g\n")
7289 (invoke "antlr" "-o" "src/org/antlr/codegen"
7290 "src/org/antlr/codegen/codegen.g")
7292 (add-before 'build 'fix-build-xml
7294 (substitute* "build.xml"
7295 (("target name=\"compile\">")
7296 "target name=\"compile\">
7297 <copy todir=\"${classes.dir}\">
7298 <fileset dir=\"src\">
7299 <include name=\"**/*.stg\"/>
7300 <include name=\"**/*.st\"/>
7301 <include name=\"**/*.sti\"/>
7302 <include name=\"**/STLexer.tokens\"/>
7307 `(("antlr" ,antlr2)))
7309 `(("junit" ,java-junit)))
7311 `(("stringtemplate" ,java-stringtemplate-3)))))
7313 (define-public java-commons-cli-1.2
7314 ;; This is a bootstrap dependency for Maven2.
7316 (inherit java-commons-cli)
7320 (uri (string-append "mirror://apache/commons/cli/source/"
7321 "commons-cli-" version "-src.tar.gz"))
7324 "0rvfgzgv2pc1m091dfj3ih9ddsjjppr1f1wf0qmc3bk6b1kwv2dm"))))
7326 `(#:jar-name "commons-cli.jar"
7328 (modify-phases %standard-phases
7329 (add-before 'check 'fix-build-xml
7330 (lambda* (#:key inputs #:allow-other-keys)
7331 (substitute* "build.xml"
7332 (("dir=\"\\$\\{test.home\\}/java\"")
7333 "dir=\"${test.home}\""))
7336 `(("java-junit" ,java-junit)))))
7338 (define-public java-microemulator-cldc
7340 (name "java-microemulator-cldc")
7344 (uri (string-append "https://github.com/barteo/microemu/archive/"
7346 (string-map (lambda (c) (if (char=? c #\.) #\_ c))
7349 (file-name (string-append name "-" version ".tar.gz"))
7352 "1x1apmz38gkppxnwnygwmi12j54v4p258v8ddzn6dldkk7vak1ll"))))
7353 (build-system ant-build-system)
7355 `(#:jar-name "microemulator-cldc.jar"
7356 #:source-dir "microemu-cldc/src/main/java"
7357 #:tests? #f)); Requires even older software
7358 (home-page "https://github.com/barteo/microemu")
7359 (synopsis "J2ME CLDC emulator")
7360 (description "Microemulator is a Java 2 Micro Edition (J2ME) CLDC/MIDP
7361 Emulator. It allows to demonstrate MIDlet based applications in web browser
7362 applet and can be run as a standalone java application.")
7363 (license (list license:asl2.0
7365 license:lgpl2.1+))))
7367 (define-public java-datanucleus-javax-persistence
7369 (name "java-datanucleus-javax-persistence")
7373 (uri (string-append "https://github.com/datanucleus/"
7374 "javax.persistence/archive/javax.persistence-"
7375 version "-release.tar.gz"))
7378 "11jx0fjwgc2hhbqqgdd6m1pf2fplf9vslppygax0y1z5csnqjhpx"))))
7379 (build-system ant-build-system)
7381 `(#:jar-name "java-datanucleus-javax-persistence.jar"
7383 #:source-dir "src/main/java"
7384 #:tests? #f)); no tests
7385 (home-page "https://github.com/datanucleus/javax.persistence")
7386 (synopsis "JPA API")
7387 (description "This package contains a clean definition of JPA API intended
7388 for use with DataNucleus JPA since the JCP haven't provided an official JPA API
7389 jar. See @url{http://java.net/projects/jpa-spec/downloads} for the specification
7390 used to generate this API.")
7391 (license (list license:edl1.0 license:epl1.0))))
7393 (define-public java-osgi-cmpn
7395 (name "java-osgi-cmpn")
7399 (uri (string-append "https://repo1.maven.org/maven2/"
7400 "org/osgi/osgi.cmpn/" version "/osgi.cmpn-"
7401 version "-sources.jar"))
7404 "1lmb6xyrmkqdhv1kayf0514rlwq6ypvs4m44ibrck3snp8241wys"))))
7405 (build-system ant-build-system)
7407 `(#:jar-name "osgi-cmpn.jar"
7408 #:tests? #f)); no tests
7410 `(("annotation" ,java-osgi-annotation)
7411 ("core" ,java-osgi-core)
7412 ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence)
7413 ("microemulator" ,java-microemulator-cldc)
7414 ("servlet" ,java-classpathx-servletapi)))
7415 (home-page "https://www.osgi.org")
7416 (synopsis "Compendium specification module of OSGi framework")
7418 "OSGi, for Open Services Gateway initiative framework, is a module system
7419 and service platform for the Java programming language. This package contains
7420 the compendium specification module, providing interfaces and classes for use
7421 in compiling bundles.")
7422 (license license:asl2.0)))
7424 (define-public java-osgi-service-component-annotations
7426 (name "java-osgi-service-component-annotations")
7430 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7431 "org.osgi.service.component.annotations/"
7432 version "/org.osgi.service.component.annotations-"
7433 version "-sources.jar"))
7436 "15rq9cmp4fpn74q44m4j35qsqmjf5lx3hcrk6pzvbhc08igic2f0"))))
7437 (build-system ant-build-system)
7439 `(#:jar-name "osgi-service-component-annotations.jar"
7440 #:tests? #f)); no tests
7442 `(("annotation" ,java-osgi-annotation)))
7443 (home-page "https://www.osgi.org")
7444 (synopsis "Support annotations for osgi-service-component")
7446 "OSGi, for Open Services Gateway initiative framework, is a module system
7447 and service platform for the Java programming language. This package contains
7448 the support annotations for osgi-service-component.")
7449 (license license:asl2.0)))
7451 (define-public java-osgi-dto
7453 (name "java-osgi-dto")
7457 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7458 "org.osgi.dto/" version "/org.osgi.dto-"
7459 version "-sources.jar"))
7462 "0f4bqjzadn0hwk6sd3h5gvbyfp3yci1s6r0v770cc15p0pg627yr"))))
7463 (build-system ant-build-system)
7465 `(#:jar-name "osgi-dto.jar"
7466 #:tests? #f)); no tests
7468 `(("annotation" ,java-osgi-annotation)))
7469 (home-page "https://www.osgi.org")
7470 (synopsis "Data Transfer Objects")
7472 "OSGi, for Open Services Gateway initiative framework, is a module system
7473 and service platform for the Java programming language. This package contains
7474 the Data Transfer Objects. It is easily serializable having only public fields
7475 of primitive types and their wrapper classes, Strings, and DTOs. List, Set,
7476 Map and array aggregates may also be used. The aggregates must only hold
7477 objects of the listed types or aggregates.")
7478 (license license:asl2.0)))
7480 (define-public java-osgi-resource
7482 (name "java-osgi-resource")
7486 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7487 "org.osgi.resource/"
7488 version "/org.osgi.resource-"
7489 version "-sources.jar"))
7492 "0hi0fsc5v99q22bd7lrkvpz1y0ds4w9arjldpwsrcpqvz2js7q2d"))))
7493 (build-system ant-build-system)
7495 `(#:jar-name "osgi-resource.jar"
7496 #:tests? #f)); no tests
7498 `(("annotation" ,java-osgi-annotation)
7499 ("dto" ,java-osgi-dto)))
7500 (home-page "https://www.osgi.org")
7501 (synopsis "OSGI Resource")
7503 "OSGi, for Open Services Gateway initiative framework, is a module system
7504 and service platform for the Java programming language. This package contains
7505 the definition of common types in osgi packages.")
7506 (license license:asl2.0)))
7508 (define-public java-osgi-namespace-contract
7510 (name "java-osgi-namespace-contract")
7514 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7515 "org.osgi.namespace.contract/"
7516 version "/org.osgi.namespace.contract-"
7517 version "-sources.jar"))
7520 "1iz4f2i0fvqrlq90ki9nfzcfpvy2av434ri25bglywqssx8mmp36"))))
7521 (build-system ant-build-system)
7523 `(("resource" ,java-osgi-resource)
7524 ("annotation" ,java-osgi-annotation)))
7526 `(#:jar-name "osgi-namespace-contract.jar"
7527 #:tests? #f)); no tests
7528 (home-page "https://www.osgi.org")
7529 (synopsis "Contract Capability and Requirement Namespace")
7531 "OSGi, for Open Services Gateway initiative framework, is a module system
7532 and service platform for the Java programming language. This package contains
7533 the names for the attributes and directives for a namespace with contracts.")
7534 (license license:asl2.0)))
7536 (define-public java-osgi-namespace-extender
7538 (name "java-osgi-namespace-extender")
7542 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7543 "org.osgi.namespace.extender/"
7544 version "/org.osgi.namespace.extender-"
7545 version "-sources.jar"))
7548 "0jgqiak2i05qv6j3gd33xlaifzzc0ylxxk376v2x0apfg3vvixmz"))))
7549 (build-system ant-build-system)
7551 `(("resource" ,java-osgi-resource)
7552 ("annotation" ,java-osgi-annotation)))
7554 `(#:jar-name "osgi-namespace-extendent.jar"
7555 #:tests? #f)); no tests
7556 (home-page "https://www.osgi.org")
7557 (synopsis "Extender Capability and Requirement Namespace")
7559 "OSGi, for Open Services Gateway initiative framework, is a module system
7560 and service platform for the Java programming language. This package contains
7561 the names for the attributes and directives for an extender namespace.")
7562 (license license:asl2.0)))
7564 (define-public java-osgi-namespace-service
7566 (name "java-osgi-namespace-service")
7570 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7571 "org.osgi.namespace.service/"
7572 version "/org.osgi.namespace.service-"
7573 version "-sources.jar"))
7576 "0qmw8n2449nkmm56d1znz9zhazb6ya3vsimd5bf5jg23zzhgl8c8"))))
7577 (build-system ant-build-system)
7579 `(("resource" ,java-osgi-resource)
7580 ("annotation" ,java-osgi-annotation)))
7582 `(#:jar-name "osgi-namespace-service.jar"
7583 #:tests? #f)); no tests
7584 (home-page "https://www.osgi.org")
7585 (synopsis "Service Capability and Requirement Namespace")
7587 "OSGi, for Open Services Gateway initiative framework, is a module system
7588 and service platform for the Java programming language. This package contains
7589 the names for the attributes and directives for a service namespace.")
7590 (license license:asl2.0)))
7592 (define-public java-osgi-util-function
7594 (name "java-osgi-util-function")
7598 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7599 "org.osgi.util.function/"
7600 version "/org.osgi.util.function-"
7601 version "-sources.jar"))
7604 "04l7j3hwmmj28w23m7paca0afzncs42j2mdr3liqq8kvp548sc6x"))))
7605 (build-system ant-build-system)
7607 `(#:jar-name "osgi-util-function.jar"
7608 #:tests? #f)); no tests
7610 `(("annotation" ,java-osgi-annotation)))
7611 (home-page "https://www.osgi.org")
7612 (synopsis "OSGI Util Function")
7614 "OSGi, for Open Services Gateway initiative framework, is a module system
7615 and service platform for the Java programming language. This package contains
7616 an interface for a function that accepts a single argument and produces a result.")
7617 (license license:asl2.0)))
7619 (define-public java-osgi-util-promise
7621 (name "java-osgi-util-promise")
7625 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7626 "org.osgi.util.promise/"
7627 version "/org.osgi.util.promise-"
7628 version "-sources.jar"))
7631 "0y34dwiflg1c4ahvkswpf9z02xph2sr9fm04ia5493x3lshpw22c"))))
7632 (build-system ant-build-system)
7634 `(#:jar-name "osgi-util-promise.jar"
7635 #:tests? #f)); no tests
7637 `(("annotation" ,java-osgi-annotation)
7638 ("function" ,java-osgi-util-function)))
7639 (home-page "https://www.osgi.org")
7640 (synopsis "Promise of a value")
7642 "OSGi, for Open Services Gateway initiative framework, is a module system
7643 and service platform for the Java programming language. This package contains
7644 an interface and utilitary classes for promises. A Promise represents a future
7645 value. It handles the interactions for asynchronous processing.")
7646 (license license:asl2.0)))
7648 (define-public java-osgi-service-metatype-annotations
7650 (name "java-osgi-service-metatype-annotations")
7654 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7655 "org.osgi.service.metatype.annotations/"
7656 version "/org.osgi.service.metatype.annotations-"
7657 version "-sources.jar"))
7660 "12rwm3349wk80vm88rcdgs4435m4jxkpkj5mrx326skkz2c6hyw6"))))
7661 (build-system ant-build-system)
7663 `(#:jar-name "osgi-service-metatype-annotations.jar"
7664 #:tests? #f)); no tests
7666 `(("annotation" ,java-osgi-annotation)))
7667 (home-page "https://www.osgi.org")
7668 (synopsis "Support annotations for metatype")
7670 "OSGi, for Open Services Gateway initiative framework, is a module system
7671 and service platform for the Java programming language. This package contains
7672 the support annotations for metatype.")
7673 (license license:asl2.0)))
7675 (define-public java-osgi-service-repository
7677 (name "java-osgi-service-repository")
7681 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7682 "org.osgi.service.repository/"
7683 version "/org.osgi.service.repository-"
7684 version "-sources.jar"))
7687 "1k41mhg7b58pd8nsghr2qwcjrxdnf1p9spsw9v11k4257g6rl06n"))))
7688 (build-system ant-build-system)
7690 `(#:jar-name "osgi-service-repository.jar"
7691 #:tests? #f)); no tests
7693 `(("annotation" ,java-osgi-annotation)
7694 ("promise" ,java-osgi-util-promise)
7695 ("resource" ,java-osgi-resource)))
7696 (home-page "https://www.osgi.org")
7697 (synopsis "OSGI service repository")
7699 "OSGi, for Open Services Gateway initiative framework, is a module system
7700 and service platform for the Java programming language. This package contains
7701 a repository service that contains resources.")
7702 (license license:asl2.0)))
7704 (define-public java-osgi-framework
7706 (name "java-osgi-framework")
7710 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7711 "org.osgi.framework/" version "/org.osgi.framework-"
7712 version "-sources.jar"))
7715 "1lwp2zfad3rybcc6q9bwz8xsgkc92ypzy5p6x54387f1qj65m73s"))))
7716 (build-system ant-build-system)
7718 `(#:jar-name "osgi-framework.jar"
7719 #:tests? #f)); no tests
7721 `(("annotation" ,java-osgi-annotation)
7722 ("resource" ,java-osgi-resource)
7723 ("dto" ,java-osgi-dto)))
7724 (home-page "https://www.osgi.org")
7725 (synopsis "OSGi framework")
7727 "OSGi, for Open Services Gateway initiative framework, is a module system
7728 and service platform for the Java programming language.")
7729 (license license:asl2.0)))
7731 (define-public java-osgi-service-log
7733 (name "java-osgi-service-log")
7737 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7738 "org.osgi.service.log/"
7739 version "/org.osgi.service.log-"
7740 version "-sources.jar"))
7743 "1029j30dzcwializzca0j3fkhwwz08kmmsha5agw1iccscimj6r0"))))
7744 (build-system ant-build-system)
7746 `(#:jar-name "osgi-service-log.jar"
7747 #:tests? #f)); no tests
7749 `(("java-osgi-framework" ,java-osgi-framework)))
7750 (home-page "https://www.osgi.org")
7751 (synopsis "Provides methods for bundles to write messages to the log")
7753 "OSGi, for Open Services Gateway initiative framework, is a module system
7754 and service platform for the Java programming language. This package contains
7756 (license license:asl2.0)))
7758 (define-public java-osgi-service-jdbc
7760 (name "java-osgi-service-jdbc")
7764 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7765 "org.osgi.service.jdbc/"
7766 version "/org.osgi.service.jdbc-"
7767 version "-sources.jar"))
7770 "11iln5v7bk469cgb9ddkrz9sa95b3733gqgaqw9xf5g6wq652yjz"))))
7771 (build-system ant-build-system)
7773 `(#:jar-name "osgi-service-jdbc.jar"
7774 #:tests? #f)); no tests
7775 (home-page "https://www.osgi.org")
7776 (synopsis "Factory for JDBC connection factories")
7778 "OSGi, for Open Services Gateway initiative framework, is a module system
7779 and service platform for the Java programming language. This package contains
7780 a factory for JDBC connection factories. There are 3 preferred connection
7781 factories for getting JDBC connections:
7784 @item @code{javax.sql.DataSource};
7785 @item @code{javax.sql.ConnectionPoolDataSource};
7786 @item @code{javax.sql.XADataSource}.
7788 (license license:asl2.0)))
7790 (define-public java-osgi-service-resolver
7792 (name "java-osgi-service-resolver")
7796 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7797 "org.osgi.service.resolver/"
7798 version "/org.osgi.service.resolver-"
7799 version "-sources.jar"))
7802 "1dzqn1ryfi2rq4zwsgp44bmj2wlfydjg1qbxw2b0z4xdjjy55vxd"))))
7803 (build-system ant-build-system)
7805 `(#:jar-name "osgi-service-resolver.jar"
7806 #:tests? #f)); no tests
7808 `(("annotation" ,java-osgi-annotation)
7809 ("resource" ,java-osgi-resource)))
7810 (home-page "https://www.osgi.org")
7811 (synopsis "OSGI Resolver service")
7813 "OSGi, for Open Services Gateway initiative framework, is a module system
7814 and service platform for the Java programming language. This package contains
7815 a resolver service that resolves the specified resources in the context supplied
7817 (license license:asl2.0)))
7819 (define-public java-osgi-util-tracker
7821 (name "java-osgi-util-tracker")
7825 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7826 "org.osgi.util.tracker/"
7827 version "/org.osgi.util.tracker-"
7828 version "-sources.jar"))
7831 "0c4fh9vxwzsx59r8dygda0gq2gx3z5vfhc3jsphlqwf5w0h403lz"))))
7832 (build-system ant-build-system)
7834 `(#:jar-name "osgi-util-tracker.jar"
7835 #:tests? #f)); no tests
7837 `(("framework" ,java-osgi-framework)
7838 ("annotation" ,java-osgi-annotation)))
7839 (home-page "https://www.osgi.org")
7840 (synopsis "Bundle tracking")
7842 "OSGi, for Open Services Gateway initiative framework, is a module system
7843 and service platform for the Java programming language. This package contains
7844 bundle tracking utility classes.")
7845 (license license:asl2.0)))
7847 (define-public java-osgi-service-cm
7849 (name "java-osgi-service-cm")
7853 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7854 "org.osgi.service.cm/"
7855 version "/org.osgi.service.cm-"
7856 version "-sources.jar"))
7859 "1z8kap48y3xi0ggj8v6czglfnpnd94mmismgi2wbqhj1nl5fzbp6"))))
7860 (build-system ant-build-system)
7862 `(#:jar-name "osgi-service-cm.jar"
7863 #:tests? #f)); no tests
7865 `(("framework" ,java-osgi-framework)
7866 ("annotation" ,java-osgi-annotation)))
7867 (home-page "https://www.osgi.org")
7868 (synopsis "OSGI Configuration Management")
7870 "OSGi, for Open Services Gateway initiative framework, is a module system
7871 and service platform for the Java programming language. This package contains
7872 utility classes for the configuration of services.")
7873 (license license:asl2.0)))
7875 (define-public java-osgi-service-packageadmin
7877 (name "java-osgi-service-packageadmin")
7881 (uri (string-append "https://repo1.maven.org/maven2/org/osgi/"
7882 "org.osgi.service.packageadmin/"
7883 version "/org.osgi.service.packageadmin-"
7884 version "-sources.jar"))
7887 "041mpxzi7g36wmcily6y4ccn3jx15akpdy8gmhyb7m98x7qfvn52"))))
7888 (build-system ant-build-system)
7890 `(#:jar-name "osgi-service-packageadmin.jar"
7891 #:tests? #f)); no tests
7893 `(("framework" ,java-osgi-framework)))
7894 (home-page "https://www.osgi.org")
7895 (synopsis "OSGI Package Administration")
7897 "OSGi, for Open Services Gateway initiative framework, is a module system
7898 and service platform for the Java programming language. This package contains
7899 the packageadmin service.")
7900 (license license:asl2.0)))
7902 (define-public java-ops4j-base-lang
7904 (name "java-ops4j-base-lang")
7908 (uri (string-append "https://github.com/ops4j/org.ops4j.base/"
7909 "archive/base-" version ".tar.gz"))
7912 "18hl3lpchgpv8yh5rlk39l2gif5dlfgb8gxjmncf39pr2dprkniw"))))
7913 (build-system ant-build-system)
7915 `(#:jar-name "java-ops4j-base-lang.jar"
7916 #:source-dir "ops4j-base-lang/src/main/java"
7917 #:tests? #f; no tests
7919 (modify-phases %standard-phases
7920 (add-before 'build 'add-test-file
7922 ;; That file is required by a test in ops4j-pax-exam-core-spi
7923 (mkdir-p "build/classes/META-INF/maven/org.ops4j.base/ops4j-base-lang")
7924 (with-output-to-file "build/classes/META-INF/maven/org.ops4j.base/ops4j-base-lang/pom.properties"
7928 "version=" ,version "\n"
7929 "groupId=org.ops4j.base"
7930 "artifactId=ops4j-base-lang\n"))))
7932 (home-page "https://ops4j1.jira.com/wiki/spaces/base/overview")
7933 (synopsis "Utility classes and extensions to be used in OPS4J projects")
7934 (description "OPS4J stands for Open Participation Software for Java. This
7935 package contains utilities and extensions related to @code{java.lang}.")
7936 (license license:asl2.0)))
7938 (define-public java-ops4j-base-monitors
7940 (inherit java-ops4j-base-lang)
7941 (name "java-ops4j-base-monitors")
7943 `(#:jar-name "java-ops4j-base-monitors.jar"
7944 #:source-dir "ops4j-base-monitors/src/main/java"
7945 #:tests? #f)); no tests
7947 `(("lang" ,java-ops4j-base-lang)))
7948 (description "OPS4J stands for Open Participation Software for Java. This
7949 package contains utilities and extensions related to monitoring.")))
7951 (define-public java-ops4j-base-io
7953 (inherit java-ops4j-base-lang)
7954 (name "java-ops4j-base-io")
7956 `(#:jar-name "java-ops4j-base-io.jar"
7957 #:source-dir "ops4j-base-io/src/main/java"
7958 #:test-dir "ops4j-base-io/src/test"
7960 (list "**/ListerTest.java")))
7962 `(("lang" ,java-ops4j-base-monitors)
7963 ("lang" ,java-ops4j-base-lang)))
7965 `(("junit" ,java-junit)
7966 ("hamcrest" ,java-hamcrest-core)))
7967 (description "OPS4J stands for Open Participation Software for Java. This
7968 package contains utilities and extensions related to handling streams and files.")))
7970 (define-public java-ops4j-base-util
7972 (inherit java-ops4j-base-lang)
7973 (name "java-ops4j-base-util")
7975 `(#:jar-name "java-ops4j-base-util.jar"
7976 #:source-dir "ops4j-base-util/src/main/java"
7977 #:test-dir "ops4j-base-util/src/test"))
7979 `(("lang" ,java-ops4j-base-lang)))
7981 `(("junit" ,java-junit)))
7982 (description "OPS4J stands for Open Participation Software for Java. This
7983 package contains utilities and extensions related to environment, i18n and
7986 (define-public java-ops4j-base-util-property
7988 (inherit java-ops4j-base-lang)
7989 (name "java-ops4j-base-util-property")
7991 `(#:jar-name "java-ops4j-base-util-property.jar"
7992 #:source-dir "ops4j-base-util-property/src/main/java"
7993 #:tests? #f)); no tests
7995 `(("lang" ,java-ops4j-base-lang)
7996 ("util" ,java-ops4j-base-util)))
7997 (description "OPS4J stands for Open Participation Software for Java. This
7998 package contains utilities and extensions related to resolving properties from
7999 different sources.")))
8001 (define-public java-ops4j-base-store
8003 (inherit java-ops4j-base-lang)
8004 (name "java-ops4j-base-store")
8006 `(#:jar-name "java-ops4j-base-store.jar"
8007 #:source-dir "ops4j-base-store/src/main/java"
8008 #:tests? #f)); no tests
8010 `(("lang" ,java-ops4j-base-lang)
8011 ("slf4j" ,java-slf4j-api)
8012 ("io" ,java-ops4j-base-io)))
8013 (description "OPS4J stands for Open Participation Software for Java. This
8014 package contains utilities for storing and retrieving data from an
8015 @code{InputStream}.")))
8017 (define-public java-ops4j-base-spi
8019 (inherit java-ops4j-base-lang)
8020 (name "java-ops4j-base-spi")
8022 `(#:jar-name "java-ops4j-base-spi.jar"
8023 #:source-dir "ops4j-base-spi/src/main/java"
8024 #:test-dir "ops4j-base-spi/src/test"))
8026 `(("junit" ,java-junit)
8027 ("hamcrest" ,java-hamcrest-core)))
8028 (description "OPS4J stands for Open Participation Software for Java. This
8029 package contains utilities for obtaining services via the Java SE 6
8030 @code{ServiceLoader}.")))
8032 (define-public java-aqute-bnd-annotation
8034 (name "java-aqute-bnd-annotation")
8038 (uri (string-append "https://github.com/bndtools/bnd/archive/"
8039 version ".REL.tar.gz"))
8040 (file-name (string-append name "-" version ".tar.gz"))
8043 "1ggyiq0as0f6cz333a0dh98j72kmvv5pf2s47v9554yh905lfqdl"))))
8044 (build-system ant-build-system)
8046 `(#:jar-name "java-aqute-bnd-annotation.jar"
8047 #:source-dir "biz.aQute.bnd.annotation/src"
8048 #:tests? #f)); empty test dir
8049 (home-page "https://bnd.bndtools.org/")
8050 (synopsis "Tools for OSGi")
8051 (description "Bnd is a swiss army knife for OSGi, it creates manifest
8052 headers based on analyzing the class code, it verifies the project settings,
8053 it manages project dependencies, gives diffs jars, and much more.")
8054 (license license:asl2.0)))
8056 (define-public java-aqute-libg
8058 (inherit java-aqute-bnd-annotation)
8059 (name "java-aqute-libg")
8061 `(#:jar-name "java-aqute-libg.jar"
8062 ;; The build fails when source/target more recent than 1.7. This
8063 ;; is a known issue. See: https://github.com/bndtools/bnd/issues/1327
8065 ;; It is closed as won't fix. There is no way to change the source
8066 ;; so that it works on 1.8, and still works on 1.6, the upstream
8067 ;; target. It work fine on 1.7, so we use 1.7.
8068 #:make-flags (list "-Dant.build.javac.source=1.7"
8069 "-Dant.build.javac.target=1.7")
8071 (modify-phases %standard-phases
8072 (add-before 'configure 'chdir
8073 ;; Change to aQute.libg directory, so that the relative
8074 ;; paths in the tests aren't broken.
8076 (chdir "aQute.libg")
8078 (add-before 'check 'create-test-directory
8079 ;; Copy the test directory to test/java, since that's where
8080 ;; ant-build-system's default project in build.xml expects to find
8081 ;; the test classes. Leave a copy in the original place to not
8082 ;; break paths in tests.
8085 (copy-recursively "test" "src/test/java")
8088 `(("slf4j" ,java-slf4j-api)
8089 ("osgi-annot" ,java-osgi-annotation)
8090 ("java-osgi-cmpn" ,java-osgi-cmpn)
8091 ("osgi" ,java-osgi-core)))
8093 `(("hamcrest" ,java-hamcrest-core)
8094 ("java-junit" ,java-junit)))))
8096 (define java-aqute-libg-bootstrap
8098 (inherit java-aqute-libg)
8099 (name "java-aqute-libg-bootstrap")
8101 ;; Disable tests, at this stage of bootstrap we have no test frameworks.
8102 (substitute-keyword-arguments (package-arguments java-aqute-libg)
8103 ((#:tests? _ #f) #f)))
8105 `(("slf4j-bootstrap" ,java-slf4j-api-bootstrap)
8106 ,@(delete `("slf4j" ,java-slf4j-api)
8107 (package-inputs java-aqute-libg))))
8108 (native-inputs '())))
8110 (define-public java-aqute-bndlib
8112 (inherit java-aqute-bnd-annotation)
8113 (name "java-aqute-bndlib")
8115 `(#:jar-name "java-bndlib.jar"
8116 #:source-dir "biz.aQute.bndlib/src"
8117 #:tests? #f)); no tests
8119 `(("slf4j" ,java-slf4j-api)
8120 ("osgi-annot" ,java-osgi-annotation)
8121 ("java-aqute-libg" ,java-aqute-libg)
8122 ("java-aqute-bnd-annotation" ,java-aqute-bnd-annotation)
8123 ("java-osgi-service-component-annotations" ,java-osgi-service-component-annotations)
8124 ("java-osgi-service-repository" ,java-osgi-service-repository)
8125 ("java-osgi-service-log" ,java-osgi-service-log)
8126 ("java-osgi-service-metatype-annotations" ,java-osgi-service-metatype-annotations)
8127 ("java-osgi-namespace-contract" ,java-osgi-namespace-contract)
8128 ("java-osgi-namespace-extender" ,java-osgi-namespace-extender)
8129 ("java-osgi-namespace-service" ,java-osgi-namespace-service)
8130 ("promise" ,java-osgi-util-promise)
8131 ("osgi" ,java-osgi-core)))))
8133 (define java-aqute-bndlib-bootstrap
8135 (inherit java-aqute-bndlib)
8136 (name "java-aqute-bndlib-bootstrap")
8138 `(("slf4j-bootstrap" ,java-slf4j-api-bootstrap)
8139 ("java-aqute-libg-bootstrap" ,java-aqute-libg-bootstrap)
8140 ,@(delete `("slf4j" ,java-slf4j-api)
8141 (delete `("java-aqute-libg" ,java-aqute-libg)
8142 (package-inputs java-aqute-bndlib)))))))
8144 (define-public java-ops4j-pax-tinybundles
8146 (name "java-ops4j-pax-tinybundles")
8150 (uri (string-append "https://github.com/ops4j/org.ops4j.pax.tinybundles/"
8151 "archive/tinybundles-" version ".tar.gz"))
8154 "0y0gq3pvv0iir2b885lmlwnvr724vv7vklzhhr4fs27d7mdkj871"))))
8156 `(#:jar-name "java-ops4j-pax-tinybundles.jar"
8157 #:source-dir "src/main/java"
8159 ;; Abstract base classes for other tests
8160 (list "**/BndTest.java" "**/CoreTest.java")
8162 (modify-phases %standard-phases
8163 (add-before 'check 'fix-version
8165 ;; This test has a reference to an old version of bndlib we are not
8166 ;; packaging. It uses the version referenced in pom.xml. We replace
8167 ;; it with our own version.
8168 (substitute* "src/test/java/org/ops4j/pax/tinybundles/bnd/BndTest.java"
8169 (("[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*\\.[0-9][0-9]*")
8170 ,(package-version java-aqute-bndlib)))
8173 `(("lang" ,java-ops4j-base-lang)
8174 ("io" ,java-ops4j-base-io)
8175 ("store" ,java-ops4j-base-store)
8176 ("slf4j" ,java-slf4j-api)
8177 ("libg" ,java-aqute-libg)
8178 ("bndlib" ,java-aqute-bndlib)))
8180 `(("junit" ,java-junit)
8181 ("hamcrest" ,java-hamcrest-core)
8182 ("log4j" ,java-log4j-api)
8183 ("bndannotation" ,java-aqute-bnd-annotation)
8184 ("framework" ,java-osgi-framework)))
8185 (build-system ant-build-system)
8186 (home-page "https://ops4j1.jira.com/wiki/spaces/ops4j/pages/12060312/Tinybundles")
8187 (synopsis "Java APIs to create OSGi related artifacts")
8188 (description "Tinybundles is all about creating OSGi related artifacts like
8189 Bundles, Fragments and Deployment Packages with Java Api. It is very convenient
8190 to create such artifacts on-the-fly inside Tests (like in Pax Exam). On the
8191 other hand, this library can be a foundation of real end user tools that need
8192 to create those artifacts.")
8193 (license license:asl2.0)))
8195 (define-public java-ops4j-pax-exam-core
8197 (name "java-ops4j-pax-exam-core")
8201 (uri (string-append "https://github.com/ops4j/org.ops4j.pax.exam2/"
8202 "archive/exam-reactor-" version ".tar.gz"))
8205 "08mzw8nkah3rj3vznlplnawspxhp61zgvb44ifqa1rni1cvbms2g"))))
8207 `(#:jar-name "java-ops4j-pax-exam-core.jar"
8208 #:source-dir "core/pax-exam/src/main/java"
8209 #:test-dir "core/pax-exam/src/test"))
8211 `(("slf4j" ,java-slf4j-api)
8212 ("lang" ,java-ops4j-base-lang)
8213 ("io" ,java-ops4j-base-io)
8214 ("util-property" ,java-ops4j-base-util-property)
8215 ("util-store" ,java-ops4j-base-store)
8216 ("java-osgi-core" ,java-osgi-core)))
8218 `(("junit" ,java-junit)
8219 ("hamcrest" ,java-hamcrest-core)))
8220 (build-system ant-build-system)
8221 (home-page "https://ops4j1.jira.com/wiki/spaces/PAXEXAM4/overview")
8222 (synopsis "In-Container Testing for OSGi, Java EE and CDI")
8223 (description "Pax Exam creates OSGi bundles for testing purposes. It lets
8224 the user take control of the OSGi framework, the test framework (e.g. JUnit) and
8225 the system under test at the same time.")
8226 (license license:asl2.0)))
8228 (define-public java-ops4j-pax-exam-core-spi
8230 (inherit java-ops4j-pax-exam-core)
8231 (name "java-ops4j-pax-exam-core-spi")
8233 `(#:jar-name "java-ops4j-pax-exam-spi.jar"
8234 #:source-dir "src/main/java"
8237 ;; Abstract base class, not a test
8238 "**/BaseStagedReactorTest.java"
8239 ;; Depends on org.mortbay.jetty.testwars:test-war-dump
8240 "**/WarBuilderTest.java")
8242 (modify-phases %standard-phases
8243 (add-before 'configure 'chdir
8245 ;; Tests assume we are in this directory
8246 (chdir "core/pax-exam-spi")
8248 (add-before 'check 'fix-tests
8250 ;; One test checks that this file is present.
8251 (mkdir-p "build/classes/META-INF/maven/org.ops4j.pax.exam/pax-exam-spi")
8252 (with-output-to-file
8253 "build/classes/META-INF/maven/org.ops4j.pax.exam/pax-exam-spi/pom.properties"
8256 (string-append "artifactId = pax-exam-spi\n"
8257 "version = " ,(package-version java-ops4j-pax-exam-core-spi)))))
8258 ;; Maven puts compilation results in the target directory, while we
8259 ;; put them in the build directory.
8260 (substitute* '("src/test/java/org/ops4j/pax/exam/spi/war/WarBuilderTest.java"
8261 "src/test/java/org/ops4j/pax/exam/spi/war/WarTestProbeBuilderTest.java"
8262 "src/test/java/org/ops4j/pax/exam/spi/war/ZipBuilderTest.java")
8263 (("target") "build"))
8264 ;; One test is expected to fail, but it doesn't throw the expected exception
8265 (substitute* "src/test/java/org/ops4j/pax/exam/spi/reactors/BaseStagedReactorTest.java"
8266 (("AssertionError") "IllegalArgumentException"))
8269 `(("java-ops4j-pax-exam-core" ,java-ops4j-pax-exam-core)
8270 ("lang" ,java-ops4j-base-lang)
8271 ("monitors" ,java-ops4j-base-monitors)
8272 ("store" ,java-ops4j-base-store)
8273 ("io" ,java-ops4j-base-io)
8274 ("spi" ,java-ops4j-base-spi)
8275 ("osgi" ,java-osgi-core)
8276 ("slf4j" ,java-slf4j-api)
8277 ("tinybundles" ,java-ops4j-pax-tinybundles)))
8279 `(("mockito" ,java-mockito-1)
8280 ("junit" ,java-junit)
8281 ("hamcrest" ,java-hamcrest-core)
8282 ("cglib" ,java-cglib)
8283 ("objenesis" ,java-objenesis)
8284 ("asm" ,java-asm)))))
8286 (define-public java-ops4j-pax-exam-core-junit
8288 (inherit java-ops4j-pax-exam-core)
8289 (name "java-ops4j-pax-exam-core-junit")
8291 `(#:jar-name "ops4j-pax-exam-core-junit.jar"
8292 #:source-dir "drivers/pax-exam-junit4/src/main/java"
8293 #:tests? #f)); no tests
8295 `(("junit" ,java-junit)
8296 ("slf4j" ,java-slf4j-api)
8297 ("core" ,java-ops4j-pax-exam-core)
8298 ("spi" ,java-ops4j-pax-exam-core-spi)))
8299 (native-inputs '())))
8301 (define-public java-fasterxml-jackson-annotations
8303 (name "java-fasterxml-jackson-annotations")
8307 (uri (string-append "https://github.com/FasterXML/"
8308 "jackson-annotations/archive/"
8309 "jackson-annotations-" version ".tar.gz"))
8312 "0mr95xd0da6a4g95zvrl1ryk5n5zv2rc696w3xnsr5hxk2gicfc4"))))
8313 (build-system ant-build-system)
8315 `(#:jar-name "jackson-annotations.jar"
8316 #:source-dir "src/main/java"
8317 #:test-dir "src/test"))
8319 `(("junit" ,java-junit)))
8320 (home-page "https://github.com/FasterXML/jackson-annotations")
8321 (synopsis "General purpose annotations for the Jackson Data Processor")
8322 (description "This package contains general purpose annotations for the
8323 Jackson Data Processor, used on value and handler types. The only annotations
8324 not included are ones that require dependency to the Databind package.")
8325 (license license:asl2.0)))
8327 (define-public java-fasterxml-jackson-core
8329 (name "java-fasterxml-jackson-core")
8333 (uri (string-append "https://github.com/FasterXML/"
8334 "jackson-core/archive/"
8335 "jackson-core-" version ".tar.gz"))
8338 "159hsnk17jr1gyzkf01cxvsn45srnk37g949r7364qlsr527gjgd"))))
8339 (build-system ant-build-system)
8341 `(#:jar-name "jackson-core.jar"
8342 #:source-dir "src/main/java"
8343 #:test-dir "src/test"
8346 ;; Expected failure. pom.xml excludes these
8348 ;; Base classes that have no constructor for junit
8350 "**/ConcurrencyReadTest.java"
8351 "**/ManualCharAccessTest.java"
8352 "**/ManualCharAccessTest.java"
8353 "**/TrailingCommasTest.java"
8354 "**/AsyncMissingValuesInObjectTest.java"
8355 "**/AsyncMissingValuesInArrayTest.java")
8357 (modify-phases %standard-phases
8358 (add-before 'configure 'generate-PackageVersion.java
8360 (let* ((out "src/main/java/com/fasterxml/jackson/core/json/PackageVersion.java")
8361 (in (string-append out ".in")))
8364 (("@package@") "com.fasterxml.jackson.core.json")
8365 (("@projectversion@") ,version)
8366 (("@projectgroupid@") "com.fasterxml.jackson.core")
8367 (("@projectartifactid@") "jackson-core")))
8369 (add-before 'build 'copy-resources
8371 (copy-recursively "src/main/resources"
8374 (add-before 'check 'copy-test-resources
8376 (copy-recursively "src/test/resources"
8377 "build/test-classes")
8380 `(("junit" ,java-junit)
8381 ("hamcrest" ,java-hamcrest-core)))
8382 (home-page "https://github.com/FasterXML/jackson-core")
8385 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
8387 (define-public java-fasterxml-jackson-databind
8389 (name "java-fasterxml-jackson-databind")
8393 (uri (string-append "https://github.com/FasterXML/"
8394 "jackson-databind/archive/"
8395 "jackson-databind-" version ".tar.gz"))
8398 "1zd2cw4z6kdkbx8za96xh9pyicv2a2l7y0rkcx2fqd8hv6d47s08"))))
8399 (build-system ant-build-system)
8401 `(#:jar-name "jackson-databind.jar"
8402 #:source-dir "src/main/java"
8403 #:tests? #f; requires javax.measures for which I can't find a free implementation
8405 (modify-phases %standard-phases
8406 (add-before 'configure 'generate-PackageVersion.java
8408 (let* ((out "src/main/java/com/fasterxml/jackson/databind/cfg/PackageVersion.java")
8409 (in (string-append out ".in")))
8412 (("@package@") "com.fasterxml.jackson.databind.cfg")
8413 (("@projectversion@") ,version)
8414 (("@projectgroupid@") "com.fasterxml.jackson.databind")
8415 (("@projectartifactid@") "jackson-databind")))
8417 (add-before 'build 'copy-resources
8419 (copy-recursively "src/main/resources" "build/classes")
8422 `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
8423 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)))
8424 (home-page "https://github.com/FasterXML/jackson-databind")
8425 (synopsis "Data-binding functionality and tree-model for the Jackson Data Processor")
8426 (description "This package contains the general-purpose data-binding
8427 functionality and tree-model for Jackson Data Processor. It builds on core
8428 streaming parser/generator package, and uses Jackson Annotations for
8430 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
8432 (define-public java-fasterxml-jackson-modules-base-jaxb
8434 (name "java-fasterxml-jackson-modules-base-jaxb")
8438 (uri (string-append "https://github.com/FasterXML/"
8439 "jackson-modules-base/archive/"
8440 "jackson-modules-base-" version ".tar.gz"))
8443 "1wws95xi8sppp6b0k2vvjdjyynl20r1a4dwrhai08lzlria6blp5"))))
8444 (build-system ant-build-system)
8446 `(#:jar-name "jackson-modules-base-jaxb.jar"
8447 #:source-dir "jaxb/src/main/java"
8448 #:test-dir "jaxb/src/test"
8450 ;; Base class for tests
8451 (list "**/BaseJaxbTest.java")
8453 (modify-phases %standard-phases
8454 (add-before 'configure 'generate-PackageVersion.java
8456 (let* ((out (string-append "jaxb/src/main/java/com/fasterxml/"
8457 "jackson/module/jaxb/PackageVersion.java"))
8458 (in (string-append out ".in")))
8461 (("@package@") "com.fasterxml.jackson.module.jaxb")
8462 (("@projectversion@") ,version)
8463 (("@projectgroupid@") "com.fasterxml.jackson.module.jaxb")
8464 (("@projectartifactid@") "jackson-module-jaxb")))
8466 (add-before 'build 'copy-resources
8468 (copy-recursively "jaxb/src/main/resources" "build/classes")
8471 `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
8472 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
8473 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)))
8475 `(("java-junit" ,java-junit)))
8476 (home-page "https://github.com/FasterXML/jackson-modules-base")
8477 (synopsis "Jaxb annotations jackson module")
8478 (description "This package is the jaxb annotations module for jackson.")
8479 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
8481 (define-public java-fasterxml-jackson-modules-base-mrbean
8483 (name "java-fasterxml-jackson-modules-base-mrbean")
8487 (uri (string-append "https://github.com/FasterXML/"
8488 "jackson-modules-base/archive/"
8489 "jackson-modules-base-" version ".tar.gz"))
8492 "1wws95xi8sppp6b0k2vvjdjyynl20r1a4dwrhai08lzlria6blp5"))))
8493 (build-system ant-build-system)
8495 `(#:jar-name "jackson-modules-base-mrbean.jar"
8496 #:source-dir "mrbean/src/main/java"
8497 #:test-dir "mrbean/src/test"
8499 ;; Base class for tests
8500 (list "**/BaseTest.java")
8502 (modify-phases %standard-phases
8503 (add-before 'configure 'generate-PackageVersion.java
8505 (let* ((out (string-append "mrbean/src/main/java/com/fasterxml/"
8506 "jackson/module/mrbean/PackageVersion.java"))
8507 (in (string-append out ".in")))
8510 (("@package@") "com.fasterxml.jackson.module.mrbean")
8511 (("@projectversion@") ,version)
8512 (("@projectgroupid@") "com.fasterxml.jackson.module.mrbean")
8513 (("@projectartifactid@") "jackson-module-mrbean")))
8516 `(("java-asm" ,java-asm)
8517 ("java-fasterxml-jackson-annotations"
8518 ,java-fasterxml-jackson-annotations)
8519 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
8520 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)))
8522 `(("java-junit" ,java-junit)))
8523 (home-page "https://github.com/FasterXML/jackson-modules-base")
8524 (synopsis "POJO type materialization for Java")
8525 (description "This package implements POJO type materialization.
8526 Databinders can construct implementation classes for Java interfaces as part
8527 of deserialization.")
8528 (license license:asl2.0)))
8530 (define-public java-snakeyaml
8532 (name "java-snakeyaml")
8536 (uri (string-append "https://bitbucket.org/asomov/snakeyaml/get/v"
8538 (file-name (string-append name "-" version ".tar.gz"))
8541 "0474cqcv46zgv9bhms2vgawakq1vyj0hp3h3f1bfys46msia90bh"))))
8542 (build-system ant-build-system)
8544 `(#:jar-name "java-snakeyaml.jar"
8545 #:source-dir "src/main/java"
8546 ;; Tests require velocity, a cyclic dependency, and
8547 ;; java-spring-framework-context which is not packaged.
8549 (home-page "https://bitbucket.org/asomov/snakeyaml")
8550 (synopsis "YAML processor")
8551 (description "SnakeYAML is a YAML processor for the Java Virtual Machine.")
8552 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
8554 (define-public java-fasterxml-jackson-dataformat-yaml
8556 (name "java-fasterxml-jackson-dataformat-yaml")
8560 (uri (string-append "https://github.com/FasterXML/"
8561 "jackson-dataformats-text/archive/"
8562 "jackson-dataformats-text-" version ".tar.gz"))
8565 "1hikl06khaxbg439avf442qifcadap8w0lx13f0nnhp2vh3dkbz7"))))
8566 (build-system ant-build-system)
8568 `(#:jar-name "jackson-dataformat-yaml.jar"
8569 #:source-dir "yaml/src/main/java"
8570 #:test-dir "yaml/src/test"
8571 #:test-exclude (list "**/failing/**.java")
8573 (modify-phases %standard-phases
8574 (add-before 'configure 'generate-PackageVersion.java
8576 (let* ((out "yaml/src/main/java/com/fasterxml/jackson/dataformat/yaml/PackageVersion.java")
8577 (in (string-append out ".in")))
8580 (("@package@") "com.fasterxml.jackson.dataformat.yaml")
8581 (("@projectversion@") ,version)
8582 (("@projectgroupid@") "com.fasterxml.jackson.dataformat.yaml")
8583 (("@projectartifactid@") "jackson-dataformat-yaml")))
8586 `(("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations)
8587 ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core)
8588 ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind)
8589 ("java-snakeyaml" ,java-snakeyaml)))
8591 `(("junit" ,java-junit)
8592 ("hamcrest" ,java-hamcrest-core)
8593 ("java-ops4j-pax-exam-core-spi" ,java-ops4j-pax-exam-core-spi)
8594 ("java-ops4j-pax-exam-core-junit" ,java-ops4j-pax-exam-core-junit)
8595 ("java-ops4j-pax-exam" ,java-ops4j-pax-exam-core)))
8596 (home-page "https://github.com/FasterXML/jackson-dataformats-text")
8597 (synopsis "Yaml backend for Jackson")
8598 (description "Dataformat backends are used to support format alternatives
8599 to JSON, supported by default. This is done by sub-classing Jackson core
8601 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
8603 (define-public java-stax2-api
8605 (name "java-stax2-api")
8609 (uri (string-append "https://github.com/FasterXML/stax2-api/archive/"
8610 "stax2-api-" version ".tar.gz"))
8613 "1amc1si0l0hyyw2sawmnzy4hkna3z6fp195y4nm5m9wb9ld5awkq"))))
8614 (build-system ant-build-system)
8616 `(#:jar-name "java-stax2-api.jar"
8617 #:source-dir "src/main/java"
8618 #:tests? #f)); no tests
8619 (home-page "https://github.com/FasterXML/stax2-api")
8620 (synopsis "Stax2 API")
8621 (description "Stax2 API is an extension to basic Stax 1.0 API that adds
8622 significant new functionalities, such as full-featured bi-direction validation
8623 interface and high-performance Typed Access API.")
8624 (license license:bsd-2)))
8626 (define-public java-woodstox-core
8628 (name "java-woodstox-core")
8632 (uri (string-append "https://github.com/FasterXML/woodstox/archive/"
8633 "woodstox-core-" version ".tar.gz"))
8636 "1i7pdgb8jbw6gdy5kmm0l6rz109n2ns92pqalpyp24vb8vlvdfd4"))))
8637 (build-system ant-build-system)
8639 `(#:jar-name "woodstox.jar"
8641 (list "**/Base*.java" "failing/**")
8643 (modify-phases %standard-phases
8644 (add-before 'build 'remove-msv-dep
8646 ;; we don't need osgi, and it depends on msv
8647 (delete-file-recursively "src/main/java/com/ctc/wstx/osgi")
8648 ;; msv's latest release is from 2011 and we don't need it
8649 (delete-file-recursively "src/main/java/com/ctc/wstx/msv")
8650 (delete-file-recursively "src/test/java/wstxtest/osgi")
8651 (delete-file-recursively "src/test/java/wstxtest/msv")
8653 (add-before 'build 'copy-resources
8655 (copy-recursively "src/main/resources" "build/classes")
8658 `(("stax2" ,java-stax2-api)))
8660 `(("junit" ,java-junit)))
8661 (home-page "https://github.com/FasterXML/woodstox")
8662 (synopsis "Stax XML API implementation")
8663 (description "Woodstox is a stax XML API implementation.")
8664 (license license:asl2.0)))
8666 (define-public java-fasterxml-jackson-dataformat-xml
8668 (name "java-fasterxml-jackson-dataformat-xml")
8672 (uri (string-append "https://github.com/FasterXML/"
8673 "jackson-dataformat-xml/archive/"
8674 "jackson-dataformat-xml-" version ".tar.gz"))
8677 "111fkkl90w31jbf30kgj82qdcxlw4sxppki7i198liw0ck1jcavq"))))
8678 (build-system ant-build-system)
8680 `(#:jar-name "jackson-dataformat-xml.jar"
8681 #:source-dir "src/main/java"
8683 (list "**/failing/**")
8685 (modify-phases %standard-phases
8686 (add-before 'configure 'generate-PackageVersion.java
8688 (let* ((out "src/main/java/com/fasterxml/jackson/dataformat/xml/PackageVersion.java")
8689 (in (string-append out ".in")))
8693 (("@package@") "com.fasterxml.jackson.dataformat.xml")
8694 (("@projectversion@") ,version)
8695 (("@projectgroupid@") "com.fasterxml.jackson.dataformat.xml")
8696 (("@projectartifactid@") "jackson-dataformat-xml")))
8698 (add-before 'build 'copy-resources
8700 (copy-recursively "src/main/resources" "build/classes")
8703 `(("jackson-annotations" ,java-fasterxml-jackson-annotations)
8704 ("jackson-core" ,java-fasterxml-jackson-core)
8705 ("jackson-modules-base-jaxb" ,java-fasterxml-jackson-modules-base-jaxb)
8706 ("jackson-databind" ,java-fasterxml-jackson-databind)
8707 ("stax2-api" ,java-stax2-api)
8708 ("woodstox" ,java-woodstox-core)))
8710 `(("junit" ,java-junit)
8711 ("hamcrest" ,java-hamcrest-core)))
8712 (home-page "https://github.com/FasterXML/jackson-dataformat-xml")
8713 (synopsis "Read and write XML")
8714 (description "This package contains Jackson extension component for reading
8715 and writing XML encoded data.
8717 Further, the goal is to emulate how JAXB data-binding works with \"Code-first\"
8718 approach (that is, no support is added for \"Schema-first\" approach). Support
8719 for JAXB annotations is provided by JAXB annotation module; this module
8720 provides low-level abstractions (@code{JsonParser}, @code{JsonGenerator},
8721 @code{JsonFactory}) as well as small number of higher level overrides needed to
8722 make data-binding work.")
8723 (license license:asl2.0))); found on wiki.fasterxml.com/JacksonLicensing
8725 (define-public java-hdrhistogram
8727 (name "java-hdrhistogram")
8731 (uri (string-append "https://github.com/HdrHistogram/HdrHistogram/"
8732 "archive/HdrHistogram-" version ".tar.gz"))
8735 "1sicbmc3sr42nw93qbkb26q9rn33ag33k6k77phjc3j5h5gjffqv"))))
8736 (build-system ant-build-system)
8738 `(#:jar-name "java-hdrhistogram.jar"
8739 #:source-dir "src/main/java"
8741 (modify-phases %standard-phases
8742 (add-before 'configure 'set-version
8744 (let* ((version-java "src/main/java/org/HdrHistogram/Version.java")
8745 (template (string-append version-java ".template")))
8746 (copy-file template version-java)
8747 (substitute* version-java
8748 (("\\$VERSION\\$") ,version)
8749 (("\\$BUILD_TIME\\$") "0"))
8752 `(("junit" ,java-junit)
8753 ("hamcrest" ,java-hamcrest-core)))
8754 (home-page "https://hdrhistogram.github.io/HdrHistogram")
8755 (synopsis "High dynamic range histogram")
8756 (description "Hdrhistogram allows to create histograms that support
8757 recording and analyzing sampled data value counts across a configurable integer
8758 value range with configurable value precision within the range. Value precision
8759 is expressed as the number of significant digits in the value recording, and
8760 provides control over value quantization behavior across the value range and
8761 the subsequent value resolution at any given level.")
8762 (license license:public-domain)))
8764 (define-public java-cofoja
8766 (name "java-cofoja")
8771 (url "https://github.com/nhatminhle/cofoja.git")
8772 (commit (string-append "v" version))))
8773 (file-name (string-append "java-cofoja-" version "-checkout"))
8776 "0p7sz8y5xgpi5rx1qwn6587fkd52qr3ha3ybh14gqcyxhikl525w"))))
8777 (build-system ant-build-system)
8779 `(#:build-target "dist"
8780 #:test-target "test"
8783 (list "-Ddist.dir=dist")
8784 #:modules ((guix build ant-build-system)
8785 (guix build java-utils)
8790 (modify-phases %standard-phases
8791 ;; The bulid system ignores the class path the ant-build-system sets
8792 ;; up and instead expects to find all dependencies in the "lib"
8794 (add-after 'unpack 'create-libdir
8795 (lambda* (#:key inputs #:allow-other-keys)
8799 (let ((target (string-append "lib/" (basename file))))
8800 (unless (file-exists? target)
8801 (symlink file target))))
8802 (append-map (match-lambda
8804 (find-files dir "\\.jar$")))
8807 (replace 'install (install-jars "dist")))))
8809 `(("java-asm" ,java-asm)))
8811 `(("java-junit" ,java-junit)))
8812 (home-page "https://github.com/nhatminhle/cofoja")
8813 (synopsis "Contracts for Java")
8814 (description "Contracts for Java, or Cofoja for short, is a contract
8815 programming framework and test tool for Java, which uses annotation processing
8816 and bytecode instrumentation to provide run-time checking. (In particular,
8817 this is not a static analysis tool.)")
8818 (license license:lgpl3+)))
8820 (define-public java-aopalliance
8822 (name "java-aopalliance")
8826 ;; Note: this git repository is not official, but contains the
8827 ;; source code that is in the CVS repository. Downloading the
8828 ;; tarball from sourceforge is undeterministic, and the cvs download
8831 (url "https://github.com/hoverruan/aopalliance")
8832 (commit "0d7757ae204e5876f69431421fe9bc2a4f01e8a0")))
8833 (file-name (string-append name "-" version))
8836 "0rsg2b0v3hxlq2yk1i3m2gw3xwq689j3cwx9wbxvqfpdcjbca0qr"))))
8837 (build-system ant-build-system)
8839 `(#:jar-name "java-aopalliance.jar"
8841 #:tests? #f; no tests
8842 #:source-dir "aopalliance/src/main"))
8843 (home-page "http://aopalliance.sourceforge.net")
8844 (synopsis "Aspect-Oriented Programming")
8845 (description "The AOP Alliance project is a joint project between several
8846 software engineering people who are interested in Aspect-Oriented Programming
8848 (license license:public-domain)))
8850 (define-public java-javax-inject
8852 (name "java-javax-inject")
8856 (uri (string-append "https://github.com/javax-inject/javax-inject/"
8857 "archive/javax.inject-" version ".tar.gz"))
8860 "1ydrlvh2r7vr1g7lhjwy3w2dggpj9h6pix1lakkkgdywb365n6g0"))))
8861 (build-system ant-build-system)
8863 `(#:jar-name "java-javax-inject.jar"
8865 #:tests? #f)); no tests
8866 (home-page "http://github.com/javax-inject/javax-inject")
8867 (synopsis "JSR-330: Dependency Injection for Java")
8868 (description "This package specifies a means for obtaining objects in such
8869 a way as to maximize reusability, testability and maintainability compared to
8870 traditional approaches such as constructors, factories, and service locators
8871 (e.g., JNDI). This process, known as dependency injection, is beneficial to
8872 most nontrivial applications.
8874 Many types depend on other types. For example, a @var{Stopwatch} might depend
8875 on a @var{TimeSource}. The types on which a type depends are known as its
8876 dependencies. The process of finding an instance of a dependency to use at run
8877 time is known as resolving the dependency. If no such instance can be found,
8878 the dependency is said to be unsatisfied, and the application is broken.")
8879 (license license:asl2.0)))
8881 (define-public java-guice
8887 (uri (string-append "https://github.com/google/guice/archive/"
8889 (file-name (string-append name "-" version ".tar.gz"))
8890 (modules '((guix build utils)))
8893 (for-each delete-file (find-files "." ".*.jar"))))
8896 "0dwmqjzlavb144ywqqglj3h68hqszkff8ai0a42hyb5il0qh4rbp"))))
8897 (build-system ant-build-system)
8899 `(#:jar-name "java-guice.jar"
8901 #:tests? #f; FIXME: tests are not in a java sub directory
8902 #:source-dir "core/src"))
8904 `(("guava" ,java-guava)
8905 ("java-cglib" ,java-cglib)
8906 ("java-aopalliance" ,java-aopalliance)
8907 ("java-javax-inject" ,java-javax-inject)
8908 ("java-asm" ,java-asm)))
8909 (home-page "https://github.com/google/guice")
8910 (synopsis "Lightweight dependency injection framework")
8911 (description "Guice is a lightweight dependency injection framework fo
8913 (license license:asl2.0)))
8915 (define-public java-guice-servlet
8917 (inherit java-guice)
8918 (name "java-guice-servlet")
8920 `(#:jar-name "guice-servlet.jar"
8921 #:source-dir "extensions/servlet/src/"
8923 #:tests? #f)); FIXME: not in a java subdir
8925 `(("guice" ,java-guice)
8926 ("servlet" ,java-classpathx-servletapi)
8927 ,@(package-inputs java-guice)))))
8929 (define-public java-assertj
8931 (name "java-assertj")
8935 (uri (string-append "https://github.com/joel-costigliola/"
8936 "assertj-core/archive/"
8937 "assertj-core-" version ".tar.gz"))
8940 "1kf124fxskf548rklkg86294w2x6ajqrff94rrhyqns31danqkfz"))))
8941 (build-system ant-build-system)
8943 `(#:jar-name "java-assertj.jar"
8945 #:source-dir "src/main/java"
8946 #:tests? #f)); depends on tng-junit which depends on assertj
8948 `(("cglib" ,java-cglib)
8949 ("junit" ,java-junit)
8950 ("hamcrest" ,java-hamcrest-core)))
8952 `(("mockito" ,java-mockito-1)))
8953 (home-page "https://joel-costigliola.github.io/assertj/index.html")
8954 (synopsis "Fluent assertions for java")
8955 (description "AssertJ core is a Java library that provides a fluent
8956 interface for writing assertions. Its main goal is to improve test code
8957 readability and make maintenance of tests easier.")
8958 (license license:asl2.0)))
8960 (define-public java-jboss-javassist
8962 (name "java-jboss-javassist")
8966 (uri (string-append "https://github.com/jboss-javassist/javassist/"
8968 (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)
8972 "10lpcr3sbf7y6fq6fc2h2ik7rqrivwcy4747bg0kxhwszil3cfmf"))))
8973 (build-system ant-build-system)
8975 `(#:jar-name "java-jboss-javassist.jar"
8977 #:source-dir "src/main"
8978 #:tests? #f; FIXME: requires junit-awtui and junit-swingui from junit3
8980 (modify-phases %standard-phases
8981 (add-before 'configure 'remove-binary
8983 (delete-file "javassist.jar")
8986 `(("junit" ,java-junit)))
8987 (home-page "https://github.com/jboss-javassist/javassist")
8988 (synopsis "Java bytecode engineering toolkit")
8989 (description "Javassist (JAVA programming ASSISTant) makes Java bytecode
8990 manipulation simple. It is a class library for editing bytecodes in Java; it
8991 enables Java programs to define a new class at runtime and to modify a class
8992 file when the JVM loads it.")
8993 (license (list license:gpl2 license:cddl1.0)))); either gpl2 only or cddl.
8995 (define-public java-jcommander
8997 (name "java-jcommander")
9001 (uri (string-append "https://github.com/cbeust/jcommander/archive/"
9003 (file-name (string-append name "-" version ".tar.gz"))
9006 "1f5k2ckay6qjc3d3w3d7bc0p3cx3c7n6p6zxvw1kibqdr0q98wlx"))))
9007 (build-system ant-build-system)
9009 `(#:jar-name "java-jcommander.jar"
9011 #:tests? #f; requires testng which depends on jcommander
9012 #:source-dir "src/main/java"))
9013 (home-page "https://jcommander.org")
9014 (synopsis "Command line parameters parser")
9015 (description "JCommander is a very small Java framework that makes it
9016 trivial to parse command line parameters. Parameters are declared with
9018 (license license:asl2.0)))
9020 (define-public java-bsh
9026 (uri (string-append "https://github.com/beanshell/beanshell/archive/"
9028 (file-name (string-append name "-" version ".tar.gz"))
9031 "1bawkxk6jyc75hxvzkpz689h73cn3f222m0ar3nvb0dal2b85kfv"))))
9032 (build-system ant-build-system)
9034 `(#:build-target "jarall"
9035 #:test-target "junit-tests-all"
9037 (modify-phases %standard-phases
9039 (lambda* (#:key outputs #:allow-other-keys)
9040 (let ((share (string-append (assoc-ref outputs "out") "/share/java")))
9042 (copy-file "dist/bsh-2.0b6.jar" (string-append share "/bsh-2.0b6.jar"))
9044 (home-page "http://beanshell.org/")
9045 (synopsis "Lightweight Scripting for Java")
9046 (description "BeanShell is a small, free, embeddable Java source
9047 interpreter with object scripting language features, written in Java.
9048 BeanShell dynamically executes standard Java syntax and extends it with common
9049 scripting conveniences such as loose types, commands, and method closures like
9050 those in Perl and JavaScript.")
9051 (license license:asl2.0)))
9053 (define-public java-fest-util
9055 (name "java-fest-util")
9059 (uri (string-append "https://github.com/alexruiz/fest-util/"
9060 "archive/fest-util-" version ".tar.gz"))
9063 "05g6hljz5mdaakk8d7g32klbhz9bdwp3qlj6rdaggdidxs3x1sb8"))))
9064 (build-system ant-build-system)
9066 `(#:jar-name "java-fest-util.jar"
9067 #:source-dir "src/main/java"))
9069 `(("junit" ,java-junit)
9070 ("hamcrest" ,java-hamcrest-core)))
9071 (home-page "https://github.com/alexruiz/fest-util")
9072 (synopsis "FEST common utilities")
9073 (description "Common utilities used in all FEST module.")
9074 (license license:asl2.0)))
9076 (define-public java-fest-test
9078 (name "java-fest-test")
9082 (uri (string-append "https://github.com/alexruiz/fest-test/"
9083 "archive/fest-test-" version ".tar.gz"))
9086 "1rxfbw6l9vc65iy1x3fb617qc6y4w2k430pgf1mfbxfdlxbm0f7g"))))
9087 (build-system ant-build-system)
9089 `(#:jar-name "java-fest-test.jar"
9090 #:source-dir "src/main/java"
9091 #:tests? #f)); no tests
9093 `(("junit" ,java-junit)))
9094 (home-page "https://github.com/alexruiz/fest-test")
9095 (synopsis "Common FEST testing infrastructure")
9096 (description "Fest-test contains the common FEST testing infrastructure.")
9097 (license license:asl2.0)))
9099 (define-public java-fest-assert
9101 (name "java-fest-assert")
9105 (uri (string-append "https://github.com/alexruiz/fest-assert-2.x/"
9106 "archive/fest-assert-core-" version ".tar.gz"))
9109 "1bi0iqavikzww6rxvz5jyg7y6bflv95s6ibryxx0xfcxrrw6i5lw"))))
9110 (build-system ant-build-system)
9112 `(#:jar-name "java-fest-assert.jar"
9113 #:source-dir "src/main/java"
9118 ;; Unable to set MockitoNamingPolicy on cglib generator which creates FastClasses
9119 "**/MessageFormatter_format_Test.java"
9120 "**/internal/*/*_assert*_Test.java")))
9122 `(("java-fest-util" ,java-fest-util)))
9124 `(("java-junit" ,java-junit)
9125 ("java-fest-test" ,java-fest-test)
9126 ("java-hamcrest-core" ,java-hamcrest-core)
9127 ("java-mockito" ,java-mockito-1)
9128 ("java-cglib" ,java-cglib)
9129 ("java-objenesis" ,java-objenesis)
9130 ("java-asm" ,java-asm)))
9131 (home-page "https://github.com/alexruiz/fest-assert-2.x")
9132 (synopsis "FEST fluent assertions")
9133 (description "FEST-Assert provides a fluent interface for assertions.")
9134 (license license:asl2.0)))
9136 (define-public java-testng
9138 (name "java-testng")
9143 (url "https://github.com/cbeust/testng.git")
9145 (file-name (string-append name "-" version "-checkout"))
9148 "0y6vq30i5g276kw0v2bhbvci22ijg7ax49ap2611yqlhbs4d6dqv"))))
9149 (build-system ant-build-system)
9151 `(#:jdk ,icedtea-8; java.util.function
9152 #:jar-name "java-testng.jar"
9153 #:source-dir "src/main/java"
9155 (modify-phases %standard-phases
9156 ;; FIXME: I don't know why these tests fail
9157 (add-after 'unpack 'delete-failing-tests
9159 (substitute* "src/test/resources/testng.xml"
9160 (("<class name=\"test.configuration.github1625.TestRunnerIssue1625\"/>") "")
9161 (("<class name=\"test.serviceloader.ServiceLoaderTest\" />") ""))
9163 ;; We don't have groovy
9164 (add-after 'unpack 'delete-groovy-tests
9166 (delete-file-recursively "src/test/java/test/dependent/issue1648/")
9167 (substitute* "src/test/resources/testng.xml"
9168 (("<class name=\"test.dependent.issue1648.TestRunner\"/>") ""))
9170 (add-before 'build 'copy-resources
9172 (copy-recursively "src/main/resources" "build/classes")
9174 (add-before 'check 'copy-test-resources
9176 (copy-recursively "src/test/resources" "build/test-classes")
9180 (invoke "ant" "compile-tests")
9181 ;; we don't have groovy
9182 (substitute* "src/test/resources/testng.xml"
9183 (("<class name=\"test.groovy.GroovyTest\" />") ""))
9184 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
9186 ":build/test-classes")
9187 "-Dtest.resources.dir=src/test/resources"
9188 "org.testng.TestNG" "src/test/resources/testng.xml"))))))
9190 `(("junit" ,java-junit)
9191 ("java-jsr305" ,java-jsr305)
9192 ("java-bsh" ,java-bsh)
9193 ("java-jcommander" ,java-jcommander)
9194 ("java-guice" ,java-guice)
9195 ("snakeyaml" ,java-snakeyaml)))
9197 `(("guava" ,java-guava)
9198 ("java-javax-inject" ,java-javax-inject)
9199 ("java-hamcrest" ,java-hamcrest-all)
9200 ("java-assertj" ,java-assertj)
9201 ("java-mockito" ,java-mockito-1)
9202 ("cglib" ,java-cglib)
9204 ("aopalliance" ,java-aopalliance)))
9205 (home-page "https://testng.org")
9206 (synopsis "Testing framework")
9207 (description "TestNG is a testing framework inspired from JUnit and NUnit
9208 but introducing some new functionalities that make it more powerful and easier
9210 (license license:asl2.0)))
9212 (define-public java-jnacl
9213 (let ((commit "094e819afdd63ea81a499b3bcb42a271006bebd9")
9217 (version (string-append "0.1.0-" revision "." (string-take commit 7)))
9221 (url "https://github.com/neilalexander/jnacl.git")
9223 (file-name (git-file-name name version))
9226 "1d6g6xhn83byv5943n7935wwjsk0ibk0qdvqgr699qqgqqmwisbb"))))
9227 (build-system ant-build-system)
9229 `(#:jar-name "jnacl.jar"
9230 #:source-dir "src/main/java"
9233 (modify-phases %standard-phases
9234 (add-before 'build 'fix-tests
9236 (substitute* '("src/test/java/com/neilalexander/jnacl/NaClTest.java"
9237 "src/test/java/com/neilalexander/jnacl/NaclSecretBoxTest.java")
9238 (("assertions.Assertions") "assertions.api.Assertions"))
9242 (invoke "ant" "compile-tests")
9243 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
9245 ":build/test-classes")
9246 "org.testng.TestNG" "-testclass"
9247 "build/test-classes/com/neilalexander/jnacl/NaclSecretBoxTest.class")
9248 (invoke "java" "-cp" (string-append (getenv "CLASSPATH")
9250 ":build/test-classes")
9251 "org.testng.TestNG" "-testclass"
9252 "build/test-classes/com/neilalexander/jnacl/NaClTest.class"))))))
9254 `(("java-testng" ,java-testng)
9255 ("java-fest-util" ,java-fest-util)
9256 ("java-fest-assert" ,java-fest-assert)))
9257 (home-page "https://github.com/neilalexander/jnacl")
9258 (synopsis "Java implementation of NaCl")
9259 (description "Pure Java implementation of the NaCl: Networking and
9260 Cryptography library.")
9261 (license license:bsd-2))))
9263 (define-public java-mvel2
9269 (uri (string-append "https://github.com/mvel/mvel/archive/mvel2-"
9270 version ".Final.tar.gz"))
9273 "01ph5s9gm16l2qz58lg21w6fna7xmmrj7f9bzqr1jim7h9557d3z"))))
9274 (build-system ant-build-system)
9276 `(#:jar-name "mvel2.jar"
9277 #:source-dir "src/main/java"
9279 (list "**/Abstract*.java"
9280 ;; Base class with no tests
9281 "**/MVELThreadTest.java")
9283 (modify-phases %standard-phases
9284 (add-after 'install 'install-bin
9285 (lambda* (#:key outputs #:allow-other-keys)
9286 (let ((bin (string-append (assoc-ref outputs "out") "/bin")))
9288 (with-output-to-file (string-append bin "/mvel2")
9292 "#!" (which "bash") "\n"
9293 "if [ \"$#\" -ne \"2\" ]; then\n"
9294 "echo 'Usage: mvel2 <script> <out.dir>'\n"
9297 "java -Dout.dir=$2 -cp " (getenv "CLASSPATH")
9298 ":" (assoc-ref outputs "out") "/share/java/mvel2.jar"
9299 " org.mvel2.sh.Main $1"))))
9300 (chmod (string-append bin "/mvel2") #o755))
9303 `(("junit" ,java-junit)
9304 ("hamcrest" ,java-hamcrest-core)))
9305 (home-page "https://github.com/mvel/mvel")
9306 (synopsis "MVFLEX Expression Language")
9307 (description "MVEL has largely been inspired by Java syntax, but has some
9308 fundamental differences aimed at making it more efficient as an expression
9309 language, such as operators that directly support collection, array and string
9310 matching, as well as regular expressions. MVEL is used to evaluate expressions
9311 written using Java syntax.
9313 In addition to the expression language, MVEL serves as a templating language for
9314 configuration and string construction.")
9315 (license license:asl2.0)))
9317 (define-public java-commons-jexl-2
9319 (name "java-commons-jexl")
9323 (uri (string-append "mirror://apache/commons/jexl/source/"
9324 "commons-jexl-" version "-src.tar.gz"))
9327 "1ai7632bwwaxglb0nbpblpr2jw5g20afrsaq372ipkphi3ncy1jz"))))
9328 (build-system ant-build-system)
9330 `(#:jar-name "commons-jexl-2.jar"
9332 #:source-dir "src/main/java"
9334 (modify-phases %standard-phases
9335 (add-before 'check 'disable-broken-tests
9336 (lambda* (#:key inputs #:allow-other-keys)
9337 (with-directory-excursion "src/test/java/org/apache/commons/jexl2/"
9338 (substitute* "ArithmeticTest.java"
9339 (("asserter.assertExpression\\(\"3 / 0\"") "//")
9340 (("asserter.assertExpression\\(\"imanull") "//"))
9341 ;; This test fails with "ambiguous method invocation"
9342 (delete-file "CacheTest.java")
9343 ;; This test doesn't have access to the temp directory
9344 (substitute* "ClassCreatorTest.java"
9345 (("java.io.tmpdir") "user.dir"))
9346 ;; This test fails in trying to detect whether it can run.
9347 (substitute* "ClassCreator.java"
9348 (("boolean canRun =.*") "boolean canRun = false;\n"))
9349 ;; ...and these tests depend on it.
9350 (delete-file "scripting/JexlScriptEngineOptionalTest.java")
9351 (delete-file "scripting/JexlScriptEngineTest.java"))
9353 (add-before 'build 'run-javacc
9355 (with-directory-excursion "src/main/java/org/apache/commons/jexl2/parser/"
9356 (invoke "java" "jjtree" "Parser.jjt")
9357 (invoke "java" "javacc" "Parser.jj"))
9360 `(("java-commons-logging-minimal" ,java-commons-logging-minimal)))
9362 `(("java-junit" ,java-junit)
9363 ("java-hamcrest-core" ,java-hamcrest-core)
9364 ("javacc" ,javacc-4)))
9365 (home-page "https://commons.apache.org/proper/commons-jexl/")
9366 (synopsis "Java Expression Language ")
9367 (description "JEXL is a library intended to facilitate the implementation
9368 of dynamic and scripting features in applications and frameworks written in
9369 Java. JEXL implements an Expression Language based on some extensions to the
9370 JSTL Expression Language supporting most of the constructs seen in
9371 shell-script or ECMAScript. Its goal is to expose scripting features usable
9372 by technical operatives or consultants working with enterprise platforms.")
9373 (license license:asl2.0)))
9375 (define-public java-lz4
9381 (uri (string-append "https://github.com/lz4/lz4-java/archive/"
9383 (file-name (string-append name "-" version ".tar.gz"))
9386 "096dm57p2lzqk28n0j2p52x2j3cvnsd2dfqn43n7vbwrkjsy7y54"))))
9387 (build-system ant-build-system)
9389 `(#:jar-name "lz4.jar"
9391 #:source-dir "src/java:src/java-unsafe"
9392 #:tests? #f; FIXME: requires more dependencies
9394 (modify-phases %standard-phases
9395 (add-before 'configure 'generate-source
9397 (with-directory-excursion "src/build/source_templates"
9398 (invoke "mvel2" "../gen_sources.mvel" "../../java"))
9401 `(("mvel" ,java-mvel2)))
9402 (home-page "https://jpountz.github.io/lz4-java")
9403 (synopsis "Compression algorithm")
9404 (description "LZ4 - Java is a Java port of the popular lz4 compression
9405 algorithms and xxHash hashing algorithm.")
9406 (license license:asl2.0)))
9408 (define-public java-bouncycastle
9410 (name "java-bouncycastle")
9414 (uri (string-append "https://github.com/bcgit/bc-java/archive/r"
9415 (substring version 0 1) "v"
9416 (substring version 2 4) ".tar.gz"))
9419 "0v434513y708qc87k4xz13p2kzydc736lk3ks67df9mg11s7hchv"))
9420 (modules '((guix build utils)))
9423 (for-each delete-file
9424 (find-files "." "\\.jar$"))
9426 (build-system ant-build-system)
9431 (modify-phases %standard-phases
9434 (invoke "ant" "-f" "ant/jdk15+.xml" "build-provider")
9435 (invoke "ant" "-f" "ant/jdk15+.xml" "build")))
9436 ;; FIXME: the tests freeze.
9439 ;; (invoke "ant" "-f" "ant/jdk15+.xml" "test")))
9441 (install-jars "build/artifacts/jdk1.5/jars")))))
9443 `(("java-javax-mail" ,java-javax-mail)))
9446 ("junit" ,java-junit)
9447 ("java-native-access" ,java-native-access)
9448 ("java-native-access-platform" ,java-native-access-platform)))
9449 (home-page "https://www.bouncycastle.org")
9450 (synopsis "Cryptographic library")
9451 (description "Bouncy Castle is a cryptographic library for the Java
9452 programming language.")
9453 (license license:expat)))
9455 (define-public java-lmax-disruptor
9457 (name "java-lmax-disruptor")
9461 (uri (string-append "https://github.com/LMAX-Exchange/disruptor/"
9462 "archive/" version ".tar.gz"))
9463 (file-name (string-append name "-" version ".tar.gz"))
9466 "17da2gwj5abnlsfgn2xqjk5lgzbg4vkb0hdv2dvc8r2fx4bi7w3g"))))
9467 (build-system ant-build-system)
9469 `(#:jar-name "java-lmax-disruptor.jar"
9471 #:tests? #f)); tests hang
9473 `(("junit" ,java-junit)
9474 ("java-hdrhistogram" ,java-hdrhistogram)
9475 ("java-jmock" ,java-jmock)
9476 ("java-jmock-legacy" ,java-jmock-legacy)
9477 ("java-jmock-junit4" ,java-jmock-junit4)
9478 ("java-hamcrest-all" ,java-hamcrest-all)))
9480 `(("cglib" ,java-cglib)
9481 ("objenesis" ,java-objenesis)
9483 (home-page "https://www.lmax.com/disruptor")
9484 (synopsis "High performance inter-thread communication")
9485 (description "LMAX Disruptor is a software pattern and software component
9486 for high performance inter-thread communication that avoids the need for
9487 message queues or resource locking.")
9488 (license license:asl2.0)))
9490 (define-public java-commons-bcel
9492 (name "java-commons-bcel")
9496 (uri (string-append "mirror://apache/commons/bcel/source/bcel-"
9497 version "-src.tar.gz"))
9500 "0j3x1rxd673k07psclk8k13rqh0x0mf2yy5qiwkiw4z3afa568jy"))))
9501 (build-system ant-build-system)
9503 `(#:jar-name "bcel.jar"
9505 #:source-dir "src/main/java"
9506 #:test-dir "src/test/java"
9507 ;; FIXME: Tests require the unpackaged jna.
9509 (home-page "https://commons.apache.org/proper/commons-bcel/")
9510 (synopsis "Byte code engineering library")
9511 (description "The Byte Code Engineering Library (Apache Commons BCEL) is
9512 intended to give users a convenient way to analyze, create, and
9513 manipulate (binary) Java class files. Classes are represented by objects
9514 which contain all the symbolic information of the given class: methods, fields
9515 and byte code instructions, in particular.
9517 Such objects can be read from an existing file, be transformed by a
9518 program (e.g. a class loader at run-time) and written to a file again. An
9519 even more interesting application is the creation of classes from scratch at
9520 run-time. The @dfn{Byte Code Engineering Library} (BCEL) may be also useful
9521 if you want to learn about the @dfn{Java Virtual Machine} (JVM) and the format
9522 of Java @code{.class} files.")
9523 (license license:asl2.0)))
9525 (define-public java-xerial-core
9527 (name "java-xerial-core")
9531 (uri (string-append "https://github.com/xerial/xerial-java/archive/"
9533 (file-name (string-append name "-" version ".tar.gz"))
9536 "0d3g863i41bgalpa4xr3vm1h140l091n8iwgq5qvby5yivns9y8d"))))
9537 (build-system ant-build-system)
9539 `(#:jar-name "xerial-core.jar"
9540 #:source-dir "xerial-core/src/main/java"
9541 #:test-dir "xerial-core/src/test"
9543 (modify-phases %standard-phases
9544 (add-before 'build 'copy-resources
9546 (copy-recursively "xerial-core/src/main/resources"
9550 `(("junit" ,java-junit)
9551 ("hamcrest" ,java-hamcrest-core)))
9552 (home-page "https://github.com/xerial/xerial-java")
9553 (synopsis "Data management libraries for Java")
9554 (description "Xerial is a set of data management libraries for the Java
9555 programming language. The ultimate goal of the Xerial project is to manage
9556 everything as database, including class objects, text format data, data
9558 (license license:asl2.0)))
9560 (define-public java-powermock-reflect
9562 (name "java-powermock-reflect")
9566 (uri (string-append "https://github.com/powermock/powermock/"
9567 "archive/powermock-" version ".tar.gz"))
9568 (file-name (string-append name "-" version ".tar.gz"))
9571 "0sbgi5vqq7k72wzcdjb20s370vyd4hsbnx71pzb8ishml3gy7fwy"))
9573 (search-patches "java-powermock-fix-java-files.patch"))))
9574 (build-system ant-build-system)
9576 `(#:jar-name "java-powermock-reflect.jar"
9578 #:source-dir "powermock-reflect/src/main/java"
9579 #:test-dir "powermock-reflect/src/test"))
9581 `(("java-objenesis" ,java-objenesis)))
9583 `(("junit" ,java-junit)
9584 ("cglib" ,java-cglib)
9586 ("hamcrest" ,java-hamcrest-core)
9587 ("assertj" ,java-assertj)))
9588 (home-page "https://github.com/powermock/powermock")
9589 (synopsis "Mock library extension framework")
9590 (description "PowerMock is a framework that extends other mock libraries
9591 such as EasyMock with more powerful capabilities. PowerMock uses a custom
9592 classloader and bytecode manipulation to enable mocking of static methods,
9593 constructors, final classes and methods, private methods, removal of static
9594 initializers and more. By using a custom classloader no changes need to be
9595 done to the IDE or continuous integration servers which simplifies adoption.")
9596 (license license:asl2.0)))
9598 (define-public java-powermock-core
9600 (inherit java-powermock-reflect)
9601 (name "java-powermock-core")
9603 `(#:jar-name "java-powermock-core.jar"
9604 #:source-dir "powermock-core/src/main/java"
9605 #:test-dir "powermock-core/src/test"
9606 #:tests? #f; requires powermock-api
9609 (modify-phases %standard-phases
9610 (add-before 'build 'copy-resources
9612 (copy-recursively "powermock-core/src/main/resources"
9616 `(("reflect" ,java-powermock-reflect)
9617 ("javassist" ,java-jboss-javassist)))
9619 `(("junit" ,java-junit)
9620 ("assertj" ,java-assertj)
9621 ("mockito" ,java-mockito-1)))))
9623 (define-public java-powermock-api-support
9625 (inherit java-powermock-reflect)
9626 (name "java-powermock-api-support")
9627 (build-system ant-build-system)
9629 `(#:jar-name "java-powermock-api-support.jar"
9631 #:source-dir "powermock-api/powermock-api-support/src/main/java"
9632 #:tests? #f)); no tests
9634 `(("core" ,java-powermock-core)
9635 ("reflect" ,java-powermock-reflect)))))
9637 (define-public java-powermock-modules-junit4-common
9639 (inherit java-powermock-reflect)
9640 (name "java-powermock-modules-junit4-common")
9641 (build-system ant-build-system)
9643 `(#:jar-name "java-powermock-modules-junit4-common.jar"
9645 #:source-dir "powermock-modules/powermock-module-junit4-common/src/main/java"
9646 #:test-dir "powermock-modules/powermock-module-junit4-common/src/test"))
9648 `(("core" ,java-powermock-core)
9649 ("easymock" ,java-easymock)
9650 ("reflect" ,java-powermock-reflect)
9651 ("hamcrest" ,java-hamcrest-core)
9652 ("cglib" ,java-cglib)))))
9654 (define-public java-powermock-modules-junit4
9656 (inherit java-powermock-reflect)
9657 (name "java-powermock-modules-junit4")
9658 (build-system ant-build-system)
9660 `(#:jar-name "java-powermock-modules-junit4.jar"
9662 #:source-dir "powermock-modules/powermock-module-junit4/src/main/java"
9663 #:test-dir "powermock-modules/powermock-module-junit4/src/test"
9665 (modify-phases %standard-phases
9666 (add-before 'build 'fix-junit-detection
9668 ;; Our junit version is 4.12-SNAPSHOT
9669 (substitute* (find-files "powermock-modules/powermock-module-junit4"
9670 "PowerMockJUnit4MethodValidator.java")
9671 (("4.12") "4.12-SNAPSHOT"))
9674 `(("core" ,java-powermock-core)
9675 ("reflect" ,java-powermock-reflect)
9676 ("common" ,java-powermock-modules-junit4-common)
9677 ("cglib" ,java-cglib)))
9679 `(("easymock" ,java-easymock)
9680 ("hamcrest" ,java-hamcrest-core)
9681 ("objenesis" ,java-objenesis)
9683 ("junit" ,java-junit)))))
9685 (define-public java-powermock-api-easymock
9687 (inherit java-powermock-reflect)
9688 (name "java-powermock-api-easymock")
9689 (build-system ant-build-system)
9691 `(#:jar-name "java-powermock-api-easymock.jar"
9693 #:source-dir "powermock-api/powermock-api-easymock/src/main/java"
9694 #:tests? #f; no tests
9696 (modify-phases %standard-phases
9697 (add-before 'build 'fix-file
9699 ;; FIXME: This looks wrong, but it fixes a build error.
9700 (with-directory-excursion "powermock-api/powermock-api-easymock"
9701 (substitute* "src/main/java/org/powermock/api/easymock/PowerMock.java"
9702 (("classLoader instanceof MockClassLoader") "false")
9703 (("\\(\\(MockClassLoader\\) classLoader\\).*;") ";")))
9706 `(("core" ,java-powermock-core)
9707 ("easymock" ,java-easymock)
9708 ("reflect" ,java-powermock-reflect)
9709 ("support" ,java-powermock-api-support)
9710 ("cglib" ,java-cglib)))))
9712 (define-public java-jboss-jms-api-spec
9714 (name "java-jboss-jms-api-spec")
9718 (uri (string-append "https://github.com/jboss/jboss-jms-api_spec/"
9719 "archive/jboss-jms-api_" version
9720 "_spec-1.0.1.Final.tar.gz"))
9723 "07bqblw9kq2i8q92bz70fvavq5xjfkaixl8xa0m0cypjgy82rb7m"))))
9724 (build-system ant-build-system)
9726 `(#:jar-name "java-jboss-jms-api_spec.jar"
9729 #:tests? #f)); no tests
9730 (home-page "https://github.com/jboss/jboss-jms-api_spec")
9731 (synopsis "Java Message Service API specification")
9732 (description "Java Message Service (JMS) API is used to send messages
9733 messages between two or more clients. It is a messaging standard that allows
9734 application components to create, send, receive, and read messages.")
9735 ; either gpl2 only with GPL Classpath Exception, or cddl.
9736 (license (list license:gpl2 license:cddl1.0))))
9738 (define-public java-mail
9744 (uri (string-append "https://github.com/javaee/javamail/archive/"
9745 "JAVAMAIL-1_6_0.tar.gz"))
9748 "1b4rg7fpj50ld90a71iz2m4gm3f5cnw18p3q3rbrrryjip46kx92"))))
9749 (build-system ant-build-system)
9751 `(#:jar-name "java-mail.jar"
9753 #:source-dir "mail/src/main/java"
9754 #:test-dir "mail/src/test"
9756 (list "**/CollectorFormatterTest.java"
9757 "**/CompactFormatterTest.java"
9758 "**/DurationFilterTest.java"
9759 "**/MailHandlerTest.java"
9760 "**/GetLocalAddressTest.java"
9761 ;; FIXME: both end with:
9762 ;; java.lang.ClassNotFoundException:
9763 ;; javax.mail.internet.MimeMultipartParseTest
9764 "**/MimeMultipartParseTest.java"
9765 "**/SearchTermSerializationTest.java")
9767 (modify-phases %standard-phases
9768 (add-before 'configure 'move-version.java
9770 (copy-file "mail/src/main/resources/javax/mail/Version.java"
9771 "mail/src/main/java/javax/mail/Version.java")
9773 (add-before 'build 'copy-resources
9775 (copy-recursively "mail/src/main/resources/META-INF"
9776 "build/classes/META-INF")
9779 `(("junit" ,java-junit)
9780 ("hamcrest" ,java-hamcrest-core)))
9781 (home-page "https://javaee.github.io/javamail/")
9782 (synopsis "Mail-related functionnalities in Java")
9783 (description "The JavaMail API provides a platform-independent and
9784 protocol-independent framework to build mail and messaging applications.")
9785 ;; General Public License Version 2 only ("GPL") or the Common Development
9786 ;; and Distribution License("CDDL")
9787 (license (list license:cddl1.1
9788 license:gpl2)))); with classpath exception
9790 (define-public java-jeromq
9792 (name "java-jeromq")
9797 (url "https://github.com/zeromq/jeromq.git")
9798 (commit (string-append "v" version))))
9799 (file-name (string-append name "-" version "-checkout"))
9802 "1gxkp7lv2ahymgrqdw94ncq54bmp4m4sw5m1x9gkp7l5bxn0xsyj"))
9803 (patches (search-patches "java-jeromq-fix-tests.patch"))))
9804 (build-system ant-build-system)
9806 `(#:jar-name "java-jeromq.jar"
9807 #:source-dir "src/main/java"
9813 "**/ZBeaconTest.java"
9815 "**/DealerSpecTest.java"
9816 "**/CustomDecoderTest.java"
9817 "**/CustomEncoderTest.java"
9818 "**/ConnectRidTest.java"
9819 "**/ReqSpecTest.java"
9820 "**/PushPullSpecTest.java"
9821 "**/PubSubHwmTest.java"
9822 "**/RouterSpecTest.java"
9823 "**/ProxyTest.java")))
9825 `(("java-jnacl" ,java-jnacl)))
9827 `(("java-hamcrest-core" ,java-hamcrest-core)
9828 ("junit" ,java-junit)))
9829 (home-page "http://zeromq.org/bindings:java")
9830 (synopsis "Java binding for 0MQ")
9831 (description "Jeromq provides the java bindings for 0MQ.")
9832 (license license:mpl2.0)))
9834 (define-public java-kafka-clients
9836 (name "java-kafka-clients")
9840 (uri (string-append "mirror://apache/kafka/" version "/kafka-"
9841 version "-src.tgz"))
9844 "1yxmnsmliwm7671q5yy9bl4jdqyyn00n26cggz9brwczx80w1vfq"))))
9845 (build-system ant-build-system)
9847 `(#:jar-name "java-kafka-clients.jar"
9849 #:source-dir "clients/src/main/java"
9850 #:test-dir "clients/src/test"
9853 ;; This file does not contain a class
9854 "**/IntegrationTest.java"
9856 "**/ClientUtilsTest.java"
9857 ;; End with errors that seem related to our powermock
9858 "**/KafkaProducerTest.java"
9859 "**/BufferPoolTest.java")))
9861 `(("java-slf4j-api" ,java-slf4j-api)
9862 ("java-lz4" ,java-lz4)))
9864 `(("junit" ,java-junit)
9865 ("hamcrest" ,java-hamcrest-all)
9866 ("objenesis" ,java-objenesis)
9868 ("cglib" ,java-cglib)
9869 ("javassist" ,java-jboss-javassist)
9870 ("snappy" ,java-snappy)
9871 ("easymock" ,java-easymock)
9872 ("powermock" ,java-powermock-core)
9873 ("powermock-easymock" ,java-powermock-api-easymock)
9874 ("powermock-junit4-common" ,java-powermock-modules-junit4-common)
9875 ("powermock-junit4" ,java-powermock-modules-junit4)
9876 ("powermock-support" ,java-powermock-api-support)
9877 ("java-bouncycastle" ,java-bouncycastle)))
9878 (home-page "https://kafka.apache.org")
9879 (synopsis "Distributed streaming platform")
9880 (description "Kafka is a distributed streaming platform, which means:
9882 @item it can publish and subscribe to streams of records;
9883 @item it can store streams of records in a fault-tolerant way;
9884 @item it can process streams of records as they occur.
9886 ;; Either cddl or gpl2 only.
9887 (license (list license:cddl1.1; actually cddl1.1
9888 license:gpl2)))); with classpath exception
9890 (define-public java-jdom
9896 (uri (string-append "http://jdom.org/dist/binary/archive/jdom-"
9900 "07wdpm3jwwc9q38kmdw40fvbmv6jzjrkrf8m0zqs58f79a672wfl"))))
9901 (build-system ant-build-system)
9903 `(#:build-target "package"
9904 #:tests? #f; tests are run as part of the build process
9906 (modify-phases %standard-phases
9908 (install-jars "build")))))
9909 (home-page "http://jdom.org/")
9910 (synopsis "Access, manipulate, and output XML data")
9911 (description "Java-based solution for accessing, manipulating, and
9912 outputting XML data from Java code.")
9913 (license license:bsd-4)))
9915 (define-public java-geronimo-xbean-reflect
9917 (name "java-geronimo-xbean-reflect")
9922 (url "https://svn.apache.org/repos/asf/geronimo/xbean/tags/xbean-4.5/")
9923 (revision 1807396)))
9924 (file-name (string-append name "-" version))
9927 "18q3i6jgm6rkw8aysfgihgywrdc5nvijrwnslmi3ww497jvri6ja"))))
9928 (build-system ant-build-system)
9930 `(#:jar-name "geronimo-xbean-reflect.jar"
9931 #:source-dir "xbean-reflect/src/main/java"
9932 #:test-dir "xbean-reflect/src/test"
9935 (list "**/Abstract*.java" "**/AsmParameterNameLoaderTest.java"
9936 "**/ObjectRecipeTest.java" "**/ParameterNameLoaderTest.java"
9937 "**/RecipeHelperTest.java" "**/XbeanAsmParameterNameLoaderTest.java")
9939 (modify-phases %standard-phases
9940 (add-before 'build 'fix-source
9942 (let ((dir "xbean-reflect/src/main/java/org/apache/xbean/recipe/"))
9943 ;; org.apache.xbean.asm6 is actually repackaged java-asm
9944 (substitute* (string-append dir "XbeanAsmParameterNameLoader.java")
9945 (("org.apache.xbean.asm5") "org.objectweb.asm"))
9949 ("log4j" ,java-log4j-api)
9950 ("log4j-1.2" ,java-log4j-1.2-api)
9951 ("log4j-core" ,java-log4j-core)
9952 ("logging" ,java-commons-logging-minimal)))
9954 `(("junit" ,java-junit)))
9955 (home-page "https://geronimo.apache.org/maven/xbean/3.6/xbean-reflect/")
9956 (synopsis "Dependency injection helper")
9957 (description "Xbean-reflect provides very flexible ways to create objects
9958 and graphs of objects for dependency injection frameworks")
9959 (license license:asl2.0)))
9961 (define-public java-geronimo-xbean-bundleutils
9963 (inherit java-geronimo-xbean-reflect)
9964 (name "java-geronimo-xbean-bundleutils")
9966 `(#:jar-name "geronimo-xbean-bundleutils.jar"
9967 #:source-dir "xbean-bundleutils/src/main/java"
9968 #:test-dir "xbean-bundleutils/src/test"
9970 (modify-phases %standard-phases
9971 (add-before 'build 'fix-java
9973 ;; We use a more recent version of osgi, so this file requires
9974 ;; more interface method implementations.
9975 (substitute* "xbean-bundleutils/src/main/java/org/apache/xbean/osgi/bundle/util/DelegatingBundleContext.java"
9976 (("import org.osgi.framework.ServiceRegistration;")
9977 "import org.osgi.framework.ServiceRegistration;
9978 import org.osgi.framework.ServiceFactory;
9979 import java.util.Collection;
9980 import org.osgi.framework.ServiceObjects;")
9981 (("public Bundle getBundle\\(\\)")
9983 public <S> ServiceObjects<S> getServiceObjects(ServiceReference<S> reference) {
9984 throw new UnsupportedOperationException();
9987 public <S> ServiceRegistration<S> registerService(Class<S> clazz,
9988 ServiceFactory<S> factory, Dictionary<String, ?> properties) {
9989 throw new UnsupportedOperationException();
9991 public Bundle getBundle()"))
9994 `(("java-slf4j" ,java-slf4j-api)
9995 ("java-asm" ,java-asm)
9996 ("java-osgi-framework" ,java-osgi-framework)
9997 ("java-eclipse-osgi" ,java-eclipse-osgi)
9998 ("java-osgi-service-packageadmin" ,java-osgi-service-packageadmin)))))
10000 (define-public java-geronimo-xbean-asm-util
10002 (inherit java-geronimo-xbean-reflect)
10003 (name "java-geronimo-xbean-asm-util")
10005 `(#:jar-name "geronimo-xbean-asm-util.jar"
10006 #:source-dir "xbean-asm-util/src/main/java"
10007 #:tests? #f)); no tests
10009 `(("java-asm" ,java-asm)))
10010 (native-inputs '())))
10012 (define-public java-geronimo-xbean-finder
10014 (inherit java-geronimo-xbean-reflect)
10015 (name "java-geronimo-xbean-finder")
10017 `(#:jar-name "geronimo-xbean-finder.jar"
10018 #:source-dir "xbean-finder/src/main/java"
10019 #:test-dir "xbean-finder/src/test"))
10021 `(("java-slf4j-api" ,java-slf4j-api)
10022 ("java-asm" ,java-asm)
10023 ("java-geronimo-xbean-bundleutils" ,java-geronimo-xbean-bundleutils)
10024 ("java-geronimo-xbean-asm-util" ,java-geronimo-xbean-asm-util)
10025 ("java-osgi-service-packageadmin" ,java-osgi-service-packageadmin)
10026 ("java-osgi-framework" ,java-osgi-framework)))
10028 `(("java-junit" ,java-junit)
10029 ("java-hamcrest-core" ,java-hamcrest-core)))))
10031 (define-public java-gson
10037 (uri (string-append "https://github.com/google/gson/archive/"
10038 "gson-parent-" version ".tar.gz"))
10041 "1j4qnp7v046q0k48c4kyf69sxaasx2h949d3cqwsm3kzxms3x0f9"))))
10042 (build-system ant-build-system)
10044 `(#:jar-name "gson.jar"
10045 #:source-dir "gson/src/main/java"
10046 #:test-dir "gson/src/test"))
10048 `(("java-junit" ,java-junit)
10049 ("java-hamcrest-core" ,java-hamcrest-core)))
10050 (home-page "https://github.com/google/gson")
10051 (synopsis "Java serialization/deserialization library from/to JSON")
10052 (description "Gson is a Java library that can be used to convert Java
10053 Objects into their JSON representation. It can also be used to convert a JSON
10054 string to an equivalent Java object. Gson can work with arbitrary Java objects
10055 including pre-existing objects that you do not have source-code of.")
10056 (license license:asl2.0)))
10058 (define-public java-hawtjni
10060 (name "java-hawtjni")
10064 (uri (string-append "https://github.com/fusesource/hawtjni/archive/"
10065 "hawtjni-project-" version ".tar.gz"))
10068 "1bqfd732rmh6svyx17fpw9175gc9gzkcbyps2yyrf50c3zzjas6g"))))
10069 (build-system ant-build-system)
10071 `(#:jar-name "hawtjni.jar"
10072 #:source-dir "hawtjni-generator/src/main/java:hawtjni-runtime/src/main/java"
10073 #:tests? #f; no tests
10075 (modify-phases %standard-phases
10076 (add-before 'build 'build-native
10077 (lambda* (#:key inputs #:allow-other-keys)
10078 (let ((include (string-append "-I" (assoc-ref inputs "jdk") "/include/linux")))
10079 (with-directory-excursion "hawtjni-generator/src/main/resources/"
10080 (invoke "gcc" "-c" "hawtjni.c" "-o" "hawtjni.o"
10081 "-fPIC" "-O2" include)
10082 (invoke "gcc" "-c" "hawtjni-callback.c" "-o" "hawtjni-callback.o"
10083 "-fPIC" "-O2" include)
10084 (invoke "gcc" "-o" "libhawtjni.so" "-shared"
10085 "hawtjni.o" "hawtjni-callback.o")))
10087 (add-after 'install 'install-native
10088 (lambda* (#:key outputs #:allow-other-keys)
10089 (let* ((out (assoc-ref outputs "out"))
10090 (lib (string-append out "/lib"))
10091 (inc (string-append out "/include")))
10092 (with-directory-excursion "hawtjni-generator/src/main/resources/"
10093 (install-file "libhawtjni.so" lib)
10094 (install-file "hawtjni.h" inc)))
10097 `(("java-commons-cli" ,java-commons-cli)
10098 ("java-asm" ,java-asm)
10099 ("java-geronimo-xbean-finder" ,java-geronimo-xbean-finder)))
10100 (home-page "https://fusesource.github.io/hawtjni/")
10101 (synopsis "JNI code generator")
10102 (description "HawtJNI is a code generator that produces the JNI code needed
10103 to implement Java native methods. It is based on the jnigen code generator
10104 that is part of the SWT Tools project.")
10105 (license license:asl2.0)))
10107 (define-public java-jansi-native
10109 (name "java-jansi-native")
10113 (uri (string-append "https://github.com/fusesource/jansi-native/"
10114 "archive/jansi-native-" version ".tar.gz"))
10117 "0j2ydlgxbzbgshqkwghbxxxnbnx1mmjgd6k5fw6xfvxw1z956yqf"))))
10118 (build-system ant-build-system)
10120 `(#:jar-name "jansi-native.jar"
10121 #:source-dir "src/main/java"
10122 #:tests? #f; no tests
10124 (modify-phases %standard-phases
10125 (add-before 'build 'build-native
10126 (lambda* (#:key inputs #:allow-other-keys)
10127 ;; there are more required files for windows in windows/
10128 (with-directory-excursion "src/main/native-package/src"
10129 (substitute* "jansi_ttyname.c"
10130 (("#include \"jansi_.*") ""))
10131 (invoke "gcc" "-c" "jansi_ttyname.c" "-o" "jansi_ttyname.o"
10132 (string-append "-I" (assoc-ref inputs "java-hawtjni")
10134 (string-append "-I" (assoc-ref inputs "jdk")
10137 (invoke "gcc" "-o" "libjansi.so" "-shared" "jansi_ttyname.o"))))
10138 (add-before 'build 'install-native
10140 (let ((dir (string-append "build/classes/META-INF/native/"
10141 ,(match (%current-system)
10142 ((or "i686-linux" "armhf-linux")
10144 ((or "x86_64-linux" "aarch64-linux"
10147 (install-file "src/main/native-package/src/libjansi.so" dir))
10149 (add-after 'install 'install-native
10150 (lambda* (#:key outputs #:allow-other-keys)
10151 (install-file "src/main/native-package/src/jansi.h"
10152 (string-append (assoc-ref outputs "out") "/include"))
10155 `(("java-hawtjni" ,java-hawtjni)))
10156 (home-page "https://fusesource.github.io/jansi/")
10157 (synopsis "Native library for jansi")
10158 (description "This package provides the native library for jansi, a small
10159 Java library that allows you to use ANSI escape sequences to format your
10161 (license license:asl2.0)))
10163 (define-public java-jansi
10165 (name "java-jansi")
10169 (uri (string-append "https://github.com/fusesource/jansi/archive/"
10170 "jansi-project-" version ".tar.gz"))
10173 "11kh3144i3fzp21dpy8zg52mjmsr214k7km9p8ly0rqk2px0qq2z"))))
10174 (build-system ant-build-system)
10176 `(#:jar-name "jansi.jar"
10177 #:source-dir "jansi/src/main/java"
10178 #:test-dir "jansi/src/test"
10180 (modify-phases %standard-phases
10181 (add-after 'check 'clear-term
10183 (invoke "echo" "-e" "\\e[0m"))))))
10185 `(("java-jansi-native" ,java-jansi-native)))
10187 `(("java-junit" ,java-junit)
10188 ("java-hamcrest-core" ,java-hamcrest-core)))
10189 (home-page "https://fusesource.github.io/jansi/")
10190 (synopsis "Portable ANSI escape sequences")
10191 (description "Jansi is a Java library that allows you to use ANSI escape
10192 sequences to format your console output which works on every platform.")
10193 (license license:asl2.0)))
10195 (define-public java-jboss-el-api-spec
10197 (name "java-jboss-el-api-spec")
10201 (uri (string-append "https://github.com/jboss/jboss-el-api_spec/"
10202 "archive/jboss-el-api_" version
10203 "_spec-1.0.7.Final.tar.gz"))
10206 "1j45ljxalwlibxl7g7iv952sjxkw275m8vyxxij8l6wdd5pf0pdh"))))
10207 (build-system ant-build-system)
10209 `(#:jar-name "java-jboss-el-api_spec.jar"
10212 `(("java-junit" ,java-junit)))
10213 (home-page "https://github.com/jboss/jboss-el-api_spec")
10214 (synopsis "JSR-341 expression language 3.0 API")
10215 (description "This package contains an implementation of the JSR-341
10216 specification for the expression language 3.0. It implements an expression
10217 language inspired by ECMAScript and XPath. This language is used with
10218 JavaServer Pages (JSP).")
10219 ;; Either GPL2 only or CDDL.
10220 (license (list license:gpl2 license:cddl1.1))))
10222 (define-public java-jboss-interceptors-api-spec
10224 (name "java-jboss-interceptors-api-spec")
10228 (uri (string-append "https://github.com/jboss/jboss-interceptors-api_spec/"
10229 "archive/jboss-interceptors-api_" version
10230 "_spec-1.0.0.Final.tar.gz"))
10233 "0wv8x0jp9a5qxlrgkhb5jdk2gr6vi87b4j4kjb8ryxiy9gn8g51z"))))
10234 (build-system ant-build-system)
10236 `(#:jar-name "java-jboss-interceptors-api_spec.jar"
10239 #:tests? #f)); no tests
10240 (home-page "https://github.com/jboss/jboss-interceptors-api_spec")
10241 (synopsis "Interceptors 1.2 API classes from JSR 318")
10242 (description "Java-jboss-interceptors-api-spec implements the Interceptors
10243 API. Interceptors are used to interpose on business method invocations and
10245 ;; Either GPL2 only or CDDL.
10246 (license (list license:gpl2 license:cddl1.1))))
10248 (define-public java-cdi-api
10250 (name "java-cdi-api")
10254 (uri (string-append "https://github.com/cdi-spec/cdi/archive/"
10255 version ".tar.gz"))
10256 (file-name (string-append name "-" version ".tar.gz"))
10259 "1iv8b8bp07c5kmqic14jsr868vycjv4qv02lf3pkgp9z21mnfg5y"))))
10260 (build-system ant-build-system)
10262 `(#:source-dir "api/src/main/java"
10263 #:jar-name "java-cdi-api.jar"
10264 #:test-dir "api/src/test"
10266 #:tests? #f)); Tests fail because we don't have a CDI provider yet
10268 `(("java-javax-inject" ,java-javax-inject)
10269 ("java-jboss-el-api-spec" ,java-jboss-el-api-spec)
10270 ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec)))
10272 `(("java-testng" ,java-testng)
10273 ("java-hamcrest-core" ,java-hamcrest-core)))
10274 (home-page "http://cdi-spec.org/")
10275 (synopsis "Contexts and Dependency Injection APIs")
10276 (description "Java-cdi-api contains the required APIs for Contexts and
10277 Dependency Injection (CDI).")
10278 (license license:asl2.0)))
10280 (define-public java-joda-convert
10282 (name "java-joda-convert")
10286 (uri (string-append "https://github.com/JodaOrg/joda-convert/archive/v"
10287 version ".tar.gz"))
10288 (file-name (string-append name "-" version ".tar.gz"))
10291 "0vp346xz7dh9br4q7xazhc7hvzf76a6hf95fki9bg67q5jr0kjh7"))))
10292 (build-system ant-build-system)
10294 `(#:jar-name (string-append ,name "-" ,version ".jar")
10295 #:source-dir "src/main/java"
10296 #:test-include (list "**/Test*.java")
10297 ;; Contains only interfaces and base classes (no test)
10298 #:test-exclude (list "**/test*/**.java")))
10300 `(("java-guava" ,java-guava)))
10302 `(("java-junit" ,java-junit)
10303 ("java-hamcrest-core" ,java-hamcrest-core)))
10304 (home-page "https://www.joda.org/joda-convert/")
10305 (synopsis "Conversion between Objects and Strings")
10306 (description "Joda-Convert provides a small set of classes to aid
10307 conversion between Objects and Strings. It is not intended to tackle the
10308 wider problem of Object to Object transformation.")
10309 (license license:asl2.0)))
10311 (define-public java-joda-time
10313 (name "java-joda-time")
10317 (uri (string-append "https://github.com/JodaOrg/joda-time/archive/v"
10318 version ".tar.gz"))
10319 (file-name (string-append name "-" version ".tar.gz"))
10322 "1i9x91mi7yg2pasl0k3912f1pg46n37sps6rdb0v1gs8hj9ppwc1"))))
10323 (build-system ant-build-system)
10325 `(#:jar-name "java-joda-time.jar"
10326 #:source-dir "src/main/java"
10327 #:test-include (list "**/Test*.java")
10328 ;; There is no runnable test in these files
10329 #:test-exclude (list "**/Test*Chronology.java" "**/Test*Field.java")
10331 (modify-phases %standard-phases
10332 (add-after 'build 'build-resources
10334 (mkdir-p "build/classes/org/joda/time/tz/data")
10335 (mkdir-p "build/classes/org/joda/time/format")
10336 ;; This will produce the following exception:
10337 ;; java.io.IOException: Resource not found: "org/joda/time/tz/data/ZoneInfoMap"
10338 ;; which is normal, because it doesn't exist yet. It still generates
10339 ;; the same file as in the binary one can find on maven.
10340 (invoke "java" "-cp"
10341 (string-append "build/classes:" (getenv "CLASSPATH"))
10342 "org.joda.time.tz.ZoneInfoCompiler"
10343 "-src" "src/main/java/org/joda/time/tz/src"
10344 "-dst" "build/classes/org/joda/time/tz/data"
10345 "africa" "antarctica" "asia" "australasia"
10346 "europe" "northamerica" "southamerica"
10347 "pacificnew" "etcetera" "backward" "systemv")
10348 (for-each (lambda (f)
10349 (copy-file f (string-append
10350 "build/classes/org/joda/time/format/"
10352 (find-files "src/main/java/org/joda/time/format" ".*.properties"))
10354 (add-before 'install 'regenerate-jar
10356 ;; We need to regenerate the jar file to add generated data.
10357 (delete-file "build/jar/java-joda-time.jar")
10358 (invoke "ant" "jar")))
10359 (add-before 'check 'copy-test-resources
10361 (mkdir-p "build/test-classes/org/joda/time/tz/data")
10362 (copy-file "src/test/resources/tzdata/ZoneInfoMap"
10363 "build/test-classes/org/joda/time/tz/data/ZoneInfoMap")
10364 (copy-recursively "src/test/resources" "build/test-classes")
10367 `(("java-joda-convert" ,java-joda-convert)))
10369 `(("java-junit" ,java-junit)
10370 ("java-hamcrest-core" ,java-hamcrest-core)
10371 ("tzdata" ,tzdata)))
10372 (home-page "https://www.joda.org/joda-time/")
10373 (synopsis "Replacement for the Java date and time classes")
10374 (description "Joda-Time is a replacement for the Java date and time
10375 classes prior to Java SE 8.")
10376 (license license:asl2.0)))
10378 (define-public java-xerces
10380 (name "java-xerces")
10385 (uri (string-append "mirror://apache/xerces/j/source/"
10386 "Xerces-J-src." version ".tar.gz"))
10388 (base32 "1006igwy2lqrmjvdk64v8dg6qbk9c29pm8xxx7r87n0vnpvmx6pm"))
10389 (patches (search-patches
10390 "java-xerces-xjavac_taskdef.patch"
10391 "java-xerces-build_dont_unzip.patch"
10392 "java-xerces-bootclasspath.patch"))))
10393 (build-system ant-build-system)
10395 `(#:tests? #f;; Test files are not present
10396 #:test-target "test"
10399 (modify-phases %standard-phases
10400 (add-after 'unpack 'create-build.properties
10401 (lambda* (#:key inputs #:allow-other-keys)
10402 (let ((jaxp (assoc-ref inputs "java-jaxp"))
10403 (resolver (assoc-ref inputs "java-apache-xml-commons-resolver")))
10404 (with-output-to-file "build.properties"
10407 "jar.jaxp = ~a/share/java/jaxp.jar~@
10408 jar.apis-ext = ~a/share/java/jaxp.jar~@
10409 jar.resolver = ~a/share/java/xml-resolver.jar~%"
10410 jaxp jaxp resolver)))
10411 ;; Make xerces use our version of jaxp in tests
10412 (substitute* "build.xml"
10414 (string-append jaxp "/share/java/jaxp.jar"))
10415 (("\\$\\{tools.dir\\}/\\$\\{jar.apis\\}")
10418 (replace 'install (install-jars "build")))))
10420 `(("java-apache-xml-commons-resolver" ,java-apache-xml-commons-resolver)
10421 ("java-jaxp" ,java-jaxp)))
10422 (home-page "https://xerces.apache.org/xerces2-j/")
10423 (synopsis "Validating XML parser for Java with DOM level 3 support")
10424 (description "The Xerces2 Java parser is the reference implementation of
10425 XNI, the Xerces Native Interface, and also a fully conforming XML Schema
10428 Xerces2-J supports the following standards and APIs:
10431 @item eXtensible Markup Language (XML) 1.0 Second Edition Recommendation
10432 @item Namespaces in XML Recommendation
10433 @item Document Object Model (DOM) Level 2 Core, Events, and Traversal and
10434 Range Recommendations
10435 @item Simple API for XML (SAX) 2.0.1 Core and Extension
10436 @item Java APIs for XML Processing (JAXP) 1.2.01
10437 @item XML Schema 1.0 Structures and Datatypes Recommendations
10438 @item Experimental implementation of the Document Object Model (DOM) Level 3
10439 Core and Load/Save Working Drafts
10440 @item Provides a partial implementation of the XML Inclusions (XInclude) W3C
10441 Candidate Recommendation
10444 Xerces is now able to parse documents written according to the XML 1.1
10445 Candidate Recommendation, except that it does not yet provide an option to
10446 enable normalization checking as described in section 2.13 of this
10447 specification. It also handles namespaces according to the XML Namespaces 1.1
10448 Candidate Recommendation, and will correctly serialize XML 1.1 documents if
10449 the DOM level 3 load/save API's are in use.")
10450 (license license:asl2.0)))
10452 (define-public java-jakarta-regexp
10454 (name "java-jakarta-regexp")
10459 (uri (string-append
10460 "https://archive.apache.org/dist/jakarta/regexp/jakarta-regexp-"
10461 version ".tar.gz"))
10464 "0zg9rmyif48dck0cv6ynpxv23mmcsx265am1fnnxss7brgw0ms3r"))))
10465 (build-system ant-build-system)
10467 `(#:test-target "test"
10469 (modify-phases %standard-phases
10471 (lambda* (#:key outputs #:allow-other-keys)
10472 (let* ((out (assoc-ref outputs "out"))
10473 (out-share (string-append out "/share/java")))
10474 (mkdir-p out-share)
10475 (for-each (lambda (name)
10476 (install-file name out-share))
10477 (find-files "build" "^jakarta-regexp-.*\\.jar$"))
10479 (home-page "https://attic.apache.org/projects/jakarta-regexp.html")
10480 (synopsis "Regular expression parser generator for Java.")
10481 (description "@code{jakarta-regexp} is an old regular expression parser
10482 generator for Java.")
10483 (license license:asl2.0)))
10485 (define-public java-jline
10487 (name "java-jline")
10491 (uri (string-append "https://github.com/jline/jline1/archive/jline-"
10492 version ".tar.gz"))
10495 "0bi3p6vrh7a6v0fbpb6rx9plpmx5zk3lr352xzdbz2jcxg499wir"))))
10496 (build-system ant-build-system)
10498 `(#:jar-name "jline.jar"
10499 #:source-dir "src/main/java"
10500 #:test-dir "src/test"
10502 (modify-phases %standard-phases
10503 (add-before 'build 'copy-resources
10505 (copy-recursively "src/main/resources" "build/classes")
10508 `(("java-junit" ,java-junit)))
10509 (home-page "https://jline.github.io")
10510 (synopsis "Console input handling library")
10511 (description "JLine is a Java library for handling console input. It is
10512 similar in functionality to BSD editline and GNU readline but with additional
10513 features that bring it on par with the Z shell line editor.")
10514 (license license:bsd-3)))
10516 (define-public java-jline-2
10518 (inherit java-jline)
10522 (uri (string-append "https://github.com/jline/jline2/archive/jline-"
10523 version ".tar.gz"))
10526 "1c6qa26mf0viw8hg4jnv72s7i1qb1gh1l8rrzcdvqhqhx82rkdlf"))))
10529 ,@(package-arguments java-jline)))
10531 `(("java-jansi" ,java-jansi)
10532 ("java-jansi-native" ,java-jansi-native)))
10534 `(("java-powermock-modules-junit4" ,java-powermock-modules-junit4)
10535 ("java-powermock-modules-junit4-common" ,java-powermock-modules-junit4-common)
10536 ("java-powermock-api-easymock" ,java-powermock-api-easymock)
10537 ("java-powermock-api-support" ,java-powermock-api-support)
10538 ("java-powermock-core" ,java-powermock-core)
10539 ("java-powermock-reflect" ,java-powermock-reflect)
10540 ("java-easymock" ,java-easymock)
10541 ("java-jboss-javassist" ,java-jboss-javassist)
10542 ("java-objenesis" ,java-objenesis)
10543 ("java-asm" ,java-asm)
10544 ("java-hamcrest-core" ,java-hamcrest-core)
10545 ("java-cglib" ,java-cglib)
10546 ("java-junit" ,java-junit)
10547 ("java-hawtjni" ,java-hawtjni)))))
10549 (define-public java-xmlunit
10551 (name "java-xmlunit")
10555 (uri (string-append "https://github.com/xmlunit/xmlunit/archive/v"
10556 version ".tar.gz"))
10557 (file-name (string-append name "-" version ".tar.gz"))
10560 "035rivlnmwhfqj0fzviciv0bkh1h95ps1iwnh2kjcvdbk5nccm4z"))))
10561 (build-system ant-build-system)
10563 `(#:jar-name "java-xmlunit.jar"
10564 #:source-dir "xmlunit-core/src/main/java"
10565 #:test-dir "xmlunit-core/src/test"
10567 (modify-phases %standard-phases
10568 (add-before 'check 'copy-test-resources
10569 (lambda* (#:key inputs #:allow-other-keys)
10570 (copy-recursively (assoc-ref inputs "resources") "../test-resources")
10573 `(("java-junit" ,java-junit)
10574 ("java-mockito-1" ,java-mockito-1)
10575 ("java-hamcrest-all" ,java-hamcrest-all)
10576 ("java-objenesis" ,java-objenesis)
10577 ("java-asm" ,java-asm)
10578 ("java-cglib" ,java-cglib)
10582 (uri (git-reference
10583 (url "https://github.com/xmlunit/test-resources.git")
10584 (commit "a590d2ae865c3e0455691d76ba8eefccc2215aec")))
10585 (file-name "java-xmlunit-test-resources")
10588 "0r0glj37pg5l868yjz78gckr91cs8fysxxbp9p328dssssi91agr"))))))
10589 (home-page "http://www.xmlunit.org/")
10590 (synopsis "XML output testing")
10591 (description "XMLUnit provides you with the tools to verify the XML you
10592 emit is the one you want to create. It provides helpers to validate against
10593 an XML Schema, assert the values of XPath queries or compare XML documents
10594 against expected outcomes.")
10595 (license license:asl2.0)))
10597 (define-public java-xmlunit-legacy
10599 (inherit java-xmlunit)
10600 (name "java-xmlunit-legacy")
10602 `(#:jar-name "java-xmlunit-legacy.jar"
10603 #:source-dir "xmlunit-legacy/src/main/java"
10604 #:test-dir "xmlunit-legacy/src/test"))
10606 `(("java-xmlunit" ,java-xmlunit)
10607 ("java-junit" ,java-junit)))
10609 `(("java-mockito-1" ,java-mockito-1)))))
10611 (define-public java-xmlunit-matchers
10613 (inherit java-xmlunit)
10614 (name "java-xmlunit-matchers")
10616 `(#:jar-name "java-xmlunit-matchers.jar"
10617 #:source-dir "xmlunit-matchers/src/main/java"
10618 #:test-dir "xmlunit-matchers/src/test"
10620 ;; Cannot open xsd for http://www.xmlunit.org/test-support/Book.xsd
10621 (list "**/ValidationMatcherTest.java")
10623 (modify-phases %standard-phases
10624 (add-before 'build 'copy-test-class
10626 (copy-file "xmlunit-core/src/test/java/org/xmlunit/TestResources.java"
10627 "xmlunit-matchers/src/test/java/org/xmlunit/TestResources.java")
10629 (add-before 'build 'fix-test-resources-path
10631 (substitute* (find-files "xmlunit-matchers/src/test" ".*.java")
10632 (("../test-resources") "test-resources"))
10634 (add-before 'check 'copy-test-resources
10635 (lambda* (#:key inputs #:allow-other-keys)
10636 (copy-recursively (assoc-ref inputs "resources") "test-resources")
10639 `(("java-xmlunit" ,java-xmlunit)
10640 ("java-junit" ,java-junit)))))
10642 (define-public java-openchart2
10644 (name "java-openchart2")
10648 (uri (string-append "http://download.approximatrix.com/openchart2/"
10649 "openchart2-" version ".source.zip"))
10652 "1xq96zm5r02n1blja0072jmmsifmxc40lbyfbnmcnr6mw42frh4g"))))
10653 (build-system ant-build-system)
10655 `(#:test-target "test"
10657 (modify-phases %standard-phases
10658 (add-after 'unpack 'fix-junit-errors
10660 (with-directory-excursion "unittest/src/com/approximatrix/charting/"
10661 (substitute* '("coordsystem/ticklocator/NumericXTickLocatorTest.java"
10662 "coordsystem/ticklocator/NumericYTickLocatorTest.java"
10663 "coordsystem/ticklocator/ObjectXTickLocatorTest.java"
10664 "model/DefaultChartDataModelConstraintsTest.java"
10665 "model/MultiScatterDataModelConstraintsTest.java"
10666 "model/threedimensional/DotPlotDataModelConstraintsTest.java")
10667 (("(assertEquals[^;]+);" before _)
10668 (string-append (string-drop-right before 2) ", 1E-6);"))))
10670 (replace 'install (install-jars ".")))))
10673 ("java-junit" ,java-junit)
10674 ("java-hamcrest-core" ,java-hamcrest-core)))
10675 (home-page "https://approximatrix.com/products/openchart2/")
10676 (synopsis "Simple plotting for Java")
10677 (description "Openchart2 provides a simple, yet powerful, interface for
10678 Java programmers to create two-dimensional charts and plots. The library
10679 features an assortment of graph styles, including advanced scatter plots, bar
10680 graphs, and pie charts.")
10681 (license license:lgpl2.1+)))
10683 (define-public java-commons-httpclient
10685 (name "java-commons-httpclient")
10689 (uri (string-append "https://archive.apache.org/dist/httpcomponents/"
10690 "commons-httpclient/source/commons-httpclient-"
10691 version "-src.tar.gz"))
10694 "1wlpn3cfy3d4inxy6g7wxcsa8p7sshn6aldk9y4ia3lb879rd97r"))))
10695 (build-system ant-build-system)
10697 `(#:build-target "compile"
10698 #:test-target "test"
10699 #:tests? #f; requires junit-textui (junit 3)
10701 (modify-phases %standard-phases
10702 (add-before 'build 'fix-accent
10704 (for-each (lambda (file)
10705 (with-fluids ((%default-port-encoding "ISO-8859-1"))
10707 (("\\* @author Ortwin .*") "* @author Ortwin Glueck\n"))))
10708 '("src/java/org/apache/commons/httpclient/HttpContentTooLargeException.java"
10709 "src/examples/TrivialApp.java" "src/examples/ClientApp.java"
10710 "src/test/org/apache/commons/httpclient/TestHttps.java"
10711 "src/test/org/apache/commons/httpclient/TestURIUtil2.java"))
10714 (lambda* (#:key outputs #:allow-other-keys)
10715 (invoke "ant" "dist"
10716 (string-append "-Ddist.home=" (assoc-ref outputs "out")
10720 `(("java-commons-logging" ,java-commons-logging-minimal)
10721 ("java-commons-codec" ,java-commons-codec)))
10722 (home-page "https://hc.apache.org")
10723 (synopsis "HTTP/1.1 compliant HTTP agent implementation")
10724 (description "This package contains an HTTP/1.1 compliant HTTP agent
10725 implementation. It also provides reusable components for client-side
10726 authentication, HTTP state management, and HTTP connection management.")
10727 (license license:asl2.0)))
10729 (define-public java-commons-vfs
10731 (name "java-commons-vfs")
10735 (uri (string-append "mirror://apache/commons/vfs/source/"
10736 "commons-vfs2-distribution-" version "-src.tar.gz"))
10737 (file-name (string-append name "-" version ".tar.gz"))
10740 "1cnq1iaghbp4cslpnvwbp83i5v234x87irssqynhwpfgw7caf1s3"))
10741 (modules '((guix build utils)))
10744 (for-each delete-file
10745 (find-files "." "\\.jar$"))
10747 (build-system ant-build-system)
10749 `(#:jar-name "commons-vfs.jar"
10750 #:source-dir "commons-vfs2/src/main/java"
10751 #:test-dir "commons-vfs2/src/test"
10752 ; FIXME: tests depend on many things: apache sshd, hadoop, ftpserver, ...
10755 (modify-phases %standard-phases
10756 (add-before 'build 'remove-hadoop-and-webdav
10757 ; Remove these files as they are not required and depend on difficult
10760 (for-each delete-file-recursively
10761 '("commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/webdav"
10762 "commons-vfs2/src/main/java/org/apache/commons/vfs2/provider/hdfs"))
10765 `(("java-commons-collections4" ,java-commons-collections4)
10766 ("java-commons-compress" ,java-commons-compress)
10767 ("java-commons-httpclient" ,java-commons-httpclient)
10768 ("java-commons-logging-minimal" ,java-commons-logging-minimal)
10769 ("java-commons-net" ,java-commons-net)
10770 ("java-jsch" ,java-jsch)))
10771 (home-page "https://commons.apache.org/proper/commons-vfs/")
10772 (synopsis "Java file system library")
10773 (description "Commons VFS provides a single API for accessing various
10774 different file systems. It presents a uniform view of the files from various
10775 different sources, such as the files on local disk, on an HTTP server, or
10776 inside a Zip archive.")
10777 (license license:asl2.0)))
10779 (define-public java-jakarta-oro
10781 (name "java-jakarta-oro")
10785 (uri (string-append "https://archive.apache.org/dist/jakarta/oro/"
10786 "jakarta-oro-" version ".tar.gz"))
10789 "0rpmnsskiwmsy8r0sckz5n5dbvh3vkxx8hpm177c754r8xy3qksc"))
10790 (modules '((guix build utils)))
10793 (delete-file (string-append "jakarta-oro-" ,version ".jar"))
10795 (build-system ant-build-system)
10797 `(#:build-target "package"
10798 #:tests? #f; tests are run as part of the build process
10800 (modify-phases %standard-phases
10802 (install-jars ,(string-append "jakarta-oro-" version))))))
10803 (home-page "https://jakarta.apache.org/oro/")
10804 (synopsis "Text-processing for Java")
10805 (description "The Jakarta-ORO Java classes are a set of text-processing
10806 Java classes that provide Perl5 compatible regular expressions, AWK-like
10807 regular expressions, glob expressions, and utility classes for performing
10808 substitutions, splits, filtering filenames, etc. This library is the successor
10809 of the OROMatcher, AwkTools, PerlTools, and TextTools libraries originally
10811 (license license:asl1.1)))
10813 (define-public java-native-access
10815 (name "java-native-access")
10819 (uri (string-append "https://github.com/java-native-access/jna/"
10820 "archive/" version ".tar.gz"))
10821 (file-name (string-append name "-" version ".tar.gz"))
10824 "0zrpzkib6b905i018a9pqlzkqinphywr6y4jwv6mwp63jjqvqkd9"))
10825 (modules '((guix build utils)))
10828 (for-each delete-file (find-files "." ".*.jar"))
10829 (delete-file-recursively "native/libffi")
10830 (delete-file-recursively "dist")
10832 (build-system ant-build-system)
10834 `(#:tests? #f; FIXME: tests require reflections.jar
10835 #:test-target "test"
10836 #:make-flags (list "-Ddynlink.native=true")
10838 (modify-phases %standard-phases
10839 (add-before 'build 'fix-build.xml
10840 (lambda* (#:key inputs #:allow-other-keys)
10841 (substitute* "build.xml"
10842 ;; Since we removed the bundled ant.jar, give the correct path
10843 (("lib/ant.jar") (string-append (assoc-ref inputs "ant") "/lib/ant.jar"))
10844 ;; We removed generated native libraries. We can only rebuild one
10845 ;; so don't fail if we can't find a native library for another architecture.
10846 (("zipfileset") "zipfileset erroronmissingarchive=\"false\""))
10847 ;; Copy test dependencies
10848 (copy-file (string-append (assoc-ref inputs "java-junit")
10849 "/share/java/junit.jar")
10851 (copy-file (string-append (assoc-ref inputs "java-hamcrest-core")
10852 "/share/java/hamcrest-core.jar")
10853 "lib/hamcrest-core.jar")
10854 ;; FIXME: once reflections.jar is built, copy it to lib/test.
10856 (add-before 'build 'build-native
10858 (invoke "ant" "-Ddynlink.native=true" "native")
10861 (install-jars "build")))))
10863 `(("libffi" ,libffi)
10867 `(("java-junit" ,java-junit)
10868 ("java-hamcrest-core" ,java-hamcrest-core)))
10869 (home-page "https://github.com/java-native-access/jna")
10870 (synopsis "Access to native shared libraries from Java")
10871 (description "JNA provides Java programs easy access to native shared
10872 libraries without writing anything but Java code - no JNI or native code is
10873 required. JNA allows you to call directly into native functions using natural
10874 Java method invocation.")
10875 ;; Java Native Access project (JNA) is dual-licensed under 2
10876 ;; alternative Free licenses: LGPL 2.1 or later and Apache License 2.0.
10879 license:lgpl2.1+))))
10881 (define-public java-native-access-platform
10883 (inherit java-native-access)
10884 (name "java-native-access-platform")
10886 `(#:test-target "test"
10887 #:tests? #f; require jna-test.jar
10889 (modify-phases %standard-phases
10890 (add-before 'build 'chdir
10892 (chdir "contrib/platform")
10894 (add-after 'chdir 'fix-ant
10895 (lambda* (#:key inputs #:allow-other-keys)
10896 (substitute* "nbproject/project.properties"
10897 (("../../build/jna.jar")
10898 (string-append (assoc-ref inputs "java-native-access")
10899 "/share/java/jna.jar"))
10900 (("../../lib/hamcrest-core-.*.jar")
10901 (string-append (assoc-ref inputs "java-hamcrest-core")
10902 "/share/java/hamcrest-core.jar"))
10903 (("../../lib/junit.jar")
10904 (string-append (assoc-ref inputs "java-junit")
10905 "/share/java/junit.jar")))
10908 (install-jars "dist")))))
10910 `(("java-native-access" ,java-native-access)))
10911 (synopsis "Cross-platform mappings for jna")
10912 (description "java-native-access-platfrom has cross-platform mappings
10913 and mappings for a number of commonly used platform functions, including a
10914 large number of Win32 mappings as well as a set of utility classes that
10915 simplify native access.")))
10917 (define-public java-jsch-agentproxy-core
10919 (name "java-jsch-agentproxy-core")
10923 (uri (string-append "https://github.com/ymnk/jsch-agent-proxy/archive/"
10924 version ".tar.gz"))
10925 (file-name (string-append name "-" version ".tar.gz"))
10928 "02iqg6jbc1kxvfzqcg6wy9ygqxfm82bw5rf6vnswqy4y572niz4q"))))
10929 (build-system ant-build-system)
10931 `(#:jar-name "jsch-agentproxy-core.jar"
10932 #:source-dir "jsch-agent-proxy-core/src/main/java"
10933 #:tests? #f)); no tests
10934 (home-page "https://github.com/ymnk/jsch-agent-proxy")
10935 (synopsis "Core component of the proxy to ssh-agent and Pageant in Java")
10936 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
10937 and Pageant included Putty. It will be easily integrated into JSch, and users
10938 will be allowed to use these programs for authentication.")
10939 (license license:bsd-3)))
10941 (define-public java-jsch-agentproxy-sshagent
10943 (inherit java-jsch-agentproxy-core)
10944 (name "java-jsch-agentproxy-sshagent")
10946 `(#:jar-name "jsch-agentproxy-sshagent.jar"
10947 #:source-dir "jsch-agent-proxy-sshagent/src/main/java"
10948 #:tests? #f)); no tests
10950 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)))
10951 (synopsis "Proxy to ssh-agent")
10952 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
10953 and Pageant included in Putty. This component contains the code for a proxy to
10956 (define-public java-jsch-agentproxy-usocket-jna
10958 (inherit java-jsch-agentproxy-core)
10959 (name "java-jsch-agentproxy-usocket-jna")
10961 `(#:jar-name "jsch-agentproxy-usocket-jna.jar"
10962 #:source-dir "jsch-agent-proxy-usocket-jna/src/main/java"
10963 #:tests? #f)); no tests
10965 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
10966 ("java-native-access" ,java-native-access)))
10967 (synopsis "USocketFactory implementation using JNA")
10968 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
10969 and Pageant included in Putty. This component contains an implementation of
10970 USocketFactory using @dfn{JNA} (Java Native Access).")))
10972 (define-public java-jsch-agentproxy-pageant
10974 (inherit java-jsch-agentproxy-core)
10975 (name "java-jsch-agentproxy-pageant")
10977 `(#:jar-name "jsch-agentproxy-pageant.jar"
10978 #:source-dir "jsch-agent-proxy-pageant/src/main/java"
10979 #:tests? #f)); no tests
10981 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
10982 ("java-native-access" ,java-native-access)
10983 ("java-native-access-platform" ,java-native-access-platform)))
10984 (synopsis "Proxy to pageant")
10985 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
10986 and Pageant included in Putty. This component contains the code for a proxy to
10989 (define-public java-jsch-agentproxy-usocket-nc
10991 (inherit java-jsch-agentproxy-core)
10992 (name "java-jsch-agentproxy-usocket-nc")
10994 `(#:jar-name "jsch-agentproxy-usocket-nc.jar"
10995 #:source-dir "jsch-agent-proxy-usocket-nc/src/main/java"
10996 #:tests? #f)); no tests
10998 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)))
10999 (synopsis "USocketFactory implementation using netcat")
11000 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
11001 and Pageant included in Putty. This component contains an implementation of
11002 USocketFactory using netcat.")))
11004 (define-public java-jsch-agentproxy-connector-factory
11006 (inherit java-jsch-agentproxy-core)
11007 (name "java-jsch-agentproxy-connector-factory")
11009 `(#:jar-name "jsch-agentproxy-connector-factory.jar"
11010 #:source-dir "jsch-agent-proxy-connector-factory/src/main/java"
11011 #:tests? #f)); no tests
11013 `(("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
11014 ("java-jsch-agentproxy-sshagent" ,java-jsch-agentproxy-sshagent)
11015 ("java-jsch-agentproxy-usocket-jna" ,java-jsch-agentproxy-usocket-jna)
11016 ("java-jsch-agentproxy-pageant" ,java-jsch-agentproxy-pageant)
11017 ("java-jsch-agentproxy-usocket-nc" ,java-jsch-agentproxy-usocket-nc)))
11018 (synopsis "Connector factory for jsch agent proxy")
11019 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
11020 and Pageant included in Putty. This component contains a connector factory.")))
11022 (define-public java-jsch-agentproxy-jsch
11024 (inherit java-jsch-agentproxy-core)
11025 (name "java-jsch-agentproxy-jsch")
11027 `(#:jar-name "jsch-agentproxy-jsch.jar"
11028 #:source-dir "jsch-agent-proxy-jsch/src/main/java"
11029 #:tests? #f)); no tests
11031 `(("java-jsch" ,java-jsch)
11032 ("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)))
11033 (synopsis "JSch integration library for agentproxy")
11034 (description "jsch-agent-proxy is a proxy program to OpenSSH's ssh-agent
11035 and Pageant included in Putty. This component contains a library to use
11036 jsch-agent-proxy with JSch.")))
11038 (define-public java-apache-ivy
11040 (name "java-apache-ivy")
11044 (uri (string-append "mirror://apache//ant/ivy/" version
11045 "/apache-ivy-" version "-src.tar.gz"))
11048 "1xkfn57g2m7l6y0xdq75x5rnrgk52m9jx2xah70g3ggl8750hbr0"))
11051 "java-apache-ivy-port-to-latest-bouncycastle.patch"))))
11052 (build-system ant-build-system)
11054 `(#:jar-name "ivy.jar"
11057 (modify-phases %standard-phases
11058 (add-before 'build 'remove-example
11060 (delete-file-recursively "src/example")
11062 (add-before 'build 'copy-resources
11064 (with-directory-excursion "src/java"
11065 (for-each (lambda (file)
11066 (install-file file (string-append "../../build/classes/" (dirname file))))
11068 (find-files "." ".*.css")
11069 (find-files "." ".*.ent")
11070 (find-files "." ".*.html")
11071 (find-files "." ".*.properties")
11072 (find-files "." ".*.xsd")
11073 (find-files "." ".*.xsl")
11074 (find-files "." ".*.xml"))))
11076 (add-before 'build 'fix-vfs
11079 '("src/java/org/apache/ivy/plugins/repository/vfs/VfsRepository.java"
11080 "src/java/org/apache/ivy/plugins/repository/vfs/VfsResource.java")
11081 (("import org.apache.commons.vfs") "import org.apache.commons.vfs2"))
11083 (add-before 'install 'copy-manifest
11085 (install-file "META-INF/MANIFEST.MF" "build/classes/META-INF")
11087 (add-before 'install 'repack
11089 (invoke "jar" "-cmf" "build/classes/META-INF/MANIFEST.MF" "build/jar/ivy.jar"
11090 "-C" "build/classes" ".")))
11091 (add-after 'install 'install-bin
11092 (lambda* (#:key outputs #:allow-other-keys)
11093 (let* ((bin (string-append (assoc-ref outputs "out") "/bin"))
11094 (ivy (string-append bin "/ivy"))
11095 (jar (string-append (assoc-ref outputs "out") "/share/java/ivy.jar")))
11097 (with-output-to-file ivy
11099 (display (string-append
11100 "#!" (which "sh") "\n"
11101 "if [[ -z $CLASSPATH ]]; then\n"
11102 " cp=\"" (getenv "CLASSPATH") ":" jar "\"\n"
11104 " cp=\"" (getenv "CLASSPATH") ":" jar ":$CLASSPATH\"\n"
11106 (which "java") " -cp $cp org.apache.ivy.Main $@\n"))))
11110 `(("java-bouncycastle" ,java-bouncycastle)
11111 ("java-commons-cli" ,java-commons-cli)
11112 ("java-commons-collections" ,java-commons-collections)
11113 ("java-commons-httpclient" ,java-commons-httpclient)
11114 ("java-commons-lang" ,java-commons-lang)
11115 ("java-commons-vfs" ,java-commons-vfs)
11116 ("java-jakarta-oro" ,java-jakarta-oro)
11117 ("java-jsch" ,java-jsch)
11118 ("java-jsch-agentproxy-core" ,java-jsch-agentproxy-core)
11119 ("java-jsch-agentproxy-connector-factory" ,java-jsch-agentproxy-connector-factory)
11120 ("java-jsch-agentproxy-jsch" ,java-jsch-agentproxy-jsch)
11121 ("java-junit" ,java-junit)))
11122 (home-page "https://ant.apache.org/ivy")
11123 (synopsis "Dependency manager for the Java programming language")
11124 (description "Ivy is a tool for managing (recording, tracking, resolving
11125 and reporting) project dependencies. It is characterized by the following:
11128 @item flexibility and configurability - Ivy is essentially process agnostic
11129 and is not tied to any methodology or structure. Instead it provides the
11130 necessary flexibility and configurability to be adapted to a broad range
11131 of dependency management and build processes.
11132 @item tight integration with Apache Ant - while available as a standalone tool,
11133 Ivy works particularly well with Apache Ant providing a number of
11134 powerful Ant tasks ranging from dependency resolution to dependency
11135 reporting and publication.
11137 (license license:asl2.0)))
11139 (define-public java-eclipse-sisu-inject
11141 (name "java-eclipse-sisu-inject")
11145 (uri (git-reference
11146 (url "https://github.com/eclipse/sisu.inject/")
11147 (commit "releases/0.3.3")))
11148 (file-name (git-file-name name version))
11151 "0gibc9x0bw0f4ls086fx73610fcspz9g2as7kcpcfhvl5znysvg7"))))
11152 (build-system ant-build-system)
11154 `(#:jar-name "eclipse-sisu-inject.jar"
11155 #:source-dir "org.eclipse.sisu.inject/src"
11157 #:tests? #f)); no tests
11159 `(("java-guice" ,java-guice)
11160 ("java-guice-servlet" ,java-guice-servlet)
11161 ("java-javax-inject" ,java-javax-inject)
11162 ("java-javaee-servletapi" ,java-javaee-servletapi)
11163 ("java-junit" ,java-junit)
11164 ("java-slf4j-api" ,java-slf4j-api)
11165 ("java-jsr305" ,java-jsr305)
11166 ("java-jsr250" ,java-jsr250)
11167 ("java-cdi-api" ,java-cdi-api)
11168 ("java-osgi-framework" ,java-osgi-framework)
11169 ("java-osgi-util-tracker" ,java-osgi-util-tracker)
11170 ("java-testng" ,java-testng)))
11171 (home-page "https://www.eclipse.org/sisu/")
11172 (synopsis "Classpath scanning, auto-binding, and dynamic auto-wiring")
11173 (description "Sisu is a modular JSR330-based container that supports
11174 classpath scanning, auto-binding, and dynamic auto-wiring. Sisu uses
11175 Google-Guice to perform dependency injection and provide the core JSR330
11176 support, but removes the need to write explicit bindings in Guice modules.
11177 Integration with other containers via the Eclipse Extension Registry and the
11178 OSGi Service Registry is a goal of this project.")
11179 (license license:epl1.0)))
11181 (define-public java-eclipse-sisu-plexus
11183 (name "java-eclipse-sisu-plexus")
11187 (uri (git-reference
11188 (url "https://github.com/eclipse/sisu.plexus.git")
11189 (commit (string-append "releases/" version))))
11190 (file-name (git-file-name name version))
11193 "17mjlajnsqnk07cc58h1qpxrif85yb2m2y0pyba48yjjgikk8r9f"))
11194 (modules '((guix build utils)))
11197 (for-each delete-file (find-files "." ".*.jar"))
11198 (rename-file "org.eclipse.sisu.plexus.tests/src"
11199 "org.eclipse.sisu.plexus.tests/java")
11201 (build-system ant-build-system)
11203 `(#:jar-name "eclipse-sisu-plexus.jar"
11204 #:source-dir "org.eclipse.sisu.plexus/src"
11205 #:test-dir "org.eclipse.sisu.plexus.tests"
11208 ;; This test fails probably because we can't generate the necessary
11210 "**/PlexusLoggingTest.*"
11211 ;; FIXME: This test fails because of some injection error
11212 "**/PlexusRequirementTest.*")
11215 (modify-phases %standard-phases
11216 (add-before 'build 'copy-resources
11218 (install-file "org.eclipse.sisu.plexus/META-INF/plexus/components.xml"
11219 "build/classes/META-INF/plexus")
11221 (add-before 'check 'build-test-jar
11223 (with-directory-excursion "org.eclipse.sisu.plexus.tests/resources/component-jar/src/main/"
11225 (with-directory-excursion "java"
11226 (apply invoke "javac" "-cp"
11227 (string-append (getenv "CLASSPATH")
11228 ":../../../../../build/classes")
11229 (find-files "." ".*.java"))
11230 (for-each (lambda (file) (install-file file (string-append "../build/" file)))
11231 (find-files "." ".*.jar")))
11232 (mkdir-p "build/META-INF/plexus")
11233 (copy-file "resources/META-INF/plexus/components.xml"
11234 "build/META-INF/plexus/components.xml")
11235 (with-directory-excursion "build"
11236 (invoke "jar" "cf" "../../../component-jar-0.1.jar" ".")))
11237 (with-directory-excursion "org.eclipse.sisu.plexus.tests/"
11238 (copy-recursively "META-INF" "../build/test-classes/META-INF")
11239 (substitute* "java/org/eclipse/sisu/plexus/DefaultPlexusContainerTest.java"
11240 (("resources/component-jar")
11241 "org.eclipse.sisu.plexus.tests/resources/component-jar")))
11244 `(("java-plexus-classworlds" ,java-plexus-classworlds)
11245 ("java-plexus-util" ,java-plexus-utils)
11246 ("java-plexus-component-annotations" ,java-plexus-component-annotations)
11247 ("java-osgi-framework" ,java-osgi-framework)
11248 ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject)
11249 ("java-guice" ,java-guice)
11250 ("java-javax-inject" ,java-javax-inject)
11251 ("java-slf4j-api" ,java-slf4j-api)
11252 ("java-junit" ,java-junit)))
11254 `(("java-guava" ,java-guava)
11255 ("java-aopalliance" ,java-aopalliance)
11256 ("java-cglib" ,java-cglib)
11257 ("java-asm" ,java-asm)))
11258 (home-page "https://www.eclipse.org/sisu/")
11259 (synopsis "Plexus support for the sisu container")
11260 (description "Sisu is a modular JSR330-based container that supports
11261 classpath scanning, auto-binding, and dynamic auto-wiring. This package
11262 adds Plexus support to the Sisu-Inject container.")
11263 (license license:epl1.0)))
11265 (define-public java-commons-compiler
11267 (name "java-commons-compiler")
11271 (uri (git-reference
11272 (url "https://github.com/janino-compiler/janino")
11273 (commit "91aa95686d1e4ca3b16a984a03a38686572331b2")))
11274 (file-name (string-append name "-" version))
11277 "04hfdl59sgh20qkxzgnibvs8f9hy6n7znxwpk611y5d89977y62r"))
11278 (modules '((guix build utils)))
11281 (for-each delete-file
11282 (find-files "." "\\.jar$"))
11284 (build-system ant-build-system)
11286 `(#:jar-name "commons-compiler.jar"
11287 #:source-dir "commons-compiler/src/main"
11288 #:tests? #f)); no tests
11289 (home-page "https://github.com/janino-compiler/janino")
11290 (synopsis "Java compiler")
11291 (description "Commons-compiler contains an API for janino, including the
11292 @code{IExpressionEvaluator}, @code{IScriptEvaluator}, @code{IClassBodyEvaluator}
11293 and @code{ISimpleCompiler} interfaces.")
11294 (license license:bsd-3)))
11296 (define-public java-janino
11298 (inherit java-commons-compiler)
11299 (name "java-janino")
11301 `(#:jar-name "janino.jar"
11302 #:source-dir "src/main/java"
11304 (modify-phases %standard-phases
11305 (add-before 'configure 'chdir
11310 `(("java-commons-compiler" ,java-commons-compiler)))
11312 `(("java-junit" ,java-junit)
11313 ("java-hamcrest-core" ,java-hamcrest-core)))
11314 (description "Janino is a Java compiler. Janino can compile a set of
11315 source files to a set of class files like @code{javac}, but also compile a
11316 Java expression, block, class body or source file in memory, load the bytecode
11317 and execute it directly in the same JVM. @code{janino} can also be used for
11318 static code analysis or code manipulation.")))
11320 (define-public java-logback-core
11322 (name "java-logback-core")
11326 (uri (string-append "https://github.com/qos-ch/logback/archive/v_"
11327 version ".tar.gz"))
11328 (file-name (string-append name "-" version ".tar.gz"))
11331 "1x6ga74yfgm94cfx98gybakbrlilx8i2gn6dx13l40kasmys06mi"))
11332 (modules '((guix build utils)))
11335 (delete-file-recursively "logback-access/lib")
11337 (build-system ant-build-system)
11339 `(#:jar-name "logback.jar"
11340 #:source-dir "src/main/java"
11341 #:test-dir "src/test"
11343 ;; These tests fail with Unable to set MockitoNamingPolicy on cglib generator
11344 ;; which creates FastClasses
11345 (list "**/AllCoreTest.*"
11346 "**/AutoFlushingObjectWriterTest.*"
11348 "**/ResilientOutputStreamTest.*"
11349 ;; And we still don't want to run abstract classes
11352 (modify-phases %standard-phases
11353 (add-before 'configure 'chdir
11355 (chdir "logback-core")
11358 `(("java-javax-mail" ,java-javax-mail)
11359 ("servlet" ,java-javaee-servletapi)
11360 ("java-commons-compiler" ,java-commons-compiler)
11361 ("java-janino" ,java-janino)))
11363 `(("java-junit" ,java-junit)
11364 ("java-hamcrest-core" ,java-hamcrest-core)
11365 ("java-mockito-1" ,java-mockito-1)
11366 ("java-cglib" ,java-cglib)
11367 ("java-asm" ,java-asm)
11368 ("java-objenesis" ,java-objenesis)
11369 ("java-joda-time" ,java-joda-time)))
11370 (home-page "https://logback.qos.ch")
11371 (synopsis "Logging for java")
11372 (description "Logback is intended as a successor to the popular log4j project.
11373 This module lays the groundwork for the other two modules.")
11374 ;; Either epl1.0 or lgpl2.1
11375 (license (list license:epl1.0
11376 license:lgpl2.1))))
11378 (define-public java-logback-classic
11380 (inherit java-logback-core)
11381 (name "java-logback-classic")
11383 `(#:jar-name "logback-classic.jar"
11384 #:source-dir "src/main/java"
11385 #:test-dir "src/test"
11386 #:tests? #f; tests require more packages: h2, greenmail, hsql, subethamail, slf4j, log4j, felix
11389 (modify-phases %standard-phases
11390 (add-before 'configure 'chdir
11392 (chdir "logback-classic")
11395 (lambda* (#:key inputs #:allow-other-keys)
11396 (mkdir-p "build/classes")
11397 (setenv "CLASSPATH"
11399 (apply append (map (lambda (input)
11400 (find-files (assoc-ref inputs input)
11402 '("java-logback-core" "java-slf4j-api"
11403 "java-commons-compiler" "servlet"
11406 (apply invoke "groovyc" "-d" "build/classes" "-j"
11407 (find-files "src/main/" ".*\\.(groovy|java)$"))
11408 (invoke "ant" "jar")
11411 `(("java-logback-core" ,java-logback-core)
11412 ("java-slf4j-api" ,java-slf4j-api)
11413 ,@(package-inputs java-logback-core)))
11415 `(("groovy" ,groovy)))
11416 (description "Logback is intended as a successor to the popular log4j project.
11417 This module can be assimilated to a significantly improved version of log4j.
11418 Moreover, @code{logback-classic} natively implements the slf4j API so that you
11419 can readily switch back and forth between logback and other logging frameworks
11420 such as log4j or @code{java.util.logging} (JUL).")))
11422 (define-public java-jgit
11425 (version "4.7.0.201704051617-r")
11428 (uri (string-append "https://repo1.maven.org/maven2/"
11429 "org/eclipse/jgit/org.eclipse.jgit/"
11430 version "/org.eclipse.jgit-"
11431 version "-sources.jar"))
11434 "13ii4jn02ynzq6i7gsyi21k2i94jpc85wf6bcm31q4cyvzv0mk4k"))))
11435 (build-system ant-build-system)
11437 `(#:tests? #f ; There are no tests to run.
11438 #:jar-name "jgit.jar"
11439 ;; JGit must be built with a JDK supporting Java 8.
11441 ;; Target our older default JDK.
11442 #:make-flags (list "-Dtarget=1.7")
11444 (modify-phases %standard-phases
11445 ;; The jar file generated by the default build.xml does not include
11446 ;; the text properties files, so we need to add them.
11447 (add-after 'build 'add-properties
11448 (lambda* (#:key jar-name #:allow-other-keys)
11449 (with-directory-excursion "src"
11450 (apply invoke "jar" "-uf"
11451 (string-append "../build/jar/" jar-name)
11452 (find-files "." "\\.properties$")))
11455 `(("java-classpathx-servletapi" ,java-classpathx-servletapi)
11456 ("java-javaewah" ,java-javaewah)
11457 ("java-jsch" ,java-jsch)
11458 ("java-slf4j-api" ,java-slf4j-api)))
11459 (home-page "https://eclipse.org/jgit/")
11460 (synopsis "Java library implementing the Git version control system")
11461 (description "JGit is a lightweight, pure Java library implementing the
11462 Git version control system, providing repository access routines, support for
11463 network protocols, and core version control algorithms.")
11464 (license license:edl1.0)))
11466 ;; For axoloti. This package can still be built with icedtea-7, which is
11467 ;; currently used as the default JDK.
11468 (define-public java-jgit-4.2
11469 (package (inherit java-jgit)
11470 (version "4.2.0.201601211800-r")
11473 (uri (string-append "https://repo1.maven.org/maven2/"
11474 "org/eclipse/jgit/org.eclipse.jgit/"
11475 version "/org.eclipse.jgit-"
11476 version "-sources.jar"))
11479 "15gm537iivhnzlkjym4x3wn5jqdjdragsw9pdpzqqg21nrc817mm"))))
11480 (build-system ant-build-system)
11482 (substitute-keyword-arguments (package-arguments java-jgit)
11483 ;; Build for default JDK.
11484 ((#:jdk _) icedtea-7)
11486 `(modify-phases ,phases
11487 (add-after 'unpack 'use-latest-javaewah-API
11489 (substitute* "src/org/eclipse/jgit/internal/storage/file/BitmapIndexImpl.java"
11490 (("wordinbits") "WORD_IN_BITS"))
11493 `(("java-javaewah" ,java-javaewah)
11494 ("java-jsch" ,java-jsch)
11495 ("java-slf4j-api" ,java-slf4j-api)))))
11497 (define-public abcl
11504 (uri (string-append "https://abcl.org/releases/"
11505 version "/abcl-src-" version ".tar.gz"))
11508 "0hvbcsffr8n2xwdixc8wyw1bfl9fxn2gyy0c4nma7j9zbn0wwgw9"))
11511 "abcl-fix-build-xml.patch"))))
11512 (build-system ant-build-system)
11514 `(("java-junit" ,java-junit)))
11516 `(#:build-target "abcl.jar"
11517 #:test-target "abcl.test"
11519 (modify-phases %standard-phases
11521 (lambda* (#:key outputs #:allow-other-keys)
11522 (let ((share (string-append (assoc-ref outputs "out")
11524 (bin (string-append (assoc-ref outputs "out")
11527 (install-file "dist/abcl.jar" share)
11528 (install-file "dist/abcl-contrib.jar" share)
11530 (with-output-to-file (string-append bin "abcl")
11532 (let ((classpath (string-append
11535 share "abcl-contrib.jar")))
11536 (display (string-append
11537 "#!" (which "sh") "\n"
11538 "if [[ -z $CLASSPATH ]]; then\n"
11539 " cp=\"" classpath "\"\n"
11541 " cp=\"" classpath ":$CLASSPATH\"\n"
11543 "exec " (which "java")
11544 " -cp $cp org.armedbear.lisp.Main $@\n")))))
11545 (chmod (string-append bin "abcl") #o755)
11547 (home-page "https://abcl.org/")
11548 (synopsis "Common Lisp Implementation on the JVM")
11550 "@dfn{Armed Bear Common Lisp} (ABCL) is a full implementation of the Common
11551 Lisp language featuring both an interpreter and a compiler, running in the
11552 JVM. It supports JSR-223 (Java scripting API): it can be a scripting engine
11553 in any Java application. Additionally, it can be used to implement (parts of)
11554 the application using Java to Lisp integration APIs.")
11555 (license (list license:gpl2+
11556 ;; named-readtables is released under 3 clause BSD
11558 ;; jfli is released under CPL 1.0
11561 (define-public java-jsonp-api
11563 (name "java-jsonp-api")
11567 (uri (git-reference
11568 (url "https://github.com/eclipse-ee4j/jsonp")
11569 (commit (string-append "1.1-" version "-RELEASE"))))
11570 (file-name (git-file-name name version))
11573 "0zrj03hkr3jdmqlb4ipjr37cqpp2q2814qpmxi7srlwpdqs0ibgc"))))
11574 (build-system ant-build-system)
11576 `(#:jar-name "jsonp-api.jar"
11578 #:source-dir "api/src/main/java"
11579 #:test-dir "api/src/test"))
11580 (home-page "https://eclipse-ee4j.github.io/jsonp/")
11581 (synopsis "JSON Processing in Java")
11582 (description "JSON Processing (JSON-P) is a Java API to process (e.g.
11583 parse, generate, transform and query) JSON messages. It produces and
11584 consumes JSON text in a streaming fashion (similar to StAX API for XML)
11585 and allows to build a Java object model for JSON text using API classes
11586 (similar to DOM API for XML).")
11587 ;; either gpl2 only with classpath exception, or epl2.0.
11588 (license (list license:gpl2
11591 (define-public java-jsonp-impl
11593 (inherit java-jsonp-api)
11594 (name "java-jsonp-impl")
11596 `(#:jar-name "jsonp-impl.jar"
11598 #:source-dir "impl/src/main/java"
11599 #:test-dir "impl/src/test"
11601 (modify-phases %standard-phases
11602 (add-before 'build 'copy-resources
11605 "impl/src/main/resources/"
11609 `(("java-jsonp-api" ,java-jsonp-api)))
11610 (description "JSON Processing (JSON-P) is a Java API to process (e.g.
11611 parse, generate, transform and query) JSON messages. This package contains
11612 a reference implementation of that API.")))
11614 (define-public java-xmp
11620 (uri (string-append "http://download.macromedia.com/pub/developer"
11621 "/xmp/sdk/XMPCoreJava-" version ".zip"))
11624 "14nai2mmsg7l5ya2y5mx4w4lr1az3sk2fjz6hiy4zdrsavgvl1g7"))))
11625 (build-system ant-build-system)
11627 `(#:build-target "build"
11628 #:tests? #f; no tests
11630 (modify-phases %standard-phases
11631 (add-after 'unpack 'chdir
11635 (add-before 'build 'fix-timestamp
11637 (substitute* "build.xml"
11638 (("\\$\\{BuildDate\\}") "1970 Jan 01 00:00:00-GMT"))
11641 (install-jars "."))
11642 (add-after 'install 'install-doc
11643 (lambda* (#:key outputs #:allow-other-keys)
11646 (string-append (assoc-ref outputs "out") "/share/doc/java-xmp"))
11649 `(("unzip" ,unzip)))
11650 (home-page "https://www.adobe.com/devnet/xmp.html")
11651 (synopsis "Extensible Metadat Platform (XMP) support in Java")
11652 (description "Adobe's Extensible Metadata Platform (XMP) is a labeling
11653 technology that allows you to embed data about a file, known as metadata,
11654 into the file itself. The XMP Toolkit for Java is based on the C++ XMPCore
11655 library and the API is similar.")
11656 (license license:bsd-3)))
11658 (define-public java-metadata-extractor
11660 (name "java-metadata-extractor")
11664 (uri (git-reference
11665 (url "https://github.com/drewnoakes/metadata-extractor")
11667 (file-name (git-file-name name version))
11670 "06yrq0swrl1r40yjbk5kqzjxr04jlkq9lfi711jvfgjf5kp2qinj"))))
11671 (build-system ant-build-system)
11673 `(#:jar-name "metadata-extractor.jar"
11674 #:source-dir "Source"
11677 (modify-phases %standard-phases
11678 (add-before 'check 'fix-test-dir
11680 (substitute* "build.xml"
11681 (("/java\">") "\">"))
11684 `(("java-xmp" ,java-xmp)))
11686 `(("java-hamcrest-core" ,java-hamcrest-core)
11687 ("java-junit" ,java-junit)))
11688 (home-page "https://github.com/drewnoakes/metadata-extractor")
11689 (synopsis "Extract metadata from image and video files")
11690 (description "Metadata-extractor is a straightforward Java library for
11691 reading metadata from image files. It is able to read metadata in Exif,
11692 IPTC, XMP, ICC and more formats.")
11693 (license license:asl2.0)))
11695 (define-public java-svg-salamander
11697 (name "java-svg-salamander")
11701 (uri (git-reference
11702 (url "https://github.com/blackears/svgSalamander")
11703 (commit (string-append "v" version))))
11704 (file-name (git-file-name name version))
11707 "1zv3kjdkf6iqf02x6ln76254y634j2ji448y706a65lsbfjmmicf"))
11708 (modules '((guix build utils)))
11711 (for-each delete-file (find-files "." ".*.jar"))
11714 (search-patches "java-svg-salamander-Fix-non-det.patch"))))
11715 (build-system ant-build-system)
11717 `(#:tests? #f; no tests
11719 (modify-phases %standard-phases
11720 (add-after 'unpack 'chdir
11724 (add-before 'build 'copy-jars
11725 (lambda* (#:key inputs #:allow-other-keys)
11726 (copy-file (car (find-files (assoc-ref inputs "javacc") "\\.jar$"))
11727 "../libraries/javacc.jar")
11728 (copy-file (car (find-files (assoc-ref inputs "ant") "ant\\.jar$"))
11729 "../libraries/ant.jar")
11732 (install-jars "dist")))))
11734 `(("javacc" ,javacc)))
11735 (home-page "https://github.com/blackears/svgSalamander")
11736 (synopsis "SVG engine for Java")
11737 (description "SVG Salamander is an SVG engine for Java that's designed
11738 to be small, fast, and allow programmers to use it with a minimum of fuss.
11739 It's in particular targeted for making it easy to integrate SVG into Java
11740 games and making it much easier for artists to design 2D game content - from
11741 rich interactive menus to charts and graphcs to complex animations.")
11742 (license license:bsd-2)))
11744 (define-public java-jboss-transaction-api-spec
11746 (name "java-jboss-transaction-api-spec")
11747 (version "1.2+1.1.1")
11750 (uri (git-reference
11751 (url "https://github.com/jboss/jboss-transaction-api_spec")
11752 (commit "jboss-transaction-api_1.2_spec-1.1.1.Final")))
11753 (file-name (git-file-name name version))
11756 "1xbfq5hvb86izflydxrqqv3k26c1ba2m0ap6m97shqrsdi9by4wy"))))
11757 (build-system ant-build-system)
11759 `(#:jar-name "java-jboss-transaction-api_spec.jar"
11760 #:source-dir "src/main/java"
11761 #:tests? #f)); no tests
11763 `(("java-cdi-api" ,java-cdi-api)
11764 ("java-jboss-interceptors-api-spec" ,java-jboss-interceptors-api-spec)))
11765 (home-page "https://github.com/jboss/jboss-transaction-api_spec")
11766 (synopsis "Generic transaction management API in Java")
11767 (description "Java-jboss-transaction-api-spec implements the Transactions
11768 API. A transaction is a unit of work containing one or more operations
11769 involving one or more shared resources having ACID (Atomicity, Consistency,
11770 Isolation and Durability) properties.")
11771 ;; either gpl2 only with classpath exception or cddl.
11772 (license (list license:gpl2 license:cddl1.0))))