summary refs log tree commit diff
path: root/pkgs
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
parent881f4b0db1cacf2d5e451482c7f98a4281aff5c8 (diff)
downloadnixlib-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar
nixlib-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.gz
nixlib-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.bz2
nixlib-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.lz
nixlib-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.xz
nixlib-5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7.tar.zst
nixlib-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')
-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
-rw-r--r--pkgs/system/all-packages-generic.nix4
4 files changed, 24 insertions, 8 deletions
diff --git a/pkgs/development/compilers/jdk/builder.sh b/pkgs/development/compilers/jdk/builder.sh
index cc70c09b3c85..b1a8528b9385 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 060d270fb081..14cf14bd376a 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 3160ad24bbcf..c01cd707d36a 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 []);
 }
diff --git a/pkgs/system/all-packages-generic.nix b/pkgs/system/all-packages-generic.nix
index be95cfb6fdca..18e5f0f70c9e 100644
--- a/pkgs/system/all-packages-generic.nix
+++ b/pkgs/system/all-packages-generic.nix
@@ -490,7 +490,7 @@ rec {
 
   ecj = (import ../development/eclipse/ecj) {
     inherit fetchurl stdenv unzip jre;
-    ant  = apacheAntBlackdown14;
+    ant = apacheAntBlackdown14;
   };
 
   jdtsdk = (import ../development/eclipse/jdt-sdk) {
@@ -507,6 +507,8 @@ rec {
     else
       (import ../development/compilers/jdk) {
         inherit fetchurl stdenv unzip;
+        patchelf = patchelfNew;
+        inherit (xlibs) libX11 libXext;
       };
 
   j2sdk14x = (import ../development/compilers/jdk/default-1.4.nix) {