mirror of
https://github.com/tadfisher/gradle2nix.git
synced 2026-01-11 15:30:38 -05:00
Add extraInit and buildJdk args
This commit is contained in:
@@ -21,23 +21,33 @@
|
||||
|
||||
{ stdenv, buildEnv, fetchurl, gradleGen, writeText, writeTextDir }:
|
||||
|
||||
{ envSpec
|
||||
{
|
||||
# Path to the environment spec generated by gradle2nix (e.g. gradle-env.json).
|
||||
envSpec
|
||||
, pname ? null
|
||||
, version ? null
|
||||
, enableParallelBuilding ? true
|
||||
# Arguments to Gradle used to build the project in buildPhase.
|
||||
, gradleFlags ? [ "build" ]
|
||||
# Gradle package to use instead of the one generated by gradle2nix.
|
||||
, gradlePackage ? null
|
||||
# Enable debugging for the Gradle build; this will cause Gradle to run a debug server
|
||||
# and wait for a JVM debugging client to attach.
|
||||
, enableDebug ? false
|
||||
# Additional code to run in the Gradle init script (init.gradle).
|
||||
, extraInit ? ""
|
||||
# Override the default JDK used to run Gradle itself.
|
||||
, buildJdk ? null
|
||||
, ... } @ args:
|
||||
|
||||
let
|
||||
inherit (builtins)
|
||||
filter sort replaceStrings attrValues match fromJSON
|
||||
concatStringsSep;
|
||||
attrValues concatStringsSep filter fromJSON match replaceStrings sort;
|
||||
|
||||
inherit (stdenv.lib)
|
||||
versionOlder unique mapAttrs mapAttrsToList last concatMapStringsSep
|
||||
removeSuffix optionalString groupBy' readFile hasSuffix;
|
||||
assertMsg concatMapStringsSep groupBy' hasSuffix last mapAttrs
|
||||
mapAttrsToList optionalString readFile removeSuffix unique versionAtLeast
|
||||
versionOlder;
|
||||
|
||||
mkDep = depSpec: stdenv.mkDerivation {
|
||||
inherit (depSpec) name;
|
||||
@@ -176,10 +186,20 @@ let
|
||||
paths = map mkDep deps ++ mkModuleMetadata deps ++ mkSnapshotMetadata deps;
|
||||
};
|
||||
|
||||
mkInitScript = projectSpec:
|
||||
mkInitScript = projectSpec: gradle:
|
||||
let
|
||||
repos = mapAttrs (mkRepo projectSpec.name) projectSpec.dependencies;
|
||||
hasDependencies = mapAttrs (type: deps: deps != []) projectSpec.dependencies;
|
||||
in
|
||||
assert (assertMsg (hasDependencies.settings -> versionAtLeast gradle.version "6.0") ''
|
||||
Project `${projectSpec.name}' has settings script dependencies, such as settings
|
||||
plugins, which are not supported by gradle2nix for Gradle versions prior to 6.0.
|
||||
|
||||
Potential remedies:
|
||||
- Pass `--gradle-version=<version>' to the gradle2nix command.
|
||||
- Patch the `settings.gradle[.kts]' file to remove script dependencies.
|
||||
'');
|
||||
|
||||
writeText "init.gradle" ''
|
||||
static def offlineRepo(RepositoryHandler repositories, String env, String path) {
|
||||
repositories.clear()
|
||||
@@ -204,18 +224,37 @@ let
|
||||
}
|
||||
}
|
||||
|
||||
gradle.settingsEvaluated {
|
||||
offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}")
|
||||
}
|
||||
${optionalString (hasDependencies.settings && (versionAtLeast gradle.version "6.0")) ''
|
||||
gradle.beforeSettings {
|
||||
offlineRepo(it.buildscript.repositories, "settings", "${repos.settings}")
|
||||
}
|
||||
''}
|
||||
|
||||
gradle.projectsLoaded {
|
||||
allprojects {
|
||||
buildscript {
|
||||
offlineRepo(repositories, "buildscript", "${repos.buildscript}")
|
||||
}
|
||||
offlineRepo(repositories, "project", "${repos.project}")
|
||||
}
|
||||
}
|
||||
${optionalString (hasDependencies.plugin) ''
|
||||
gradle.settingsEvaluated {
|
||||
offlineRepo(it.pluginManagement.repositories, "plugin", "${repos.plugin}")
|
||||
}
|
||||
''}
|
||||
|
||||
${optionalString (hasDependencies.buildscript) ''
|
||||
gradle.projectsLoaded {
|
||||
allprojects {
|
||||
buildscript {
|
||||
offlineRepo(repositories, "buildscript", "${repos.buildscript}")
|
||||
}
|
||||
}
|
||||
}
|
||||
''}
|
||||
|
||||
${optionalString (hasDependencies.project) ''
|
||||
gradle.projectsLoaded {
|
||||
allprojects {
|
||||
offlineRepo(repositories, "project", "${repos.project}")
|
||||
}
|
||||
}
|
||||
''}
|
||||
|
||||
${extraInit}
|
||||
'';
|
||||
|
||||
mkGradle = gradleSpec:
|
||||
@@ -227,12 +266,14 @@ let
|
||||
src = fetchurl {
|
||||
inherit (gradleSpec) url sha256;
|
||||
};
|
||||
} // {
|
||||
inherit (gradleSpec) version;
|
||||
};
|
||||
|
||||
mkProjectEnv = projectSpec: {
|
||||
mkProjectEnv = projectSpec: rec {
|
||||
inherit (projectSpec) name path version;
|
||||
initScript = mkInitScript projectSpec;
|
||||
gradle = args.gradlePackage or mkGradle projectSpec.gradle;
|
||||
initScript = mkInitScript projectSpec gradle;
|
||||
};
|
||||
|
||||
gradleEnv = mapAttrs
|
||||
@@ -248,6 +289,7 @@ let
|
||||
--info --full-stacktrace --warning-mode=all \
|
||||
${optionalString enableParallelBuilding "--parallel"} \
|
||||
${optionalString enableDebug "-Dorg.gradle.debug=true"} \
|
||||
${optionalString (buildJdk != null) "-Dorg.gradle.java.home=${buildJdk.home}"} \
|
||||
--init-script ${env.initScript} \
|
||||
${optionalString (env.path != "") ''-p "${env.path}"''} \
|
||||
${concatStringsSep " " flags}
|
||||
@@ -270,7 +312,7 @@ in stdenv.mkDerivation (args // {
|
||||
runHook preBuild
|
||||
|
||||
(
|
||||
set -x
|
||||
set -eux
|
||||
|
||||
# use the init script here
|
||||
TMPHOME=$(mktemp -d)
|
||||
|
||||
Reference in New Issue
Block a user