Add extraInit and buildJdk args

This commit is contained in:
Tad Fisher
2020-12-01 16:44:44 -08:00
parent fd6a6f4693
commit 7c02e63afa
3 changed files with 298 additions and 82 deletions

View File

@@ -21,13 +21,23 @@
{ 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
@@ -243,6 +253,8 @@ let
}
}
''}
${extraInit}
'';
mkGradle = gradleSpec:
@@ -277,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}
@@ -299,7 +312,7 @@ in stdenv.mkDerivation (args // {
runHook preBuild
(
set -x
set -eux
# use the init script here
TMPHOME=$(mktemp -d)

View File

@@ -11,6 +11,7 @@
"nativeVersion": "0.22-milestone-8"
},
"dependencies": {
"settings": [],
"plugin": [
{
"id": {
@@ -31,181 +32,181 @@
"id": {
"group": "com.fasterxml.jackson",
"name": "jackson-base",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "pom",
"extension": "pom"
},
"name": "jackson-base-2.12.0-rc2.pom",
"path": "com/fasterxml/jackson/jackson-base/2.12.0-rc2",
"name": "jackson-base-2.12.0.pom",
"path": "com/fasterxml/jackson/jackson-base/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-base/2.12.0-rc2/jackson-base-2.12.0-rc2.pom"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-base/2.12.0/jackson-base-2.12.0.pom"
],
"sha256": "1027e428fb2b3d368f68059726e32baa6e63f0f7c63bbaf154540644901747cd"
"sha256": "145cf8abce581cec4993f90175ef2eb8edc465a5c2100b5a637ed7bbd1da53e5"
},
{
"id": {
"group": "com.fasterxml.jackson",
"name": "jackson-bom",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "pom",
"extension": "pom"
},
"name": "jackson-bom-2.12.0-rc2.pom",
"path": "com/fasterxml/jackson/jackson-bom/2.12.0-rc2",
"name": "jackson-bom-2.12.0.pom",
"path": "com/fasterxml/jackson/jackson-bom/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.12.0-rc2/jackson-bom-2.12.0-rc2.pom"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-bom/2.12.0/jackson-bom-2.12.0.pom"
],
"sha256": "eca0c8b9100535fe8968b7ed383cd8fa811f955bc32b090cbbc665852abbd981"
"sha256": "3886dab66cdd1735d629ad2f78b6a9b2e988500843d4392326e4d70369535620"
},
{
"id": {
"group": "com.fasterxml.jackson",
"name": "jackson-parent",
"version": "2.12-rc2",
"version": "2.12",
"type": "pom",
"extension": "pom"
},
"name": "jackson-parent-2.12-rc2.pom",
"path": "com/fasterxml/jackson/jackson-parent/2.12-rc2",
"name": "jackson-parent-2.12.pom",
"path": "com/fasterxml/jackson/jackson-parent/2.12",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.12-rc2/jackson-parent-2.12-rc2.pom"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/jackson-parent/2.12/jackson-parent-2.12.pom"
],
"sha256": "7377ec72d15cbc9b4497bc6538fa0527476fac51fa1d7c7e2850ae38cef73f47"
"sha256": "67be3dafaaf8ce1717e7a7de7db92ba433df923b697a40c9743a54cc9fc53637"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-annotations",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "jar",
"extension": "jar"
},
"name": "jackson-annotations-2.12.0-rc2.jar",
"path": "com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc2",
"name": "jackson-annotations-2.12.0.jar",
"path": "com/fasterxml/jackson/core/jackson-annotations/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc2/jackson-annotations-2.12.0-rc2.jar"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.0/jackson-annotations-2.12.0.jar"
],
"sha256": "f1161d164cf551cc8ac54babfd92bc19d094102f32c1cbc87f5fdf81a3b65cf3"
"sha256": "c28fbe62e7be1e29df75953fa8a887ff875d4482291fbfddb1aec5c91191ecda"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-annotations",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "module",
"extension": "module"
},
"name": "jackson-annotations-2.12.0-rc2.module",
"path": "com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc2",
"name": "jackson-annotations-2.12.0.module",
"path": "com/fasterxml/jackson/core/jackson-annotations/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc2/jackson-annotations-2.12.0-rc2.module"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.0/jackson-annotations-2.12.0.module"
],
"sha256": "05bed34d8ebd8797690a34926d0269a197b3baa4a44e1f3880cb7c61de028033"
"sha256": "9bfc9705d1fff845ae44669b3942aa729e16a77e0a2c9a4d175aa64a79079c30"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-annotations",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "pom",
"extension": "pom"
},
"name": "jackson-annotations-2.12.0-rc2.pom",
"path": "com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc2",
"name": "jackson-annotations-2.12.0.pom",
"path": "com/fasterxml/jackson/core/jackson-annotations/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.0-rc2/jackson-annotations-2.12.0-rc2.pom"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-annotations/2.12.0/jackson-annotations-2.12.0.pom"
],
"sha256": "2c26436e654003c3a171f312439e13bf9e0ff914e967e6b8322cb44230bdd7bd"
"sha256": "a82e074d99be066c708dbf0ae09cf9932723034b997ae5d284375a776dce1ef5"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-core",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "jar",
"extension": "jar"
},
"name": "jackson-core-2.12.0-rc2.jar",
"path": "com/fasterxml/jackson/core/jackson-core/2.12.0-rc2",
"name": "jackson-core-2.12.0.jar",
"path": "com/fasterxml/jackson/core/jackson-core/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.0-rc2/jackson-core-2.12.0-rc2.jar"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.0/jackson-core-2.12.0.jar"
],
"sha256": "5a6ac5b066e1e20ff90e983d7d8b90a0656dc29d9788d6b0c85bad872deb3489"
"sha256": "8acab5ef6e4f332bbb331b3fcd24d716598770d13a47e7215aa5ee625d1fd9c9"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-core",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "module",
"extension": "module"
},
"name": "jackson-core-2.12.0-rc2.module",
"path": "com/fasterxml/jackson/core/jackson-core/2.12.0-rc2",
"name": "jackson-core-2.12.0.module",
"path": "com/fasterxml/jackson/core/jackson-core/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.0-rc2/jackson-core-2.12.0-rc2.module"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.0/jackson-core-2.12.0.module"
],
"sha256": "e4be6fb89f596d293f43b63dddbc4dcbd98aa6c5b2ada90fb71e1540e036b2bd"
"sha256": "cfbcdd3bcd2a6899d5bf154aa14580ec3602a294d8c14be80f279d48c69b9b42"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-core",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "pom",
"extension": "pom"
},
"name": "jackson-core-2.12.0-rc2.pom",
"path": "com/fasterxml/jackson/core/jackson-core/2.12.0-rc2",
"name": "jackson-core-2.12.0.pom",
"path": "com/fasterxml/jackson/core/jackson-core/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.0-rc2/jackson-core-2.12.0-rc2.pom"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-core/2.12.0/jackson-core-2.12.0.pom"
],
"sha256": "880bf3c1cd4dd563f90ae32f905641ad8be9117f0caf5ca2e68511751d73780e"
"sha256": "afbb00d15dcc88bfd3895573d852b8fe151ddf0970264ba25b775690e01fa324"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-databind",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "jar",
"extension": "jar"
},
"name": "jackson-databind-2.12.0-rc2.jar",
"path": "com/fasterxml/jackson/core/jackson-databind/2.12.0-rc2",
"name": "jackson-databind-2.12.0.jar",
"path": "com/fasterxml/jackson/core/jackson-databind/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.0-rc2/jackson-databind-2.12.0-rc2.jar"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.0/jackson-databind-2.12.0.jar"
],
"sha256": "e40ca547f9af25d8404f2ff9e6de1c512bc5cad8d18f38ca08b3ff5028b4982d"
"sha256": "75d470eda0dd559e43f2ad08209fa09ecd268833492ba93fa46f6f3607acbab7"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-databind",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "module",
"extension": "module"
},
"name": "jackson-databind-2.12.0-rc2.module",
"path": "com/fasterxml/jackson/core/jackson-databind/2.12.0-rc2",
"name": "jackson-databind-2.12.0.module",
"path": "com/fasterxml/jackson/core/jackson-databind/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.0-rc2/jackson-databind-2.12.0-rc2.module"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.0/jackson-databind-2.12.0.module"
],
"sha256": "fd0677a766c34d5582c5ff158f2f67ddd4e3003ef77727a0f420fdde2e1aaf11"
"sha256": "35ba920affa5b6c330d5845fc8e59c851bf7e7968d55a4ea7cd44de79081d5cd"
},
{
"id": {
"group": "com.fasterxml.jackson.core",
"name": "jackson-databind",
"version": "2.12.0-rc2",
"version": "2.12.0",
"type": "pom",
"extension": "pom"
},
"name": "jackson-databind-2.12.0-rc2.pom",
"path": "com/fasterxml/jackson/core/jackson-databind/2.12.0-rc2",
"name": "jackson-databind-2.12.0.pom",
"path": "com/fasterxml/jackson/core/jackson-databind/2.12.0",
"urls": [
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.0-rc2/jackson-databind-2.12.0-rc2.pom"
"https://plugins.gradle.org/m2/com/fasterxml/jackson/core/jackson-databind/2.12.0/jackson-databind-2.12.0.pom"
],
"sha256": "3bbdfbd66d7c5eb3d96c41eef81c6332a17cc40f46d073fd78e1c341d9af4bdc"
"sha256": "e66a9056e8805d3289f1d58b8192a07bb40615f389bc8ea5e7c492d01f6a8164"
},
{
"id": {
@@ -2438,6 +2439,38 @@
],
"sha256": "1dec64b9ad4a5dcdb12f4f15cf4b5ff0017993c960ba8d802011b507bba6ad05"
},
{
"id": {
"group": "io.strikt",
"name": "strikt-core",
"version": "0.28.1",
"type": "jar",
"extension": "jar"
},
"name": "strikt-core-0.28.1.jar",
"path": "io/strikt/strikt-core/0.28.1",
"urls": [
"https://jcenter.bintray.com/io/strikt/strikt-core/0.28.1/strikt-core-0.28.1.jar",
"https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.28.1/strikt-core-0.28.1.jar"
],
"sha256": "de7c29e7bf7456d439e686d1679de3d2de118cf57dd049e6f96bad69b0434bff"
},
{
"id": {
"group": "io.strikt",
"name": "strikt-core",
"version": "0.28.1",
"type": "pom",
"extension": "pom"
},
"name": "strikt-core-0.28.1.pom",
"path": "io/strikt/strikt-core/0.28.1",
"urls": [
"https://jcenter.bintray.com/io/strikt/strikt-core/0.28.1/strikt-core-0.28.1.pom",
"https://repo.gradle.org/gradle/libs-releases/io/strikt/strikt-core/0.28.1/strikt-core-0.28.1.pom"
],
"sha256": "dfd92c19110e9eb0bf8560cc7c793358bc9cacc64eb9b0f79314961d686ddafe"
},
{
"id": {
"group": "net.ltgt.gradle.incap",
@@ -3011,6 +3044,38 @@
],
"sha256": "a4b9cfbb4bbda523af1e24d52c775fb9c0f7cb568e48b065d45aeb56e63c2762"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib",
"version": "1.4.20",
"type": "jar",
"extension": "jar"
},
"name": "kotlin-stdlib-1.4.20.jar",
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.jar",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.jar"
],
"sha256": "b8ab1da5cdc89cb084d41e1f28f20a42bd431538642a5741c52bbfae3fa3e656"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib",
"version": "1.4.20",
"type": "pom",
"extension": "pom"
},
"name": "kotlin-stdlib-1.4.20.pom",
"path": "org/jetbrains/kotlin/kotlin-stdlib/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.pom",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib/1.4.20/kotlin-stdlib-1.4.20.pom"
],
"sha256": "3985ef1f92828d582a43cec9cedb2626742e0fe1505d3136ebc298cc98bc234a"
},
{
"id": {
"group": "org.jetbrains.kotlin",
@@ -3043,6 +3108,38 @@
],
"sha256": "63480e72a7d4de742b49a6ff90e45f544ca37f3fe11af8b4839f9cd747515d00"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib-common",
"version": "1.4.20",
"type": "jar",
"extension": "jar"
},
"name": "kotlin-stdlib-common-1.4.20.jar",
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.jar",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.jar"
],
"sha256": "a7112c9b3cefee418286c9c9372f7af992bd1e6e030691d52f60cb36dbec8320"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib-common",
"version": "1.4.20",
"type": "pom",
"extension": "pom"
},
"name": "kotlin-stdlib-common-1.4.20.pom",
"path": "org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.pom",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-common/1.4.20/kotlin-stdlib-common-1.4.20.pom"
],
"sha256": "7c5706ebba57d444c2c9024289313a49386bea0996c03294c2b5709a750ff429"
},
{
"id": {
"group": "org.jetbrains.kotlin",
@@ -3075,6 +3172,38 @@
],
"sha256": "78f2fe1d48e99c64958930ccdc43fce5939460ecdfc65f302823a021d63c520d"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib-jdk7",
"version": "1.4.20",
"type": "jar",
"extension": "jar"
},
"name": "kotlin-stdlib-jdk7-1.4.20.jar",
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.jar",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.jar"
],
"sha256": "b5aeadb3d1a61eca622c85ba89de84dfb18d718933f7016a73eba51c405e4de6"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib-jdk7",
"version": "1.4.20",
"type": "pom",
"extension": "pom"
},
"name": "kotlin-stdlib-jdk7-1.4.20.pom",
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.pom",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk7/1.4.20/kotlin-stdlib-jdk7-1.4.20.pom"
],
"sha256": "398b62058326b0fc8bf55b239cba1469a07a69fa536a0a8f19d8cd644201c4d3"
},
{
"id": {
"group": "org.jetbrains.kotlin",
@@ -3107,6 +3236,38 @@
],
"sha256": "c2f4d70082dbbfcea68fdfa74289cef32df9e4b5ddf359f006036dff1c5b06d6"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib-jdk8",
"version": "1.4.20",
"type": "jar",
"extension": "jar"
},
"name": "kotlin-stdlib-jdk8-1.4.20.jar",
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.jar",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.jar"
],
"sha256": "c7cf3f19de11336b375a7756a87fa3015d44b9a679503ed897dd16a620f4c75b"
},
{
"id": {
"group": "org.jetbrains.kotlin",
"name": "kotlin-stdlib-jdk8",
"version": "1.4.20",
"type": "pom",
"extension": "pom"
},
"name": "kotlin-stdlib-jdk8-1.4.20.pom",
"path": "org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20",
"urls": [
"https://jcenter.bintray.com/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.pom",
"https://repo.gradle.org/gradle/libs-releases/org/jetbrains/kotlin/kotlin-stdlib-jdk8/1.4.20/kotlin-stdlib-jdk8-1.4.20.pom"
],
"sha256": "9e9e5ef18adb90952c156d4d4bf7d0ba7abc58903423534d7b1831f5c6b9d5a8"
},
{
"id": {
"group": "org.jetbrains.kotlinx",

View File

@@ -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)