summary refs log tree commit diff
diff options
context:
space:
mode:
authorTim Steinbach <tim@nequissimus.com>2016-10-30 11:41:20 -0400
committerTim Steinbach <tim@nequissimus.com>2016-11-14 15:19:33 -0500
commitd849c0e2e1236b22e298254e75f8d30a665af66f (patch)
treec2359fb008fedd8ecad94deb457deb9df5df4af3
parent870fc844126d7fec49bfff4f82fcc852248ffd92 (diff)
downloadnixpkgs-d849c0e2e1236b22e298254e75f8d30a665af66f.tar
nixpkgs-d849c0e2e1236b22e298254e75f8d30a665af66f.tar.gz
nixpkgs-d849c0e2e1236b22e298254e75f8d30a665af66f.tar.bz2
nixpkgs-d849c0e2e1236b22e298254e75f8d30a665af66f.tar.lz
nixpkgs-d849c0e2e1236b22e298254e75f8d30a665af66f.tar.xz
nixpkgs-d849c0e2e1236b22e298254e75f8d30a665af66f.tar.zst
nixpkgs-d849c0e2e1236b22e298254e75f8d30a665af66f.zip
Build support
-rw-r--r--pkgs/build-support/fetchurl/mirrors.nix5
-rw-r--r--pkgs/development/java-modules/build-maven-package.nix26
-rw-r--r--pkgs/development/java-modules/m2install.nix21
-rw-r--r--pkgs/top-level/all-packages.nix4
4 files changed, 56 insertions, 0 deletions
diff --git a/pkgs/build-support/fetchurl/mirrors.nix b/pkgs/build-support/fetchurl/mirrors.nix
index 5ae5eb105e7..0304165828f 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 00000000000..182740c552d
--- /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 "<settings><mirrors>\
+        <mirror><id>tmpm2</id><url>file://$out/m2</url><mirrorOf>*</mirrorOf></mirror></mirrors>\
+        <localRepository>$out/m2</localRepository></settings>" >> $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 00000000000..56ae8132c61
--- /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 6cb32f3ce4d..bd0bdc0b510 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 {