* gnu/packages/java.scm (openjdk9)[arguments]: Add patch-jni-libs phase. This fixes a NullPointerException related to using fontconfig reported by Jonathan Frederickson in . --- gnu/packages/java.scm | 29 ++++++++++++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index d6afb2e9d3..a63dad8755 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2018, 2019 Gábor Boskovits ;;; Copyright © 2018 Chris Marusich ;;; Copyright © 2018, 2019, 2020 Efraim Flashner -;;; Copyright © 2019, 2020 Björn Höfling +;;; Copyright © 2019, 2020, 2021 Björn Höfling ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen ;;; Copyright © 2020 Raghav Gururajan ;;; Copyright © 2020 Maxim Cournoyer @@ -1928,6 +1928,33 @@ new Date();")) (number->string (parallel-job-count)))) '()) ,@make-flags)))) + (add-after 'unpack 'patch-jni-libs + ;; Hardcode dynamically loaded libraries. + (lambda _ + (let* ((library-path (search-path-as-string->list + (getenv "LIBRARY_PATH"))) + (find-library (lambda (name) + (search-path + library-path + (string-append "lib" name ".so"))))) + (for-each + (lambda (file) + (catch 'decoding-error + (lambda () + (substitute* file + (("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)" + _ name version) + (format #f "\"~a\"" (find-library name))) + (("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name) + (format #f "\"~a\"" (find-library name))))) + (lambda _ + ;; Those are safe to skip. + (format (current-error-port) + "warning: failed to substitute: ~a~%" + file)))) + (find-files "." + "\\.c$|\\.h$")) + #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 -- 2.27.0