opendjk: Make boostraps for each major version and update openjdk7

This commit is contained in:
William A. Kennington III 2015-06-07 21:01:17 -07:00
parent a8d1010027
commit a5ef488b11
4 changed files with 203 additions and 129 deletions

View File

@ -1,17 +1,34 @@
{ stdenv, runCommand, glibc, fetchurl, file }: { stdenv, runCommand, glibc, fetchurl, file
, version
}:
let let
# !!! These should be on nixos.org # !!! These should be on nixos.org
src = if glibc.system == "x86_64-linux" then src = if glibc.system == "x86_64-linux" then
(if version == "8" then
fetchurl { fetchurl {
url = http://pub.wak.io/nixos/tarballs/openjdk-bootstrap-x86_64-linux.tar.xz; url = "https://www.dropbox.com/s/a0lsq2ig4uguky5/openjdk8-bootstrap-x86_64-linux.tar.xz?dl=1";
sha256 = "13m3df54mnr2nb67284s2zf5n8y502ck47gc39lcafrh40hzjil5"; sha256 = "18zqx6jhm3lizn9hh6ryyqc9dz3i96pwaz8f6nxfllk70qi5gvks";
} }
else if version == "7" then
fetchurl {
url = "https://www.dropbox.com/s/rssfbeommrfbsjf/openjdk7-bootstrap-x86_64-linux.tar.xz?dl=1";
sha256 = "024gg2sgg4labxbc1nhn8lxls2p7d9h3b82hnsahwaja2pm1hbra";
}
else throw "No bootstrap for version")
else if glibc.system == "i686-linux" then else if glibc.system == "i686-linux" then
(if version == "8" then
fetchurl { fetchurl {
url = http://pub.wak.io/nixos/tarballs/openjdk-bootstrap-i686-linux.tar.xz; url = "https://www.dropbox.com/s/rneqjhlerijsw74/openjdk8-bootstrap-i686-linux.tar.xz?dl=1";
sha256 = "18kzv4h9skxg5g5c7ar2ji3qny880h5svcn207b4d6xv4sa0a6ks"; sha256 = "1yx04xh8bqz7amg12d13rw5vwa008rav59mxjw1b9s6ynkvfgqq9";
} }
else if version == "7" then
fetchurl {
url = "https://www.dropbox.com/s/6xe64td7eg2wurs/openjdk7-bootstrap-i686-linux.tar.xz?dl=1";
sha256 = "0xwqjk1zx8akziw8q9sbjc1rs8s7c0w6mw67jdmmi26cwwp8ijnx";
}
else throw "No bootstrap for version")
else throw "No bootstrap for system"; else throw "No bootstrap for system";
bootstrap = runCommand "openjdk-bootstrap" { bootstrap = runCommand "openjdk-bootstrap" {
@ -20,9 +37,16 @@ let
tar xvf ${src} tar xvf ${src}
mv openjdk-bootstrap $out mv openjdk-bootstrap $out
LIBDIRS="$(find $out -name \*.so\* -exec dirname {} \; | sort | uniq | tr '\n' ':')"
for i in $out/bin/*; do for i in $out/bin/*; do
patchelf --set-interpreter ${glibc}/lib/ld-linux*.so.2 $i || true patchelf --set-interpreter ${glibc}/lib/ld-linux*.so.2 $i || true
patchelf --set-rpath ${glibc}/lib:$out/lib $i || true patchelf --set-rpath "${glibc}/lib:$LIBDIRS" $i || true
done
find $out -name \*.so\* | while read lib; do
patchelf --set-interpreter ${glibc}/lib/ld-linux*.so.2 $lib || true
patchelf --set-rpath "${glibc}/lib:${stdenv.cc.cc}/lib:$LIBDIRS" $lib || true
done done
# Temporarily, while NixOS's OpenJDK bootstrap tarball doesn't have PaX markings: # Temporarily, while NixOS's OpenJDK bootstrap tarball doesn't have PaX markings:

View File

@ -1,6 +1,8 @@
{ stdenv, fetchurl, unzip, zip, procps, coreutils, alsaLib, ant, freetype { stdenv, fetchurl, unzip, zip, procps, coreutils, alsaLib, ant, freetype
, which, bootjdk, nettools, xorg, file , which, bootjdk, nettools, xorg, file
, fontconfig, cpio, cacert, perl, setJavaClassPath }: , fontconfig, cpio, cacert, perl, setJavaClassPath
, minimal ? false
}:
let let
@ -27,13 +29,41 @@ let
md5 = "de3006e5cf1ee78a9c6145ce62c4e982"; md5 = "de3006e5cf1ee78a9c6145ce62c4e982";
}; };
baseurl = "http://hg.openjdk.java.net/jdk7u/jdk7u";
repover = "jdk7u${update}-b${build}";
jdk7 = fetchurl {
url = "${baseurl}/archive/${repover}.tar.gz";
sha256 = "1r8xnn87nmqaq2f8i3cp3i9ngq66k0c0wgkdq5cf59lkgs8wkcdi";
};
langtools = fetchurl {
url = "${baseurl}/langtools/archive/${repover}.tar.gz";
sha256 = "01alj6pfrjqyf4irll9wg34h4w9nmb3973lvbacs528qm1nxgh9r";
};
hotspot = fetchurl {
url = "${baseurl}/hotspot/archive/${repover}.tar.gz";
sha256 = "14zla8axmg5344zf45i4cj7yyli0kmdjsh9yalmzqaphpkqjqpf2";
};
corba = fetchurl {
url = "${baseurl}/corba/archive/${repover}.tar.gz";
sha256 = "19z3ay3f2q7r2ra03c6wy8b5rbdbrkq5g2dzhrqcg0n4iydd3c40";
};
jdk = fetchurl {
url = "${baseurl}/jdk/archive/${repover}.tar.gz";
sha256 = "1q0r2l9bz2cyx4fq79x6cb2f5xycw83hl5cn1d1mazgsckp590lb";
};
jaxws = fetchurl {
url = "${baseurl}/jaxws/archive/${repover}.tar.gz";
sha256 = "1lp0mww2x3b6xavb7idrzckh6iw8jd6s1fvqgfvzs853z4ifksqj";
};
jaxp = fetchurl {
url = "${baseurl}/jaxp/archive/${repover}.tar.gz";
sha256 = "0pd874dkgxkb7frxg4n9py61kkhhck4x33dcynynwb3vl6k6iy79";
};
openjdk = stdenv.mkDerivation rec { openjdk = stdenv.mkDerivation rec {
name = "openjdk-7u${update}b${build}"; name = "openjdk-7u${update}b${build}";
src = fetchurl { srcs = [ jdk7 langtools hotspot corba jdk jaxws jaxp ];
url = "http://tarballs.nixos.org/openjdk-7u${update}-b${build}.tar.xz"; sourceRoot = ".";
sha256 = "0lyp75sl5w4b9azphb2nq5cwzli85inpksq4943q4j349rkmdprx";
};
outputs = [ "out" "jre" ]; outputs = [ "out" "jre" ];
@ -41,18 +71,23 @@ let
[ unzip procps ant which zip cpio nettools alsaLib [ unzip procps ant which zip cpio nettools alsaLib
xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst
xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir
fontconfig perl file fontconfig perl file bootjdk
]; ];
NIX_LDFLAGS = "-lfontconfig -lXcursor -lXinerama"; NIX_LDFLAGS = if minimal then null else "-lfontconfig -lXcursor -lXinerama";
postUnpack = '' postUnpack = ''
ls | grep jdk | grep -v '^jdk7u' | awk -F- '{print $1}' | while read p; do
mv $p-* $(ls | grep '^jdk7u')/$p
done
cd jdk7u-*
sed -i -e "s@/usr/bin/test@${coreutils}/bin/test@" \ sed -i -e "s@/usr/bin/test@${coreutils}/bin/test@" \
-e "s@/bin/ls@${coreutils}/bin/ls@" \ -e "s@/bin/ls@${coreutils}/bin/ls@" \
openjdk*/hotspot/make/linux/makefiles/sa.make hotspot/make/linux/makefiles/sa.make
sed -i "s@/bin/echo -e@${coreutils}/bin/echo -e@" \ sed -i "s@/bin/echo -e@${coreutils}/bin/echo -e@" \
openjdk*/{jdk,corba}/make/common/shared/Defs-utils.gmk {jdk,corba}/make/common/shared/Defs-utils.gmk
tar xf ${cupsSrc} tar xf ${cupsSrc}
cupsDir=$(echo $(pwd)/cups-*) cupsDir=$(echo $(pwd)/cups-*)
@ -75,7 +110,7 @@ let
"ALSA_INCLUDE=${alsaLib}/include/alsa/version.h" "ALSA_INCLUDE=${alsaLib}/include/alsa/version.h"
"FREETYPE_HEADERS_PATH=${freetype}/include" "FREETYPE_HEADERS_PATH=${freetype}/include"
"FREETYPE_LIB_PATH=${freetype}/lib" "FREETYPE_LIB_PATH=${freetype}/lib"
"MILESTONE=u${update}" "MILESTONE=${update}"
"BUILD_NUMBER=b${build}" "BUILD_NUMBER=b${build}"
"USRBIN_PATH=" "USRBIN_PATH="
"COMPILER_PATH=" "COMPILER_PATH="
@ -85,7 +120,7 @@ let
"STATIC_CXX=false" "STATIC_CXX=false"
"UNLIMITED_CRYPTO=1" "UNLIMITED_CRYPTO=1"
"FULL_DEBUG_SYMBOLS=0" "FULL_DEBUG_SYMBOLS=0"
]; ] ++ stdenv.lib.optional minimal "BUILD_HEADLESS=1";
configurePhase = "true"; configurePhase = "true";

