summary refs log tree commit diff
path: root/pkgs/development/compilers/jdk
diff options
context:
space:
mode:
authorEelco Dolstra <eelco.dolstra@logicblox.com>2005-10-07 22:27:42 +0000
committerEelco Dolstra <eelco.dolstra@logicblox.com>2005-10-07 22:27:42 +0000
commit5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7 (patch)
tree600c2ab6abd221d77c2b2733f6b6b04601a3ed88 /pkgs/development/compilers/jdk
parent881f4b0db1cacf2d5e451482c7f98a4281aff5c8 (diff)
downloadnixpkgs-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar
nixpkgs-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.gz
nixpkgs-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.bz2
nixpkgs-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.lz
nixpkgs-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.xz
nixpkgs-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.zst
nixpkgs-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.zip
* Purification of JDK 5. At runtime it now uses the Nix-deployed
  Glibc and X11 client libraries.  The latter are actually optional
  dependencies: if the function is called with `swingSupport' set to
  `false', they are not needed.  This is nice for, e.g., server
  environments.

  All hail Patchelf!

svn path=/nixpkgs/trunk/; revision=4030
Diffstat (limited to 'pkgs/development/compilers/jdk')
-rw-r--r--pkgs/development/compilers/jdk/builder.sh10
-rw-r--r--pkgs/development/compilers/jdk/default.nix8
-rw-r--r--pkgs/development/compilers/jdk/jdk5-sun-linux.nix10
3 files changed, 21 insertions, 7 deletions
diff --git a/pkgs/development/compilers/jdk/builder.sh b/pkgs/development/compilers/jdk/builder.sh
index cc70c09b3c8..b1a8528b938 100644
--- a/pkgs/development/compilers/jdk/builder.sh
+++ b/pkgs/development/compilers/jdk/builder.sh
@@ -30,6 +30,16 @@ do
   fi
 done
 
+# Set the dynamic linker.
+rpath=
+for i in $libraries; do
+    rpath=$rpath${rpath:+:}$i/lib
+done
+glibc=$(cat $NIX_GCC/nix-support/orig-glibc)
+find $out -type f -perm +100 \
+    -exec patchelf --interpreter $glibc/lib/ld-linux.so.* \
+    --set-rpath "$rpath" {} \;
+
 # Unpack .pack files.
 for i in $(find $out -name "*.pack"); do
     echo "unpacking $i..."
diff --git a/pkgs/development/compilers/jdk/default.nix b/pkgs/development/compilers/jdk/default.nix
index 060d270fb08..14cf14bd376 100644
--- a/pkgs/development/compilers/jdk/default.nix
+++ b/pkgs/development/compilers/jdk/default.nix
@@ -1,9 +1,7 @@
-{stdenv, fetchurl, unzip}:
+args:
 
-if stdenv.system == "i686-linux"
+if args.stdenv.system == "i686-linux"
   then
-    (import ./jdk5-sun-linux.nix) {
-      inherit stdenv fetchurl unzip;
-    }
+    (import ./jdk5-sun-linux.nix) args
   else
     false
diff --git a/pkgs/development/compilers/jdk/jdk5-sun-linux.nix b/pkgs/development/compilers/jdk/jdk5-sun-linux.nix
index 3160ad24bbc..c01cd707d36 100644
--- a/pkgs/development/compilers/jdk/jdk5-sun-linux.nix
+++ b/pkgs/development/compilers/jdk/jdk5-sun-linux.nix
@@ -8,10 +8,14 @@
  *
  * @author Martin Bravenboer <martin@cs.uu.nl>
  */
-{stdenv, fetchurl, unzip}:
+{ swingSupport ? true
+, stdenv, fetchurl, unzip, patchelf, libX11 ? null, libXext ? null
+}:
 
 assert stdenv.system == "i686-linux";
 
+assert swingSupport -> libX11 != null && libXext != null;
+
 stdenv.mkDerivation {
   name = "jdk-1.5.0";
   builder = ./builder.sh;
@@ -19,5 +23,7 @@ stdenv.mkDerivation {
   dirname = "jdk1.5.0_05";
   pathname = "/tmp/jdk-1_5_0_05-linux-i586.bin";
   md5 = "2f83bf2a38fff1f8ac51b02ec7391ca3";
-  buildInputs = [unzip];
+  buildInputs = [unzip patchelf];
+  libraries =
+    (if swingSupport then [libX11 libXext] else []);
 }