summaryrefslogtreecommitdiff
path: root/gnu/packages/java.scm
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/packages/java.scm')
-rw-r--r--gnu/packages/java.scm856
1 files changed, 389 insertions, 467 deletions
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index c25a330c2a..3ab324cce9 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1781,511 +1781,398 @@ new Date();"))
"0di91nnms2iq1svgq72r5y17am17r4vh2lq43k0bkcwpc84d6nd8"))
(modules '((guix build utils)))
(snippet
- `(begin
- (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
- #t))))
+ '(for-each delete-file (find-files "." ".*.(bin|exe|jar)$")))))
(build-system gnu-build-system)
(outputs '("out" "jdk" "doc"))
(arguments
- `(#:imported-modules ((guix build syscalls)
+ (list
+ #:imported-modules `((guix build syscalls)
,@%gnu-build-system-modules)
-
- #:disallowed-references ,(list (gexp-input openjdk10)
- (gexp-input openjdk10 "jdk"))
-
- #:tests? #f; requires jtreg
- ;; TODO package jtreg
- #:configure-flags
- `(;; Add flags for compilation with gcc >= 10
- ,(string-append "--with-extra-cflags=-fcommon"
- " -fno-delete-null-pointer-checks"
- " -fno-lifetime-dse")
- "--disable-option-checking" ; --enable-fast-install default flag errors otherwise
+ #:modules `((guix build gnu-build-system)
+ (guix build utils)
+ (ice-9 match)
+ (srfi srfi-1)
+ (srfi srfi-26))
+ #:disallowed-references (list (gexp-input openjdk10)
+ (gexp-input openjdk10 "jdk"))
+
+ #:tests? #f ; requires jtreg
+ ;; TODO package jtreg
+ #:configure-flags
+ #~(list
+ ;; Add flags for compilation with gcc >= 10.
+ #$(string-append "--with-extra-cflags=-fcommon"
+ " -fno-delete-null-pointer-checks"
+ " -fno-lifetime-dse")
+ ;; Otherwise, the '--enable-fast-install' causes an error.
+ "--disable-option-checking"
"--disable-warnings-as-errors"
- ;; make validate-runpath pass, see: http://issues.guix.info/issue/32894
+ ;; Make validate-runpath pass (see:
+ ;; http://issues.guix.info/issue/32894).
"--with-native-debug-symbols=zipped"
- ;; do not use the bundled libraries
+ ;; Do not use the bundled libraries.
"--with-giflib=system"
"--with-lcms=system"
"--with-libjpeg=system"
"--with-libpng=system"
"--with-version-pre="
- ;; allow the build system to locate the system freetype
- ,(string-append "--with-freetype-include="
- (assoc-ref %build-inputs "freetype") "/include")
- ,(string-append "--with-freetype-lib="
- (assoc-ref %build-inputs "freetype") "/lib"))
- #:phases
- (modify-phases %standard-phases
- (add-after 'patch-source-shebangs 'fix-java-shebangs
- (lambda _
- ;; This file was "fixed" by patch-source-shebangs, but it requires
- ;; this exact first line.
- (substitute* "make/data/blockedcertsconverter/blocked.certs.pem"
- (("^#!.*") "#! java BlockedCertsConverter SHA-256\n"))
- #t))
- (add-after 'unpack 'patch-jni-libs
- ;; Hardcode dynamically loaded libraries.
- (lambda _
- (define remove
- (@ (srfi srfi-1) remove))
-
- (define (icedtea-or-openjdk? path)
- (or (string-contains path "openjdk")
- (string-contains path "icedtea")))
-
- (let* ((library-path (remove icedtea-or-openjdk?
- (search-path-as-string->list
- (getenv "LIBRARY_PATH"))))
- (find-library (lambda (name)
- (or (search-path
- library-path
- (string-append "lib" name ".so"))
- (string-append "lib" name ".so")))))
- (for-each
- (lambda (file)
- (catch 'decoding-error
- (lambda ()
- (substitute* file
- (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
- _ name version)
- (string-append "\"" (find-library name) "\""))
- (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
- (string-append "\"" (find-library name) "\""))))
- (lambda _
- ;; Those are safe to skip.
- (format (current-error-port)
- "warning: failed to substitute: ~a~%"
- file))))
- (find-files "."
- "\\.c$|\\.h$"))
- #t)))
- (add-before 'build 'write-source-revision-file
- (lambda _
- (with-output-to-file ".src-rev"
- (lambda _
- (display ,version)))
- #t))
- (replace 'build
- (lambda* (#:key parallel-build? make-flags #:allow-other-keys)
- (apply invoke "make" "all"
- `(,@(if parallel-build?
- (list (string-append "JOBS="
- (number->string (parallel-job-count))))
- '())
- ,@make-flags))))
- ;; jdk 11 does not build jre by default any more
- ;; building it anyways
- ;; for further information see:
- ;; https://github.com/AdoptOpenJDK/openjdk-build/issues/356
- (add-after 'build 'build-jre
- (lambda* (#:key parallel-build? make-flags #:allow-other-keys)
- (apply invoke "make" "legacy-jre-image"
- `(,@(if parallel-build?
- (list (string-append "JOBS="
- (number->string (parallel-job-count))))
- '())
- ,@make-flags))))
- (replace 'install
- (lambda* (#:key outputs #:allow-other-keys)
- (let ((out (assoc-ref outputs "out"))
- (jdk (assoc-ref outputs "jdk"))
- (doc (assoc-ref outputs "doc"))
- (images (car (find-files "build" ".*-server-release"
- #:directories? #t))))
- (copy-recursively (string-append images "/images/jdk") jdk)
- (copy-recursively (string-append images "/images/jre") out)
- (copy-recursively (string-append images "/images/docs") doc))
- #t))
- ;; Some of the libraries in the lib/ folder link to libjvm.so.
- ;; But that shared object is located in the server/ folder, so it
- ;; cannot be found. This phase creates a symbolic link in the
- ;; lib/ folder so that the other libraries can find it.
- ;;
- ;; See:
- ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
- ;;
- ;; FIXME: Find the bug in the build system, so that this symlink is
- ;; not needed.
- (add-after 'install 'install-libjvm
- (lambda* (#:key inputs outputs #:allow-other-keys)
- (let* ((lib-out (string-append (assoc-ref outputs "out")
- "/lib"))
- (lib-jdk (string-append (assoc-ref outputs "jdk")
- "/lib")))
- (symlink (string-append lib-jdk "/server/libjvm.so")
- (string-append lib-jdk "/libjvm.so"))
- (symlink (string-append lib-out "/server/libjvm.so")
- (string-append lib-out "/libjvm.so")))
- #t))
- (add-after 'install 'strip-character-data-timestamps
- (lambda* (#:key outputs #:allow-other-keys)
- (use-modules (guix build syscalls))
- (let ((archive (string-append
- (assoc-ref outputs "jdk") "/lib/src.zip"))
- (dir (mkdtemp! "zip-contents.XXXXXX")))
- (with-directory-excursion dir
- (invoke "unzip" archive))
- (delete-file archive)
- (with-directory-excursion dir
- (let ((char-data-files (find-files "." "CharacterData.*")))
- (for-each (lambda (file)
- (substitute* file
- (((string-append "This file was generated "
+ ;; Allow the build system to locate the system freetype.
+ (string-append "--with-freetype-include="
+ #$(this-package-input "freetype") "/include")
+ (string-append "--with-freetype-lib="
+ #$(this-package-input "freetype") "/lib"))
+ #:phases
+ #~(modify-phases %standard-phases
+ (add-after 'patch-source-shebangs 'fix-java-shebangs
+ (lambda _
+ ;; This file was "fixed" by patch-source-shebangs, but it requires
+ ;; this exact first line.
+ (substitute* "make/data/blockedcertsconverter/blocked.certs.pem"
+ (("^#!.*") "#! java BlockedCertsConverter SHA-256\n"))))
+ (add-after 'unpack 'patch-jni-libs
+ ;; Hardcode dynamically loaded libraries.
+ (lambda _
+ (define remove
+ (@ (srfi srfi-1) remove))
+
+ (define (icedtea-or-openjdk? path)
+ (or (string-contains path "openjdk")
+ (string-contains path "icedtea")))
+
+ (let* ((library-path (remove icedtea-or-openjdk?
+ (search-path-as-string->list
+ (getenv "LIBRARY_PATH"))))
+ (find-library (lambda (name)
+ (or (search-path
+ library-path
+ (string-append "lib" name ".so"))
+ (string-append "lib" name ".so")))))
+ (for-each
+ (lambda (file)
+ (catch 'decoding-error
+ (lambda ()
+ (substitute* file
+ (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
+ _ name version)
+ (string-append "\"" (find-library name) "\""))
+ (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
+ (string-append "\"" (find-library name) "\""))))
+ (lambda _
+ ;; Those are safe to skip.
+ (format (current-error-port)
+ "warning: failed to substitute: ~a~%"
+ file))))
+ (find-files "."
+ "\\.c$|\\.h$")))))
+ (add-before 'build 'write-source-revision-file
+ (lambda _
+ (with-output-to-file ".src-rev"
+ (lambda _
+ (display #$version)))))
+ (replace 'build
+ (lambda* (#:key parallel-build? make-flags #:allow-other-keys)
+ (apply invoke "make" "all"
+ `(,@(if parallel-build?
+ (list (string-append "JOBS="
+ (number->string (parallel-job-count))))
+ '())
+ ,@make-flags))))
+ ;; jdk 11 does not build jre by default any more; so explicitly build
+ ;; it (see:
+ ;; https://github.com/AdoptOpenJDK/openjdk-build/issues/356).
+ (add-after 'build 'build-jre
+ (lambda* (#:key parallel-build? make-flags #:allow-other-keys)
+ (apply invoke "make" "legacy-jre-image"
+ `(,@(if parallel-build?
+ (list (string-append "JOBS="
+ (number->string (parallel-job-count))))
+ '())
+ ,@make-flags))))
+ (replace 'install
+ (lambda _
+ (let ((images (car (find-files "build" ".*-server-release"
+ #:directories? #t))))
+ (copy-recursively (string-append images "/images/jdk")
+ #$output:jdk)
+ (copy-recursively (string-append images "/images/jre")
+ #$output)
+ (copy-recursively (string-append images "/images/docs")
+ #$output:doc))))
+ ;; Some of the libraries in the lib/ folder link to libjvm.so.
+ ;; But that shared object is located in the server/ folder, so it
+ ;; cannot be found. This phase creates a symbolic link in the
+ ;; lib/ folder so that the other libraries can find it.
+ ;;
+ ;; See:
+ ;; https://lists.gnu.org/archive/html/guix-devel/2017-10/msg00169.html
+ ;;
+ ;; FIXME: Find the bug in the build system, so that this symlink is
+ ;; not needed.
+ (add-after 'install 'install-libjvm
+ (lambda _
+ (let ((lib-out (string-append #$output "/lib"))
+ (lib-jdk (string-append #$output:jdk "/lib")))
+ (symlink (string-append lib-jdk "/server/libjvm.so")
+ (string-append lib-jdk "/libjvm.so"))
+ (symlink (string-append lib-out "/server/libjvm.so")
+ (string-append lib-out "/libjvm.so")))))
+ (add-after 'install 'strip-character-data-timestamps
+ (lambda _
+ (use-modules (guix build syscalls))
+ (let ((archive (string-append #$output:jdk "/lib/src.zip"))
+ (dir (mkdtemp! "zip-contents.XXXXXX")))
+ (with-directory-excursion dir
+ (invoke "unzip" archive))
+ (delete-file archive)
+ (with-directory-excursion dir
+ (let ((char-data-files (find-files "." "CharacterData.*")))
+ (for-each (lambda (file)
+ (substitute* file
+ (((string-append "This file was generated "
+ "AUTOMATICALLY from a template "
+ "file.*"))
+ (string-append "This file was generated "
"AUTOMATICALLY from a template "
- "file.*"))
- (string-append "This file was generated "
- "AUTOMATICALLY from a template "
- "file"))))
- char-data-files)))
- (with-directory-excursion dir
- (let ((files (find-files "." ".*" #:directories? #t)))
- (apply invoke "zip" "-0" "-X" archive files))))))
- (add-after 'strip-character-data-timestamps 'strip-archive-timestamps
- (lambda* (#:key outputs #:allow-other-keys)
- (use-modules (guix build syscalls)
- (ice-9 binary-ports)
- (rnrs bytevectors))
- (letrec ((repack-archive
- (lambda (archive)
- (let ((dir (mkdtemp! "zip-contents.XXXXXX")))
- (with-directory-excursion dir
- (invoke "unzip" archive))
- (delete-file archive)
- (for-each (compose repack-archive canonicalize-path)
- (find-files dir "(ct.sym|.*.jar)$"))
- (let ((reset-file-timestamp
- (lambda (file)
- (let ((s (lstat file)))
- (unless (eq? (stat:type s) 'symlink)
- (format #t "reset ~a~%" file)
- (utime file 0 0 0 0))))))
- (for-each reset-file-timestamp
- (find-files dir #:directories? #t)))
- (with-directory-excursion dir
- (let ((files (find-files "." ".*" #:directories? #t)))
- (apply invoke "zip" "-0" "-X" archive files)))))))
- (for-each repack-archive
- (find-files (assoc-ref outputs "doc") ".*.zip$"))
- (for-each repack-archive
- (find-files (assoc-ref outputs "jdk")
- ".*.(zip|jar|diz)$"))
- (repack-archive (string-append (assoc-ref outputs "jdk") "/lib/ct.sym"))
- (let ((repack-jmod
- (lambda (file-name)
- (call-with-input-file file-name
- (lambda (file)
- (let ((header #vu8(#x4a #x4d #x01 #x00)))
- (if (equal? (get-bytevector-n
- file (bytevector-length header))
- header)
- (let* ((header-length (bytevector-length header))
- (temp-file (mkstemp!
- (string-copy
- "temp-file.XXXXXX")))
- (temp-filename (port-filename temp-file))
- (content-length
- (- (stat:size (stat file))
- header-length)))
- (sendfile temp-file file content-length header-length)
- (delete-file file-name)
- (close-port temp-file)
- (repack-archive (canonicalize-path temp-filename))
- (call-with-output-file file-name
- (lambda (file)
- (put-bytevector file header)
- (call-with-input-file temp-filename
- (lambda (temp-file)
- (sendfile
- file temp-file
- (stat:size (stat temp-file)) 0)))))))))))))
- (for-each repack-jmod
- (find-files (assoc-ref outputs "jdk") ".*.jmod$")))
- #t)))
- (add-after 'install 'remove-timestamp-from-api-summary
- (lambda* (#:key outputs #:allow-other-keys)
- (substitute* (string-append (assoc-ref outputs "doc")
- "/api/overview-summary.html")
- (("Generated by javadoc \\(11-internal\\).*$")
- "Generated by javadoc (11-internal) -->\n"))
- #t)))))
- (inputs
- `(("alsa-lib" ,alsa-lib)
- ("cups" ,cups)
- ("fontconfig" ,fontconfig)
- ("freetype" ,freetype)
- ("giflib" ,giflib)
- ("lcms" ,lcms)
- ("libjpeg" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libx11" ,libx11)
- ("libxext" ,libxext)
- ("libxrandr" ,libxrandr)
- ("libxrender" ,libxrender)
- ("libxt" ,libxt)
- ("libxtst" ,libxtst)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("openjdk10" ,openjdk10)
- ("openjdk10:jdk" ,openjdk10 "jdk")
- ("make" ,gnu-make-4.2)
- ("pkg-config" ,pkg-config)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
+ "file"))))
+ char-data-files)))
+ (with-directory-excursion dir
+ (let ((files (find-files "." ".*" #:directories? #t)))
+ (apply invoke "zip" "-0" "-X" archive files))))))
+ (add-after 'strip-character-data-timestamps 'remove-extraneous-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Remove the *.diz and src.zip files for space considerations.
+ ;; The former are compressed debuginfo files not typically
+ ;; shipped with Java distributions, while the later corresponds
+ ;; to Java core API source files.
+ (for-each delete-file
+ (append-map (cut find-files <> "(^src\\.zip|\\.diz)$")
+ (map (match-lambda
+ ((name . dir)
+ dir))
+ outputs)))))
+ (add-after 'remove-diz-file 'strip-archive-timestamps
+ (lambda _
+ (use-modules (guix build syscalls)
+ (ice-9 binary-ports)
+ (rnrs bytevectors))
+ (letrec ((repack-archive
+ (lambda (archive)
+ (let ((dir (mkdtemp! "zip-contents.XXXXXX")))
+ (with-directory-excursion dir
+ (invoke "unzip" archive))
+ (delete-file archive)
+ (for-each (compose repack-archive canonicalize-path)
+ (find-files dir "(ct.sym|\\.jar)$"))
+ (let ((reset-file-timestamp
+ (lambda (file)
+ (let ((s (lstat file)))
+ (unless (eq? (stat:type s) 'symlink)
+ (format #t "reset ~a~%" file)
+ (utime file 0 0 0 0))))))
+ (for-each reset-file-timestamp
+ (find-files dir #:directories? #t)))
+ (with-directory-excursion dir
+ (let ((files (find-files "." ".*" #:directories? #t)))
+ (apply invoke "zip" "-0" "-X" archive files)))))))
+ (for-each repack-archive
+ (find-files #$output:doc "\\.zip$"))
+ (for-each repack-archive
+ (find-files #$output:jdk "\\.(zip|jar)$"))
+ (repack-archive (string-append #$output:jdk "/lib/ct.sym"))
+ (let ((repack-jmod
+ (lambda (file-name)
+ (call-with-input-file file-name
+ (lambda (file)
+ (let ((header #vu8(#x4a #x4d #x01 #x00)))
+ (if (equal? (get-bytevector-n
+ file (bytevector-length header))
+ header)
+ (let* ((header-length (bytevector-length header))
+ (temp-file (mkstemp!
+ (string-copy
+ "temp-file.XXXXXX")))
+ (temp-filename (port-filename temp-file))
+ (content-length
+ (- (stat:size (stat file))
+ header-length)))
+ (sendfile temp-file file content-length header-length)
+ (delete-file file-name)
+ (close-port temp-file)
+ (repack-archive (canonicalize-path temp-filename))
+ (call-with-output-file file-name
+ (lambda (file)
+ (put-bytevector file header)
+ (call-with-input-file temp-filename
+ (lambda (temp-file)
+ (sendfile
+ file temp-file
+ (stat:size (stat temp-file)) 0)))))))))))))
+ (for-each repack-jmod
+ (find-files #$output:jdk "\\.jmod$"))))))
+ (add-after 'install 'remove-timestamp-from-api-summary
+ (lambda _
+ (substitute* (string-append #$output:doc
+ "/api/overview-summary.html")
+ (("Generated by javadoc \\(11-internal\\).*$")
+ "Generated by javadoc (11-internal) -->\n")))))))
+ (inputs
+ (list alsa-lib
+ cups
+ fontconfig
+ freetype
+ giflib
+ lcms
+ libjpeg-turbo
+ libpng
+ libx11
+ libxext
+ libxrandr
+ libxrender
+ libxt
+ libxtst))
+ (native-inputs
+ (list autoconf
+ openjdk10
+ `(,openjdk10 "jdk")
+ gnu-make-4.2
+ pkg-config
+ unzip
+ which
+ zip))
(home-page "https://openjdk.java.net/projects/jdk/11/")
(synopsis "Java development kit")
(description
"This package provides the Java development kit OpenJDK.")
(license license:gpl2+)))
+(define-syntax make-openjdk
+ ;; Return an OpenJDK package at VERSION with checksum HASH, using BOOTSTRAP,
+ ;; the bootstrap package. One or more FIELD can be provided to further
+ ;; refine the package definition; for convenience, the BASE, NAME and
+ ;; VERSION are defined in their scope.
+ (lambda (x)
+ (syntax-case x ()
+ ((_ bootstrap version* hash field ...)
+ (with-syntax ((base (datum->syntax x 'base))
+ (name (datum->syntax x 'name))
+ (version (datum->syntax x 'version)))
+ #'(let ((base (package
+ (inherit bootstrap)
+ (name "openjdk")
+ (version version*)
+ (source
+ (origin
+ (inherit (package-source bootstrap))
+ (method git-fetch)
+ (uri (git-reference
+ (url (format
+ #f "https://github.com/openjdk/jdk~au"
+ (version-major version*)))
+ (commit (string-append "jdk-" version*
+ "-ga"))))
+ (file-name (git-file-name name version))
+ (sha256 (base32 hash))))
+ (native-inputs
+ (modify-inputs (package-native-inputs bootstrap)
+ (replace "openjdk" bootstrap)))
+ (home-page (string-append
+ "https://openjdk.java.net/projects/jdk/"
+ (version-major version)))))
+ (name "openjdk")
+ (version version*))
+ (package
+ (inherit base)
+ field
+ ...)))))))
+
(define-public openjdk12
- (package
- (inherit openjdk11)
- (name "openjdk")
- (version "12.33")
- (source (origin
- (method url-fetch)
- (uri "http://hg.openjdk.java.net/jdk/jdk/archive/0276cba45aac.tar.bz2")
- (file-name (string-append name "-" version ".tar.bz2"))
- (sha256
- (base32
- "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"))
- (modules '((guix build utils)))
- (snippet
- `(begin
- (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
- #t))))
- (arguments
- (substitute-keyword-arguments (package-arguments openjdk11)
- ((#:phases phases)
- `(modify-phases ,phases
+ (make-openjdk
+ openjdk11 "12.33" "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"
+ (source
+ (origin
+ (method url-fetch)
+ (uri "http://hg.openjdk.java.net/jdk/jdk/archive/0276cba45aac.tar.bz2")
+ (file-name (string-append name "-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0mbhdrk12b6878kby0flnbak7444dlpm0ihlmf92vk59y1c02bc2"))
+ (modules '((guix build utils)))
+ (snippet
+ '(for-each delete-file (find-files "." "\\.(bin|exe|jar)$")))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments openjdk11)
+ ((#:phases phases)
+ #~(modify-phases #$phases
(replace 'fix-java-shebangs
(lambda _
- ;; This file was "fixed" by patch-source-shebangs, but it requires
- ;; this exact first line.
- (substitute* "make/data/blacklistedcertsconverter/blacklisted.certs.pem"
- (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))))))))
- (inputs
- `(("alsa-lib" ,alsa-lib)
- ("cups" ,cups)
- ("fontconfig" ,fontconfig)
- ("freetype" ,freetype)
- ("giflib" ,giflib)
- ("lcms" ,lcms)
- ("libjpeg" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libx11" ,libx11)
- ("libxext" ,libxext)
- ("libxrandr" ,libxrandr)
- ("libxrender" ,libxrender)
- ("libxt" ,libxt)
- ("libxtst" ,libxtst)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("openjdk11" ,openjdk11)
- ("openjdk11:jdk" ,openjdk11 "jdk")
- ("make@4.2" ,gnu-make-4.2)
- ("pkg-config" ,pkg-config)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
- (home-page "https://openjdk.java.net/projects/jdk/12")))
+ ;; 'blocked' was renamed to 'blacklisted' in this version for
+ ;; some reason.
+ (substitute* "make/data/blacklistedcertsconverter/\
+blacklisted.certs.pem"
+ (("^#!.*")
+ "#! java BlacklistedCertsConverter SHA-256\n"))))))))))
(define-public openjdk13
- (package
- (inherit openjdk12)
- (name "openjdk")
- (version "13.0.7")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/openjdk/jdk13u")
- (commit (string-append "jdk-" version "-ga"))))
- (file-name (git-file-name name version))
- (sha256
- (base32
+ (make-openjdk openjdk12 "13.0.7"
"0wrrr0d7lz1v8qqm752mn4gz5l2vpl2kmx4ac3ysvk4mljc924hp"))
- (modules '((guix build utils)))
- (snippet
- `(begin
- (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
- #t))))
- (inputs
- `(("alsa-lib" ,alsa-lib)
- ("cups" ,cups)
- ("fontconfig" ,fontconfig)
- ("freetype" ,freetype)
- ("giflib" ,giflib)
- ("lcms" ,lcms)
- ("libjpeg" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libx11" ,libx11)
- ("libxext" ,libxext)
- ("libxrandr" ,libxrandr)
- ("libxrender" ,libxrender)
- ("libxt" ,libxt)
- ("libxtst" ,libxtst)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("openjdk12:jdk" ,openjdk12 "jdk")
- ("make@4.2" ,gnu-make-4.2)
- ("pkg-config" ,pkg-config)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
- (home-page "https://openjdk.java.net/projects/jdk/13")))
(define-public openjdk14
- (package
- (inherit openjdk13)
- (name "openjdk")
- (version "14.0.2")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/openjdk/jdk14u")
- (commit (string-append "jdk-" version "-ga"))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "07k9bsbxwyf2z2n50z96nvhsdai916mxdxcr5lm44jz7f6xrwfq6"))
- (modules '((guix build utils)))
- (snippet
- `(begin
- ;; The m4 macro uses 'help' to search for builtins, which is
- ;; not available in bash-minimal
- (substitute* "make/autoconf/basics.m4"
- (("if help") "if command -v"))
- (for-each delete-file (find-files "." ".*.(bin|exe|jar)$"))
- #t))))
- (inputs
- `(("alsa-lib" ,alsa-lib)
- ("cups" ,cups)
- ("fontconfig" ,fontconfig)
- ("freetype" ,freetype)
- ("giflib" ,giflib)
- ("lcms" ,lcms)
- ("libjpeg" ,libjpeg-turbo)
- ("libpng" ,libpng)
- ("libx11" ,libx11)
- ("libxext" ,libxext)
- ("libxrandr" ,libxrandr)
- ("libxrender" ,libxrender)
- ("libxt" ,libxt)
- ("libxtst" ,libxtst)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("make@4.2" ,gnu-make-4.2)
- ("openjdk13:jdk" ,openjdk13 "jdk")
- ("pkg-config" ,pkg-config)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
- (home-page "https://openjdk.java.net/projects/jdk/14")))
+ (make-openjdk
+ openjdk13 "14.0.2"
+ "07k9bsbxwyf2z2n50z96nvhsdai916mxdxcr5lm44jz7f6xrwfq6"
+ (source (origin
+ (inherit (package-source base))
+ (snippet ;override snippet
+ '(begin
+ ;; The m4 macro uses 'help' to search for builtins, which is
+ ;; not available in bash-minimal
+ (substitute* "make/autoconf/basics.m4"
+ (("if help") "if command -v"))
+ (for-each delete-file (find-files "." "\\.(bin|exe|jar)$"))))))))
(define-public openjdk15
- (package
- (inherit openjdk14)
- (name "openjdk")
- (version "15.0.3")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/openjdk/jdk15u")
- (commit (string-append "jdk-" version "-ga"))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "168cr08nywp0q3vyj8njkhsmmnyd8rz9r58hk4xhzdzc6bdfkl1i"))
- (patches
- (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
- (inputs
- (cons `("libxcursor" ,libxcursor) ; for our patch to work
- (package-inputs openjdk14)))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("openjdk14:jdk" ,openjdk14 "jdk")
- ("pkg-config" ,pkg-config)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
- (home-page "https://openjdk.java.net/projects/jdk/15")))
+ (make-openjdk
+ openjdk14 "15.0.3"
+ "168cr08nywp0q3vyj8njkhsmmnyd8rz9r58hk4xhzdzc6bdfkl1i"
+ (source (origin
+ (inherit (package-source base))
+ (modules '())
+ (snippet #f)
+ (patches
+ (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
+ (inputs
+ (modify-inputs (package-inputs base)
+ (append libxcursor))) ;for our patch to work
+ (native-inputs
+ (modify-inputs (package-native-inputs base)
+ (delete "make" ;remove old gnu-make-4.2
+ "openjdk") ;to remove non-jdk output
+ (append `(,openjdk14 "jdk"))))))
(define-public openjdk16
- (package
- (inherit openjdk15)
- (name "openjdk")
- (version "16.0.1")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/openjdk/jdk16u")
- (commit (string-append "jdk-" version "-ga"))))
- (file-name (git-file-name name version))
- (sha256
- (base32
+ (make-openjdk openjdk15 "16.0.1"
"1ggddsbsar4dj2fycfqqqagqil7prhb30afvq6933rz7pa9apm2f"))
- (patches
- (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("openjdk15:jdk" ,openjdk15 "jdk")
- ("pkg-config" ,pkg-config)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
- (arguments
- (substitute-keyword-arguments (package-arguments openjdk15)
- ((#:phases phases)
- `(modify-phases ,phases
- (add-after 'unpack 'make-templates-writable
- (lambda _
- ;; The build system copies a few .template files from the
- ;; source directory into the build directory and then modifies
- ;; them in-place. So these files have to be writable.
- (for-each make-file-writable
- (find-files "src/java.base/share/classes/jdk/internal/misc/"
- "\\.template$"))))))))
- (home-page "https://openjdk.java.net/projects/jdk/16")))
(define-public openjdk17
- (package
- (inherit openjdk16)
- (name "openjdk")
- (version "17.0.3")
- (source (origin
- (method git-fetch)
- (uri (git-reference
- (url "https://github.com/openjdk/jdk17u")
- (commit (string-append "jdk-" version "-ga"))))
- (file-name (git-file-name name version))
- (sha256
- (base32
- "0slmd6ww947gxpp4yr2wmr5z975bg86qh7zqfp2radf2q77ql65b"))
- (patches
- (search-patches "openjdk-15-xcursor-no-dynamic.patch"))))
- (native-inputs
- `(("autoconf" ,autoconf)
- ("openjdk16:jdk" ,openjdk16 "jdk")
- ("pkg-config" ,pkg-config)
- ("unzip" ,unzip)
- ("which" ,which)
- ("zip" ,zip)))
- (arguments
- (substitute-keyword-arguments (package-arguments openjdk16)
- ((#:phases phases)
- `(modify-phases ,phases
+ (make-openjdk
+ openjdk16 "17.0.3"
+ "0slmd6ww947gxpp4yr2wmr5z975bg86qh7zqfp2radf2q77ql65b"
+ (arguments
+ (substitute-keyword-arguments (package-arguments openjdk16)
+ ((#:phases phases)
+ #~(modify-phases #$phases
(replace 'fix-java-shebangs
(lambda _
- ;; This file was "fixed" by patch-source-shebangs, but it requires
- ;; this exact first line.
+ ;; 'blacklisted' was renamed back to 'blocked'.
(substitute* "make/data/blockedcertsconverter/blocked.certs.pem"
- (("^#!.*") "#! java BlockedCertsConverter SHA-256\n"))))))))
- (home-page "https://openjdk.java.net/projects/jdk/17")))
+ (("^#!.*") "#! java BlockedCertsConverter SHA-256\n"))))))))))
+
+(define-public openjdk18
+ (make-openjdk openjdk17 "18"
+ "1bv6bdhkmwvn10l0xy8yi9xibds640hs5zsvx0jp7wrxa3qw4qy8"))
;;; Convenience alias to point to the latest version of OpenJDK.
-(define-public openjdk openjdk17)
+(define-public openjdk openjdk18)
(define-public icedtea icedtea-8)
@@ -13965,6 +13852,41 @@ library and the API is similar.")
parse command line options/arguments in your CUI application.")
(license license:expat)))
+(define-public java-argparse4j
+ (package
+ (name "java-argparse4j")
+ (version "0.9.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/argparse4j/argparse4j")
+ (commit (string-append "argparse4j-" version))))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1i0j3zs1ln48n0g8a90vqbv6528mcswhzys6252yp0c8w1ai64fb"))))
+ (build-system ant-build-system)
+ (arguments
+ (list #:jar-name "java-argparse4j.jar"
+ #:source-dir "main/src/main/"
+ #:test-dir "main/src/test/"
+ #:jdk openjdk11
+ #:phases #~(modify-phases %standard-phases
+ (add-after 'unpack 'copy-resources
+ (lambda _
+ (copy-recursively "main/src/test/resources"
+ "target/test-classes")
+ (copy-recursively "main/src/main/resources"
+ "build/classes")))
+ (replace 'install
+ (install-from-pom "pom.xml")))))
+ (inputs (list java-junit))
+ (home-page "https://argparse4j.github.io/")
+ (synopsis "Java command-line argument parser library")
+ (description "Argparse4j is a command line argument parser library for
+Java based on Python's @code{argparse} module.")
+ (license license:expat)))
+
(define-public java-metadata-extractor
(package
(name "java-metadata-extractor")