From 5b63bb66f7cce977ac94a2e3c6e0034cb80c16e7 Mon Sep 17 00:00:00 2001 From: Eelco Dolstra Date: Fri, 7 Oct 2005 22:27:42 +0000 Subject: [PATCH] * 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 --- pkgs/development/compilers/jdk/builder.sh | 10 ++++++++++ pkgs/development/compilers/jdk/default.nix | 8 +++----- pkgs/development/compilers/jdk/jdk5-sun-linux.nix | 10 ++++++++-- pkgs/system/all-packages-generic.nix | 4 +++- 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 */ -{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) {