diff --git a/pkgs/development/compilers/openjdk/bootstrap.nix b/pkgs/development/compilers/openjdk/bootstrap.nix new file mode 100644 index 000000000000..8f603bb2354d --- /dev/null +++ b/pkgs/development/compilers/openjdk/bootstrap.nix @@ -0,0 +1,21 @@ +{ runCommand, glibc, fetchurl }: + +let + # !!! These should be on nixos.org + src = if glibc.system == "x86_64-linux" then + fetchurl { + url = ftp://linode.shealevy.com/openjdk-bootstrap-x86_64-linux-2012-08-24.tar.xz; + sha256 = "0gla9dxrfq2w1hvgsnn8jg8a60k27im6z43a6iidi0qmwa0wah32"; + } + else if glibc.system == "i686-linux" then + fetchurl { + url = ftp://linode.shealevy.com/openjdk-bootstrap-i686-linux-2012-08-24.tar.xz; + sha256 = "184wq212bycwbbq4ix8cc6jwjxkrqw9b01zb86q95kqpa8zy5206"; + } + else throw "No bootstrap for system"; +in + +runCommand "openjdk-bootstrap" {} '' + xz -dc ${src} | sed "s/e*-glibc-[^/]*/$(basename ${glibc})/g" | tar xv + mv openjdk-bootstrap $out +'' diff --git a/pkgs/development/compilers/openjdk/default.nix b/pkgs/development/compilers/openjdk/default.nix index cf85c1706a8a..5f5148911ec2 100644 --- a/pkgs/development/compilers/openjdk/default.nix +++ b/pkgs/development/compilers/openjdk/default.nix @@ -107,6 +107,7 @@ stdenv.mkDerivation rec { "UNIXCOMMAND_PATH=" "BOOTDIR=${jdk}" "DROPS_DIR=$(DROPS_PATH)" + "SKIP_BOOT_CYCLE=false" ]; configurePhase = '' diff --git a/pkgs/development/compilers/openjdk/make-bootstrap.nix b/pkgs/development/compilers/openjdk/make-bootstrap.nix new file mode 100644 index 000000000000..aa5b8ad39f56 --- /dev/null +++ b/pkgs/development/compilers/openjdk/make-bootstrap.nix @@ -0,0 +1,26 @@ +{ runCommand, openjdk, nukeReferences }: + +let arch = if openjdk.system == "x86_64-linux" then "amd64" else "i386"; 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 + + chmod -R +w openjdk-bootstrap + find openjdk-bootstrap -print0 | xargs -0 ${nukeReferences}/bin/nuke-refs + + tar cv openjdk-bootstrap | xz > $out +'' diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index a5e69c7ebb0e..0862b7eee27e 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -2342,11 +2342,16 @@ let path64 = callPackage ../development/compilers/path64 { }; + openjdkBootstrap = callPackage ../development/compilers/openjdk/bootstrap.nix {}; + openjdk = if stdenv.isDarwin then callPackage ../development/compilers/openjdk-darwin { } else - callPackage ../development/compilers/openjdk { }; + callPackage ../development/compilers/openjdk { + jdk = pkgs.openjdkBootstrap; + ant = pkgs.ant.override { jdk = pkgs.openjdkBootstrap; }; + }; openjre = callPackage ../development/compilers/openjdk { jreOnly = true;