Skip to content

Commit

Permalink
corretto{11,17,21}: apply nixfmt
Browse files Browse the repository at this point in the history
  • Loading branch information
rollf committed Sep 26, 2024
1 parent cea4885 commit a0bec3f
Show file tree
Hide file tree
Showing 4 changed files with 164 additions and 128 deletions.
25 changes: 16 additions & 9 deletions pkgs/development/compilers/corretto/11.nix
Original file line number Diff line number Diff line change
@@ -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 = [
Expand Down
45 changes: 26 additions & 19 deletions pkgs/development/compilers/corretto/17.nix
Original file line number Diff line number Diff line change
@@ -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";
Expand All @@ -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 [ ]);
}
)
27 changes: 17 additions & 10 deletions pkgs/development/compilers/corretto/21.nix
Original file line number Diff line number Diff line change
@@ -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";
Expand Down
195 changes: 105 additions & 90 deletions pkgs/development/compilers/corretto/mk-corretto.nix
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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 ];
};
}
)

0 comments on commit a0bec3f

Please sign in to comment.