View File

@ -1,4 +1,5 @@
{ stdenv, fetchurl, cpio, file, which, unzip, zip, xorg, cups, freetype, alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig { stdenv, fetchurl, cpio, file, which, unzip, zip, xorg, cups, freetype
, alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig, zlib
, minimal ? false } : , minimal ? false } :
let let
@ -41,56 +42,60 @@ let
}; };
openjdk8 = stdenv.mkDerivation { openjdk8 = stdenv.mkDerivation {
name = "openjdk-8u${update}b${build}"; name = "openjdk-8u${update}b${build}";
srcs = [ jdk8 langtools hotspot corba jdk jaxws jaxp nashorn ]; srcs = [ jdk8 langtools hotspot corba jdk jaxws jaxp nashorn ];
sourceRoot = ".";
outputs = [ "out" "jre" ]; outputs = [ "out" "jre" ];
buildInputs = [ cpio file which unzip zip
buildInputs = [
cpio file which unzip zip
xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst xorg.libX11 xorg.libXt xorg.libXext xorg.libXrender xorg.libXtst
xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir xorg.libXi xorg.libXinerama xorg.libXcursor xorg.lndir
cups freetype alsaLib perl liberation_ttf fontconfig bootjdk ]; cups freetype alsaLib perl liberation_ttf fontconfig bootjdk zlib
setSourceRoot = '' ];
sourceRoot="jdk8u${update}-jdk8u${update}-b${build}";
'';
prePatch = '' prePatch = ''
# despite --with-override-jdk the build still searchs here ls | grep jdk | grep -v '^jdk8u' | awk -F- '{print $1}' | while read p; do
# GNU Patch bug, --follow-symlinks only follow the last dir part symlink mv $p-* $(ls | grep '^jdk8u')/$p
mv "../jdk-${repover}" "jdk"; done
mv "../hotspot-${repover}" "hotspot"; cd $(ls | grep '^jdk8u')
'';
postPatch = ''
mv jdk "../jdk-${repover}";
mv hotspot "../hotspot-${repover}";
# Patching is over, lets re-add the links
ln -s "../jdk-${repover}" "jdk"
ln -s "../hotspot-${repover}" "hotspot"
''; '';
patches = [ patches = [
./fix-java-home-jdk8.patch ./fix-java-home-jdk8.patch
./read-truststore-from-env-jdk8.patch ./read-truststore-from-env-jdk8.patch
./currency-date-range-jdk8.patch ./currency-date-range-jdk8.patch
./JDK-8074312-hotspot.patch ./JDK-8074312-hotspot.patch
]; ];
preConfigure = '' preConfigure = ''
chmod +x configure chmod +x configure
substituteInPlace configure --replace /bin/bash "$shell" substituteInPlace configure --replace /bin/bash "$shell"
substituteInPlace ../hotspot-${repover}/make/linux/adlc_updater --replace /bin/sh "$shell" substituteInPlace hotspot/make/linux/adlc_updater --replace /bin/sh "$shell"
''; '';
configureFlags = [ configureFlags = [
"--with-freetype=${freetype}" "--with-freetype=${freetype}"
"--with-override-langtools=../langtools-${repover}"
"--with-override-hotspot=../hotspot-${repover}"
"--with-override-corba=../corba-${repover}"
"--with-override-jdk=../jdk-${repover}"
"--with-override-jaxws=../jaxws-${repover}"
"--with-override-jaxp=../jaxp-${repover}"
"--with-override-nashorn=../nashorn-${repover}"
"--with-boot-jdk=${bootjdk.home}" "--with-boot-jdk=${bootjdk.home}"
"--with-update-version=${update}" "--with-update-version=${update}"
"--with-build-number=${build}" "--with-build-number=${build}"
"--with-milestone=fcs" "--with-milestone=fcs"
"--enable-unlimited-crypto"
"--disable-debug-symbols" "--disable-debug-symbols"
] ++ stdenv.lib.optional minimal "--disable-headful"; "--disable-freetype-bundling"
] ++ (if minimal then [
"--disable-headful"
"--with-zlib=bundled"
"--with-giflib=bundled"
] else [
"--with-zlib=system"
]);
NIX_LDFLAGS= if minimal then null else "-lfontconfig"; NIX_LDFLAGS= if minimal then null else "-lfontconfig";
buildFlags = "all"; buildFlags = "all";
installPhase = '' installPhase = ''
mkdir -p $out/lib/openjdk $out/share $jre/lib/openjdk mkdir -p $out/lib/openjdk $out/share $jre/lib/openjdk
@ -154,4 +159,5 @@ let
}; };
passthru.home = "${openjdk8}/lib/openjdk"; passthru.home = "${openjdk8}/lib/openjdk";
}; in openjdk8 };
in openjdk8

