nixpkgs/pkgs/development/compilers/openjdk/bootstrap.nix
Austin Seipp 5d5ed30150 nixpkgs: remove all Java 7 expressions
JDK 7 was technically EOL'd a while ago, although RedHat etc are still
doing updates I believe. However, JDK 8 is the default in the tree and
really used everywhere, and JDK 7 isn't seeing many updates by current maintainers, so dropping it seems appropriate.

Signed-off-by: Austin Seipp <aseipp@pobox.com>
2018-04-01 15:18:47 -05:00

60 lines
2.2 KiB
Nix

{ stdenv
, runCommand, fetchurl, file, zlib
, version
}:
assert stdenv.hostPlatform.libc == "glibc";
let
# !!! These should be on nixos.org
src = if stdenv.hostPlatform.system == "x86_64-linux" then
(if version == "10" then
fetchurl {
url = "https://inner-haven.net/~aseipp/nix/openjdk10-bootstrap-x86_64-linux.tar.xz";
sha256 = "08085fsxc1qhqiv3yi38w8lrg3vm7s0m2yvnwr1c92v019806yq2";
}
else if version == "8" then
fetchurl {
url = "https://www.dropbox.com/s/a0lsq2ig4uguky5/openjdk8-bootstrap-x86_64-linux.tar.xz?dl=1";
sha256 = "18zqx6jhm3lizn9hh6ryyqc9dz3i96pwaz8f6nxfllk70qi5gvks";
}
else throw "No bootstrap for version")
else if stdenv.hostPlatform.system == "i686-linux" then
(if version == "10" then
fetchurl {
url = "https://inner-haven.net/~aseipp/nix/openjdk10-bootstrap-i686-linux.tar.xz";
sha256 = "1blb9gyzp8gfyggxvggqgpcgfcyi00ndnnskipwgdm031qva94p7";
}
else if version == "8" then
fetchurl {
url = "https://www.dropbox.com/s/rneqjhlerijsw74/openjdk8-bootstrap-i686-linux.tar.xz?dl=1";
sha256 = "1yx04xh8bqz7amg12d13rw5vwa008rav59mxjw1b9s6ynkvfgqq9";
}
else throw "No bootstrap for version")
else throw "No bootstrap for system";
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' ':')"
find "$out" -type f -print0 | while IFS= read -r -d "" elf; do
isELF "$elf" || continue
patchelf --set-interpreter $(cat "${stdenv.cc}/nix-support/dynamic-linker") "$elf" || true
patchelf --set-rpath "${stdenv.cc.libc}/lib:${stdenv.cc.cc.lib}/lib:${zlib}/lib:$LIBDIRS" "$elf" || true
done
# Temporarily, while NixOS's OpenJDK bootstrap tarball doesn't have PaX markings:
find "$out/bin" -type f -print0 | while IFS= read -r -d "" elf; do
isELF "$elf" || continue
paxmark m "$elf"
# On x86 for heap sizes over 700MB disable SEGMEXEC and PAGEEXEC as well.
${stdenv.lib.optionalString stdenv.isi686 ''paxmark msp "$elf"''}
done
'';
in bootstrap