diff options
author | Björn Höfling <bjoern.hoefling@bjoernhoefling.de> | 2021-02-12 00:20:16 +0100 |
---|---|---|
committer | Leo Prikler <leo.prikler@student.tugraz.at> | 2021-02-12 11:40:07 +0100 |
commit | 84805ef205b7fa12bfaa7b23da06993cab64c40b (patch) | |
tree | 8e3dcaf739f8b79764eccc5f6c023213404fa366 /gnu | |
parent | b72444a4ccb4ae0716e3ae02ee8a33d18035410b (diff) | |
download | guix-84805ef205b7fa12bfaa7b23da06993cab64c40b.tar.gz guix-84805ef205b7fa12bfaa7b23da06993cab64c40b.zip |
gnu: openjdk@9 : Add phase to hardcode libraries.
This fixes a NullPointerException related to using fontconfig,
see also <https://bugs.gnu.org/41177>.
* gnu/packages/java.scm (openjdk9)[arguments]: Add patch-jni-libs phase.
Signed-off-by: Leo Prikler <leo.prikler@student.tugraz.at>
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/packages/java.scm | 29 |
1 files changed, 28 insertions, 1 deletions
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 <boskovits@gmail.com> ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2019, 2020, 2021 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> @@ -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 |