corretto{11,17,19}: init at 11.0.20.9.1/17.0.8.8.1/19.0.2.7.1

+212
+37
pkgs/development/compilers/corretto/11.nix
···
··· 1 + { corretto11 2 + , fetchFromGitHub 3 + , gradle_7 4 + , jdk11 5 + , lib 6 + , stdenv 7 + , rsync 8 + , runCommand 9 + , testers 10 + }: 11 + 12 + let 13 + corretto = import ./mk-corretto.nix { 14 + inherit lib stdenv rsync runCommand testers; 15 + jdk = jdk11; 16 + gradle = gradle_7; 17 + version = "11.0.20.9.1"; 18 + src = fetchFromGitHub { 19 + owner = "corretto"; 20 + repo = "corretto-11"; 21 + rev = "b880bdc8397ec3dd6b7cd4b837ce846c9e902783"; 22 + sha256 = "sha256-IomJHQn0ZgqsBZ5BrRqVrEOhTq7wjLiIKMQlz53JxsU="; 23 + }; 24 + }; 25 + in 26 + corretto.overrideAttrs (oldAttrs: { 27 + # jdk11 is built with --disable-warnings-as-errors (see openjdk/11.nix) 28 + # because of several compile errors. We need to include this parameter for 29 + # Corretto, too. Since the build is invoked via `gradle` build.gradle has to 30 + # be adapted. 31 + postPatch = oldAttrs.postPatch + '' 32 + for file in $(find installers -name "build.gradle"); do 33 + substituteInPlace $file --replace "command += archSpecificFlags" "command += archSpecificFlags + ['--disable-warnings-as-errors']" 34 + done 35 + ''; 36 + 37 + })
+26
pkgs/development/compilers/corretto/17.nix
···
··· 1 + { corretto17 2 + , fetchFromGitHub 3 + , gradle_7 4 + , jdk17 5 + , lib 6 + , stdenv 7 + , rsync 8 + , runCommand 9 + , testers 10 + }: 11 + 12 + let 13 + corretto = import ./mk-corretto.nix { 14 + inherit lib stdenv rsync runCommand testers; 15 + jdk = jdk17; 16 + gradle = gradle_7; 17 + version = "17.0.8.8.1"; 18 + src = fetchFromGitHub { 19 + owner = "corretto"; 20 + repo = "corretto-17"; 21 + rev = "9a3cc984f76cb5f90598bdb43215bad20e0f7319"; 22 + sha256 = "sha256-/VuB3ocD5VvDqCU7BoTG+fQ0aKvK1TejegRYmswInqQ="; 23 + }; 24 + }; 25 + in 26 + corretto
+26
pkgs/development/compilers/corretto/19.nix
···
··· 1 + { corretto19 2 + , fetchFromGitHub 3 + , gradle_7 4 + , jdk19 5 + , lib 6 + , stdenv 7 + , rsync 8 + , runCommand 9 + , testers 10 + }: 11 + 12 + let 13 + corretto = import ./mk-corretto.nix { 14 + inherit lib stdenv rsync runCommand testers; 15 + jdk = jdk19; 16 + gradle = gradle_7; 17 + version = "19.0.2.7.1"; 18 + src = fetchFromGitHub { 19 + owner = "corretto"; 20 + repo = "corretto-19"; 21 + rev = "72f064a1d716272bd17d4e425d4a264b2c2c7d36"; 22 + sha256 = "sha256-mEj/MIbdXU0+fF5RhqjPuSeyclstesGaXB0e48YlKuw="; 23 + }; 24 + }; 25 + in 26 + corretto
+115
pkgs/development/compilers/corretto/mk-corretto.nix
···
··· 1 + { jdk 2 + , version 3 + , src 4 + , lib 5 + , stdenv 6 + , gradle 7 + , rsync 8 + , runCommand 9 + , testers 10 + }: 11 + 12 + # Each Corretto version is based on a corresponding OpenJDK version. So 13 + # building Corretto is more or less the same as building OpenJDK. Hence, the 14 + # Corretto derivation overrides the corresponding OpenJDK derivation in order 15 + # to have access to all the version-specific fixes for the various OpenJDK 16 + # builds. However, Corretto uses `gradle` as build tool (which in turn will 17 + # invoke `make`). The configure/build phases are adapted as needed. 18 + 19 + let 20 + pname = "corretto"; 21 + # The version scheme is different between OpenJDK & Corretto. 22 + # See https://github.com/corretto/corretto-17/blob/release-17.0.8.8.1/build.gradle#L40 23 + # "major.minor.security.build.revision" 24 + in 25 + jdk.overrideAttrs (finalAttrs: oldAttrs: { 26 + inherit pname version src; 27 + name = "${pname}-${version}"; 28 + 29 + nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ jdk gradle rsync ]; 30 + 31 + dontConfigure = true; 32 + 33 + postPatch = '' 34 + # The rpm/deb task definitions require a Gradle plugin which we don't 35 + # have and so the build fails. We'll simply remove them here because 36 + # they are not needed anyways. 37 + rm -rf installers/linux/universal/{rpm,deb} 38 + 39 + # `/usr/bin/rsync` is invoked to copy the source tree. We don't have that. 40 + for file in $(find installers -name "build.gradle"); do 41 + substituteInPlace $file --replace "workingDir '/usr/bin'" "workingDir '.'" 42 + done 43 + ''; 44 + 45 + 46 + buildPhase = 47 + let 48 + # The Linux installer is placed at linux/universal/tar whereas the MacOS 49 + # one is at mac/tar. 50 + task = 51 + if stdenv.isDarwin then 52 + ":installers:mac:tar:packageBuildResults" 53 + else ":installers:linux:universal:tar:packageBuildResults"; 54 + in 55 + '' 56 + runHook preBuild 57 + 58 + # Corretto's actual built is triggered via `gradle`. 59 + gradle --console=plain --no-daemon ${task} 60 + 61 + # Prepare for the installPhase so that it looks like if a normal 62 + # OpenJDK had been built. 63 + dir=build/jdkImageName/images 64 + mkdir -p $dir 65 + file=$(find ./installers -name 'amazon-corretto-${version}*.tar.gz') 66 + tar -xzf $file -C $dir 67 + mv $dir/amazon-corretto-* $dir/jdk 68 + 69 + runHook postBuild 70 + ''; 71 + 72 + installPhase = oldAttrs.installPhase + '' 73 + # The installPhase will place everything in $out/lib/openjdk and 74 + # reference through symlinks. We don't rewrite the installPhase but at 75 + # least move the folder to convey that this is not OpenJDK anymore. 76 + mv $out/lib/openjdk $out/lib/corretto 77 + ln -s $out/lib/corretto $out/lib/openjdk 78 + ''; 79 + 80 + passthru = 81 + let 82 + pkg = finalAttrs.finalPackage; 83 + in 84 + oldAttrs.passthru // { 85 + tests = { 86 + version = testers.testVersion { 87 + package = pkg; 88 + }; 89 + vendor = runCommand "${pname}-vendor" { nativeBuildInputs = [ pkg ]; } '' 90 + output=$(${pkg.meta.mainProgram} -XshowSettings:properties -version 2>&1 | grep vendor) 91 + grep -Fq "java.vendor = Amazon.com Inc." - <<< "$output" && touch $out 92 + ''; 93 + compiler = runCommand "${pname}-compiler" { nativeBuildInputs = [ pkg ]; } '' 94 + cat << EOF > Main.java 95 + class Main { 96 + public static void main(String[] args) { 97 + System.out.println("Hello, World!"); 98 + } 99 + } 100 + EOF 101 + ${pkg}/bin/javac Main.java 102 + ${pkg}/bin/java Main | grep -q "Hello, World!" && touch $out 103 + ''; 104 + }; 105 + }; 106 + 107 + meta = with lib; { 108 + homepage = "https://aws.amazon.com/corretto"; 109 + license = licenses.gpl2Only; 110 + description = "Amazon's distribution of OpenJDK"; 111 + platforms = jdk.meta.platforms; 112 + mainProgram = "java"; 113 + maintainers = with maintainers; [ rollf ]; 114 + }; 115 + })
+4
pkgs/top-level/all-packages.nix
··· 15416 15417 copper = callPackage ../development/compilers/copper { }; 15418 15419 cotton = callPackage ../development/tools/cotton { 15420 inherit (darwin.apple_sdk.frameworks) CoreServices; 15421 };
··· 15416 15417 copper = callPackage ../development/compilers/copper { }; 15418 15419 + corretto11 = javaPackages.compiler.corretto11; 15420 + corretto17 = javaPackages.compiler.corretto17; 15421 + corretto19 = javaPackages.compiler.corretto19; 15422 + 15423 cotton = callPackage ../development/tools/cotton { 15424 inherit (darwin.apple_sdk.frameworks) CoreServices; 15425 };
+4
pkgs/top-level/java-packages.nix
··· 93 ../development/compilers/adoptopenjdk-bin/jdk17-linux.nix 94 ../development/compilers/adoptopenjdk-bin/jdk17-darwin.nix; 95 96 openjdk8-bootstrap = mkBootstrap adoptopenjdk-8 97 ../development/compilers/openjdk/bootstrap.nix 98 { version = "8"; };
··· 93 ../development/compilers/adoptopenjdk-bin/jdk17-linux.nix 94 ../development/compilers/adoptopenjdk-bin/jdk17-darwin.nix; 95 96 + corretto11 = callPackage ../development/compilers/corretto/11.nix { }; 97 + corretto17 = callPackage ../development/compilers/corretto/17.nix { }; 98 + corretto19 = callPackage ../development/compilers/corretto/19.nix { }; 99 + 100 openjdk8-bootstrap = mkBootstrap adoptopenjdk-8 101 ../development/compilers/openjdk/bootstrap.nix 102 { version = "8"; };