diff options
author | William A. Kennington III <william@wkennington.com> | 2015-06-07 21:01:17 -0700 |
---|---|---|
committer | William A. Kennington III <william@wkennington.com> | 2015-06-07 21:02:02 -0700 |
commit | a5ef488b11734c16151ddad5105c84fc155babf2 (patch) | |
tree | 2bb85feffff4086730bebff02289de71db82183b | |
parent | a8d10100279636146b8d66da582e1f23d9d91742 (diff) | |
download | nixlib-a5ef488b11734c16151ddad5105c84fc155babf2.tar nixlib-a5ef488b11734c16151ddad5105c84fc155babf2.tar.gz nixlib-a5ef488b11734c16151ddad5105c84fc155babf2.tar.bz2 nixlib-a5ef488b11734c16151ddad5105c84fc155babf2.tar.lz nixlib-a5ef488b11734c16151ddad5105c84fc155babf2.tar.xz nixlib-a5ef488b11734c16151ddad5105c84fc155babf2.tar.zst nixlib-a5ef488b11734c16151ddad5105c84fc155babf2.zip |
opendjk: Make boostraps for each major version and update openjdk7
-rw-r--r-- | pkgs/development/compilers/openjdk/bootstrap.nix | 44 | ||||
-rw-r--r-- | pkgs/development/compilers/openjdk/default.nix | 57 | ||||
-rw-r--r-- | pkgs/development/compilers/openjdk/openjdk8.nix | 236 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 19 |
4 files changed, 215 insertions, 141 deletions
diff --git a/pkgs/development/compilers/openjdk/bootstrap.nix b/pkgs/development/compilers/openjdk/bootstrap.nix index bc63292a145a..a9ca7673dfe9 100644 --- a/pkgs/development/compilers/openjdk/bootstrap.nix +++ b/pkgs/development/compilers/openjdk/bootstrap.nix @@ -1,17 +1,34 @@ -{ stdenv, runCommand, glibc, fetchurl, file }: +{ stdenv, runCommand, glibc, fetchurl, file + +, version +}: let # !!! These should be on nixos.org src = if glibc.system == "x86_64-linux" then - fetchurl { - url = http://pub.wak.io/nixos/tarballs/openjdk-bootstrap-x86_64-linux.tar.xz; - sha256 = "13m3df54mnr2nb67284s2zf5n8y502ck47gc39lcafrh40hzjil5"; - } + (if version == "8" then + fetchurl { + url = "https://www.dropbox.com/s/a0lsq2ig4uguky5/openjdk8-bootstrap-x86_64-linux.tar.xz?dl=1"; + 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 - fetchurl { - url = http://pub.wak.io/nixos/tarballs/openjdk-bootstrap-i686-linux.tar.xz; - sha256 = "18kzv4h9skxg5g5c7ar2ji3qny880h5svcn207b4d6xv4sa0a6ks"; - } + (if version == "8" then + fetchurl { + url = "https://www.dropbox.com/s/rneqjhlerijsw74/openjdk8-bootstrap-i686-linux.tar.xz?dl=1"; + 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"; bootstrap = runCommand "openjdk-bootstrap" { @@ -20,9 +37,16 @@ let tar xvf ${src} mv openjdk-bootstrap $out + LIBDIRS="$(find $out -name \*.so\* -exec dirname {} \; | sort | uniq | tr '\n' ':')" + 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 + 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 # Temporarily, while NixOS's OpenJDK bootstrap tarball doesn't have PaX markings: diff --git a/pkgs/development/compilers/openjdk/default.nix b/pkgs/development/compilers/openjdk/default.nix index 323bf78ec59d..9bdea7bc7ab9 100644 --- a/pkgs/development/compilers/openjdk/default.nix +++ b/pkgs/development/compilers/openjdk/default.nix @@ -1,6 +1,8 @@ { stdenv, fetchurl, unzip, zip, procps, coreutils, alsaLib, ant, freetype , which, bootjdk, nettools, xorg, file -, fontconfig, cpio, cacert, perl, setJavaClassPath }: +, fontconfig, cpio, cacert, perl, setJavaClassPath +, minimal ? false +}: let @@ -27,13 +29,41 @@ let 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 { name = "openjdk-7u${update}b${build}"; - src = fetchurl { - url = "http://tarballs.nixos.org/openjdk-7u${update}-b${build}.tar.xz"; - sha256 = "0lyp75sl5w4b9azphb2nq5cwzli85inpksq4943q4j349rkmdprx"; - }; + srcs = [ jdk7 langtools hotspot corba jdk jaxws jaxp ]; + sourceRoot = "."; outputs = [ "out" "jre" ]; @@ -41,18 +71,23 @@ let [ 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 + fontconfig perl file bootjdk ]; - NIX_LDFLAGS = "-lfontconfig -lXcursor -lXinerama"; + NIX_LDFLAGS = if minimal then null else "-lfontconfig -lXcursor -lXinerama"; 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@" \ -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@" \ - openjdk*/{jdk,corba}/make/common/shared/Defs-utils.gmk + {jdk,corba}/make/common/shared/Defs-utils.gmk tar xf ${cupsSrc} cupsDir=$(echo $(pwd)/cups-*) @@ -75,7 +110,7 @@ let "ALSA_INCLUDE=${alsaLib}/include/alsa/version.h" "FREETYPE_HEADERS_PATH=${freetype}/include" "FREETYPE_LIB_PATH=${freetype}/lib" - "MILESTONE=u${update}" + "MILESTONE=${update}" "BUILD_NUMBER=b${build}" "USRBIN_PATH=" "COMPILER_PATH=" @@ -85,7 +120,7 @@ let "STATIC_CXX=false" "UNLIMITED_CRYPTO=1" "FULL_DEBUG_SYMBOLS=0" - ]; + ] ++ stdenv.lib.optional minimal "BUILD_HEADLESS=1"; configurePhase = "true"; diff --git a/pkgs/development/compilers/openjdk/openjdk8.nix b/pkgs/development/compilers/openjdk/openjdk8.nix index 8226f2ea146a..dfac59d859fa 100644 --- a/pkgs/development/compilers/openjdk/openjdk8.nix +++ b/pkgs/development/compilers/openjdk/openjdk8.nix @@ -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 } : let @@ -40,118 +41,123 @@ let sha256 = "1llf3l4483kd8m1a77n7y9fgvm6fa63nim3qhp5z4gnw68ldbhra"; }; openjdk8 = stdenv.mkDerivation { - name = "openjdk-8u${update}b${build}"; - srcs = [ jdk8 langtools hotspot corba jdk jaxws jaxp nashorn ]; - outputs = [ "out" "jre" ]; - 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 perl liberation_ttf fontconfig bootjdk ]; - setSourceRoot = '' - sourceRoot="jdk8u${update}-jdk8u${update}-b${build}"; - ''; - prePatch = '' - # despite --with-override-jdk the build still searchs here - # GNU Patch bug, --follow-symlinks only follow the last dir part symlink - mv "../jdk-${repover}" "jdk"; - mv "../hotspot-${repover}" "hotspot"; - ''; - 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 = [ - ./fix-java-home-jdk8.patch - ./read-truststore-from-env-jdk8.patch - ./currency-date-range-jdk8.patch - ./JDK-8074312-hotspot.patch - ]; - preConfigure = '' - chmod +x configure - substituteInPlace configure --replace /bin/bash "$shell" - substituteInPlace ../hotspot-${repover}/make/linux/adlc_updater --replace /bin/sh "$shell" - ''; - configureFlags = [ - "--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-update-version=${update}" - "--with-build-number=${build}" - "--with-milestone=fcs" - "--disable-debug-symbols" - ] ++ stdenv.lib.optional minimal "--disable-headful"; - NIX_LDFLAGS= if minimal then null else "-lfontconfig"; - buildFlags = "all"; - installPhase = '' - mkdir -p $out/lib/openjdk $out/share $jre/lib/openjdk - - cp -av build"/"*/images/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 and setup fallback fonts - mv $out/lib/openjdk/jre $jre/lib/openjdk/ - mkdir $out/lib/openjdk/jre - mkdir -p $jre/lib/openjdk/jre/lib/fonts/fallback - lndir ${liberation_ttf}/share/fonts/truetype $jre/lib/openjdk/jre/lib/fonts/fallback - lndir $jre/lib/openjdk/jre $out/lib/openjdk/jre - - rm -rf $out/lib/openjdk/jre/bina - 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/ssl/certs/ca-bundle.crt - popd - - ln -s $out/lib/openjdk/bin $out/bin - ln -s $jre/lib/openjdk/jre/bin $jre/bin - ''; - - meta = with stdenv.lib; { - homepage = http://openjdk.java.net/; - license = licenses.gpl2; - description = "The open-source Java Development Kit"; - maintainers = with maintainers; [ edwtjo ]; - platforms = platforms.linux; - }; + name = "openjdk-8u${update}b${build}"; + + srcs = [ jdk8 langtools hotspot corba jdk jaxws jaxp nashorn ]; + sourceRoot = "."; + + outputs = [ "out" "jre" ]; + + 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 perl liberation_ttf fontconfig bootjdk zlib + ]; + + prePatch = '' + ls | grep jdk | grep -v '^jdk8u' | awk -F- '{print $1}' | while read p; do + mv $p-* $(ls | grep '^jdk8u')/$p + done + cd $(ls | grep '^jdk8u') + ''; + + patches = [ + ./fix-java-home-jdk8.patch + ./read-truststore-from-env-jdk8.patch + ./currency-date-range-jdk8.patch + ./JDK-8074312-hotspot.patch + ]; + + preConfigure = '' + chmod +x configure + substituteInPlace configure --replace /bin/bash "$shell" + substituteInPlace hotspot/make/linux/adlc_updater --replace /bin/sh "$shell" + ''; + + configureFlags = [ + "--with-freetype=${freetype}" + "--with-boot-jdk=${bootjdk.home}" + "--with-update-version=${update}" + "--with-build-number=${build}" + "--with-milestone=fcs" + "--enable-unlimited-crypto" + "--disable-debug-symbols" + "--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"; + + buildFlags = "all"; + + installPhase = '' + mkdir -p $out/lib/openjdk $out/share $jre/lib/openjdk + + cp -av build"/"*/images/j2sdk-image"/"* $out/lib/openjdk - passthru.home = "${openjdk8}/lib/openjdk"; -}; in openjdk8 + # 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 and setup fallback fonts + mv $out/lib/openjdk/jre $jre/lib/openjdk/ + mkdir $out/lib/openjdk/jre + mkdir -p $jre/lib/openjdk/jre/lib/fonts/fallback + lndir ${liberation_ttf}/share/fonts/truetype $jre/lib/openjdk/jre/lib/fonts/fallback + lndir $jre/lib/openjdk/jre $out/lib/openjdk/jre + + rm -rf $out/lib/openjdk/jre/bina + 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/ssl/certs/ca-bundle.crt + popd + + ln -s $out/lib/openjdk/bin $out/bin + ln -s $jre/lib/openjdk/jre/bin $jre/bin + ''; + + meta = with stdenv.lib; { + homepage = http://openjdk.java.net/; + license = licenses.gpl2; + description = "The open-source Java Development Kit"; + maintainers = with maintainers; [ edwtjo ]; + platforms = platforms.linux; + }; + + passthru.home = "${openjdk8}/lib/openjdk"; + }; +in openjdk8 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 60c941a7e270..6daa4b075954 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -3923,29 +3923,38 @@ let 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 { - openjdk = openjdk.override { minimal = true; }; + openjdk7-make-bootstrap = callPackage ../development/compilers/openjdk/make-bootstrap.nix { + 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 { }; openjdk7 = callPackage ../development/compilers/openjdk { - bootjdk = openjdk-bootstrap; + bootjdk = openjdk7-bootstrap; }; + openjdk7_jre = openjdk7.jre; 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; jdk7 = openjdk7; + jre7 = jdk7.jre; jdk8 = openjdk8; + jre8 = jdk8.jre; jdk = if stdenv.isDarwin then openjdk-darwin else jdk8; + jre = jdk.jre; oraclejdk = pkgs.jdkdistro true false; |