summary refs log tree commit diff
path: root/pkgs/development
diff options
context:
space:
mode:
authorWilliam A. Kennington III <william@wkennington.com>2015-01-01 15:18:03 -0800
committerWilliam A. Kennington III <william@wkennington.com>2015-01-07 14:55:41 -0800
commitbbc4262514107fd6658696ddebfeba7071ac17b1 (patch)
treed1686e0eb07f77a4072afd49adb1a01daf90b472 /pkgs/development
parent9a7766e054231209c63e1eef21f440ec92c580d1 (diff)
downloadnixpkgs-bbc4262514107fd6658696ddebfeba7071ac17b1.tar
nixpkgs-bbc4262514107fd6658696ddebfeba7071ac17b1.tar.gz
nixpkgs-bbc4262514107fd6658696ddebfeba7071ac17b1.tar.bz2
nixpkgs-bbc4262514107fd6658696ddebfeba7071ac17b1.tar.lz
nixpkgs-bbc4262514107fd6658696ddebfeba7071ac17b1.tar.xz
nixpkgs-bbc4262514107fd6658696ddebfeba7071ac17b1.tar.zst
nixpkgs-bbc4262514107fd6658696ddebfeba7071ac17b1.zip
java: Add home passthru
Diffstat (limited to 'pkgs/development')
-rw-r--r--pkgs/development/compilers/icedtea/default.nix282
-rw-r--r--pkgs/development/compilers/openjdk-darwin/default.nix2
-rw-r--r--pkgs/development/compilers/openjdk/default.nix298
-rw-r--r--pkgs/development/compilers/oraclejdk/jdk-linux-base.nix2
4 files changed, 295 insertions, 289 deletions
diff --git a/pkgs/development/compilers/icedtea/default.nix b/pkgs/development/compilers/icedtea/default.nix
index 8f556c89fb4..5e947ef1b37 100644
--- a/pkgs/development/compilers/icedtea/default.nix
+++ b/pkgs/development/compilers/icedtea/default.nix
@@ -34,147 +34,149 @@ let
   bundleFun = name: "--with-${name}-src-zip=" + builtins.getAttr name sources;
   bundleFlags = map bundleFun bundleNames;
 
