gnu: opendjk11: Remove trailing #t and use gexps.
* gnu/packages/java.scm (openjdk11): Properly punctuate comments. [source]: Remove trailing #t in snippet. [configure-flags]: Use gexps and this-package-input. [phases]: Delete trailing #t and use gexps to refer to outputs.
This commit is contained in:
		
							parent
							
								
									79b8e52e64
								
							
						
					
					
						commit
						e33ab2dd9e
					
				
					 1 changed files with 202 additions and 212 deletions
				
			
		|  | @ -1781,234 +1781,224 @@ 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")) | ||||
|       #: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 | ||||
|       #: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)) | ||||
|          ;; 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"))) | ||||
|               (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 " | ||||
|               (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))))) | ||||
|                                                   "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 _ | ||||
|               (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|diz)$")) | ||||
|                 (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 | ||||
|      `(("alsa-lib" ,alsa-lib) | ||||
|        ("cups" ,cups) | ||||
|  |  | |||
		Reference in a new issue