* [bug#34230] [PATCH] gnu: Add openjdk 11.
@ 2019-01-28 7:50 Gábor Boskovits
2019-01-28 8:28 ` Julien Lepiller
2019-01-28 22:16 ` bug#34230: " Julien Lepiller
0 siblings, 2 replies; 3+ messages in thread
From: Gábor Boskovits @ 2019-01-28 7:50 UTC (permalink / raw)
To: 34230; +Cc: Gábor Boskovits
* gnu/packages/java.scm (openjdk11): New variable.
---
gnu/packages/java.scm | 225 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 225 insertions(+)
diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
index 163c29627..a314dc995 100644
--- a/gnu/packages/java.scm
+++ b/gnu/packages/java.scm
@@ -1860,6 +1860,231 @@ new Date();"))
("which" ,which)
("zip" ,zip)))))
+(define-public openjdk11
+ (package
+ (name "openjdk")
+ (version "11.28")
+ (source (origin
+ (method url-fetch)
+ (uri "http://hg.openjdk.java.net/jdk/jdk/archive/76072a077ee1.tar.bz2")
+ (file-name (string-append name "-" version ".tar.bz2"))
+ (sha256
+ (base32
+ "0v705w1s9lrqalzahir78pk397rkk9gfvzq821yv8h3xha0bqi6w"))
+ (modules '((guix build utils)))
+ (snippet
+ `(begin
+ (for-each delete-file (find-files "." ".*.bin$"))
+ (for-each delete-file (find-files "." ".*.exe$"))
+ (for-each delete-file (find-files "." ".*.jar$"))
+ #t))))
+ (build-system gnu-build-system)
+ (outputs '("out" "jdk" "doc"))
+ (arguments
+ `(#:imported-modules
+ ((guix build syscalls)
+ (ice-9 binary-ports)
+ (rnrs bytevectors)
+ ,@%gnu-build-system-modules)
+ #:tests? #f; requires jtreg
+ ;; TODO package jtreg
+ ;; disable parallel builds, as the openjdk build system does not like -j
+ #:parallel-build? #f
+ #:parallel-tests? #f
+ ;; reenable parallel builds and tests by adding the flags manually
+ #:make-flags (list (string-append "JOBS=" (number->string (parallel-job-count))))
+ #:configure-flags
+ `("--disable-option-checking" ; --enable-fast-install default flag errors otherwise
+ "--disable-warnings-as-errors"
+ ;; make validate-runpath pass, see: http://issues.guix.info/issue/32894
+ "--with-native-debug-symbols=zipped"
+ ;; do not use the bundled libraries
+ "--with-giflib=system"
+ "--with-lcms=system"
+ "--with-libjpeg=system"
+ "--with-libpng=system"
+ ;; 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"))
+ ;; TODO
+ #: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/blacklistedcertsconverter/blacklisted.certs.pem"
+ (("^#!.*") "#! java BlacklistedCertsConverter SHA-256\n"))
+ #t))
+ (replace 'build
+ (lambda _
+ (with-output-to-file ".src-rev"
+ (lambda _
+ (display ,version)))
+ (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "yes")
+ (invoke "make" "all")
+ #t))
+ ;; 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 _
+ (invoke "make" "legacy-jre-image")
+ #t))
+ (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 "
+ "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)
+ ("libpng" ,libpng)
+ ("libx11" ,libx11)
+ ("libxext" ,libxext)
+ ("libxrender" ,libxrender)
+ ("libxt" ,libxt)
+ ("libxtst" ,libxtst)))
+ (native-inputs
+ `(("autoconf" ,autoconf)
+ ("openjdk10" ,openjdk10)
+ ("openjdk10:jdk" ,openjdk10 "jdk")
+ ("pkg-config" ,pkg-config)
+ ("unzip" ,unzip)
+ ("which" ,which)
+ ("zip" ,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-public icedtea icedtea-8)
\f
--
2.20.1
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [bug#34230] [PATCH] gnu: Add openjdk 11.
2019-01-28 7:50 [bug#34230] [PATCH] gnu: Add openjdk 11 Gábor Boskovits
@ 2019-01-28 8:28 ` Julien Lepiller
2019-01-28 22:16 ` bug#34230: " Julien Lepiller
1 sibling, 0 replies; 3+ messages in thread
From: Julien Lepiller @ 2019-01-28 8:28 UTC (permalink / raw)
To: Gábor Boskovits, 34230
Le 28 janvier 2019 08:50:30 GMT+01:00, "Gábor Boskovits" <boskovits@gmail.com> a écrit :
>* gnu/packages/java.scm (openjdk11): New variable.
>---
> gnu/packages/java.scm | 225 ++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 225 insertions(+)
>
>diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm
>index 163c29627..a314dc995 100644
>--- a/gnu/packages/java.scm
>+++ b/gnu/packages/java.scm
>@@ -1860,6 +1860,231 @@ new Date();"))
> ("which" ,which)
> ("zip" ,zip)))))
>
>+(define-public openjdk11
>+ (package
>+ (name "openjdk")
>+ (version "11.28")
>+ (source (origin
>+ (method url-fetch)
>+ (uri
>"http://hg.openjdk.java.net/jdk/jdk/archive/76072a077ee1.tar.bz2")
>+ (file-name (string-append name "-" version ".tar.bz2"))
>+ (sha256
>+ (base32
>+
>"0v705w1s9lrqalzahir78pk397rkk9gfvzq821yv8h3xha0bqi6w"))
>+ (modules '((guix build utils)))
>+ (snippet
>+ `(begin
>+ (for-each delete-file (find-files "." ".*.bin$"))
>+ (for-each delete-file (find-files "." ".*.exe$"))
>+ (for-each delete-file (find-files "." ".*.jar$"))
>+ #t))))
>+ (build-system gnu-build-system)
>+ (outputs '("out" "jdk" "doc"))
>+ (arguments
>+ `(#:imported-modules
>+ ((guix build syscalls)
>+ (ice-9 binary-ports)
>+ (rnrs bytevectors)
>+ ,@%gnu-build-system-modules)
>+ #:tests? #f; requires jtreg
>+ ;; TODO package jtreg
>+ ;; disable parallel builds, as the openjdk build system does
>not like -j
>+ #:parallel-build? #f
>+ #:parallel-tests? #f
>+ ;; reenable parallel builds and tests by adding the flags
>manually
>+ #:make-flags (list (string-append "JOBS=" (number->string
>(parallel-job-count))))
>+ #:configure-flags
>+ `("--disable-option-checking" ; --enable-fast-install default
>flag errors otherwise
>+ "--disable-warnings-as-errors"
>+ ;; make validate-runpath pass, see:
>http://issues.guix.info/issue/32894
>+ "--with-native-debug-symbols=zipped"
>+ ;; do not use the bundled libraries
>+ "--with-giflib=system"
>+ "--with-lcms=system"
>+ "--with-libjpeg=system"
>+ "--with-libpng=system"
>+ ;; 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"))
>+ ;; TODO
>+ #: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/blacklistedcertsconverter/blacklisted.certs.pem"
>+ (("^#!.*") "#! java BlacklistedCertsConverter
>SHA-256\n"))
>+ #t))
>+ (replace 'build
>+ (lambda _
>+ (with-output-to-file ".src-rev"
>+ (lambda _
>+ (display ,version)))
>+ (setenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES" "yes")
>+ (invoke "make" "all")
>+ #t))
>+ ;; 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 _
>+ (invoke "make" "legacy-jre-image")
>+ #t))
>+ (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 "
>+ "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)
>+ ("libpng" ,libpng)
>+ ("libx11" ,libx11)
>+ ("libxext" ,libxext)
>+ ("libxrender" ,libxrender)
>+ ("libxt" ,libxt)
>+ ("libxtst" ,libxtst)))
>+ (native-inputs
>+ `(("autoconf" ,autoconf)
>+ ("openjdk10" ,openjdk10)
>+ ("openjdk10:jdk" ,openjdk10 "jdk")
>+ ("pkg-config" ,pkg-config)
>+ ("unzip" ,unzip)
>+ ("which" ,which)
>+ ("zip" ,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-public icedtea icedtea-8)
>
> \f>
Great job! I didn't test it yet, is it reproducible? If so you're wonderful! If not, you're still fine :p
^ permalink raw reply [flat|nested] 3+ messages in thread
* bug#34230: [PATCH] gnu: Add openjdk 11.
2019-01-28 7:50 [bug#34230] [PATCH] gnu: Add openjdk 11 Gábor Boskovits
2019-01-28 8:28 ` Julien Lepiller
@ 2019-01-28 22:16 ` Julien Lepiller
1 sibling, 0 replies; 3+ messages in thread
From: Julien Lepiller @ 2019-01-28 22:16 UTC (permalink / raw)
To: 34230-done
Pushed as 95bc85b7da0cd5177d1b1bd27f0533edca7e414e
Thank you!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2019-01-28 22:17 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2019-01-28 7:50 [bug#34230] [PATCH] gnu: Add openjdk 11 Gábor Boskovits
2019-01-28 8:28 ` Julien Lepiller
2019-01-28 22:16 ` bug#34230: " Julien Lepiller
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/guix.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).