View File

@ -3923,29 +3923,38 @@ let
path64 = callPackage ../development/compilers/path64 { }; path64 = callPackage ../development/compilers/path64 { };
openjdk-bootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix { }; openjdk7-bootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix { version = "7"; };
openjdk8-bootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix { version = "8"; };
openjdk-make-bootstrap = callPackage ../development/compilers/openjdk/make-bootstrap.nix { openjdk7-make-bootstrap = callPackage ../development/compilers/openjdk/make-bootstrap.nix {
openjdk = openjdk.override { minimal = true; }; openjdk = openjdk7.override { minimal = true; };
};
openjdk8-make-bootstrap = callPackage ../development/compilers/openjdk/make-bootstrap.nix {
openjdk = openjdk8.override { minimal = true; };
}; };
openjdk-darwin = callPackage ../development/compilers/openjdk-darwin { }; openjdk-darwin = callPackage ../development/compilers/openjdk-darwin { };
openjdk7 = callPackage ../development/compilers/openjdk { openjdk7 = callPackage ../development/compilers/openjdk {
bootjdk = openjdk-bootstrap; bootjdk = openjdk7-bootstrap;
}; };
openjdk7_jre = openjdk7.jre;
openjdk8 = callPackage ../development/compilers/openjdk/openjdk8.nix { openjdk8 = callPackage ../development/compilers/openjdk/openjdk8.nix {
bootjdk = openjdk-bootstrap; bootjdk = openjdk8-bootstrap;
}; };
openjdk8_jre = openjdk8.jre;
openjdk = if stdenv.isDarwin then openjdk-darwin else openjdk8; openjdk = if stdenv.isDarwin then openjdk-darwin else openjdk8;
jdk7 = openjdk7; jdk7 = openjdk7;
jre7 = jdk7.jre;
jdk8 = openjdk8; jdk8 = openjdk8;
jre8 = jdk8.jre;
jdk = if stdenv.isDarwin then openjdk-darwin else jdk8; jdk = if stdenv.isDarwin then openjdk-darwin else jdk8;
jre = jdk.jre;
oraclejdk = pkgs.jdkdistro true false; oraclejdk = pkgs.jdkdistro true false;