about summary refs log tree commit diff
path: root/pkgs/build-support/release/ant-build.nix
diff options
context:
space:
mode:
authorRob Vermaas <rob.vermaas@gmail.com>2010-03-05 10:09:22 +0000
committerRob Vermaas <rob.vermaas@gmail.com>2010-03-05 10:09:22 +0000
commitedb6a80ac3b4eff392718139baa6f6df8f2aa052 (patch)
tree387ef6cae2280005d8fe26932eaabbf8c30f8579 /pkgs/build-support/release/ant-build.nix
parent4523a86c92989ff20172b2de436c464a5b58795d (diff)
downloadnixlib-edb6a80ac3b4eff392718139baa6f6df8f2aa052.tar
nixlib-edb6a80ac3b4eff392718139baa6f6df8f2aa052.tar.gz
nixlib-edb6a80ac3b4eff392718139baa6f6df8f2aa052.tar.bz2
nixlib-edb6a80ac3b4eff392718139baa6f6df8f2aa052.tar.lz
nixlib-edb6a80ac3b4eff392718139baa6f6df8f2aa052.tar.xz
nixlib-edb6a80ac3b4eff392718139baa6f6df8f2aa052.tar.zst
nixlib-edb6a80ac3b4eff392718139baa6f6df8f2aa052.zip
ant builder
svn path=/nixpkgs/trunk/; revision=20395
Diffstat (limited to 'pkgs/build-support/release/ant-build.nix')
-rw-r--r--pkgs/build-support/release/ant-build.nix85
1 files changed, 85 insertions, 0 deletions
diff --git a/pkgs/build-support/release/ant-build.nix b/pkgs/build-support/release/ant-build.nix
new file mode 100644
index 000000000000..7aa449af3a6a
--- /dev/null
+++ b/pkgs/build-support/release/ant-build.nix
@@ -0,0 +1,85 @@
+{ src
+, stdenv
+, name
+, antTargets ? []
+, jars ? []
+, jarWrappers ? []
+, antProperties ? []
+, ... } @ args:
+
+let
+  antFlags = stdenv.lib.concatMapStrings ({name, value}: "-D${name}=${value}" ) antProperties ;
+in
+stdenv.mkDerivation (
+
+  {
+    showBuildStats = true;
+
+    postPhases =
+      ["generateWrappersPhase" "finalPhase"];
+
+    installPhase = ''
+      ensureDir $out/lib/java
+      ${ if jars == [] then '' 
+           find . -name "*.jar" | xargs -I{} cp -v {} $out/lib/java
+         '' else stdenv.lib.concatMapStrings (j: ''
+           cp -v ${j} $out/lib/java
+           echo file jar $out/lib/java/${j} >> $out/nix-support/hydra-build-products
+         '') jars }
+    '';
+
+    generateWrappersPhase = '' 
+      header "Generating jar wrappers"
+    '' + (stdenv.lib.concatMapStrings (w: ''
+
+      cat >> $out/bin/jclasslib <<EOF
+      #! /bin/sh
+      export JAVA_HOME=$jre
+      $jre/bin/java ${if w ? mainClass then "-cp $out/lib/java/${w.jar} ${w.mainClass}" else "-jar $out/lib/java/${w.jar}"} \$@
+      EOF
+
+      chmod a+x $out/bin/${w.name} || exit 1
+    '') jarWrappers) + ''
+      closeNest
+    '';
+
+    buildPhase = if antTargets == [] then ''
+      header "Building default ant target"
+      ant ${antFlags}
+      closeNest
+    '' else stdenv.lib.concatMapStrings (t: ''
+      header "Building '${t}' target"
+      ant ${antFlags} ${t} 
+      closeNest
+    '') antTargets;
+
+    finalPhase =
+      ''
+        # Propagate the release name of the source tarball.  This is
+        # to get nice package names in channels.
+        if test -e $origSrc/nix-support/hydra-release-name; then
+          cp $origSrc/nix-support/hydra-release-name $out/nix-support/hydra-release-name
+        fi
+      '';
+  }
+
+  // removeAttrs args ["antProperties"] // 
+
+  {
+    name = name + (if src ? version then "-" + src.version else "");
+  
+    postHook = ''
+      ensureDir $out/nix-support
+      echo "$system" > $out/nix-support/system
+
+      # If `src' is the result of a call to `makeSourceTarball', then it
+      # has a subdirectory containing the actual tarball(s).  If there are
+      # multiple tarballs, just pick the first one.
+      origSrc=$src
+      if test -d $src/tarballs; then
+          src=$(ls $src/tarballs/*.tar.bz2 $src/tarballs/*.tar.gz | sort | head -1)
+      fi
+
+    ''; 
+  }
+)