From d849c0e2e1236b22e298254e75f8d30a665af66f Mon Sep 17 00:00:00 2001 From: Tim Steinbach Date: Sun, 30 Oct 2016 11:41:20 -0400 Subject: Build support --- pkgs/build-support/fetchurl/mirrors.nix | 5 +++++ .../java-modules/build-maven-package.nix | 26 ++++++++++++++++++++++ pkgs/development/java-modules/m2install.nix | 21 +++++++++++++++++ pkgs/top-level/all-packages.nix | 4 ++++ 4 files changed, 56 insertions(+) create mode 100644 pkgs/development/java-modules/build-maven-package.nix create mode 100644 pkgs/development/java-modules/m2install.nix diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix index 5ae5eb105e79..0304165828f0 100644 --- a/pkgs/build-support/fetchurl/mirrors.nix +++ b/pkgs/build-support/fetchurl/mirrors.nix @@ -396,4 +396,9 @@ rec { https://archive.mozilla.org/pub/ ]; + # Maven Central + maven = [ + http://repo1.maven.org/maven2 + http://central.maven.org/maven2 + ]; } diff --git a/pkgs/development/java-modules/build-maven-package.nix b/pkgs/development/java-modules/build-maven-package.nix new file mode 100644 index 000000000000..182740c552d8 --- /dev/null +++ b/pkgs/development/java-modules/build-maven-package.nix @@ -0,0 +1,26 @@ +{ stdenv, maven, lib }: +{ mavenDeps, src, name, meta, m2Path, ... }: + +with builtins; +with lib; + +stdenv.mkDerivation rec { + inherit mavenDeps src name meta m2Path; + + flatDeps = flatten mavenDeps; + + propagatedBuildInput = [ maven ] ++ flatDeps; + + find = ''find ${foldl' (x: y: x + " " + y) "" (map (x: x + "/m2/") flatDeps)} -type d -printf '%P\n' | xargs -I {} mkdir -p $out/m2/{}''; + copy = ''cp -rs ${foldl' (x: y: x + " " + y) "" (map (x: x + "/m2/*") flatDeps)} $out/m2''; + + buildPhase = '' + mkdir -p $out/m2/${m2Path} + ${optionalString (length flatDeps > 0) find} + ${optionalString (length flatDeps > 0) copy} + echo "\ + tmpm2file://$out/m2*\ + $out/m2" >> $out/m2/settings.xml + ${maven}/bin/mvn clean install -Dmaven.test.skip=true -gs $out/m2/settings.xml + ''; +} diff --git a/pkgs/development/java-modules/m2install.nix b/pkgs/development/java-modules/m2install.nix new file mode 100644 index 000000000000..56ae8132c61c --- /dev/null +++ b/pkgs/development/java-modules/m2install.nix @@ -0,0 +1,21 @@ +{ stdenv, fetchurl }: +{ version, baseName, package, sha512, type ? "jar" }: + +let + name = "${baseName}-${version}"; + m2Path = "${package}/${baseName}/${version}"; + m2File = "${name}.${type}"; + src = fetchurl rec { + inherit sha512; + url = "mirror://maven/${m2Path}/${m2File}"; + }; +in stdenv.mkDerivation rec { + inherit name m2Path m2File src; + + installPhase = '' + mkdir -p $out/m2/$m2Path + cp $src $out/m2/$m2Path/$m2File + ''; + + phases = "installPhase"; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 6cb32f3ce4df..bd0bdc0b5109 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -9761,6 +9761,10 @@ in leaps = callPackage ../development/tools/leaps { }; + ### DEVELOPMENT / JAVA MODULES + + javaPackages = recurseIntoAttrs (callPackage ./java-packages.nix { }); + ### DEVELOPMENT / LISP MODULES asdf = callPackage ../development/lisp-modules/asdf { -- cgit 1.4.1