From 649f8b67ac738deabdc9bd554a11365bc33d01aa Mon Sep 17 00:00:00 2001 From: Farid Zakaria Date: Wed, 19 May 2021 10:31:07 -0700 Subject: [PATCH] jdk8: Remove default java.library.path This patch fixes https://github.com/NixOS/nixpkgs/issues/103493 for JDK8 only. I'm upstreaming only for JDK8 to get quorum on the approach and then adding the patches to the remaining versions. Improved JDK8 patch Improved JDK8 patch --- pkgs/development/compilers/openjdk/8.nix | 1 + .../openjdk/fix-library-path-jdk8.patch | 37 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 pkgs/development/compilers/openjdk/fix-library-path-jdk8.patch diff --git a/pkgs/development/compilers/openjdk/8.nix b/pkgs/development/compilers/openjdk/8.nix index f10b7310df13..423c09d923a3 100644 --- a/pkgs/development/compilers/openjdk/8.nix +++ b/pkgs/development/compilers/openjdk/8.nix @@ -106,6 +106,7 @@ let ./fix-java-home-jdk8.patch ./read-truststore-from-env-jdk8.patch ./currency-date-range-jdk8.patch + ./fix-library-path-jdk8.patch ] ++ lib.optionals (!headless && enableGnome2) [ ./swing-use-gtk-jdk8.patch ]; diff --git a/pkgs/development/compilers/openjdk/fix-library-path-jdk8.patch b/pkgs/development/compilers/openjdk/fix-library-path-jdk8.patch new file mode 100644 index 000000000000..0664e745f57f --- /dev/null +++ b/pkgs/development/compilers/openjdk/fix-library-path-jdk8.patch @@ -0,0 +1,37 @@ +diff --git a/hotspot/src/os/linux/vm/os_linux.cpp b/hotspot/src/os/linux/vm/os_linux.cpp +index c477851c1b..ff5e28d95b 100644 +--- a/hotspot/src/os/linux/vm/os_linux.cpp ++++ b/hotspot/src/os/linux/vm/os_linux.cpp +@@ -368,13 +368,13 @@ void os::init_system_properties_values() { + // ... + // 7: The default directories, normally /lib and /usr/lib. + #if defined(AMD64) || defined(_LP64) && (defined(SPARC) || defined(PPC) || defined(S390)) +-#define DEFAULT_LIBPATH "/usr/lib64:/lib64:/lib:/usr/lib" ++#define DEFAULT_LIBPATH "" + #else +-#define DEFAULT_LIBPATH "/lib:/usr/lib" ++#define DEFAULT_LIBPATH "" + #endif + + // Base path of extensions installed on the system. +-#define SYS_EXT_DIR "/usr/java/packages" ++#define SYS_EXT_DIR "" + #define EXTENSIONS_DIR "/lib/ext" + #define ENDORSED_DIR "/lib/endorsed" + +@@ -437,13 +437,13 @@ void os::init_system_properties_values() { + strlen(v) + 1 + + sizeof(SYS_EXT_DIR) + sizeof("/lib/") + strlen(cpu_arch) + sizeof(DEFAULT_LIBPATH) + 1, + mtInternal); +- sprintf(ld_library_path, "%s%s" SYS_EXT_DIR "/lib/%s:" DEFAULT_LIBPATH, v, v_colon, cpu_arch); ++ sprintf(ld_library_path, "%s%s", v); + Arguments::set_library_path(ld_library_path); + FREE_C_HEAP_ARRAY(char, ld_library_path, mtInternal); + } + + // Extensions directories. +- sprintf(buf, "%s" EXTENSIONS_DIR ":" SYS_EXT_DIR EXTENSIONS_DIR, Arguments::get_java_home()); ++ sprintf(buf, "%s" EXTENSIONS_DIR, Arguments::get_java_home()); + Arguments::set_ext_dirs(buf); + + // Endorsed standards default directory.