Skip to content

Commit

Permalink
ant: use upstream launcher script
Browse files Browse the repository at this point in the history
  • Loading branch information
tomodachi94 committed Nov 26, 2024
1 parent 3b5cb28 commit 5547f68
Showing 1 changed file with 18 additions and 53 deletions.
71 changes: 18 additions & 53 deletions pkgs/by-name/ap/apacheAnt/package.nix
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
{ fetchurl, lib, stdenv, coreutils, makeWrapper, gitUpdater }:
{ fetchurl, lib, stdenv, jre, coreutils, makeWrapper, gitUpdater }:

stdenv.mkDerivation rec {
pname = "ant";
version = "1.10.15";

nativeBuildInputs = [ makeWrapper ];
nativeBuildInputs = [ ];

buildInputs = [ jre ];

src = fetchurl {
url = "mirror://apache/ant/binaries/apache-ant-${version}-bin.tar.bz2";
Expand All @@ -16,66 +18,29 @@ stdenv.mkDerivation rec {
sha256 = "1l8say86bz9gxp4yy777z7nm4j6m905pg342li1aphc14p5grvwn";
};

postPatch = ''
# Hard-code immutable paths
substituteInPlace bin/ant \
--replace-fail '$JAVA_HOME' '${jre.home}' \
--replace-fail '$ANT_HOME' "$out/lib/ant" \
--replace-fail '$ANT_LIB' "$out/lib/ant/lib" \
--replace-fail '$CLASSPATH' "$out/lib/ant/lib"
'';

installPhase =
''
mkdir -p $out/bin $out/lib/ant
mkdir -p $out/lib/ant
mv * $out/lib/ant/
# Get rid of the manual (35 MiB). Maybe we should put this in a
# separate output. Keep the antRun script since it's vanilla sh
# and needed for the <exec/> task (but since we set ANT_HOME to
# a weird value, we have to move antRun to a weird location).
# Get rid of the other Ant scripts since we provide our own.
mv $out/lib/ant/bin/antRun $out/bin/
rm -rf $out/lib/ant/{manual,bin,WHATSNEW}
mkdir $out/lib/ant/bin
mv $out/bin/antRun $out/lib/ant/bin/
# separate output.
rm -rf $out/lib/ant/{manual,WHATSNEW}
ln -s $out/lib/ant/bin $out
# Install ant-contrib.
unpackFile $contrib
cp -p ant-contrib/ant-contrib-*.jar $out/lib/ant/lib/
cat >> $out/bin/ant <<EOF
#! ${stdenv.shell} -e
ANT_HOME=$out/lib/ant
# Find the JDK by looking for javac. As a fall-back, find the
# JRE by looking for java. The latter allows just the JRE to be
# used with (say) ECJ as the compiler. Finally, allow the GNU
# JVM.
if [ -z "\''${JAVA_HOME-}" ]; then
for i in javac java gij; do
if p="\$(type -p \$i)"; then
export JAVA_HOME="\$(${coreutils}/bin/dirname \$(${coreutils}/bin/dirname \$(${coreutils}/bin/readlink -f \$p)))"
break
fi
done
if [ -z "\''${JAVA_HOME-}" ]; then
echo "\$0: cannot find the JDK or JRE" >&2
exit 1
fi
fi
if [ -z \$NIX_JVM ]; then
if [ -e \$JAVA_HOME/bin/java ]; then
NIX_JVM=\$JAVA_HOME/bin/java
elif [ -e \$JAVA_HOME/bin/gij ]; then
NIX_JVM=\$JAVA_HOME/bin/gij
else
NIX_JVM=java
fi
fi
LOCALCLASSPATH="\$ANT_HOME/lib/ant-launcher.jar\''${LOCALCLASSPATH:+:}\$LOCALCLASSPATH"
exec \$NIX_JVM \$NIX_ANT_OPTS \$ANT_OPTS -classpath "\$LOCALCLASSPATH" \
-Dant.home=\$ANT_HOME -Dant.library.dir="\$ANT_LIB" \
org.apache.tools.ant.launch.Launcher \$NIX_ANT_ARGS \$ANT_ARGS \
-cp "\$CLASSPATH" "\$@"
EOF
chmod +x $out/bin/ant
''; # */

passthru = {
Expand Down

0 comments on commit 5547f68

Please sign in to comment.