diff --git a/pkgs/development/compilers/corretto/11.nix b/pkgs/development/compilers/corretto/11.nix index b6cf86d2d695..c1bf6347947c 100644 --- a/pkgs/development/compilers/corretto/11.nix +++ b/pkgs/development/compilers/corretto/11.nix @@ -1,16 +1,23 @@ -{ fetchFromGitHub -, gradle_7 -, jdk11 -, lib -, stdenv -, rsync -, runCommand -, testers +{ + fetchFromGitHub, + gradle_7, + jdk11, + lib, + stdenv, + rsync, + runCommand, + testers, }: let corretto = import ./mk-corretto.nix rec { - inherit lib stdenv rsync runCommand testers; + inherit + lib + stdenv + rsync + runCommand + testers + ; jdk = jdk11; gradle = gradle_7; extraConfig = [ diff --git a/pkgs/development/compilers/corretto/17.nix b/pkgs/development/compilers/corretto/17.nix index 479592ab58d5..90ca350a355d 100644 --- a/pkgs/development/compilers/corretto/17.nix +++ b/pkgs/development/compilers/corretto/17.nix @@ -1,17 +1,24 @@ -{ fetchFromGitHub -, fetchurl -, gradle_7 -, jdk17 -, lib -, stdenv -, rsync -, runCommand -, testers +{ + fetchFromGitHub, + fetchurl, + gradle_7, + jdk17, + lib, + stdenv, + rsync, + runCommand, + testers, }: let corretto = import ./mk-corretto.nix rec { - inherit lib stdenv rsync runCommand testers; + inherit + lib + stdenv + rsync + runCommand + testers + ; jdk = jdk17; gradle = gradle_7; version = "17.0.12.7.1"; @@ -23,14 +30,14 @@ let }; }; in -corretto.overrideAttrs (final: prev: { - # Corretto17 has incorporated this patch already so it fails to apply. - # We thus skip it here. - # See https://github.com/corretto/corretto-17/pull/158 - patches = lib.remove - (fetchurl { +corretto.overrideAttrs ( + final: prev: { + # Corretto17 has incorporated this patch already so it fails to apply. + # We thus skip it here. + # See https://github.com/corretto/corretto-17/pull/158 + patches = lib.remove (fetchurl { url = "https://git.alpinelinux.org/aports/plain/community/openjdk17/FixNullPtrCast.patch?id=41e78a067953e0b13d062d632bae6c4f8028d91c"; sha256 = "sha256-LzmSew51+DyqqGyyMw2fbXeBluCiCYsS1nCjt9hX6zo="; - }) - (prev.patches or [ ]); -}) + }) (prev.patches or [ ]); + } +) diff --git a/pkgs/development/compilers/corretto/21.nix b/pkgs/development/compilers/corretto/21.nix index 3e9162a83686..a5ab64d02c24 100644 --- a/pkgs/development/compilers/corretto/21.nix +++ b/pkgs/development/compilers/corretto/21.nix @@ -1,17 +1,24 @@ -{ corretto21 -, fetchFromGitHub -, gradle_7 -, jdk21 -, lib -, stdenv -, rsync -, runCommand -, testers +{ + corretto21, + fetchFromGitHub, + gradle_7, + jdk21, + lib, + stdenv, + rsync, + runCommand, + testers, }: let corretto = import ./mk-corretto.nix rec { - inherit lib stdenv rsync runCommand testers; + inherit + lib + stdenv + rsync + runCommand + testers + ; jdk = jdk21; gradle = gradle_7; version = "21.0.4.7.1"; diff --git a/pkgs/development/compilers/corretto/mk-corretto.nix b/pkgs/development/compilers/corretto/mk-corretto.nix index 37ac9006515d..0de05fb0f6c8 100644 --- a/pkgs/development/compilers/corretto/mk-corretto.nix +++ b/pkgs/development/compilers/corretto/mk-corretto.nix @@ -1,13 +1,14 @@ -{ jdk -, version -, src -, lib -, stdenv -, gradle -, extraConfig ? [ ] -, rsync -, runCommand -, testers +{ + jdk, + version, + src, + lib, + stdenv, + gradle, + extraConfig ? [ ], + rsync, + runCommand, + testers, }: # Each Corretto version is based on a corresponding OpenJDK version. So @@ -19,97 +20,111 @@ 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}"; +# 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" +jdk.overrideAttrs ( + finalAttrs: oldAttrs: { + inherit pname version src; + name = "${pname}-${version}"; - nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ jdk gradle rsync ]; + nativeBuildInputs = oldAttrs.nativeBuildInputs ++ [ + jdk + gradle + rsync + ]; - dontConfigure = true; + dontConfigure = true; - postPatch = let - extra_config = builtins.concatStringsSep " " extraConfig; - in '' - # 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} + postPatch = + let + extra_config = builtins.concatStringsSep " " extraConfig; + in + '' + # 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-warn "workingDir '/usr/bin'" "workingDir '.'" - done + # `/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-warn "workingDir '/usr/bin'" "workingDir '.'" + done - gradleFlagsArray+=(-Pcorretto.extra_config="${extra_config}") - ''; + gradleFlagsArray+=(-Pcorretto.extra_config="${extra_config}") + ''; - # since we dontConfigure, we must run this manually - preBuild = "gradleConfigureHook"; + # since we dontConfigure, we must run this manually + preBuild = "gradleConfigureHook"; - # The Linux installer is placed at linux/universal/tar whereas the MacOS - # one is at mac/tar. - gradleBuildTask = - if stdenv.hostPlatform.isDarwin then - ":installers:mac:tar:build" - else ":installers:linux:universal:tar:packageBuildResults"; + # The Linux installer is placed at linux/universal/tar whereas the MacOS + # one is at mac/tar. + gradleBuildTask = + if stdenv.hostPlatform.isDarwin then + ":installers:mac:tar:build" + else + ":installers:linux:universal:tar:packageBuildResults"; - postBuild = '' - # 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 - '' + oldAttrs.postBuild or ""; + postBuild = + '' + # 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 + '' + + oldAttrs.postBuild or ""; - 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 - ''; + 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; + 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 + ''; }; - 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 - ''; }; - }; - - # Some of the OpenJDK derivation set their `pos` by hand. We need to - # overwrite this in order to point to Corretto, not OpenJDK. - pos = __curPos; - meta = with lib; oldAttrs.meta // { - homepage = "https://aws.amazon.com/corretto"; - license = licenses.gpl2Only; - description = "Amazon's distribution of OpenJDK"; - maintainers = with maintainers; [ rollf ]; - }; -}) + # Some of the OpenJDK derivation set their `pos` by hand. We need to + # overwrite this in order to point to Corretto, not OpenJDK. + pos = __curPos; + meta = + with lib; + oldAttrs.meta + // { + homepage = "https://aws.amazon.com/corretto"; + license = licenses.gpl2Only; + description = "Amazon's distribution of OpenJDK"; + maintainers = with maintainers; [ rollf ]; + }; + } +)