{ 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"]; prePhases = ["antSetupPhase"]; antSetupPhase = '' if test "$hydraAntLogger" != "" ; then export ANT_ARGS="-logger org.hydra.ant.HydraLogger -lib `ls $hydraAntLogger/lib/java/*.jar | head -1`" fi ''; 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/${w.name} < $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 ''; } )