-in
+  icedtea = stdenv.mkDerivation (with srcInfo; {
+    name = pkgName;
 
-with srcInfo; stdenv.mkDerivation {
-  name = pkgName;
-
-  src = fetchurl {
-    inherit url sha256;
-  };
-
-  outputs = [ "out" "jre" ];
+    src = fetchurl {
+      inherit url sha256;
+    };
+
+    outputs = [ "out" "jre" ];
+
+    # TODO: Probably some more dependencies should be on this list but are being
+    # propagated instead
+    buildInputs = [
+      jdk ant wget zip unzip cpio file libxslt pkgconfig procps automake
+      autoconf which perl coreutils xorg.lndir
+      zlib libjpeg libpng giflib lcms2 kerberos attr alsaLib cups
+      xorg.libX11 xorg.libXtst gtk2
+    ];
+
+    configureFlags = bundleFlags ++ [
+      "--disable-bootstrap"
+      "--disable-downloading"
 
-  # TODO: Probably some more dependencies should be on this list but are being
-  # propagated instead
-  buildInputs = [
-    jdk ant wget zip unzip cpio file libxslt pkgconfig procps automake
-    autoconf which perl coreutils xorg.lndir
-    zlib libjpeg libpng giflib lcms2 kerberos attr alsaLib cups
-    xorg.libX11 xorg.libXtst gtk2
-  ];
-
-  configureFlags = bundleFlags ++ [
-    "--disable-bootstrap"
-    "--disable-downloading"
-
-    "--without-rhino"
-    "--with-pax=paxctl"
-    "--with-jdk-home=${jdkPath}"
-  ];
-
-  preConfigure = ''
-    unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS
-
-    substituteInPlace javac.in --replace '#!/usr/bin/perl' '#!${perl}/bin/perl'
-    substituteInPlace javah.in --replace '#!/usr/bin/perl' '#!${perl}/bin/perl'
-
-    ./autogen.sh
-  '';
-
-  preBuild = ''
-    make stamps/extract.stamp
-
-    substituteInPlace openjdk/jdk/make/common/shared/Defs-utils.gmk --replace '/bin/echo' '${coreutils}/bin/echo'
-    substituteInPlace openjdk/corba/make/common/shared/Defs-utils.gmk --replace '/bin/echo' '${coreutils}/bin/echo'
-
-    patch -p0 < ${./cppflags-include-fix.patch}
-    patch -p0 < ${./fix-java-home.patch}
-    patch -p0 < ${./currency-date-range.patch}
-  '';
-
-  NIX_NO_SELF_RPATH = true;
-
-  makeFlags = [
-    "ALSA_INCLUDE=${alsaLib}/include/alsa/version.h"
-    "ALT_UNIXCOMMAND_PATH="
-    "ALT_USRBIN_PATH="
-    "ALT_DEVTOOLS_PATH="
-    "ALT_COMPILER_PATH="
-    "ALT_CUPS_HEADERS_PATH=${cups}/include"
-    "ALT_OBJCOPY=${binutils}/bin/objcopy"
-    "SORT=${coreutils}/bin/sort"
-    "UNLIMITED_CRYPTO=1"
-  ];
-
-  installPhase = ''
-    mkdir -p $out/lib/icedtea $out/share $jre/lib/icedtea
-
-    cp -av openjdk.build/j2sdk-image/* $out/lib/icedtea
-
-    # Move some stuff to top-level.
-    mv $out/lib/icedtea/include $out/include
-    mv $out/lib/icedtea/man $out/share/man
-
-    # jni.h expects jni_md.h to be in the header search path.
-    ln -s $out/include/linux/*_md.h $out/include/
-
-    # Remove some broken manpages.
-    rm -rf $out/share/man/ja*
-
-    # Remove crap from the installation.
-    rm -rf $out/lib/icedtea/demo $out/lib/icedtea/sample
-
-    # Move the JRE to a separate output.
-    mv $out/lib/icedtea/jre $jre/lib/icedtea/
-    mkdir $out/lib/icedtea/jre
-    lndir $jre/lib/icedtea/jre $out/lib/icedtea/jre
-
-    # The following files cannot be symlinked, as it seems to violate Java security policies
-    rm $out/lib/icedtea/jre/lib/ext/*
-    cp $jre/lib/icedtea/jre/lib/ext/* $out/lib/icedtea/jre/lib/ext/
-
-    rm -rf $out/lib/icedtea/jre/bin
-    ln -s $out/lib/icedtea/bin $out/lib/icedtea/jre/bin
-
-    # Remove duplicate binaries.
-    for i in $(cd $out/lib/icedtea/bin && echo *); do
-      if [ "$i" = java ]; then continue; fi
-      if cmp -s $out/lib/icedtea/bin/$i $jre/lib/icedtea/jre/bin/$i; then
-        ln -sfn $jre/lib/icedtea/jre/bin/$i $out/lib/icedtea/bin/$i
-      fi
-    done
-
-    # Generate certificates.
-    pushd $jre/lib/icedtea/jre/lib/security
-    rm cacerts
-    perl ${./generate-cacerts.pl} $jre/lib/icedtea/jre/bin/keytool ${cacert}/etc/ca-bundle.crt
-    popd
-
-    ln -s $out/lib/icedtea/bin $out/bin
-    ln -s $jre/lib/icedtea/jre/bin $jre/bin
-  '';
-
-  # FIXME: this is unnecessary once the multiple-outputs branch is merged.
-  preFixup = ''
-    prefix=$jre stripDirs "$stripDebugList" "''${stripDebugFlags:--S}"
-    patchELF $jre
-    propagatedNativeBuildInputs+=" $jre"
-
-    # Propagate the setJavaClassPath setup hook from the JRE so that
-    # any package that depends on the JRE has $CLASSPATH set up
-    # properly.
-    mkdir -p $jre/nix-support
-    echo -n "${setJavaClassPath}" > $jre/nix-support/propagated-native-build-inputs
-
-    # Set JAVA_HOME automatically.
-    mkdir -p $out/nix-support
-    cat <<EOF > $out/nix-support/setup-hook
-    if [ -z "\$JAVA_HOME" ]; then export JAVA_HOME=$out/lib/icedtea; fi
-    EOF
-  '';
-
-  meta = {
-    description = "Free Java development kit based on OpenJDK 7.0 and the IcedTea project";
-    longDescription = ''
-      Free Java environment based on OpenJDK 7.0 and the IcedTea project.
-      - Full Java runtime environment
-      - Needed for executing Java Webstart programs and the free Java web browser plugin.
+      "--without-rhino"
+      "--with-pax=paxctl"
+      "--with-jdk-home=${jdkPath}"
+    ];
+
+    preConfigure = ''
+      unset JAVA_HOME JDK_HOME CLASSPATH JAVAC JAVACFLAGS
+
+      substituteInPlace javac.in --replace '#!/usr/bin/perl' '#!${perl}/bin/perl'
+      substituteInPlace javah.in --replace '#!/usr/bin/perl' '#!${perl}/bin/perl'
+
+      ./autogen.sh
     '';
-    homepage = http://icedtea.classpath.org;
-    maintainers = with stdenv.lib.maintainers; [ wizeman ];
-    platforms = stdenv.lib.platforms.linux;
-  };
 
-  passthru = { inherit architecture; };
-}
+    preBuild = ''
+      make stamps/extract.stamp
+
+      substituteInPlace openjdk/jdk/make/common/shared/Defs-utils.gmk --replace '/bin/echo' '${coreutils}/bin/echo'
+      substituteInPlace openjdk/corba/make/common/shared/Defs-utils.gmk --replace '/bin/echo' '${coreutils}/bin/echo'
+
+      patch -p0 < ${./cppflags-include-fix.patch}
+      patch -p0 < ${./fix-java-home.patch}
+      patch -p0 < ${./currency-date-range.patch}
+    '';
+
+    NIX_NO_SELF_RPATH = true;
+
+    makeFlags = [
+      "ALSA_INCLUDE=${alsaLib}/include/alsa/version.h"
+      "ALT_UNIXCOMMAND_PATH="
+      "ALT_USRBIN_PATH="
+      "ALT_DEVTOOLS_PATH="
+      "ALT_COMPILER_PATH="
+      "ALT_CUPS_HEADERS_PATH=${cups}/include"
+      "ALT_OBJCOPY=${binutils}/bin/objcopy"
+      "SORT=${coreutils}/bin/sort"
+      "UNLIMITED_CRYPTO=1"
+    ];
+
+    installPhase = ''
+      mkdir -p $out/lib/icedtea $out/share $jre/lib/icedtea
+
+      cp -av openjdk.build/j2sdk-image/* $out/lib/icedtea
+
+      # Move some stuff to top-level.
+      mv $out/lib/icedtea/include $out/include
+      mv $out/lib/icedtea/man $out/share/man
+
+      # jni.h expects jni_md.h to be in the header search path.
+      ln -s $out/include/linux/*_md.h $out/include/
+
+      # Remove some broken manpages.
+      rm -rf $out/share/man/ja*
+
+      # Remove crap from the installation.
+      rm -rf $out/lib/icedtea/demo $out/lib/icedtea/sample
+
+      # Move the JRE to a separate output.
+      mv $out/lib/icedtea/jre $jre/lib/icedtea/
+      mkdir $out/lib/icedtea/jre
+      lndir $jre/lib/icedtea/jre $out/lib/icedtea/jre
+
+      # The following files cannot be symlinked, as it seems to violate Java security policies
+      rm $out/lib/icedtea/jre/lib/ext/*
+      cp $jre/lib/icedtea/jre/lib/ext/* $out/lib/icedtea/jre/lib/ext/
+
+      rm -rf $out/lib/icedtea/jre/bin
+      ln -s $out/lib/icedtea/bin $out/lib/icedtea/jre/bin
+
+      # Remove duplicate binaries.
+      for i in $(cd $out/lib/icedtea/bin && echo *); do
+        if [ "$i" = java ]; then continue; fi
+        if cmp -s $out/lib/icedtea/bin/$i $jre/lib/icedtea/jre/bin/$i; then
+          ln -sfn $jre/lib/icedtea/jre/bin/$i $out/lib/icedtea/bin/$i
+        fi
+      done
+
+      # Generate certificates.
+      pushd $jre/lib/icedtea/jre/lib/security
+      rm cacerts
+      perl ${./generate-cacerts.pl} $jre/lib/icedtea/jre/bin/keytool ${cacert}/etc/ca-bundle.crt
+      popd
+
+      ln -s $out/lib/icedtea/bin $out/bin
+      ln -s $jre/lib/icedtea/jre/bin $jre/bin
+    '';
+
+    # FIXME: this is unnecessary once the multiple-outputs branch is merged.
+    preFixup = ''
+      prefix=$jre stripDirs "$stripDebugList" "''${stripDebugFlags:--S}"
+      patchELF $jre
+      propagatedNativeBuildInputs+=" $jre"
+
+      # Propagate the setJavaClassPath setup hook from the JRE so that
+      # any package that depends on the JRE has $CLASSPATH set up
+      # properly.
+      mkdir -p $jre/nix-support
+      echo -n "${setJavaClassPath}" > $jre/nix-support/propagated-native-build-inputs
+
+      # Set JAVA_HOME automatically.
+      mkdir -p $out/nix-support
+      cat <<EOF > $out/nix-support/setup-hook
+      if [ -z "\$JAVA_HOME" ]; then export JAVA_HOME=$out/lib/icedtea; fi
+      EOF
+    '';
+
+    meta = {
+      description = "Free Java development kit based on OpenJDK 7.0 and the IcedTea project";
+      longDescription = ''
+        Free Java environment based on OpenJDK 7.0 and the IcedTea project.
+        - Full Java runtime environment
+        - Needed for executing Java Webstart programs and the free Java web browser plugin.
+      '';
+      homepage = http://icedtea.classpath.org;
+      maintainers = with stdenv.lib.maintainers; [ wizeman ];
+      platforms = stdenv.lib.platforms.linux;
+    };
+
+    passthru = {
+      inherit architecture;
+      home = "${icedtea}/lib/icedtea";
+    };
+  });
+in icedtea
diff --git a/pkgs/development/compilers/openjdk-darwin/default.nix b/pkgs/development/compilers/openjdk-darwin/default.nix
index 8d3cbef75d4..05a51c4e7eb 100644
--- a/pkgs/development/compilers/openjdk-darwin/default.nix
+++ b/pkgs/development/compilers/openjdk-darwin/default.nix
@@ -31,7 +31,7 @@ let
       EOF
     '';
 
-    passthru.jre = jdk;
+    passthru = { jre = jdk; };
 
   };
 in jdk
diff --git a/pkgs/development/compilers/openjdk/default.nix b/pkgs/development/compilers/openjdk/default.nix
index b2350bcc681..8ba2b3a379f 100644
--- a/pkgs/development/compilers/openjdk/default.nix
+++ b/pkgs/development/compilers/openjdk/default.nix
@@ -27,155 +27,157 @@ let
     md5 = "de3006e5cf1ee78a9c6145ce62c4e982";
   };
 
-in
-
-stdenv.mkDerivation rec {
-  name = "openjdk-7u${update}b${build}";
-
-  src = fetchurl {
-    url = "http://tarballs.nixos.org/openjdk-7u${update}-b${build}.tar.xz";
-    sha256 = "0lyp75sl5w4b9azphb2nq5cwzli85inpksq4943q4j349rkmdprx";
-  };
-
-  outputs = [ "out" "jre" ];
+  openjdk = stdenv.mkDerivation rec {
+    name = "openjdk-7u${update}b${build}";
+
+    src = fetchurl {
+      url = "http://tarballs.nixos.org/openjdk-7u${update}-b${build}.tar.xz";
+      sha256 = "0lyp75sl5w4b9azphb2nq5cwzli85inpksq4943q4j349rkmdprx";
+    };
+
+    outputs = [ "out" "jre" ];
+
+    buildInputs =
+      [ unzip procps ant which zip cpio nettools alsaLib
+        xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst
+        xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir
+        fontconfig perl file
+      ];
+
+    NIX_LDFLAGS = "-lfontconfig -lXcursor -lXinerama";
+
+    postUnpack = ''
+      sed -i -e "s@/usr/bin/test@${coreutils}/bin/test@" \
+        -e "s@/bin/ls@${coreutils}/bin/ls@" \
+        openjdk*/hotspot/make/linux/makefiles/sa.make
+
+      sed -i "s@/bin/echo -e@${coreutils}/bin/echo -e@" \
+        openjdk*/{jdk,corba}/make/common/shared/Defs-utils.gmk
+
+      tar xf ${cupsSrc}
+      cupsDir=$(echo $(pwd)/cups-*)
+      makeFlagsArray+=(CUPS_HEADERS_PATH=$cupsDir)
+    '';
+
+    patches = [
+      ./cppflags-include-fix.patch
+      ./fix-java-home.patch
+      ./paxctl.patch
+      ./read-truststore-from-env.patch
+      ./currency-date-range.patch
+    ];
 
-  buildInputs =
-    [ unzip procps ant which zip cpio nettools alsaLib
-      xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst
-      xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir
-      fontconfig perl file
+    NIX_NO_SELF_RPATH = true;
+
+    makeFlags = [
+      "SORT=${coreutils}/bin/sort"
+      "ALSA_INCLUDE=${alsaLib}/include/alsa/version.h"
+      "FREETYPE_HEADERS_PATH=${freetype}/include"
+      "FREETYPE_LIB_PATH=${freetype}/lib"
+      "MILESTONE=u${update}"
+      "BUILD_NUMBER=b${build}"
+      "USRBIN_PATH="
+      "COMPILER_PATH="
+      "DEVTOOLS_PATH="
+      "UNIXCOMMAND_PATH="
+      "BOOTDIR=${jdk}"
+      "STATIC_CXX=false"
+      "UNLIMITED_CRYPTO=1"
+      "FULL_DEBUG_SYMBOLS=0"
     ];
 
-  NIX_LDFLAGS = "-lfontconfig -lXcursor -lXinerama";
-
-  postUnpack = ''
-    sed -i -e "s@/usr/bin/test@${coreutils}/bin/test@" \
-      -e "s@/bin/ls@${coreutils}/bin/ls@" \
-      openjdk*/hotspot/make/linux/makefiles/sa.make
-
-    sed -i "s@/bin/echo -e@${coreutils}/bin/echo -e@" \
-      openjdk*/{jdk,corba}/make/common/shared/Defs-utils.gmk
-
-    tar xf ${cupsSrc}
-    cupsDir=$(echo $(pwd)/cups-*)
-    makeFlagsArray+=(CUPS_HEADERS_PATH=$cupsDir)
-  '';
-
-  patches = [
-    ./cppflags-include-fix.patch
-    ./fix-java-home.patch
-    ./paxctl.patch
-    ./read-truststore-from-env.patch
-    ./currency-date-range.patch
-  ];
-
-  NIX_NO_SELF_RPATH = true;
-
-  makeFlags = [
-    "SORT=${coreutils}/bin/sort"
-    "ALSA_INCLUDE=${alsaLib}/include/alsa/version.h"
-    "FREETYPE_HEADERS_PATH=${freetype}/include"
-    "FREETYPE_LIB_PATH=${freetype}/lib"
-    "MILESTONE=u${update}"
-    "BUILD_NUMBER=b${build}"
-    "USRBIN_PATH="
-    "COMPILER_PATH="
-    "DEVTOOLS_PATH="
-    "UNIXCOMMAND_PATH="
-    "BOOTDIR=${jdk}"
-    "STATIC_CXX=false"
-    "UNLIMITED_CRYPTO=1"
-    "FULL_DEBUG_SYMBOLS=0"
-  ];
-
-  configurePhase = "true";
-
-  preBuild = ''
-    # We also need to PaX-mark in the middle of the build
-    substituteInPlace hotspot/make/linux/makefiles/launcher.make \
-       --replace XXX_PAXFLAGS_XXX ${paxflags}
-    substituteInPlace jdk/make/common/Program.gmk  \
-       --replace XXX_PAXFLAGS_XXX ${paxflags}
-  '';
-
-  installPhase = ''
-    mkdir -p $out/lib/openjdk $out/share $jre/lib/openjdk
-
-    cp -av build/*/j2sdk-image/* $out/lib/openjdk
-
-    # Move some stuff to top-level.
-    mv $out/lib/openjdk/include $out/include
-    mv $out/lib/openjdk/man $out/share/man
-
-    # jni.h expects jni_md.h to be in the header search path.
-    ln -s $out/include/linux/*_md.h $out/include/
-
-    # Remove some broken manpages.
-    rm -rf $out/share/man/ja*
-
-    # Remove crap from the installation.
-    rm -rf $out/lib/openjdk/demo $out/lib/openjdk/sample
-
-    # Move the JRE to a separate output.
-    mv $out/lib/openjdk/jre $jre/lib/openjdk/
-    mkdir $out/lib/openjdk/jre
-    lndir $jre/lib/openjdk/jre $out/lib/openjdk/jre
-
-    rm -rf $out/lib/openjdk/jre/bin
-    ln -s $out/lib/openjdk/bin $out/lib/openjdk/jre/bin
-
-    # Set PaX markings
-    exes=$(file $out/lib/openjdk/bin/* $jre/lib/openjdk/jre/bin/* 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//')
-    echo "to mark: *$exes*"
-    for file in $exes; do
-      echo "marking *$file*"
-      paxmark ${paxflags} "$file"
-    done
-
-    # Remove duplicate binaries.
-    for i in $(cd $out/lib/openjdk/bin && echo *); do
-      if [ "$i" = java ]; then continue; fi
-      if cmp -s $out/lib/openjdk/bin/$i $jre/lib/openjdk/jre/bin/$i; then
-        ln -sfn $jre/lib/openjdk/jre/bin/$i $out/lib/openjdk/bin/$i
-      fi
-    done
-
-    # Generate certificates.
-    pushd $jre/lib/openjdk/jre/lib/security
-    rm cacerts
-    perl ${./generate-cacerts.pl} $jre/lib/openjdk/jre/bin/keytool ${cacert}/etc/ca-bundle.crt
-    popd
-
-    ln -s $out/lib/openjdk/bin $out/bin
-    ln -s $jre/lib/openjdk/jre/bin $jre/bin
-  ''; # */
-
-  # FIXME: this is unnecessary once the multiple-outputs branch is merged.
-  preFixup = ''
-    prefix=$jre stripDirs "$stripDebugList" "''${stripDebugFlags:--S}"
-    patchELF $jre
-    propagatedNativeBuildInputs+=" $jre"
-
-    # Propagate the setJavaClassPath setup hook from the JRE so that
-    # any package that depends on the JRE has $CLASSPATH set up
-    # properly.
-    mkdir -p $jre/nix-support
-    echo -n "${setJavaClassPath}" > $jre/nix-support/propagated-native-build-inputs
-
-    # Set JAVA_HOME automatically.
-    mkdir -p $out/nix-support
-    cat <<EOF > $out/nix-support/setup-hook
-    if [ -z "\$JAVA_HOME" ]; then export JAVA_HOME=$out/lib/openjdk; fi
-    EOF
-  '';
-
-  meta = {
-    homepage = http://openjdk.java.net/;
-    license = stdenv.lib.licenses.gpl2;
-    description = "The open-source Java Development Kit";
-    maintainers = [ stdenv.lib.maintainers.eelco stdenv.lib.maintainers.shlevy ];
-    platforms = stdenv.lib.platforms.linux;
+    configurePhase = "true";
+
+    preBuild = ''
+      # We also need to PaX-mark in the middle of the build
+      substituteInPlace hotspot/make/linux/makefiles/launcher.make \
+         --replace XXX_PAXFLAGS_XXX ${paxflags}
+      substituteInPlace jdk/make/common/Program.gmk  \
+         --replace XXX_PAXFLAGS_XXX ${paxflags}
+    '';
+
+    installPhase = ''
+      mkdir -p $out/lib/openjdk $out/share $jre/lib/openjdk
+
+      cp -av build/*/j2sdk-image/* $out/lib/openjdk
+
+      # Move some stuff to top-level.
+      mv $out/lib/openjdk/include $out/include
+      mv $out/lib/openjdk/man $out/share/man
+
+      # jni.h expects jni_md.h to be in the header search path.
+      ln -s $out/include/linux/*_md.h $out/include/
+
+      # Remove some broken manpages.
+      rm -rf $out/share/man/ja*
+
+      # Remove crap from the installation.
+      rm -rf $out/lib/openjdk/demo $out/lib/openjdk/sample
+
+      # Move the JRE to a separate output.
+      mv $out/lib/openjdk/jre $jre/lib/openjdk/
+      mkdir $out/lib/openjdk/jre
+      lndir $jre/lib/openjdk/jre $out/lib/openjdk/jre
+
+      rm -rf $out/lib/openjdk/jre/bin
+      ln -s $out/lib/openjdk/bin $out/lib/openjdk/jre/bin
+
+      # Set PaX markings
+      exes=$(file $out/lib/openjdk/bin/* $jre/lib/openjdk/jre/bin/* 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//')
+      echo "to mark: *$exes*"
+      for file in $exes; do
+        echo "marking *$file*"
+        paxmark ${paxflags} "$file"
+      done
+
+      # Remove duplicate binaries.
+      for i in $(cd $out/lib/openjdk/bin && echo *); do
+        if [ "$i" = java ]; then continue; fi
+        if cmp -s $out/lib/openjdk/bin/$i $jre/lib/openjdk/jre/bin/$i; then
+          ln -sfn $jre/lib/openjdk/jre/bin/$i $out/lib/openjdk/bin/$i
+        fi
+      done
+
+      # Generate certificates.
+      pushd $jre/lib/openjdk/jre/lib/security
+      rm cacerts
+      perl ${./generate-cacerts.pl} $jre/lib/openjdk/jre/bin/keytool ${cacert}/etc/ca-bundle.crt
+      popd
+
+      ln -s $out/lib/openjdk/bin $out/bin
+      ln -s $jre/lib/openjdk/jre/bin $jre/bin
+    ''; # */
+
+    # FIXME: this is unnecessary once the multiple-outputs branch is merged.
+    preFixup = ''
+      prefix=$jre stripDirs "$stripDebugList" "''${stripDebugFlags:--S}"
+      patchELF $jre
+      propagatedNativeBuildInputs+=" $jre"
+
+      # Propagate the setJavaClassPath setup hook from the JRE so that
+      # any package that depends on the JRE has $CLASSPATH set up
+      # properly.
+      mkdir -p $jre/nix-support
+      echo -n "${setJavaClassPath}" > $jre/nix-support/propagated-native-build-inputs
+
+      # Set JAVA_HOME automatically.
+      mkdir -p $out/nix-support
+      cat <<EOF > $out/nix-support/setup-hook
+      if [ -z "\$JAVA_HOME" ]; then export JAVA_HOME=$out/lib/openjdk; fi
+      EOF
+    '';
+
+    meta = {
+      homepage = http://openjdk.java.net/;
+      license = stdenv.lib.licenses.gpl2;
+      description = "The open-source Java Development Kit";
+      maintainers = [ stdenv.lib.maintainers.eelco stdenv.lib.maintainers.shlevy ];
+      platforms = stdenv.lib.platforms.linux;
+    };
+
+    passthru = {
+      inherit architecture;
+      home = "${openjdk}/lib/openjdk";
+    };
   };
-
-  passthru = { inherit architecture; };
-}
+in openjdk
diff --git a/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix b/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix
index cabfaff7a1e..f51107a2b29 100644
--- a/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix
+++ b/pkgs/development/compilers/oraclejdk/jdk-linux-base.nix
@@ -180,6 +180,8 @@ let result = stdenv.mkDerivation rec {
 
   passthru.jre = result; # FIXME: use multiple outputs or return actual JRE package
 
+  passthru.home = result;
+
   meta.license = stdenv.lib.licenses.unfree;
 
 }; in result