diff options
author | Rolf Schröder <rolf.schroeder@limbus-medtec.com> | 2023-10-20 09:23:40 +0200 |
---|---|---|
committer | Rolf Schröder <rolf.schroeder@limbus-medtec.com> | 2023-11-22 21:04:36 +0100 |
commit | 3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b (patch) | |
tree | e6c20270a9e266cf265a5d0410e4c563c8792831 | |
parent | 6790c4da9bb7618fe63f86169e1b453d94c3c4b0 (diff) | |
download | nixlib-3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b.tar nixlib-3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b.tar.gz nixlib-3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b.tar.bz2 nixlib-3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b.tar.lz nixlib-3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b.tar.xz nixlib-3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b.tar.zst nixlib-3cd0e6f2d380bdb2a4f4ccc0f0260fba9bc9f11b.zip |
corretto{11,17,19}: init at 11.0.20.9.1/17.0.8.8.1/19.0.2.7.1
-rw-r--r-- | pkgs/development/compilers/corretto/11.nix | 37 | ||||
-rw-r--r-- | pkgs/development/compilers/corretto/17.nix | 26 | ||||
-rw-r--r-- | pkgs/development/compilers/corretto/19.nix | 26 | ||||
-rw-r--r-- | pkgs/development/compilers/corretto/mk-corretto.nix | 115 | ||||
-rw-r--r-- | pkgs/top-level/all-packages.nix | 4 | ||||
-rw-r--r-- | pkgs/top-level/java-packages.nix | 4 |
6 files changed, 212 insertions, 0 deletions
diff --git a/pkgs/development/compilers/corretto/11.nix b/pkgs/development/compilers/corretto/11.nix new file mode 100644 index 000000000000..9e61e133f4cf --- /dev/null +++ b/pkgs/development/compilers/corretto/11.nix @@ -0,0 +1,37 @@ +{ corretto11 +, fetchFromGitHub +, gradle_7 +, jdk11 +, lib +, stdenv +, rsync +, runCommand +, testers +}: + +let + corretto = import ./mk-corretto.nix { + inherit lib stdenv rsync runCommand testers; + jdk = jdk11; + gradle = gradle_7; + version = "11.0.20.9.1"; + src = fetchFromGitHub { + owner = "corretto"; + repo = "corretto-11"; + rev = "b880bdc8397ec3dd6b7cd4b837ce846c9e902783"; + sha256 = "sha256-IomJHQn0ZgqsBZ5BrRqVrEOhTq7wjLiIKMQlz53JxsU="; + }; + }; +in +corretto.overrideAttrs (oldAttrs: { + # jdk11 is built with --disable-warnings-as-errors (see openjdk/11.nix) + # because of several compile errors. We need to include this parameter for + # Corretto, too. Since the build is invoked via `gradle` build.gradle has to + # be adapted. + postPatch = oldAttrs.postPatch + '' + for file in $(find installers -name "build.gradle"); do + substituteInPlace $file --replace "command += archSpecificFlags" "command += archSpecificFlags + ['--disable-warnings-as-errors']" + done + ''; + +}) diff --git a/pkgs/development/compilers/corretto/17.nix b/pkgs/development/compilers/corretto/17.nix new file mode 100644 index 000000000000..308750356c2a --- /dev/null +++ b/pkgs/development/compilers/corretto/17.nix @@ -0,0 +1,26 @@ +{ corretto17 +, fetchFromGitHub +, gradle_7 +, jdk17 +, lib +, stdenv +, rsync +, runCommand +, testers +}: + +let + corretto = import ./mk-corretto.nix { + inherit lib stdenv rsync runCommand testers; + jdk = jdk17; + gradle = gradle_7; + version = "17.0.8.8.1"; + src = fetchFromGitHub { + owner = "corretto"; + repo = "corretto-17"; + rev = "9a3cc984f76cb5f90598bdb43215bad20e0f7319"; + sha256 = "sha256-/VuB3ocD5VvDqCU7BoTG+fQ0aKvK1TejegRYmswInqQ="; + }; + }; +in +corretto diff --git a/pkgs/development/compilers/corretto/19.nix b/pkgs/development/compilers/corretto/19.nix new file mode 100644 index 000000000000..ea1fcc1aee1b --- /dev/null +++ b/pkgs/development/compilers/corretto/19.nix @@ -0,0 +1,26 @@ +{ corretto19 +, fetchFromGitHub +, gradle_7 +, jdk19 +, lib +, stdenv +, rsync +, runCommand +, testers +}: + +let + corretto = import ./mk-corretto.nix { + inherit lib stdenv rsync runCommand testers; + jdk = jdk19; + gradle = gradle_7; + version = "19.0.2.7.1"; + src = fetchFromGitHub { + owner = "corretto"; + repo = "corretto-19"; + rev = "72f064a1d716272bd17d4e425d4a264b2c2c7d36"; + sha256 = "sha256-mEj/MIbdXU0+fF5RhqjPuSeyclstesGaXB0e48YlKuw="; + }; + }; +in +corretto diff --git a/pkgs/development/compilers/corretto/mk-corretto.nix b/pkgs/development/compilers/corretto/mk-corretto.nix new file mode 100644 index 000000000000..026316f2fa73 --- /dev/null +++ b/pkgs/development/compilers/corretto/mk-corretto.nix @@ -0,0 +1,115 @@ +{ jdk +, version +, src +, lib +, stdenv +, gradle +, rsync +, runCommand +, testers +}: + +# Each Corretto version is based on a corresponding OpenJDK version. So +# building Corretto is more or less the same as building OpenJDK. Hence, the +# Corretto derivation overrides the corresponding OpenJDK derivation in order +# to have access to all the version-specific fixes for the various OpenJDK +# builds. However, Corretto uses `gradle` as build tool (which in turn will +# invoke `make`). The configure/build phases are adapted as needed. + +let + pname = "corretto"; + # The version scheme is different between OpenJDK & Corretto. + # See https://github.com/corretto/corretto-17/blob/release-17.0.8.8.1/build.gradle#L40 + # "major.minor.security.build.revision" +in +jdk.overrideAttrs (finalAttrs: oldAttrs: { + inherit pname version src; + name = "${pname}-${version}"; + + nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ jdk gradle rsync ]; + + dontConfigure = true; + + postPatch = '' + # The rpm/deb task definitions require a Gradle plugin which we don't + # have and so the build fails. We'll simply remove them here because + # they are not needed anyways. + rm -rf installers/linux/universal/{rpm,deb} + + # `/usr/bin/rsync` is invoked to copy the source tree. We don't have that. + for file in $(find installers -name "build.gradle"); do + substituteInPlace $file --replace "workingDir '/usr/bin'" "workingDir '.'" + done + ''; + + + buildPhase = + let + # The Linux installer is placed at linux/universal/tar whereas the MacOS + # one is at mac/tar. + task = + if stdenv.isDarwin then + ":installers:mac:tar:packageBuildResults" + else ":installers:linux:universal:tar:packageBuildResults"; + in + '' + runHook preBuild + + # Corretto's actual built is triggered via `gradle`. + gradle --console=plain --no-daemon ${task} + + # Prepare for the installPhase so that it looks like if a normal + # OpenJDK had been built. + dir=build/jdkImageName/images + mkdir -p $dir + file=$(find ./installers -name 'amazon-corretto-${version}*.tar.gz') + tar -xzf $file -C $dir + mv $dir/amazon-corretto-* $dir/jdk + + runHook postBuild + ''; + + installPhase = oldAttrs.installPhase + '' + # The installPhase will place everything in $out/lib/openjdk and + # reference through symlinks. We don't rewrite the installPhase but at + # least move the folder to convey that this is not OpenJDK anymore. + mv $out/lib/openjdk $out/lib/corretto + ln -s $out/lib/corretto $out/lib/openjdk + ''; + + passthru = + let + pkg = finalAttrs.finalPackage; + in + oldAttrs.passthru // { + tests = { + version = testers.testVersion { + package = pkg; + }; + vendor = runCommand "${pname}-vendor" { nativeBuildInputs = [ pkg ]; } '' + output=$(${pkg.meta.mainProgram} -XshowSettings:properties -version 2>&1 | grep vendor) + grep -Fq "java.vendor = Amazon.com Inc." - <<< "$output" && touch $out + ''; + compiler = runCommand "${pname}-compiler" { nativeBuildInputs = [ pkg ]; } '' + cat << EOF > Main.java + class Main { + public static void main(String[] args) { + System.out.println("Hello, World!"); + } + } + EOF + ${pkg}/bin/javac Main.java + ${pkg}/bin/java Main | grep -q "Hello, World!" && touch $out + ''; + }; + }; + + meta = with lib; { + homepage = "https://aws.amazon.com/corretto"; + license = licenses.gpl2Only; + description = "Amazon's distribution of OpenJDK"; + platforms = jdk.meta.platforms; + mainProgram = "java"; + maintainers = with maintainers; [ rollf ]; + }; +}) diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6a76ab777972..5220e3d18862 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -15416,6 +15416,10 @@ with pkgs; copper = callPackage ../development/compilers/copper { }; + corretto11 = javaPackages.compiler.corretto11; + corretto17 = javaPackages.compiler.corretto17; + corretto19 = javaPackages.compiler.corretto19; + cotton = callPackage ../development/tools/cotton { inherit (darwin.apple_sdk.frameworks) CoreServices; }; diff --git a/pkgs/top-level/java-packages.nix b/pkgs/top-level/java-packages.nix index 5d938a12e829..a4e58837299f 100644 --- a/pkgs/top-level/java-packages.nix +++ b/pkgs/top-level/java-packages.nix @@ -93,6 +93,10 @@ in { ../development/compilers/adoptopenjdk-bin/jdk17-linux.nix ../development/compilers/adoptopenjdk-bin/jdk17-darwin.nix; + corretto11 = callPackage ../development/compilers/corretto/11.nix { }; + corretto17 = callPackage ../development/compilers/corretto/17.nix { }; + corretto19 = callPackage ../development/compilers/corretto/19.nix { }; + openjdk8-bootstrap = mkBootstrap adoptopenjdk-8 ../development/compilers/openjdk/bootstrap.nix { version = "8"; }; |