X-Git-Url: https://git.hcoop.net/jackhill/guix/guix.git/blobdiff_plain/6c21d46c70b2a0912d1adab82e0ef74bace5605f..0cb9ce32c78b7298208a405c8d613ec5dfc99dc3:/gnu/packages/java.scm diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 77e34a2f90..30e0115c6e 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -5,6 +5,8 @@ ;;; Copyright © 2017 Carlo Zancanaro ;;; Copyright © 2017 Julien Lepiller ;;; Copyright © 2017 Thomas Danckaert +;;; Copyright © 2016, 2017, 2018 Alex Vong +;;; Copyright © 2017 Tobias Geerinckx-Rice ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,6 +29,7 @@ #:use-module (guix download) #:use-module (guix hg-download) #:use-module (guix git-download) + #:use-module (guix svn-download) #:use-module (guix utils) #:use-module (guix build-system ant) #:use-module (guix build-system gnu) @@ -1067,7 +1070,7 @@ bootstrapping purposes.") (license license:gpl2+))) (define-public icedtea-7 - (let* ((version "2.6.11") + (let* ((version "2.6.12") (drop (lambda (name hash) (origin (method url-fetch) @@ -1085,7 +1088,7 @@ bootstrapping purposes.") version ".tar.xz")) (sha256 (base32 - "1ibp6ybqnf8g7mbs45bkbv44dwz4h2w9gr4rh15yvr1m8lqkq1i0")) + "0s0zh0mj1sab99kb516lsgq3859vsc951phc565gwix4l5g9zppk")) (modules '((guix build utils))) (snippet '(substitute* "Makefile.in" @@ -1495,25 +1498,25 @@ bootstrapping purposes.") (native-inputs `(("openjdk-src" ,(drop "openjdk" - "1zhr4l9kxnbzghcsgjk3vmih9qpg1wrr9qry7fx04l97svp1ylhd")) + "15qf3nfidgnigh2zny6djfp8bhfwjnwk9i06mxs2jbq6na953ql2")) ("corba-drop" ,(drop "corba" - "108v15ncb2rnsyzgzncjlm1f57d1sv60zd9qbpas8kqmvpp8r0gz")) + "1phvn8fyl5mw2n2sn97f17nm442k75xsz2023bfw4h66ywzkqhqy")) ("jaxp-drop" ,(drop "jaxp" - "0zcpcmm3g1s7m31glrbw3ys7azi97ixcvbyxd40y9xzdja3jyr52")) + "0j4ms6lmnfa2cwfh9yfqdfg1bnn3fc40ay4x6k8zqa8yvspik5w5")) ("jaxws-drop" ,(drop "jaxws" - "1gkqm0p3sr8d0xpki3fhf7cvmgqxx8ambgl5f3jx2plfnhsg96d2")) + "09sddj73k7n29s39hvdk14r130mvlknbxkpd2w58f34sq5sgpdrg")) ("jdk-drop" ,(drop "jdk" - "1d9fjnzdx4m6gwkvmj2n097ag0mvkhm3lldaxjki8x8c6a5clknf")) + "0q896zz8wyswmksy225q1k27nz3v3l27052dcvvpv20ryykz8yp7")) ("langtools-drop" ,(drop "langtools" - "0zscdp9arcq7gr8j7jq4m75gq0w1i3ryxpdnrc8fl0msh4w2s2k5")) + "0niicyfccim4a9is4akh87jd7wbl8jrazdaab957mcv9l1x3bnqc")) ("hotspot-drop" ,(drop "hotspot" - "1y6vnssn5y50x27g4ypdb5wwpmi7zf7jdi8gqbymkwf6n8p5y1d6")) + "1jw42qhbm3wfavk39304m53lmqipcllrvjqiab2f42mjs10i8gfx")) ("ant" ,ant-bootstrap) ("attr" ,attr) ("coreutils" ,coreutils) @@ -1563,7 +1566,7 @@ IcedTea build harness.") (license license:gpl2+)))) (define-public icedtea-8 - (let* ((version "3.5.1") + (let* ((version "3.6.0") (drop (lambda (name hash) (origin (method url-fetch) @@ -1572,7 +1575,7 @@ IcedTea build harness.") "/icedtea8/" version "/" name ".tar.xz")) (sha256 (base32 hash)))))) (package (inherit icedtea-7) - (version "3.5.1") + (version "3.6.0") (source (origin (method url-fetch) (uri (string-append @@ -1580,7 +1583,7 @@ IcedTea build harness.") version ".tar.xz")) (sha256 (base32 - "1j8iv0cdk9fkh3yb5is7z29m9k3s89w6y9090538j6aa7p4nmalf")) + "0zj192zrrxqh6j1ywc3399gk2ycay9w8pvzcvvr2kvdkb37ak86h")) (modules '((guix build utils))) (snippet '(begin @@ -1656,34 +1659,34 @@ IcedTea build harness.") `(("jdk" ,icedtea-7 "jdk") ("openjdk-src" ,(drop "openjdk" - "0a6yrq8y1zkzc7hm2l28rm3vzy5izfxhmmhhhvc91lhfclnqcd2q")) + "0mqxh81kq05z4wydkik0yrr81ibf84xmwsdcw9n2gfrzs4f5jxnb")) ("aarch32-drop" ,(drop "aarch32" - "0cway5a5hcfyh4pzl9zz5xr7lil4gsliy6r5iqbaasd2d9alvqiq")) + "0b207g2n6kn510zf5vwh58bsxgqrmkvrna4p20r74v9cwcwx83n2")) ("corba-drop" ,(drop "corba" - "031sc6byd8lqvz3cd07phm13pqrxalxk9f3a2q8pim5n4sbsy0qb")) + "0qinc1q4w01nkr9klhfyd8caxvyrrfxjrz32nd7kgyja2bj8x7dd")) ("jaxp-drop" ,(drop "jaxp" - "1815jaj0k0w1s0g0jr1ahkajp1jx2qlb08i6l9ha4wyqqyp49a4n")) + "07azrp3g86vk2laybmr5xfn0yrljkxs0rlm1q48385br225bgdxi")) ("jaxws-drop" ,(drop "jaxws" - "0vh4f85cxhqvabzg86ycpz02519cdzgsn5dr75k22rkmbbxnbbl6")) + "018fd2hq57zp3pq06wlxy5pabqcyk36xi8hk0d6xk3a90wsjvyik")) ("jdk-drop" ,(drop "jdk" - "196ycqz4d9kknc6b219q4ib83l1kkl6w6l1cznw9bzaafyynqa35")) + "0vs488kq5j2cc6kplc78jbhfxwq4fn06l34xrbq4d6y17777arg8")) ("langtools-drop" ,(drop "langtools" - "0ssnadlr5cxhmj06nmni34kdynix1sjhcvjzahm5yzfd7dfllmgy")) + "04f6d1wvck5jrpvrcw5gsbzxnihcry9zrf1v85czdm959q21zv9c")) ("hotspot-drop" ,(drop "hotspot" - "0f7fxf0s9kadvs80hm5ga72pyp9r0fvl8zm1wmd1wrks8kl79sd6")) + "1mfgpzyr6zzy9klf8nn3z6d41fydb9ghpfpqzjq3cl95axfbdl1g")) ("nashorn-drop" ,(drop "nashorn" - "0m95qgnd4z6p0xp9m06ihss7skx2yrm7xw69jsjsrxpriy1shiwy")) + "1a26cmzbs50gkh4rmmmxls7zljx62vfp1wq02gsfd5jqs4xvlibj")) ("shenandoah-drop" ,(drop "shenandoah" - "0yjlcgp6mldp30hmkfl68mdwlbg3gb0m6xd5y7srczni7cln5f3i")) + "11hmn9mwmvryfddcanzx3qffjm8bbiv18nwv3iy9cswrvxjy010f")) ,@(fold alist-delete (package-native-inputs icedtea-7) '("jdk" "openjdk-src" "corba-drop" "jaxp-drop" "jaxws-drop" "jdk-drop" "langtools-drop" "hotspot-drop"))))))) @@ -1751,6 +1754,70 @@ IcedTea build harness.") (native-inputs `(("jdk" ,icedtea-7 "jdk"))))) +(define-public ant-apache-bcel + (package + (inherit ant/java8) + (name "ant-apache-bcel") + (arguments + (substitute-keyword-arguments (package-arguments ant/java8) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'link-bcel + (lambda* (#:key inputs #:allow-other-keys) + (for-each (lambda (file) + (symlink file + (string-append "lib/optional/" + (basename file)))) + (find-files (assoc-ref inputs "java-commons-bcel") + "\\.jar$")) + #t)) + (add-after 'build 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share/java")) + (bin (string-append out "/bin")) + (lib (string-append out "/lib"))) + (mkdir-p share) + (install-file (string-append lib "/ant-apache-bcel.jar") share) + (delete-file-recursively bin) + (delete-file-recursively lib) + #t))))))) + (inputs + `(("java-commons-bcel" ,java-commons-bcel) + ,@(package-inputs ant/java8))))) + +(define-public ant-junit + (package + (inherit ant/java8) + (name "ant-junit") + (arguments + (substitute-keyword-arguments (package-arguments ant/java8) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'link-junit + (lambda* (#:key inputs #:allow-other-keys) + (for-each (lambda (file) + (symlink file + (string-append "lib/optional/" + (basename file)))) + (find-files (assoc-ref inputs "java-junit") + "\\.jar$")) + #t)) + (add-after 'build 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share/java")) + (bin (string-append out "/bin")) + (lib (string-append out "/lib"))) + (mkdir-p share) + (install-file (string-append lib "/ant-junit.jar") share) + (delete-file-recursively bin) + (delete-file-recursively lib) + #t))))))) + (inputs + `(("java-junit" ,java-junit) + ,@(package-inputs ant/java8))))) + (define-public clojure (let* ((remove-archives '(begin (for-each delete-file @@ -1766,15 +1833,15 @@ IcedTea build harness.") (snippet remove-archives))))) (package (name "clojure") - (version "1.8.0") + (version "1.9.0") (source (origin (method url-fetch) (uri - (string-append "http://repo1.maven.org/maven2/org/clojure/clojure/" - version "/clojure-" version ".zip")) + (string-append "https://github.com/clojure/clojure/archive/clojure-" + version ".tar.gz")) (sha256 - (base32 "1nip095fz5c492sw15skril60i1vd21ibg6szin4jcvyy3xr6cym")) + (base32 "0xjbzcw45z32vsn9pifp7ndysjzqswp5ig0jkjpivigh2ckkdzha")) (modules '((guix build utils))) (snippet remove-archives))) (build-system ant-build-system) @@ -1804,12 +1871,12 @@ IcedTea build harness.") (error "failed to unpack tarball" name))) (copy-recursively (string-append name "/src/main/clojure/") "src/clj/")) - '("data-generators-src" - "java-classpath-src" + '("core-specs-alpha-src" + "data-generators-src" + "spec-alpha-src" "test-check-src" "test-generative-src" - "tools-namespace-src" - "tools-reader-src")) + "tools-namespace-src")) #t)) ;; The javadoc target is not built by default. (add-after 'build 'build-doc @@ -1841,14 +1908,18 @@ IcedTea build harness.") #t)))))) ;; The native-inputs below are needed to run the tests. (native-inputs - `(("data-generators-src" + `(("core-specs-alpha-src" + ,(submodule "core.specs.alpha/archive/core.specs.alpha-" + "0.1.24" + "0v2a0svf1ar2y42ajxwsjr7zmm5j7pp2zwrd2jh3k7xzd1p9x1fv")) + ("data-generators-src" ,(submodule "data.generators/archive/data.generators-" "0.1.2" "0kki093jp4ckwxzfnw8ylflrfqs8b1i1wi9iapmwcsy328dmgzp1")) - ("java-classpath-src" - ,(submodule "java.classpath/archive/java.classpath-" - "0.2.3" - "0sjymly9xh1lkvwn5ygygpsfwz4dabblnlq0c9bx76rkvq62fyng")) + ("spec-alpha-src" + ,(submodule "spec.alpha/archive/spec.alpha-" + "0.1.143" + "00alf0347licdn773w2jarpllyrbl52qz4d8mw61anjksacxylzz")) ("test-check-src" ,(submodule "test.check/archive/test.check-" "0.9.0" @@ -1860,11 +1931,7 @@ IcedTea build harness.") ("tools-namespace-src" ,(submodule "tools.namespace/archive/tools.namespace-" "0.2.11" - "10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0")) - ("tools-reader-src" - ,(submodule "tools.reader/archive/tools.reader-" - "1.0.0" - "1lafblmmj4hkg0aqrf19qkdw9wdcsh3qxmn6cbkmnzbhffpyv2lv")))) + "10baak8v0hnwz2hr33bavshm7y49mmn9zsyyms1dwjz45p5ymhy0")))) (home-page "https://clojure.org/") (synopsis "Lisp dialect running on the JVM") (description "Clojure is a dynamic, general-purpose programming language, @@ -1892,6 +1959,62 @@ designs.") license:asl2.0 license:cpl1.0))))) +(define-public javacc + (package + (name "javacc") + (version "7.0.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/javacc/javacc/" + "archive/" version ".tar.gz")) + (file-name (string-append "javacc-" version ".tar.gz")) + (sha256 + (base32 + "111xc9mnmc5a6qz6x3xbhqc07y1lg2b996ggzw0hrblg42zya9xf")))) + (build-system ant-build-system) + (arguments + `(#:test-target "test" + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-bundled-libs + (lambda _ + (delete-file-recursively "lib") #t)) + (replace 'install (install-jars "target"))))) + (home-page "https://javacc.org/") + (synopsis "Java parser generator") + (description "Java Compiler Compiler (JavaCC) is the most popular parser +generator for use with Java applications. A parser generator is a tool that +reads a grammar specification and converts it to a Java program that can +recognize matches to the grammar. In addition to the parser generator itself, +JavaCC provides other standard capabilities related to parser generation such +as tree building (via a tool called JJTree included with JavaCC), actions, +debugging, etc.") + (license license:bsd-3))) + +(define-public javacc-4 + (package (inherit javacc) + (version "4.1") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/javacc/javacc.git") + (commit "release_41"))) + (file-name (string-append "javacc-" version "-checkout")) + (sha256 + (base32 + "07ysav7j8r1c6h8qxrgqk6lwdp74ly0ad1935lragxml0qqc3ka0")))) + ;; Tests fail with + ;; /tmp/guix-build-javacc-4.1.drv-0/source/test/javacodeLA/build.xml:60: + ;; JAVACODE failed + (arguments + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-bundled-libs + (lambda _ + (delete-file-recursively "lib") #t)) + (replace 'install (install-jars "bin/lib"))))))) + (define-public java-classpathx-servletapi (package (name "java-classpathx-servletapi") @@ -1930,15 +2053,15 @@ API and version 2.1 of the Java ServerPages API.") (define-public java-swt (package (name "java-swt") - (version "4.6") + (version "4.7.1a") (source ;; The types of many variables and procedures differ in the sources ;; dependent on whether the target architecture is a 32-bit system or a ;; 64-bit system. Instead of patching the sources on demand in a build ;; phase we download either the 32-bit archive (which mostly uses "int" ;; types) or the 64-bit archive (which mostly uses "long" types). - (let ((hash32 "0jmx1h65wqxsyjzs64i2z6ryiynllxzm13cq90fky2qrzagcw1ir") - (hash64 "0wnd01xssdq9pgx5xqh5lfiy3dmk60dzzqdxzdzf883h13692lgy") + (let ((hash32 "09q0cbh90d90q3a7dx9430kc4m6bijrkr4lajrmzzvi0jjdpq4v9") + (hash64 "17k5hs75a87ssmc5xhwdfdm2gn4zba0r837l2455za01krnkaa2q") (file32 "x86") (file64 "x86_64")) (let-values (((hash file) @@ -1948,13 +2071,14 @@ API and version 2.1 of the Java ServerPages API.") (origin (method url-fetch) (uri (string-append - "http://ftp-stud.fht-esslingen.de/pub/Mirrors/" - "eclipse/eclipse/downloads/drops4/R-" version - "-201606061100/swt-" version "-gtk-linux-" file ".zip")) + "http://download.eclipse.org/eclipse/downloads/drops4/" + "R-" version "-201710090410/swt-" version + "-gtk-linux-" file ".zip")) (sha256 (base32 hash)))))) (build-system ant-build-system) (arguments `(#:jar-name "swt.jar" + #:jdk ,icedtea-8 #:tests? #f ; no "check" target #:phases (modify-phases %standard-phases @@ -1988,8 +2112,7 @@ API and version 2.1 of the Java ServerPages API.") (find-files "." "\\.so$")) #t)))))) (inputs - `(("xulrunner" ,icecat) - ("gtk" ,gtk+-2) + `(("gtk" ,gtk+-2) ("libxtst" ,libxtst) ("libxt" ,libxt) ("mesa" ,mesa) @@ -2034,7 +2157,7 @@ is implemented.") (lambda _ (chdir "..") #t))))) (native-inputs `(("unzip" ,unzip))) - (home-page "http://tukaani.org/xz/java.html") + (home-page "https://tukaani.org/xz/java.html") (synopsis "Implementation of XZ data compression in pure Java") (description "This library aims to be a complete implementation of XZ data compression in pure Java. Single-threaded streamed compression and @@ -2336,6 +2459,209 @@ package within @code{plexus-utils}, but has been separated in order to allow these two libraries to vary independently of one another.") (license license:asl2.0))) +(define-public java-plexus-classworlds + (package + (name "java-plexus-classworlds") + (version "2.5.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/codehaus-plexus/" + "plexus-classworlds/archive/plexus-classworlds-" + version ".tar.gz")) + (sha256 + (base32 + "1qm4p0rl8d82lzhsiwnviw11jnq44s0gflg78zq152xyyr2xmh8g")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "plexus-classworlds.jar" + #:source-dir "src/main" + #:tests? #f));; FIXME: we need to generate some resources as in pom.xml + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "http://codehaus-plexus.github.io/plexus-classworlds/") + (synopsis "Java class loader framework") + (description "Plexus classworlds replaces the native @code{ClassLoader} +mechanism of Java. It is especially useful for dynamic loading of application +components.") + (license license:asl2.0))) + +(define-public java-plexus-container-default-bootstrap + (package + (name "java-plexus-container-default-bootstrap") + (version "1.7.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/codehaus-plexus/plexus-containers" + "/archive/plexus-containers-" version ".tar.gz")) + (sha256 + (base32 + "0xw5g30qf4a83608rw9v2hv8pfsz7d69dkdhk6r0wia4q78hh1pc")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "container-default.jar" + #:source-dir "plexus-container-default/src/main/java" + #:test-dir "plexus-container-default/src/test" + #:jdk ,icedtea-8 + #:tests? #f; requires plexus-archiver, which depends on this package + #:phases + (modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively + "plexus-container-default/src/main/resources/" + "build/classes") + #t))))) + (inputs + `(("worldclass" ,java-plexus-classworlds) + ("xbean" ,java-geronimo-xbean-reflect) + ("utils" ,java-plexus-utils) + ("junit" ,java-junit) + ("guava" ,java-guava))) + (home-page "https://github.com/codehaus-plexus/plexus-containers") + (synopsis "Inversion-of-control container") + (description "Plexus-default-container is Plexus' inversion-of-control +(@dfn{IoC}) container. It is composed of its public API and its default +implementation.") + (license license:asl2.0))) + +(define-public java-plexus-io + (package + (name "java-plexus-io") + (version "3.0.0") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/codehaus-plexus/plexus-io" + "/archive/plexus-io-" version ".tar.gz")) + (sha256 + (base32 + "0f2j41kihaymxkpbm55smpxjja235vad8cgz94frfy3ppcp021dw")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "plexus-io.jar" + #:source-dir "src/main/java" + #:test-dir "src/test" + #:jdk ,icedtea-8 + #:phases + (modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (mkdir-p "build/classes/META-INF/plexus") + (copy-file "src/main/resources/META-INF/plexus/components.xml" + "build/classes/META-INF/plexus/components.xml") + #t))))) + (inputs + `(("utils" ,java-plexus-utils) + ("commons-io" ,java-commons-io) + ("java-jsr305" ,java-jsr305))) + (native-inputs + `(("junit" ,java-junit) + ("hamcrest" ,java-hamcrest-core) + ("guava" ,java-guava) + ("classworlds" ,java-plexus-classworlds) + ("xbean" ,java-geronimo-xbean-reflect) + ("container-default" ,java-plexus-container-default-bootstrap))) + (home-page "https://github.com/codehaus-plexus/plexus-io") + (synopsis "I/O plexus components") + (description "Plexus IO is a set of plexus components, which are designed +for use in I/O operations. This implementation using plexus components allows +reusing it in maven.") + (license license:asl2.0))) + +(define-public java-plexus-archiver + (package + (name "java-plexus-archiver") + (version "3.5") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/codehaus-plexus/plexus-archiver" + "/archive/plexus-archiver-" version ".tar.gz")) + (sha256 + (base32 + "0iv1j7khra6icqh3jndng3iipfmkc7l5jq2y802cm8r575v75pyv")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "plexus-archiver.jar" + #:source-dir "src/main/java" + #:jdk ,icedtea-8 + #:test-dir "src/test" + #:test-exclude (list "**/Abstract*.java" "**/Base*.java") + #:phases + (modify-phases %standard-phases + (add-before 'check 'remove-failing + (lambda _ + ;; Requires an older version of plexus container + (delete-file + "src/test/java/org/codehaus/plexus/archiver/DuplicateFilesTest.java"))) + (add-before 'build 'copy-resources + (lambda _ + (mkdir-p "build/classes/META-INF/plexus") + (copy-file "src/main/resources/META-INF/plexus/components.xml" + "build/classes/META-INF/plexus/components.xml") + #t))))) + (inputs + `(("utils" ,java-plexus-utils) + ("commons-io" ,java-commons-io) + ("snappy" ,java-iq80-snappy) + ("io" ,java-plexus-io) + ("compress" ,java-commons-compress) + ("container-default" ,java-plexus-container-default-bootstrap) + ("snappy" ,java-snappy) + ("java-jsr305" ,java-jsr305))) + (native-inputs + `(("junit" ,java-junit) + ("classworld" ,java-plexus-classworlds) + ("xbean" ,java-geronimo-xbean-reflect) + ("xz" ,java-tukaani-xz) + ("guava" ,java-guava))) + (home-page "https://github.com/codehaus-plexus/plexus-archiver") + (synopsis "Archiver component of the Plexus project") + (description "Plexus-archiver contains a component to deal with project +archives (jar).") + (license license:asl2.0))) + +(define-public java-plexus-container-default + (package + (inherit java-plexus-container-default-bootstrap) + (name "java-plexus-container-default") + (arguments + `(#:jar-name "container-default.jar" + #:source-dir "plexus-container-default/src/main/java" + #:test-dir "plexus-container-default/src/test" + #:test-exclude (list ;"**/*Test.java" + "**/Abstract*.java" + ;; Requires plexus-hierarchy + "**/PlexusHierarchyTest.java" + ;; Failures + "**/ComponentRealmCompositionTest.java" + "**/PlexusContainerTest.java") + #:jdk ,icedtea-8 + #:phases + (modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (copy-recursively + "plexus-container-default/src/main/resources/" + "build/classes") + #t)) + (add-before 'check 'fix-paths + (lambda _ + (let ((dir "plexus-container-default/src/test/java/org/codehaus")) + (substitute* + (string-append + dir "/plexus/component/composition/" + "ComponentRealmCompositionTest.java") + (("src/test") "plexus-container-default/src/test")) + #t)))))) + (inputs + `(("worldclass" ,java-plexus-classworlds) + ("xbean" ,java-geronimo-xbean-reflect) + ("utils" ,java-plexus-utils) + ("junit" ,java-junit) + ("guava" ,java-guava))) + (native-inputs + `(("archiver" ,java-plexus-archiver) + ("hamcrest" ,java-hamcrest-core))))) + (define-public java-asm (package (name "java-asm") @@ -2759,7 +3085,7 @@ available in the Java programming language or Commons Lang.") (synopsis "Benchmark harness for the JVM") (description "JMH is a Java harness for building, running, and analysing nano/micro/milli/macro benchmarks written in Java and other languages -targetting the JVM.") +targeting the JVM.") ;; GPLv2 only (license license:gpl2))) @@ -2823,6 +3149,80 @@ are many features, including: @end itemize\n") (license license:asl2.0))) +(define-public java-commons-collections + (package + (inherit java-commons-collections4) + (name "java-commons-collections") + (version "3.2.2") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/collections/source/" + "commons-collections-" version "-src.tar.gz")) + (sha256 + (base32 + "055r51a5lfc3z7rkxnxmnn1npvkvda7636hjpm4qk7cnfzz98387")))) + (arguments + (substitute-keyword-arguments (package-arguments java-commons-collections4) + ((#:phases phases) + `(modify-phases ,phases + ;; The manifest is required by the build procedure + (add-before 'build 'add-manifest + (lambda _ + (mkdir-p "build/conf") + (call-with-output-file "build/conf/MANIFEST.MF" + (lambda (file) + (format file "Manifest-Version: 1.0\n"))))) + (replace 'install + (install-jars "build")))))))) + +(define java-commons-collections-test-classes + (package + (inherit java-commons-collections) + (arguments + `(#:jar-name "commons-collections-test-classes.jar" + #:source-dir "src/test" + #:tests? #f)) + (inputs + `(("collection" ,java-commons-collections))))) + +(define-public java-commons-beanutils + (package + (name "java-commons-beanutils") + (version "1.9.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/beanutils/source/" + "commons-beanutils-" version "-src.tar.gz")) + (sha256 + (base32 + "03cs0bq3sl1sdc7py9g3qnf8n9h473nrkvd3d251kaqv6a2ab7qk")))) + (build-system ant-build-system) + (arguments + `(#:test-target "test" + #:tests? #f + #:phases + (modify-phases %standard-phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (rename-file (string-append "dist/commons-beanutils-" ,version + "-SNAPSHOT.jar") + "commons-beanutils.jar") + (install-file "commons-beanutils.jar" + (string-append (assoc-ref outputs "out") "/share/java/")) + #t))))) + (inputs + `(("logging" ,java-commons-logging-minimal) + ("collections" ,java-commons-collections))) + (native-inputs + `(("junit" ,java-junit) + ("collections-test" ,java-commons-collections-test-classes))) + (home-page "http://commons.apache.org/beanutils/") + (synopsis "Dynamically set or get properties in Java") + (description "BeanUtils provides a simplified interface to reflection and +introspection to set or get dynamically determined properties through their +setter and getter method.") + (license license:asl2.0))) + (define-public java-commons-io (package (name "java-commons-io") @@ -3386,32 +3786,43 @@ working with compressed files such as ar, cpio, Unix dump, tar, zip, gzip, XZ, Pack200, bzip2, 7z, arj, lzma, snappy, DEFLATE, lz4 and Z files.") (license license:asl2.0))) -(define-public java-commons-net +(define-public java-commons-csv (package - (name "java-commons-net") - (version "3.6") + (name "java-commons-csv") + (version "1.4") (source (origin (method url-fetch) - (uri (string-append "mirror://apache/commons/net/source/" - "commons-net-" version "-src.tar.gz")) + (uri (string-append "mirror://apache/commons/csv/source/" + "commons-csv-" version "-src.tar.gz")) (sha256 (base32 - "0n0cmnddk9qdqhjvka8pc6hd9mn2qi3166f1s6xk32h7rfy1adxr")))) + "1l89m0fm2s3xx3v3iynvangymfg2vlyngaj6fgsi457nmsw7m7ij")))) (build-system ant-build-system) (arguments - `(;; FIXME: MainTest.java tries to read "examples.properties" (which - ;; should be "resources/examples/examples.properties"), but gets "null" - ;; instead. - #:tests? #f - #:jar-name "commons-net.jar")) - (native-inputs - `(("java-junit" ,java-junit) - ("java-hamcrest-core" ,java-hamcrest-core))) - (home-page "http://commons.apache.org/net/") - (synopsis "Client library for many basic Internet protocols") - (description "The Apache Commons Net library implements the client side of -many basic Internet protocols. The purpose of the library is to provide -fundamental protocol access, not higher-level abstractions.") + `(#:jar-name "commons-csv.jar" + #:source-dir "src/main/java" + #:tests? #f)); FIXME: requires java-h2 + (inputs + `(("java-hamcrest-core" ,java-hamcrest-core) + ("java-commons-io" ,java-commons-io) + ("java-commons-lang3" ,java-commons-lang3) + ("junit" ,java-junit))) + (home-page "https://commons.apache.org/proper/commons-csv/") + (synopsis "Read and write CSV documents") + (description "Commons CSV reads and writes files in variations of the Comma +Separated Value (CSV) format. The most common CSV formats are predefined in the +CSVFormat class: + +@itemize +@item Microsoft Excel +@item Informix UNLOAD +@item Informix UNLOAD CSV +@item MySQL +@item RFC 4180 +@item TDF +@end itemize + +Custom formats can be created using a fluent style API.") (license license:asl2.0))) (define-public java-osgi-annotation @@ -3430,7 +3841,7 @@ fundamental protocol access, not higher-level abstractions.") (arguments `(#:tests? #f ; no tests #:jar-name "osgi-annotation.jar")) - (home-page "http://www.osgi.org") + (home-page "https://www.osgi.org") (synopsis "Annotation module of OSGi framework") (description "OSGi, for Open Services Gateway initiative framework, is a module system @@ -3457,7 +3868,7 @@ components.") #:jar-name "osgi-core.jar")) (inputs `(("java-osgi-annotation" ,java-osgi-annotation))) - (home-page "http://www.osgi.org") + (home-page "https://www.osgi.org") (synopsis "Core module of OSGi framework") (description "OSGi, for Open Services Gateway initiative framework, is a module system @@ -3485,7 +3896,7 @@ the OSGi Core module.") (inputs `(("java-osgi-annotation" ,java-osgi-annotation) ("java-osgi-core" ,java-osgi-core))) - (home-page "http://www.osgi.org") + (home-page "https://www.osgi.org") (synopsis "OSGi service event module") (description "OSGi, for Open Services Gateway initiative framework, is a module system @@ -4101,6 +4512,68 @@ JavaMail API.") Java.") (license license:asl2.0))) +(define-public java-log4j-core + (package + (inherit java-log4j-api) + (name "java-log4j-core") + (inputs + `(("java-osgi-core" ,java-osgi-core) + ("java-hamcrest-core" ,java-hamcrest-core) + ("java-log4j-api" ,java-log4j-api) + ("java-mail" ,java-mail) + ("java-jboss-jms-api-spec" ,java-jboss-jms-api-spec) + ("java-lmax-disruptor" ,java-lmax-disruptor) + ("java-kafka" ,java-kafka-clients) + ("java-datanucleus-javax-persistence" ,java-datanucleus-javax-persistence) + ("java-fasterxml-jackson-annotations" ,java-fasterxml-jackson-annotations) + ("java-fasterxml-jackson-core" ,java-fasterxml-jackson-core) + ("java-fasterxml-jackson-databind" ,java-fasterxml-jackson-databind) + ("java-fasterxml-jackson-dataformat-xml" ,java-fasterxml-jackson-dataformat-xml) + ("java-fasterxml-jackson-dataformat-yaml" ,java-fasterxml-jackson-dataformat-yaml) + ("java-commons-compress" ,java-commons-compress) + ("java-commons-csv" ,java-commons-csv) + ("java-jeromq" ,java-jeromq) + ("java-junit" ,java-junit))) + (native-inputs + `(("hamcrest" ,java-hamcrest-all) + ("java-commons-io" ,java-commons-io) + ("java-commons-lang3" ,java-commons-lang3) + ("slf4j" ,java-slf4j-api))) + (arguments + `(#:tests? #f ; tests require more dependencies + #:test-dir "src/test" + #:source-dir "src/main/java" + #:jar-name "log4j-core.jar" + #:jdk ,icedtea-8 + #:make-flags + (list (string-append "-Ddist.dir=" (assoc-ref %outputs "out") + "/share/java")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'enter-dir + (lambda _ (chdir "log4j-core") #t))))) + (synopsis "Core component of the Log4j framework") + (description "This package provides the core component of the Log4j +logging framework for Java."))) + +(define-public java-log4j-1.2-api + (package + (inherit java-log4j-api) + (name "java-log4j-1.2-api") + (arguments + `(#:jar-name "java-log4j-1.2-api.jar" + #:source-dir "log4j-1.2-api/src/main/java" + #:jdk ,icedtea-8 + ;; Tests require maven-model (and other maven subprojects), which is a + ;; cyclic dependency. + #:tests? #f)) + (inputs + `(("log4j-api" ,java-log4j-api) + ("log4j-core" ,java-log4j-core) + ("osgi-core" ,java-osgi-core) + ("eclipse-osgi" ,java-eclipse-osgi) + ("java-lmax-disruptor" ,java-lmax-disruptor))))) + (define-public java-commons-cli (package (name "java-commons-cli") @@ -4629,55 +5102,60 @@ tree walking, and translation.") "0qgg5vgsm4l1d6dj9pfbaa25dpv2ry2gny8ajy4vvgvfklw97b3m")))) (arguments `(#:jar-name (string-append ,name "-" ,version ".jar") - #:source-dir (string-append "tool/src/main/java:runtime/Java/src/main/java:" - "tool/src/main/antlr2:tool/src/main/antlr3") - #:tests? #f + #:source-dir (string-join '("tool/src/main/java" + "runtime/Java/src/main/java" + "tool/src/main/antlr2" + "tool/src/main/antlr3") + ":") + #:tests? #f ; FIXME: tests seem to require maven plugin + #:modules ((guix build ant-build-system) + (guix build utils) + (srfi srfi-1)) #:phases (modify-phases %standard-phases (add-after 'install 'bin-install (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((jar (string-append (assoc-ref outputs "out") "/share/java")) - (bin (string-append (assoc-ref outputs "out") "/bin"))) + (let* ((out (assoc-ref outputs "out")) + (jar (string-append out "/share/java")) + (bin (string-append out "/bin"))) (mkdir-p bin) (with-output-to-file (string-append bin "/antlr3") (lambda _ (display - (string-append "#!" (which "sh") "\n" - "java -cp " jar "/antlr3-3.3.jar:" - (string-concatenate - (find-files (assoc-ref inputs "java-stringtemplate") - ".*\\.jar")) - ":" - (string-concatenate - (find-files (string-append - (assoc-ref inputs "antlr") - "/lib") - ".*\\.jar")) - " org.antlr.Tool $*")))) - (chmod (string-append bin "/antlr3") #o755)))) + (string-append + "#!" (which "sh") "\n" + "java -cp " jar "/antlr3-3.3.jar:" + (string-join + (append (find-files (assoc-ref inputs "java-stringtemplate") + ".*\\.jar$") + (find-files (string-append (assoc-ref inputs "antlr") + "/lib") + ".*\\.jar$")) + ":") + " org.antlr.Tool $*")))) + (chmod (string-append bin "/antlr3") #o755) + #t))) (add-before 'build 'generate-grammar (lambda _ - (let ((dir "tool/src/main/antlr2/org/antlr/grammar/v2/")) - (for-each (lambda (file) - (display file) - (newline) - (system* "antlr" "-o" dir (string-append dir file))) - '("antlr.g" "antlr.print.g" "assign.types.g" - "buildnfa.g" "codegen.g" "define.g"))) - (chdir "tool/src/main/antlr3/org/antlr/grammar/v3/") - (for-each (lambda (file) - (display file) - (newline) - (system* "antlr3" file)) - '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g" - "ANTLRv3Tree.g")) - (chdir "../../../../../../../..") (substitute* "tool/src/main/java/org/antlr/tool/Grammar.java" (("import org.antlr.grammar.v2.\\*;") "import org.antlr.grammar.v2.*;\n import org.antlr.grammar.v2.TreeToNFAConverter;\n import org.antlr.grammar.v2.DefineGrammarItemsWalker;\n -import org.antlr.grammar.v2.ANTLRTreePrinter;")))) +import org.antlr.grammar.v2.ANTLRTreePrinter;")) + (and + (with-directory-excursion "tool/src/main/antlr2/org/antlr/grammar/v2/" + (every (lambda (file) + (format #t "~a\n" file) + (zero? (system* "antlr" file))) + '("antlr.g" "antlr.print.g" "assign.types.g" + "buildnfa.g" "codegen.g" "define.g"))) + (with-directory-excursion "tool/src/main/antlr3/org/antlr/grammar/v3/" + (every (lambda (file) + (format #t "~a\n" file) + (zero? (system* "antlr3" file))) + '("ActionAnalysis.g" "ActionTranslator.g" "ANTLRv3.g" + "ANTLRv3Tree.g")))))) (add-before 'build 'fix-build-xml (lambda _ (substitute* "build.xml" @@ -4688,7 +5166,8 @@ import org.antlr.grammar.v2.ANTLRTreePrinter;")))) - ServiceObjects getServiceObjects(ServiceReference reference) { + throw new UnsupportedOperationException(); +} +@Override +public ServiceRegistration registerService(Class clazz, + ServiceFactory factory, Dictionary properties) { + throw new UnsupportedOperationException(); +} +public Bundle getBundle()")) + #t))))) + (inputs + `(("java-slf4j" ,java-slf4j-api) + ("java-asm" ,java-asm) + ("java-osgi-framework" ,java-osgi-framework) + ("java-eclipse-osgi" ,java-eclipse-osgi) + ("java-osgi-service-packageadmin" ,java-osgi-service-packageadmin))))) + +(define-public java-geronimo-xbean-asm-util + (package + (inherit java-geronimo-xbean-reflect) + (name "java-geronimo-xbean-asm-util") + (arguments + `(#:jar-name "geronimo-xbean-asm-util.jar" + #:source-dir "xbean-asm-util/src/main/java" + #:tests? #f)); no tests + (inputs + `(("java-asm" ,java-asm))) + (native-inputs '()))) + +(define-public java-gson + (package + (name "java-gson") + (version "2.8.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/google/gson/archive/" + "gson-parent-" version ".tar.gz")) + (sha256 + (base32 + "1j4qnp7v046q0k48c4kyf69sxaasx2h949d3cqwsm3kzxms3x0f9")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "gson.jar" + #:source-dir "gson/src/main/java" + #:test-dir "gson/src/test")) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (home-page "https://github.com/google/gson") + (synopsis "Java serialization/deserialization library from/to JSON") + (description "Gson is a Java library that can be used to convert Java +Objects into their JSON representation. It can also be used to convert a JSON +string to an equivalent Java object. Gson can work with arbitrary Java objects +including pre-existing objects that you do not have source-code of.") + (license license:asl2.0)))