diff options
author | Vladimír Čunát <vcunat@gmail.com> | 2015-10-03 13:33:13 +0200 |
---|---|---|
committer | Vladimír Čunát <vcunat@gmail.com> | 2015-10-03 13:33:37 +0200 |
commit | 5227fb1dd53fcb5918b9342dff4868f4ad68427e (patch) | |
tree | d6cd521e3f67944031216a27f740f28f22b73b41 /pkgs/development/compilers/openjdk | |
parent | d6dd3b8bd1eaeeb21dfdb5051cd4732c748ce5d7 (diff) | |
parent | 33373d939a19f465228ddede6d38ce9032b5916b (diff) | |
download | nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.gz nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.bz2 nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.lz nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.xz nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.tar.zst nixlib-5227fb1dd53fcb5918b9342dff4868f4ad68427e.zip |
Merge commit staging+systemd into closure-size
Many non-conflict problems weren't (fully) resolved in this commit yet.
Diffstat (limited to 'pkgs/development/compilers/openjdk')
-rw-r--r-- | pkgs/development/compilers/openjdk/7.nix (renamed from pkgs/development/compilers/openjdk/default.nix) | 93 | ||||
-rw-r--r-- | pkgs/development/compilers/openjdk/8.nix | 224 | ||||
-rw-r--r-- | pkgs/development/compilers/openjdk/bootstrap.nix | 75 | ||||
-rw-r--r-- | pkgs/development/compilers/openjdk/fix-java-home-jdk8.patch | 15 | ||||
-rw-r--r-- | pkgs/development/compilers/openjdk/make-bootstrap.nix | 39 | ||||
-rw-r--r-- | pkgs/development/compilers/openjdk/openjdk8.nix | 146 |
6 files changed, 389 insertions, 203 deletions
diff --git a/pkgs/development/compilers/openjdk/default.nix b/pkgs/development/compilers/openjdk/7.nix index ec095bb4efa3..19dec917bf82 100644 --- a/pkgs/development/compilers/openjdk/default.nix +++ b/pkgs/development/compilers/openjdk/7.nix @@ -1,6 +1,8 @@ { stdenv, fetchurl, unzip, zip, procps, coreutils, alsaLib, ant, freetype -, which, jdk, nettools, xorg, file -, fontconfig, cpio, cacert, perl, setJavaClassPath }: +, which, bootjdk, nettools, xorg, file +, fontconfig, cpio, cacert, perl, setJavaClassPath +, minimal ? false +}: let @@ -15,7 +17,7 @@ let else throw "openjdk requires i686-linux or x86_64 linux"; - update = "65"; + update = "80"; build = "32"; @@ -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,17 +110,17 @@ 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=" "DEVTOOLS_PATH=" "UNIXCOMMAND_PATH=" - "BOOTDIR=${jdk}" + "BOOTDIR=${bootjdk.home}" "STATIC_CXX=false" "UNLIMITED_CRYPTO=1" "FULL_DEBUG_SYMBOLS=0" - ]; + ] ++ stdenv.lib.optional minimal "BUILD_HEADLESS=1"; configurePhase = "true"; @@ -142,7 +177,7 @@ let # 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 + 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 @@ -168,11 +203,37 @@ let EOF ''; + postFixup = '' + # Build the set of output library directories to rpath against + LIBDIRS="" + for output in $outputs; do + LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \; | sort | uniq | tr '\n' ':'):$LIBDIRS" + done + + # Add the local library paths to remove dependencies on the bootstrap + for output in $outputs; do + OUTPUTDIR="$(eval echo \$$output)" + BINLIBS="$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*)" + echo "$BINLIBS" | while read i; do + patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true + patchelf --shrink-rpath "$i" || true + done + done + + # Test to make sure that we don't depend on the bootstrap + for output in $outputs; do + if grep -q -r '${bootjdk}' $(eval echo \$$output); then + echo "Extraneous references to ${bootjdk} detected" + exit 1 + fi + done + ''; + 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 ]; + maintainers = [ stdenv.lib.maintainers.eelco ]; platforms = stdenv.lib.platforms.linux; }; diff --git a/pkgs/development/compilers/openjdk/8.nix b/pkgs/development/compilers/openjdk/8.nix new file mode 100644 index 000000000000..0e9184e1c628 --- /dev/null +++ b/pkgs/development/compilers/openjdk/8.nix @@ -0,0 +1,224 @@ +{ stdenv, fetchurl, cpio, file, which, unzip, zip, xorg, cups, freetype +, alsaLib, bootjdk, cacert, perl, liberation_ttf, fontconfig, zlib +, setJavaClassPath +, minimal ? false +}: + +let + + /** + * The JRE libraries are in directories that depend on the CPU. + */ + architecture = + if stdenv.system == "i686-linux" then + "i386" + else if stdenv.system == "x86_64-linux" then + "amd64" + else + throw "openjdk requires i686-linux or x86_64 linux"; + + update = "60"; + build = "24"; + baseurl = "http://hg.openjdk.java.net/jdk8u/jdk8u"; + repover = "jdk8u${update}-b${build}"; + paxflags = if stdenv.isi686 then "msp" else "m"; + jdk8 = fetchurl { + url = "${baseurl}/archive/${repover}.tar.gz"; + sha256 = "1gxfyz5kdl3xgfmn6gr65hj66zh5p67y1g0hxdbps1h8gcc6iqwp"; + }; + langtools = fetchurl { + url = "${baseurl}/langtools/archive/${repover}.tar.gz"; + sha256 = "0a8kmfcnw92hvhivmpa9g22k1lvcr64zjw7x1gjj1j6zx7r579ck"; + }; + hotspot = fetchurl { + url = "${baseurl}/hotspot/archive/${repover}.tar.gz"; + sha256 = "0k68wqwg5fz8i2za9dg2zfx4db5zcbls31vk2abrqrwp31ik0y4y"; + }; + corba = fetchurl { + url = "${baseurl}/corba/archive/${repover}.tar.gz"; + sha256 = "0rc8m5jrwjzrbxnzbhxjm265z23ky6v11g8sgcb6flr0l636fwvn"; + }; + jdk = fetchurl { + url = "${baseurl}/jdk/archive/${repover}.tar.gz"; + sha256 = "11c90zz728p30zc6zas9ip67n9sd09i0v6afxs608k9s451057wr"; + }; + jaxws = fetchurl { + url = "${baseurl}/jaxws/archive/${repover}.tar.gz"; + sha256 = "15pzczqwrr47qv51bsisjylilhljban8938n1436hsjd5k1dhhwn"; + }; + jaxp = fetchurl { + url = "${baseurl}/jaxp/archive/${repover}.tar.gz"; + sha256 = "0gcc7pb07yl76drcynpz5gjjv3y6s1c0k4kfp9fayha5f624k1fb"; + }; + nashorn = fetchurl { + url = "${baseurl}/nashorn/archive/${repover}.tar.gz"; + sha256 = "00g849wwqxljqpml6r7rv3pscj0ma0jaamyvxsxlfxbqvwid93ai"; + }; + openjdk8 = stdenv.mkDerivation { + 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 + ]; + + 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 + + # 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 + ''; + + # 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 + ''; + + postFixup = '' + # Build the set of output library directories to rpath against + LIBDIRS="" + for output in $outputs; do + LIBDIRS="$(find $(eval echo \$$output) -name \*.so\* -exec dirname {} \; | sort | uniq | tr '\n' ':'):$LIBDIRS" + done + + # Add the local library paths to remove dependencies on the bootstrap + for output in $outputs; do + OUTPUTDIR="$(eval echo \$$output)" + BINLIBS="$(find $OUTPUTDIR/bin/ -type f; find $OUTPUTDIR -name \*.so\*)" + echo "$BINLIBS" | while read i; do + patchelf --set-rpath "$LIBDIRS:$(patchelf --print-rpath "$i")" "$i" || true + patchelf --shrink-rpath "$i" || true + done + done + + # Test to make sure that we don't depend on the bootstrap + for output in $outputs; do + if grep -q -r '${bootjdk}' $(eval echo \$$output); then + echo "Extraneous references to ${bootjdk} detected" + exit 1 + fi + done + ''; + + 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 = { + inherit architecture; + home = "${openjdk8}/lib/openjdk"; + }; + }; +in openjdk8 diff --git a/pkgs/development/compilers/openjdk/bootstrap.nix b/pkgs/development/compilers/openjdk/bootstrap.nix index 04f40398dc83..48a22638813f 100644 --- a/pkgs/development/compilers/openjdk/bootstrap.nix +++ b/pkgs/development/compilers/openjdk/bootstrap.nix @@ -1,33 +1,60 @@ -{ 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://tarballs.nixos.org/openjdk-bootstrap-x86_64-linux-2012-08-24.tar.xz; - sha256 = "0gla9dxrfq2w1hvgsnn8jg8a60k27im6z43a6iidi0qmwa0wah32"; - } + (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://tarballs.nixos.org/openjdk-bootstrap-i686-linux-2012-08-24.tar.xz; - sha256 = "184wq212bycwbbq4ix8cc6jwjxkrqw9b01zb86q95kqpa8zy5206"; - } + (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"; -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 + + LIBDIRS="$(find $out -name \*.so\* -exec dirname {} \; | sort | uniq | tr '\n' ':')" + + for i in $out/bin/*; do + patchelf --set-interpreter ${glibc.out}/lib/ld-linux*.so.2 $i || true + patchelf --set-rpath "${glibc.out}/lib:$LIBDIRS" $i || true + done - for i in $out/bin/*; do - patchelf --set-interpreter ${glibc.out}/lib/ld-linux*.so.2 $i - done + find $out -name \*.so\* | while read lib; do + patchelf --set-interpreter ${glibc.out}/lib/ld-linux*.so.2 $lib || true + patchelf --set-rpath "${glibc.out}/lib:${stdenv.cc.cc.lib}/lib:$LIBDIRS" $lib || 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/fix-java-home-jdk8.patch b/pkgs/development/compilers/openjdk/fix-java-home-jdk8.patch new file mode 100644 index 000000000000..6189412c999c --- /dev/null +++ b/pkgs/development/compilers/openjdk/fix-java-home-jdk8.patch @@ -0,0 +1,15 @@ +--- a/hotspot/src/os/linux/vm/os_linux.cpp 2015-02-04 21:14:39.000000000 +0100 ++++ b/hotspot/src/os/linux/vm/os_linux.cpp 2015-05-19 16:17:29.960107613 +0200 +@@ -2304,10 +2304,8 @@ + assert(ret, "cannot locate libjvm"); + char *rp = NULL; + if (ret && dli_fname[0] != '\0') { +- rp = realpath(dli_fname, buf); ++ snprintf(buf, buflen, "%s", dli_fname); + } +- if (rp == NULL) +- return; + + if (Arguments::created_by_gamma_launcher()) { + // Support for the gamma launcher. Typical value for buf is + diff --git a/pkgs/development/compilers/openjdk/make-bootstrap.nix b/pkgs/development/compilers/openjdk/make-bootstrap.nix index 090a1479741a..aac54417e2a8 100644 --- a/pkgs/development/compilers/openjdk/make-bootstrap.nix +++ b/pkgs/development/compilers/openjdk/make-bootstrap.nix @@ -1,26 +1,31 @@ { runCommand, openjdk, nukeReferences }: -let arch = openjdk.architecture; in - runCommand "${openjdk.name}-bootstrap.tar.xz" {} '' - mkdir -p openjdk-bootstrap/bin - mkdir -p openjdk-bootstrap/lib - mkdir -p openjdk-bootstrap/jre/lib/{security,ext,${arch}/{jli,server,client,headless}} - cp ${openjdk}/bin/{idlj,ja{va{,c,p,h},r},rmic} openjdk-bootstrap/bin - cp ${openjdk}/lib/tools.jar openjdk-bootstrap/lib - cp ${openjdk}/jre/lib/{meta-index,{charsets,jce,jsse,rt,resources}.jar,currency.data} openjdk-bootstrap/jre/lib - cp ${openjdk}/jre/lib/security/java.security openjdk-bootstrap/jre/lib/security - cp ${openjdk}/jre/lib/ext/{meta-index,sunjce_provider.jar} openjdk-bootstrap/jre/lib/ext - cp ${openjdk}/jre/lib/${arch}/{jvm.cfg,lib{awt,java,verify,zip,nio,net}.so} openjdk-bootstrap/jre/lib/${arch} - cp ${openjdk}/jre/lib/${arch}/jli/libjli.so openjdk-bootstrap/jre/lib/${arch}/jli - cp ${openjdk}/jre/lib/${arch}/server/libjvm.so openjdk-bootstrap/jre/lib/${arch}/server - cp ${openjdk}/jre/lib/${arch}/client/libjvm.so openjdk-bootstrap/jre/lib/${arch}/client || - rmdir openjdk-bootstrap/jre/lib/${arch}/client - cp ${openjdk}/jre/lib/${arch}/headless/libmawt.so openjdk-bootstrap/jre/lib/${arch}/headless - cp -a ${openjdk}/include openjdk-bootstrap + mkdir -pv openjdk-bootstrap/lib + + # Do a deep copy of the openjdk + cp -vrL ${openjdk.home} openjdk-bootstrap/lib + + # Includes are needed for building the native jvm + cp -vrL ${openjdk}/include openjdk-bootstrap + + # The binaries are actually stored in the openjdk lib + ln -sv lib/openjdk/bin openjdk-bootstrap/bin + find . -name libjli.so + (cd openjdk-bootstrap/lib; find . -name libjli.so -exec ln -sfv {} libjli.so \;) chmod -R +w openjdk-bootstrap + + # Remove components we don't need + find openjdk-bootstrap -name \*.diz -exec rm {} \; + find openjdk-bootstrap -name \*.ttf -exec rm {} \; + find openjdk-bootstrap -name \*.gif -exec rm {} \; + find openjdk-bootstrap -name src.zip -exec rm {} \; + rm -rf openjdk-bootstrap/lib/openjdk/jre/bin + + # Remove all of the references to the native nix store find openjdk-bootstrap -print0 | xargs -0 ${nukeReferences}/bin/nuke-refs + # Create the output tarball tar cv openjdk-bootstrap | xz > $out '' diff --git a/pkgs/development/compilers/openjdk/openjdk8.nix b/pkgs/development/compilers/openjdk/openjdk8.nix deleted file mode 100644 index 44e934741635..000000000000 --- a/pkgs/development/compilers/openjdk/openjdk8.nix +++ /dev/null @@ -1,146 +0,0 @@ -{ stdenv, fetchurl, cpio, file, which, unzip, zip, xorg, cups, freetype, alsaLib, openjdk, cacert, perl, liberation_ttf, fontconfig } : -let - update = "40"; - build = "25"; - baseurl = "http://hg.openjdk.java.net/jdk8u/jdk8u40"; - repover = "jdk8u${update}-b${build}"; - paxflags = if stdenv.isi686 then "msp" else "m"; - jdk8 = fetchurl { - url = "${baseurl}/archive/${repover}.tar.gz"; - sha256 = "05s5j0rq45n8piymv9c1n0hxr4bk3j8lz6fw2wbp0m8kam6zzpza"; - }; - langtools = fetchurl { - url = "${baseurl}/langtools/archive/${repover}.tar.gz"; - sha256 = "0p1z38szm63cf5f83697awbqwpf7b8q1ymrqc0v6r9hb5yf0p22r"; - }; - hotspot = fetchurl { - url = "${baseurl}/hotspot/archive/${repover}.tar.gz"; - sha256 = "0sl0ima3zlbd1ai7qrg4msy5ibg64qpwdrv7z4l8cpalwby26y6p"; - }; - corba = fetchurl { - url = "${baseurl}/corba/archive/${repover}.tar.gz"; - sha256 = "1ahvhap8av519813yf20v3hbvg82j9bq3gnqlayng1qggfivsb5s"; - }; - jdk = fetchurl { - url = "${baseurl}/jdk/archive/${repover}.tar.gz"; - sha256 = "0n86fcy1z4z22jcgfnn9agzfi949709hn2x6s8wyhwwa055rjd1a"; - }; - jaxws = fetchurl { - url = "${baseurl}/jaxws/archive/${repover}.tar.gz"; - sha256 = "0hp19hq0dw3j8zz4mxd6bjk9zqlyr56fhwzgjwmm56b6pwkcmsn7"; - }; - jaxp = fetchurl { - url = "${baseurl}/jaxp/archive/${repover}.tar.gz"; - sha256 = "037za0hjiwvzvbzsckfxnrrbak1vbd52pmrnd855vxkik08jxp8c"; - }; - nashorn = fetchurl { - url = "${baseurl}/nashorn/archive/${repover}.tar.gz"; - sha256 = "1np8hkg2fmj5s6ipd1vb8x0z6xy00kbi2ipqca9pxzib58caj6b2"; - }; - 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 openjdk perl liberation_ttf fontconfig ]; - setSourceRoot = '' - sourceRoot="jdk8u${update}-jdk8u${update}-b${build}"; - ''; - prePatch = '' - # despite --with-override-jdk the build still searchs here - ln -s "../jdk-${repover}" "jdk"; - ln -s "../hotspot-${repover}" "hotspot"; - ''; - patches = [ - ./fix-java-home.patch - ./read-truststore-from-env-jdk8.patch - ./currency-date-range-jdk8.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=${openjdk}/lib/openjdk/" - "--with-update-version=${update}" - "--with-build-number=b${build}" - "--with-milestone=fcs" - ]; - NIX_LDFLAGS= "-lfontconfig"; - buildFlags = "DEBUG_BINARIES=true 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/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 |