From bdcb721546f81c4b2c31eb84d94f10d91f1031ca Mon Sep 17 00:00:00 2001 From: "William A. Kennington III" Date: Sat, 6 Jun 2015 16:14:43 -0700 Subject: [PATCH] java: Refactor top level and build ordering --- .../compilers/openjdk/bootstrap.nix | 41 +++++++------ .../development/compilers/openjdk/default.nix | 6 +- .../compilers/openjdk/openjdk8.nix | 7 ++- pkgs/top-level/all-packages.nix | 61 ++++++++----------- 4 files changed, 56 insertions(+), 59 deletions(-) diff --git a/pkgs/development/compilers/openjdk/bootstrap.nix b/pkgs/development/compilers/openjdk/bootstrap.nix index 890064538cc..bc63292a145 100644 --- a/pkgs/development/compilers/openjdk/bootstrap.nix +++ b/pkgs/development/compilers/openjdk/bootstrap.nix @@ -4,30 +4,33 @@ let # !!! These should be on nixos.org src = if glibc.system == "x86_64-linux" then fetchurl { - url = http://tarballs.nixos.org/openjdk-bootstrap-x86_64-linux-2012-08-24.tar.xz; - sha256 = "0gla9dxrfq2w1hvgsnn8jg8a60k27im6z43a6iidi0qmwa0wah32"; + url = http://pub.wak.io/nixos/tarballs/openjdk-bootstrap-x86_64-linux.tar.xz; + sha256 = "13m3df54mnr2nb67284s2zf5n8y502ck47gc39lcafrh40hzjil5"; } else if glibc.system == "i686-linux" then fetchurl { - url = http://tarballs.nixos.org/openjdk-bootstrap-i686-linux-2012-08-24.tar.xz; - sha256 = "184wq212bycwbbq4ix8cc6jwjxkrqw9b01zb86q95kqpa8zy5206"; + url = http://pub.wak.io/nixos/tarballs/openjdk-bootstrap-i686-linux.tar.xz; + sha256 = "18kzv4h9skxg5g5c7ar2ji3qny880h5svcn207b4d6xv4sa0a6ks"; } else throw "No bootstrap for system"; -in -runCommand "openjdk-bootstrap" {} '' - tar xvf ${src} - mv openjdk-bootstrap $out + bootstrap = runCommand "openjdk-bootstrap" { + passthru.home = "${bootstrap}/lib/openjdk"; + } '' + tar xvf ${src} + mv openjdk-bootstrap $out - for i in $out/bin/*; do - patchelf --set-interpreter ${glibc}/lib/ld-linux*.so.2 $i - done + for i in $out/bin/*; do + patchelf --set-interpreter ${glibc}/lib/ld-linux*.so.2 $i || true + patchelf --set-rpath ${glibc}/lib:$out/lib $i || true + done - # Temporarily, while NixOS's OpenJDK bootstrap tarball doesn't have PaX markings: - exes=$(${file}/bin/file $out/bin/* 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//') - for file in $exes; do - paxmark m "$file" - # On x86 for heap sizes over 700MB disable SEGMEXEC and PAGEEXEC as well. - ${stdenv.lib.optionalString stdenv.isi686 ''paxmark msp "$file"''} - done -'' + # Temporarily, while NixOS's OpenJDK bootstrap tarball doesn't have PaX markings: + exes=$(${file}/bin/file $out/bin/* 2> /dev/null | grep -E 'ELF.*(executable|shared object)' | sed -e 's/: .*$//') + for file in $exes; do + paxmark m "$file" + # On x86 for heap sizes over 700MB disable SEGMEXEC and PAGEEXEC as well. + ${stdenv.lib.optionalString stdenv.isi686 ''paxmark msp "$file"''} + done + ''; +in bootstrap diff --git a/pkgs/development/compilers/openjdk/default.nix b/pkgs/development/compilers/openjdk/default.nix index beab781c88d..323bf78ec59 100644 --- a/pkgs/development/compilers/openjdk/default.nix +++ b/pkgs/development/compilers/openjdk/default.nix @@ -1,5 +1,5 @@ { stdenv, fetchurl, unzip, zip, procps, coreutils, alsaLib, ant, freetype -, which, jdk, nettools, xorg, file +, which, bootjdk, nettools, xorg, file , fontconfig, cpio, cacert, perl, setJavaClassPath }: let @@ -15,7 +15,7 @@ let else throw "openjdk requires i686-linux or x86_64 linux"; - update = "65"; + update = "80"; build = "32"; @@ -81,7 +81,7 @@ let "COMPILER_PATH=" "DEVTOOLS_PATH=" "UNIXCOMMAND_PATH=" - "BOOTDIR=${jdk}" + "BOOTDIR=${bootjdk.home}" "STATIC_CXX=false" "UNLIMITED_CRYPTO=1" "FULL_DEBUG_SYMBOLS=0" diff --git a/pkgs/development/compilers/openjdk/openjdk8.nix b/pkgs/development/compilers/openjdk/openjdk8.nix index 132f0f31b87..4406c72e229 100644 --- a/pkgs/development/compilers/openjdk/openjdk8.nix +++ b/pkgs/development/compilers/openjdk/openjdk8.nix @@ -1,4 +1,4 @@ -{ stdenv, fetchurl, cpio, file, which, unzip, zip, xorg, cups, freetype, alsaLib, openjdk, cacert, perl, liberation_ttf, fontconfig } : +{ stdenv, fetchurl, cpio, file, which, unzip, zip, xorg, cups, freetype, alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig } : let update = "40"; build = "27"; @@ -44,7 +44,7 @@ let buildInputs = [ cpio file which unzip zip xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir - cups freetype alsaLib openjdk perl liberation_ttf fontconfig ]; + cups freetype alsaLib perl liberation_ttf fontconfig bootjdk ]; setSourceRoot = '' sourceRoot="jdk8u${update}-jdk8u${update}-b${build}"; ''; @@ -82,10 +82,11 @@ let "--with-override-jaxws=../jaxws-${repover}" "--with-override-jaxp=../jaxp-${repover}" "--with-override-nashorn=../nashorn-${repover}" - "--with-boot-jdk=${openjdk}/lib/openjdk/" + "--with-boot-jdk=${bootjdk.home}" "--with-update-version=${update}" "--with-build-number=b${build}" "--with-milestone=fcs" + "--disable-debug-symbols" ]; NIX_LDFLAGS= "-lfontconfig"; buildFlags = "all"; diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index b49c2e3b59d..18e0f49499d 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3905,23 +3905,25 @@ let gwt240 = callPackage ../development/compilers/gwt/2.4.0.nix { }; - icedtea7_jdk = callPackage ../development/compilers/icedtea rec { - jdk = openjdk; + icedtea7 = callPackage ../development/compilers/icedtea rec { + bootjdk = openjdk-bootstrap; giflib = giflib_5_0; - } // { outputs = [ "out" ]; }; + }; - icedtea7_jre = (lib.setName "icedtea7-${lib.getVersion pkgs.icedtea7_jdk.jre}" (lib.addMetaAttrs - { description = "Free Java runtime environment based on OpenJDK 7.0 and the IcedTea project"; } - pkgs.icedtea7_jdk.jre)) // { outputs = [ "jre" ]; }; + # There will not likely be an icedtea8 so users should move to openjdk + icedtea = icedtea7; icedtea7_web = callPackage ../development/compilers/icedtea-web { - jdk = icedtea7_jdk; + jdk = jdk7; xulrunner = firefox; }; - icedtea_jdk = icedtea7_jdk; - icedtea_jre = icedtea7_jre; - icedtea_web = icedtea7_web; + icedtea8_web = callPackage ../development/compilers/icedtea-web { + jdk = jdk8; + xulrunner = firefox; + }; + + icedtea_web = icedtea8_web; ikarus = callPackage ../development/compilers/ikarus { }; @@ -3929,34 +3931,25 @@ let path64 = callPackage ../development/compilers/path64 { }; - openjdk = - if stdenv.isDarwin then - callPackage ../development/compilers/openjdk-darwin { } - else - let - openjdkBootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix { }; - in (callPackage ../development/compilers/openjdk { - jdk = openjdkBootstrap; - }) // { outputs = [ "out" ]; }; + openjdk-bootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix { }; - openjdk8 = callPackage ../development/compilers/openjdk/openjdk8.nix { } // { outputs = [ "out" ]; }; + openjdk-darwin = callPackage ../development/compilers/openjdk-darwin { }; - # FIXME: Need a way to set per-output meta attributes. - openjre = (lib.setName "openjre-${lib.getVersion pkgs.openjdk.jre}" (lib.addMetaAttrs - { description = "The open-source Java Runtime Environment"; } - pkgs.openjdk.jre)) // { outputs = [ "jre" ]; }; + openjdk7 = callPackage ../development/compilers/openjdk { + bootjdk = openjdk-bootstrap; + }; - jdk = if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" - then pkgs.icedtea_jdk - else if stdenv.isDarwin - then pkgs.openjdk # TODO: Use icedtea for darwin - else pkgs.oraclejdk; + openjdk8 = callPackage ../development/compilers/openjdk/openjdk8.nix { + bootjdk = openjdk-bootstrap; + }; - jre = if stdenv.system == "i686-linux" || stdenv.system == "x86_64-linux" - then pkgs.icedtea_jre - else if stdenv.isDarwin - then pkgs.openjre # TODO: Use icedtea for darwin - else pkgs.oraclejre; + openjdk = if stdenv.isDarwin then openjdk-darwin else openjdk8; + + jdk7 = icedtea7; + + jdk8 = openjdk8; + + jdk = if stdenv.isDarwin then openjdk-darwin else jdk8; oraclejdk = pkgs.jdkdistro true false;