tangled
alpha
login
or
join now
pyrox.dev
/
nixpkgs
0
fork
atom
lol
0
fork
atom
overview
issues
pulls
pipelines
gradle: Decouple gradleGen and JDK
Lorenz Leutgeb
4 years ago
01f4c7ec
6b68d74f
+125
-106
12 changed files
expand all
collapse all
unified
split
pkgs
development
compilers
openjdk
openjfx
11.nix
15.nix
tools
build-managers
gradle
default.nix
gradle-4.10.3-spec.nix
gradle-5.6.4-spec.nix
gradle-6.9.1-spec.nix
gradle-7.2-spec.nix
gradle-7.3-spec.nix
scenebuilder
default.nix
scenic-view
default.nix
games
mindustry
default.nix
top-level
all-packages.nix
+3
-3
pkgs/development/compilers/openjdk/openjfx/11.nix
reviewed
···
1
1
-
{ stdenv, lib, fetchurl, writeText, gradleGen, pkg-config, perl, cmake
1
1
+
{ stdenv, lib, fetchurl, writeText, gradle_4, pkg-config, perl, cmake
2
2
, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib, ffmpeg, python2, ruby
3
3
, openjdk11-bootstrap }:
4
4
···
7
7
update = ".0.3";
8
8
build = "1";
9
9
repover = "${major}${update}+${build}";
10
10
-
gradle_ = (gradleGen.override {
10
10
+
gradle_ = (gradle_4.override {
11
11
java = openjdk11-bootstrap;
12
12
-
}).gradle_4_10;
12
12
+
});
13
13
14
14
makePackage = args: stdenv.mkDerivation ({
15
15
version = "${major}${update}-${build}";
+3
-3
pkgs/development/compilers/openjdk/openjfx/15.nix
reviewed
···
1
1
-
{ stdenv, lib, fetchFromGitHub, writeText, openjdk11_headless, gradleGen
1
1
+
{ stdenv, lib, fetchFromGitHub, writeText, openjdk11_headless, gradle_5
2
2
, pkg-config, perl, cmake, gperf, gtk2, gtk3, libXtst, libXxf86vm, glib, alsa-lib
3
3
, ffmpeg, python3, ruby }:
4
4
···
7
7
update = ".0.1";
8
8
build = "+1";
9
9
repover = "${major}${update}${build}";
10
10
-
gradle_ = (gradleGen.override {
10
10
+
gradle_ = (gradle_5.override {
11
11
java = openjdk11_headless;
12
12
-
}).gradle_5_6;
12
12
+
});
13
13
14
14
makePackage = args: stdenv.mkDerivation ({
15
15
version = "${major}${update}${build}";
+102
-56
pkgs/development/tools/build-managers/gradle/default.nix
reviewed
···
1
1
-
{ lib, stdenv, fetchurl, unzip, jdk, java ? jdk, makeWrapper }:
1
1
+
{ jdk8, jdk11, jdk17 }:
2
2
3
3
rec {
4
4
-
gradleGen = { version, nativeVersion, sha256 }: stdenv.mkDerivation {
5
5
-
pname = "gradle";
6
6
-
inherit version;
4
4
+
gen =
7
5
8
8
-
src = fetchurl {
9
9
-
inherit sha256;
10
10
-
url = "https://services.gradle.org/distributions/gradle-${version}-bin.zip";
11
11
-
};
6
6
+
{ version, nativeVersion, sha256, defaultJava ? jdk8 }:
12
7
13
13
-
dontBuild = true;
8
8
+
{ lib, stdenv, fetchurl, makeWrapper, unzip, java ? defaultJava
9
9
+
, javaToolchains ? [ ] }:
14
10
15
15
-
nativeBuildInputs = [ makeWrapper unzip ];
16
16
-
buildInputs = [ java ];
11
11
+
stdenv.mkDerivation rec {
12
12
+
pname = "gradle";
13
13
+
inherit version;
17
14
18
18
-
installPhase = ''
19
19
-
mkdir -pv $out/lib/gradle/
20
20
-
cp -rv lib/ $out/lib/gradle/
15
15
+
src = fetchurl {
16
16
+
inherit sha256;
17
17
+
url =
18
18
+
"https://services.gradle.org/distributions/gradle-${version}-bin.zip";
19
19
+
};
21
20
22
22
-
gradle_launcher_jar=$(echo $out/lib/gradle/lib/gradle-launcher-*.jar)
23
23
-
test -f $gradle_launcher_jar
24
24
-
makeWrapper ${java}/bin/java $out/bin/gradle \
25
25
-
--set JAVA_HOME ${java} \
26
26
-
--add-flags "-classpath $gradle_launcher_jar org.gradle.launcher.GradleMain"
27
27
-
'';
21
21
+
dontBuild = true;
28
22
29
29
-
fixupPhase = if (!stdenv.isLinux) then ":" else
30
30
-
let arch = if stdenv.is64bit then "amd64" else "i386"; in
31
31
-
''
32
32
-
mkdir patching
33
33
-
pushd patching
34
34
-
jar xf $out/lib/gradle/lib/native-platform-linux-${arch}-${nativeVersion}.jar
35
35
-
patchelf --set-rpath "${stdenv.cc.cc.lib}/lib:${stdenv.cc.cc.lib}/lib64" net/rubygrapefruit/platform/linux-${arch}/libnative-platform.so
36
36
-
jar cf native-platform-linux-${arch}-${nativeVersion}.jar .
37
37
-
mv native-platform-linux-${arch}-${nativeVersion}.jar $out/lib/gradle/lib/
38
38
-
popd
23
23
+
nativeBuildInputs = [ makeWrapper unzip ];
24
24
+
buildInputs = [ java ];
39
25
40
40
-
# The scanner doesn't pick up the runtime dependency in the jar.
41
41
-
# Manually add a reference where it will be found.
42
42
-
mkdir $out/nix-support
43
43
-
echo ${stdenv.cc.cc} > $out/nix-support/manual-runtime-dependencies
44
44
-
'';
26
26
+
# NOTE: For more information on toolchains,
27
27
+
# see https://docs.gradle.org/current/userguide/toolchains.html
28
28
+
installPhase = with builtins;
29
29
+
let
30
30
+
toolchain = rec {
31
31
+
var = x: "JAVA_TOOLCHAIN_NIX_${toString x}";
32
32
+
vars = (lib.imap0 (i: x: ("${var i} ${x}")) javaToolchains);
33
33
+
varNames = lib.imap0 (i: x: var i) javaToolchains;
34
34
+
property = " -Porg.gradle.java.installations.fromEnv='${
35
35
+
concatStringsSep "," varNames
36
36
+
}'";
37
37
+
};
38
38
+
vars = concatStringsSep "\n" (map (x: " --set ${x} \\")
39
39
+
([ "JAVA_HOME ${java}" ] ++ toolchain.vars));
40
40
+
in ''
41
41
+
mkdir -pv $out/lib/gradle/
42
42
+
cp -rv lib/ $out/lib/gradle/
45
43
46
46
-
meta = with lib; {
47
47
-
description = "Enterprise-grade build system";
48
48
-
longDescription = ''
49
49
-
Gradle is a build system which offers you ease, power and freedom.
50
50
-
You can choose the balance for yourself. It has powerful multi-project
51
51
-
build support. It has a layer on top of Ivy that provides a
52
52
-
build-by-convention integration for Ivy. It gives you always the choice
53
53
-
between the flexibility of Ant and the convenience of a
54
54
-
build-by-convention behavior.
44
44
+
gradle_launcher_jar=$(echo $out/lib/gradle/lib/gradle-launcher-*.jar)
45
45
+
test -f $gradle_launcher_jar
46
46
+
makeWrapper ${java}/bin/java $out/bin/gradle \
47
47
+
${vars}
48
48
+
--add-flags "-classpath $gradle_launcher_jar org.gradle.launcher.GradleMain${toolchain.property}"
49
49
+
'';
50
50
+
51
51
+
dontFixup = !stdenv.isLinux;
52
52
+
53
53
+
fixupPhase = let arch = if stdenv.is64bit then "amd64" else "i386";
54
54
+
in ''
55
55
+
mkdir patching
56
56
+
pushd patching
57
57
+
jar xf $out/lib/gradle/lib/native-platform-linux-${arch}-${nativeVersion}.jar
58
58
+
patchelf --set-rpath "${stdenv.cc.cc.lib}/lib:${stdenv.cc.cc.lib}/lib64" net/rubygrapefruit/platform/linux-${arch}/libnative-platform.so
59
59
+
jar cf native-platform-linux-${arch}-${nativeVersion}.jar .
60
60
+
mv native-platform-linux-${arch}-${nativeVersion}.jar $out/lib/gradle/lib/
61
61
+
popd
62
62
+
63
63
+
# The scanner doesn't pick up the runtime dependency in the jar.
64
64
+
# Manually add a reference where it will be found.
65
65
+
mkdir $out/nix-support
66
66
+
echo ${stdenv.cc.cc} > $out/nix-support/manual-runtime-dependencies
55
67
'';
56
56
-
homepage = "https://www.gradle.org/";
57
57
-
changelog = "https://docs.gradle.org/${version}/release-notes.html";
58
58
-
downloadPage = "https://gradle.org/next-steps/?version=${version}";
59
59
-
license = licenses.asl20;
60
60
-
platforms = platforms.unix;
61
61
-
maintainers = with maintainers; [ lorenzleutgeb ];
68
68
+
69
69
+
meta = with lib; {
70
70
+
description = "Enterprise-grade build system";
71
71
+
longDescription = ''
72
72
+
Gradle is a build system which offers you ease, power and freedom.
73
73
+
You can choose the balance for yourself. It has powerful multi-project
74
74
+
build support. It has a layer on top of Ivy that provides a
75
75
+
build-by-convention integration for Ivy. It gives you always the choice
76
76
+
between the flexibility of Ant and the convenience of a
77
77
+
build-by-convention behavior.
78
78
+
'';
79
79
+
homepage = "https://www.gradle.org/";
80
80
+
changelog = "https://docs.gradle.org/${version}/release-notes.html";
81
81
+
downloadPage = "https://gradle.org/next-steps/?version=${version}";
82
82
+
license = licenses.asl20;
83
83
+
platforms = platforms.unix;
84
84
+
maintainers = with maintainers; [ lorenzleutgeb ];
85
85
+
};
62
86
};
87
87
+
88
88
+
# NOTE: Default JDKs are LTS versions and according to
89
89
+
# https://docs.gradle.org/current/userguide/compatibility.html
90
90
+
91
91
+
gradle_7 = gen {
92
92
+
version = "7.3";
93
93
+
nativeVersion = "0.22-milestone-21";
94
94
+
sha256 = "04741q7avmn7rv9h5s6dqj4ibnvdylxrlhvj9wb5kixx96nm53yy";
95
95
+
defaultJava = jdk17;
63
96
};
64
97
65
65
-
gradle_latest = gradle_7_3;
98
98
+
gradle_6 = gen {
99
99
+
version = "6.9.1";
100
100
+
nativeVersion = "0.22-milestone-20";
101
101
+
sha256 = "1zmjfwlh34b65rdx9izgavw3qwqqwm39h5siyj2bf0m55111a4lc";
102
102
+
defaultJava = jdk11;
103
103
+
};
66
104
67
67
-
gradle_7_3 = gradleGen (import ./gradle-7.3-spec.nix);
68
68
-
gradle_6_9 = gradleGen (import ./gradle-6.9.1-spec.nix);
105
105
+
# NOTE: No GitHub Release for the following versions. `update.sh` will not work.
106
106
+
gradle_5 = gen {
107
107
+
version = "5.6.4";
108
108
+
nativeVersion = "0.18";
109
109
+
sha256 = "03d86bbqd19h9xlanffcjcy3vg1k5905vzhf9mal9g21603nfc0z";
110
110
+
defaultJava = jdk11;
111
111
+
};
69
112
70
70
-
# NOTE: No GitHub Release for the following versions. Update.sh will not work.
71
71
-
gradle_5_6 = gradleGen (import ./gradle-5.6.4-spec.nix);
72
72
-
gradle_4_10 = gradleGen (import ./gradle-4.10.3-spec.nix);
113
113
+
gradle_4 = gen {
114
114
+
version = "4.10.3";
115
115
+
nativeVersion = "0.14";
116
116
+
sha256 = "0vhqxnk0yj3q9jam5w4kpia70i4h0q4pjxxqwynh3qml0vrcn9l6";
117
117
+
defaultJava = jdk8;
118
118
+
};
73
119
}
-5
pkgs/development/tools/build-managers/gradle/gradle-4.10.3-spec.nix
reviewed
···
1
1
-
{
2
2
-
version = "4.10.3";
3
3
-
nativeVersion = "0.14";
4
4
-
sha256 = "0vhqxnk0yj3q9jam5w4kpia70i4h0q4pjxxqwynh3qml0vrcn9l6";
5
5
-
}
-5
pkgs/development/tools/build-managers/gradle/gradle-5.6.4-spec.nix
reviewed
···
1
1
-
{
2
2
-
version = "5.6.4";
3
3
-
nativeVersion = "0.18";
4
4
-
sha256 = "03d86bbqd19h9xlanffcjcy3vg1k5905vzhf9mal9g21603nfc0z";
5
5
-
}
-5
pkgs/development/tools/build-managers/gradle/gradle-6.9.1-spec.nix
reviewed
···
1
1
-
{
2
2
-
version = "6.9.1";
3
3
-
nativeVersion = "0.22-milestone-20";
4
4
-
sha256 = "1zmjfwlh34b65rdx9izgavw3qwqqwm39h5siyj2bf0m55111a4lc";
5
5
-
}
-5
pkgs/development/tools/build-managers/gradle/gradle-7.2-spec.nix
reviewed
···
1
1
-
{
2
2
-
version = "7.2";
3
3
-
nativeVersion = "0.22-milestone-21";
4
4
-
sha256 = "1pg6w5czysywsgdvmll5bwd2p6y99cn5sn3gw69cps9mkjd710gm";
5
5
-
}
-5
pkgs/development/tools/build-managers/gradle/gradle-7.3-spec.nix
reviewed
···
1
1
-
{
2
2
-
version = "7.3";
3
3
-
nativeVersion = "0.22-milestone-21";
4
4
-
sha256 = "04741q7avmn7rv9h5s6dqj4ibnvdylxrlhvj9wb5kixx96nm53yy";
5
5
-
}
+2
-2
pkgs/development/tools/scenebuilder/default.nix
reviewed
···
1
1
-
{ lib, stdenv, fetchFromGitHub, jdk11, gradleGen, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell, makeWrapper, glib, wrapGAppsHook }:
1
1
+
{ lib, stdenv, fetchFromGitHub, jdk11, gradle_6, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell, makeWrapper, glib, wrapGAppsHook }:
2
2
let
3
3
-
gradle = (gradleGen.override (old: { java = jdk11; })).gradle_6_9;
3
3
+
gradle = gradle_6;
4
4
5
5
pname = "scenebuilder";
6
6
version = "15.0.1";
+1
-4
pkgs/development/tools/scenic-view/default.nix
reviewed
···
1
1
-
{ lib, stdenv, fetchFromGitHub, jdk, gradleGen, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell, makeWrapper }:
1
1
+
{ lib, stdenv, fetchFromGitHub, jdk, gradle, makeDesktopItem, copyDesktopItems, perl, writeText, runtimeShell, makeWrapper }:
2
2
let
3
3
-
# The default one still uses jdk8 (#89731)
4
4
-
gradle = (gradleGen.override (old: { java = jdk; })).gradle_latest;
5
5
-
6
3
pname = "scenic-view";
7
4
version = "11.0.2";
8
5
+6
-6
pkgs/games/mindustry/default.nix
reviewed
···
3
3
, makeDesktopItem
4
4
, copyDesktopItems
5
5
, fetchFromGitHub
6
6
-
, gradleGen
7
7
-
, jdk
6
6
+
, gradle_6
7
7
+
, jdk11
8
8
, perl
9
9
10
10
# for arc
···
87
87
popd
88
88
'';
89
89
90
90
-
# The default one still uses jdk8 (#89731)
91
91
-
gradle_6 = (gradleGen.override (old: { java = jdk; })).gradle_6_9;
90
90
+
jdk = jdk11;
91
91
+
gradle = (gradle_6.override (old: { java = jdk11; }));
92
92
93
93
# fake build to pre-download deps into fixed-output derivation
94
94
deps = stdenv.mkDerivation {
···
96
96
inherit version unpackPhase patches;
97
97
postPatch = cleanupMindustrySrc;
98
98
99
99
-
nativeBuildInputs = [ gradle_6 perl ];
99
99
+
nativeBuildInputs = [ gradle perl ];
100
100
# Here we download dependencies for both the server and the client so
101
101
# we only have to specify one hash for 'deps'. Deps can be garbage
102
102
# collected after the build, so this is not really an issue.
···
136
136
];
137
137
nativeBuildInputs = [
138
138
pkg-config
139
139
-
gradle_6
139
139
+
gradle
140
140
makeWrapper
141
141
jdk
142
142
] ++ lib.optionals enableClient [
+8
-7
pkgs/top-level/all-packages.nix
reviewed
···
14598
14598
14599
14599
gpuvis = callPackage ../development/tools/misc/gpuvis { };
14600
14600
14601
14601
-
gradleGen = callPackage ../development/tools/build-managers/gradle {
14602
14602
-
java = jdk8; # TODO: upgrade https://github.com/NixOS/nixpkgs/pull/89731
14601
14601
+
gradle-packages = import ../development/tools/build-managers/gradle {
14602
14602
+
inherit jdk8 jdk11 jdk17;
14603
14603
};
14604
14604
-
gradle = res.gradleGen.gradle_latest;
14605
14605
-
gradle_4 = res.gradleGen.gradle_4_10;
14606
14606
-
gradle_5 = res.gradleGen.gradle_5_6;
14607
14607
-
gradle_6 = res.gradleGen.gradle_6_9;
14608
14608
-
gradle_7 = res.gradleGen.gradle_7_3;
14604
14604
+
gradleGen = gradle-packages.gen;
14605
14605
+
gradle_4 = callPackage gradle-packages.gradle_4 { };
14606
14606
+
gradle_5 = callPackage gradle-packages.gradle_5 { };
14607
14607
+
gradle_6 = callPackage gradle-packages.gradle_6 { };
14608
14608
+
gradle_7 = callPackage gradle-packages.gradle_7 { };
14609
14609
+
gradle = gradle_7;
14609
14610
14610
14611
gperf = callPackage ../development/tools/misc/gperf { };
14611
14612
# 3.1 changed some parameters from int to size_t, leading to mismatches.