gradle: pass through wrapper override arguments to unwrapped Gradle (#457911)
This commit is contained in:
@@ -16,81 +16,79 @@ let
|
||||
symlinkJoin,
|
||||
concatTextFile,
|
||||
makeSetupHook,
|
||||
|
||||
gradle-unwrapped,
|
||||
runCommand,
|
||||
}:
|
||||
this-gradle-unwrapped:
|
||||
lib.makeOverridable (
|
||||
args:
|
||||
let
|
||||
gradle = this-gradle-unwrapped.override args;
|
||||
in
|
||||
symlinkJoin {
|
||||
pname = "gradle";
|
||||
inherit (gradle) version;
|
||||
...
|
||||
}@args:
|
||||
let
|
||||
gradle = gradle-unwrapped.override args;
|
||||
in
|
||||
symlinkJoin {
|
||||
pname = "gradle";
|
||||
inherit (gradle) version;
|
||||
|
||||
paths = [
|
||||
(makeSetupHook { name = "gradle-setup-hook"; } (concatTextFile {
|
||||
name = "setup-hook.sh";
|
||||
files = [
|
||||
(mitm-cache.setupHook)
|
||||
(replaceVars ./setup-hook.sh {
|
||||
# jdk used for keytool
|
||||
inherit (gradle) jdk;
|
||||
init_script = "${./init-build.gradle}";
|
||||
})
|
||||
];
|
||||
}))
|
||||
gradle
|
||||
mitm-cache
|
||||
];
|
||||
paths = [
|
||||
(makeSetupHook { name = "gradle-setup-hook"; } (concatTextFile {
|
||||
name = "setup-hook.sh";
|
||||
files = [
|
||||
(mitm-cache.setupHook)
|
||||
(replaceVars ./setup-hook.sh {
|
||||
# jdk used for keytool
|
||||
inherit (gradle) jdk;
|
||||
init_script = "${./init-build.gradle}";
|
||||
})
|
||||
];
|
||||
}))
|
||||
gradle
|
||||
mitm-cache
|
||||
];
|
||||
|
||||
passthru = {
|
||||
fetchDeps = callPackage ./fetch-deps.nix { inherit mitm-cache; };
|
||||
inherit (gradle) jdk;
|
||||
unwrapped = gradle;
|
||||
tests = {
|
||||
toolchains =
|
||||
let
|
||||
javaVersion = lib.getVersion jdk11;
|
||||
javaMajorVersion = lib.versions.major javaVersion;
|
||||
in
|
||||
runCommand "detects-toolchains-from-nix-env"
|
||||
{
|
||||
# Use JDKs that are not the default for any of the gradle versions
|
||||
nativeBuildInputs = [
|
||||
(gradle.override {
|
||||
javaToolchains = [
|
||||
jdk11
|
||||
];
|
||||
})
|
||||
];
|
||||
src = ./tests/toolchains;
|
||||
}
|
||||
''
|
||||
cp -a $src/* .
|
||||
substituteInPlace ./build.gradle --replace-fail '@JAVA_VERSION@' '${javaMajorVersion}'
|
||||
env GRADLE_USER_HOME=$TMPDIR/gradle org.gradle.native.dir=$TMPDIR/native \
|
||||
gradle run --no-daemon --quiet --console plain > $out
|
||||
actual="$(<$out)"
|
||||
if [[ "${javaVersion}" != "$actual"* ]]; then
|
||||
echo "Error: Expected '${javaVersion}', to start with '$actual'" >&2
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
}
|
||||
// gradle.tests;
|
||||
};
|
||||
passthru = {
|
||||
fetchDeps = callPackage ./fetch-deps.nix { inherit mitm-cache; };
|
||||
inherit (gradle) jdk;
|
||||
unwrapped = gradle;
|
||||
tests = {
|
||||
toolchains =
|
||||
let
|
||||
javaVersion = lib.getVersion jdk11;
|
||||
javaMajorVersion = lib.versions.major javaVersion;
|
||||
in
|
||||
runCommand "detects-toolchains-from-nix-env"
|
||||
{
|
||||
# Use JDKs that are not the default for any of the gradle versions
|
||||
nativeBuildInputs = [
|
||||
(gradle.override {
|
||||
javaToolchains = [
|
||||
jdk11
|
||||
];
|
||||
})
|
||||
];
|
||||
src = ./tests/toolchains;
|
||||
}
|
||||
''
|
||||
cp -a $src/* .
|
||||
substituteInPlace ./build.gradle --replace-fail '@JAVA_VERSION@' '${javaMajorVersion}'
|
||||
env GRADLE_USER_HOME=$TMPDIR/gradle org.gradle.native.dir=$TMPDIR/native \
|
||||
gradle run --no-daemon --quiet --console plain > $out
|
||||
actual="$(<$out)"
|
||||
if [[ "${javaVersion}" != "$actual"* ]]; then
|
||||
echo "Error: Expected '${javaVersion}', to start with '$actual'" >&2
|
||||
exit 1
|
||||
fi
|
||||
'';
|
||||
}
|
||||
// gradle.tests;
|
||||
};
|
||||
|
||||
meta = gradle.meta // {
|
||||
# prefer normal gradle/mitm-cache over this wrapper, this wrapper only provides the setup hook
|
||||
# and passthru
|
||||
priority = (gradle.meta.priority or lib.meta.defaultPriority) + 1;
|
||||
};
|
||||
}
|
||||
) { };
|
||||
meta = gradle.meta // {
|
||||
# prefer normal gradle/mitm-cache over this wrapper, this wrapper only provides the setup hook
|
||||
# and passthru
|
||||
priority = (gradle.meta.priority or lib.meta.defaultPriority) + 1;
|
||||
};
|
||||
};
|
||||
|
||||
gen =
|
||||
# Creates a Gradle without calling the package.
|
||||
mkGradle' =
|
||||
{
|
||||
version,
|
||||
hash,
|
||||
@@ -146,8 +144,10 @@ let
|
||||
# Additional JDK/JREs to be registered as toolchains.
|
||||
# See https://docs.gradle.org/current/userguide/toolchains.html
|
||||
javaToolchains ? [ ],
|
||||
}:
|
||||
|
||||
# Ignored arguments from calling .override on the wrapper.
|
||||
...
|
||||
}:
|
||||
stdenv.mkDerivation (finalAttrs: {
|
||||
pname = "gradle";
|
||||
inherit version;
|
||||
@@ -275,7 +275,9 @@ let
|
||||
};
|
||||
};
|
||||
passthru.jdk = defaultJava;
|
||||
passthru.wrapped = callPackage wrapGradle { } (gen' genArgs);
|
||||
passthru.wrapped = callPackage wrapGradle {
|
||||
gradle-unwrapped = mkGradle genArgs;
|
||||
};
|
||||
passthru.updateScript =
|
||||
if enableUpdateScript then
|
||||
nix-update-script {
|
||||
@@ -323,26 +325,31 @@ let
|
||||
});
|
||||
|
||||
# Calls the generated Gradle package with default arguments.
|
||||
gen' = args: callPackage (gen args) { };
|
||||
mkGradle = args: callPackage (mkGradle' args) { };
|
||||
in
|
||||
rec {
|
||||
# Keep these exposed (but not at toplevel) so users can call
|
||||
# `gradle-packages.mkGradle` as we do below,
|
||||
# and still have wrapGradle available if necessary.
|
||||
inherit mkGradle wrapGradle;
|
||||
|
||||
# NOTE: Default JDKs that are hardcoded below must be LTS versions
|
||||
# and respect the compatibility matrix at
|
||||
# https://docs.gradle.org/current/userguide/compatibility.html
|
||||
|
||||
gradle_9 = gen' {
|
||||
gradle_9 = mkGradle {
|
||||
version = "9.1.0";
|
||||
hash = "sha256-oX3dhaJran9d23H/iwX8UQTAICxuZHgkKXkMkzaGyAY=";
|
||||
defaultJava = jdk21;
|
||||
};
|
||||
gradle_8 = gen' {
|
||||
gradle_8 = mkGradle {
|
||||
version = "8.14.3";
|
||||
hash = "sha256-vXEQIhNJMGCVbsIp2Ua+7lcVjb2J0OYrkbyg+ixfNTE=";
|
||||
defaultJava = jdk21;
|
||||
# Only enable this on *one* version to avoid duplicate PRs.
|
||||
enableUpdateScript = true;
|
||||
};
|
||||
gradle_7 = gen' {
|
||||
gradle_7 = mkGradle {
|
||||
version = "7.6.6";
|
||||
hash = "sha256-Zz2XdvMDvHBI/DMp0jLW6/EFGweJO9nRFhb62ahnO+A=";
|
||||
defaultJava = jdk17;
|
||||
|
||||
@@ -676,6 +676,7 @@ mapAliases {
|
||||
graalvm-oracle = throw "'graalvm-oracle' has been renamed to/replaced by 'graalvmPackages.graalvm-oracle'"; # Converted to throw 2025-10-27
|
||||
graalvmCEPackages = throw "'graalvmCEPackages' has been renamed to/replaced by 'graalvmPackages'"; # Converted to throw 2025-10-27
|
||||
gradience = throw "`gradience` has been removed because it was archived upstream."; # Added 2025-09-20
|
||||
gradleGen = throw "'gradleGen' has been moved to `gradle-packages.mkGradle`."; # Added 2025-11-02
|
||||
grafana_reporter = throw "'grafana_reporter' has been renamed to/replaced by 'grafana-reporter'"; # Converted to throw 2025-10-27
|
||||
graphite-kde-theme = throw "'graphite-kde-theme' has been removed, as it is only compatible with Plasma 5, which is EOL"; # Added 2025-08-20
|
||||
gringo = throw "'gringo' has been renamed to/replaced by 'clingo'"; # Converted to throw 2025-10-27
|
||||
@@ -1591,6 +1592,7 @@ mapAliases {
|
||||
worldengine-cli = throw "'worldengine-cli' has been removed because it has been marked as broken since at least November 2024."; # Added 2025-10-04
|
||||
wpa_supplicant_ro_ssids = throw "'wpa_supplicant_ro_ssids' has been renamed to/replaced by 'wpa_supplicant'"; # Converted to throw 2025-10-27
|
||||
wrapGAppsHook = throw "'wrapGAppsHook' has been renamed to/replaced by 'wrapGAppsHook3'"; # Converted to throw 2025-10-27
|
||||
wrapGradle = throw "'wrapGradle' has been removed; use `gradle-packages.wrapGradle` or `(gradle-packages.mkGradle { ... }).wrapped` instead"; # Added 2025-11-02
|
||||
write_stylus = throw "'write_stylus' has been renamed to/replaced by 'styluslabs-write-bin'"; # Converted to throw 2025-10-27
|
||||
wxGTK33 = wxwidgets_3_3; # Added 2025-07-20
|
||||
xbrightness = throw "'xbrightness' has been removed as it is unmaintained"; # Added 2025-08-28
|
||||
|
||||
Reference in New Issue
Block a user