From 84805ef205b7fa12bfaa7b23da06993cab64c40b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20H=C3=B6fling?= Date: Fri, 12 Feb 2021 00:20:16 +0100 Subject: gnu: openjdk@9 : Add phase to hardcode libraries. This fixes a NullPointerException related to using fontconfig, see also . * gnu/packages/java.scm (openjdk9)[arguments]: Add patch-jni-libs phase. Signed-off-by: Leo Prikler --- 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 -- cgit v1.2.3