From bc05b570e65b3c36c99704480c2c5d55dd841776 Mon Sep 17 00:00:00 2001 From: Mikhail Volkhov Date: Sun, 22 Nov 2015 12:46:10 +0300 Subject: [PATCH] gradle: refactor --- .../tools/build-managers/gradle/default.nix | 73 +++++++++++-------- pkgs/top-level/all-packages.nix | 6 +- 2 files changed, 47 insertions(+), 32 deletions(-) diff --git a/pkgs/development/tools/build-managers/gradle/default.nix b/pkgs/development/tools/build-managers/gradle/default.nix index ca8c57170670..8055a918ff3b 100644 --- a/pkgs/development/tools/build-managers/gradle/default.nix +++ b/pkgs/development/tools/build-managers/gradle/default.nix @@ -1,39 +1,54 @@ { stdenv, fetchurl, unzip, jdk, makeWrapper }: -stdenv.mkDerivation rec { - name = "gradle-2.8"; +rec { + gradleGen = {name, src} : stdenv.mkDerivation rec { + inherit name src; - src = fetchurl { - url = "http://services.gradle.org/distributions/${name}-bin.zip"; - sha256 = "1jq3m6ihvcxyp37mwsg3i8li9hd6rpv8ri8ih2mgvph4y71bk3d8"; + installPhase = '' + mkdir -pv $out/lib/gradle/ + cp -rv lib/ $out/lib/gradle/ + + gradle_launcher_jar=$(echo $out/gradle/lib/gradle-launcher-*.jar) + test -f $gradle_launcher_jar + makeWrapper ${jdk}/bin/java $out/bin/gradle \ + --set JAVA_HOME ${jdk} \ + --add-flags "-classpath $gradle_launcher_jar org.gradle.launcher.GradleMain" + ''; + + phases = "unpackPhase installPhase"; + + buildInputs = [ unzip jdk makeWrapper ]; + + meta = { + description = "Enterprise-grade build system"; + longDescription = '' + Gradle is a build system which offers you ease, power and freedom. + You can choose the balance for yourself. It has powerful multi-project + build support. It has a layer on top of Ivy that provides a + build-by-convention integration for Ivy. It gives you always the choice + between the flexibility of Ant and the convenience of a + build-by-convention behavior. + ''; + homepage = http://www.gradle.org/; + license = stdenv.lib.licenses.asl20; + }; }; - installPhase = '' - mkdir -pv $out/gradle - cp -rv lib $out/gradle + gradle28 = gradleGen rec { + name = "gradle-2.8"; - gradle_launcher_jar=$(echo $out/gradle/lib/gradle-launcher-*.jar) - test -f $gradle_launcher_jar - makeWrapper ${jdk}/bin/java $out/bin/gradle \ - --set JAVA_HOME ${jdk} \ - --add-flags "-classpath $gradle_launcher_jar org.gradle.launcher.GradleMain" - ''; + src = fetchurl { + url = "http://services.gradle.org/distributions/${name}-bin.zip"; + sha256 = "1jq3m6ihvcxyp37mwsg3i8li9hd6rpv8ri8ih2mgvph4y71bk3d8"; + }; + }; - phases = "unpackPhase installPhase"; + gradle25 = gradleGen rec { + name = "gradle-2.5"; - buildInputs = [ unzip jdk makeWrapper ]; - - meta = { - description = "Enterprise-grade build system"; - longDescription = '' - Gradle is a build system which offers you ease, power and freedom. - You can choose the balance for yourself. It has powerful multi-project - build support. It has a layer on top of Ivy that provides a - build-by-convention integration for Ivy. It gives you always the choice - between the flexibility of Ant and the convenience of a - build-by-convention behavior. - ''; - homepage = http://www.gradle.org/; - license = stdenv.lib.licenses.asl20; + src = fetchurl { + url = "http://services.gradle.org/distributions/${name}-bin.zip"; + sha256 = "0mc5lf6phkncx77r0papzmfvyiqm0y26x50ipvmzkcsbn463x59z"; + }; }; } diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 5196807a16a8..d0b26240d937 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -5648,9 +5648,9 @@ let gotty = goPackages.gotty.bin // { outputs = [ "bin" ]; }; - gradle = callPackage ../development/tools/build-managers/gradle { }; - - gradle25 = callPackage ../development/tools/build-managers/gradle/2.5.nix { }; + gradleGen = callPackage ../development/tools/build-managers/gradle { }; + gradle = self.gradleGen.gradle28; + gradle25 = self.gradleGen.gradle25; gperf = callPackage ../development/tools/misc/gperf { };