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 27, 2024
1 parent 3b5cb28 commit 194a89e
Showing 1 changed file with 21 additions and 54 deletions.
75 changes: 21 additions & 54 deletions pkgs/by-name/ap/apacheAnt/package.nix
Original file line number Diff line number Diff line change
@@ -1,10 +1,9 @@
{ fetchurl, lib, stdenv, coreutils, makeWrapper, gitUpdater }:

{ fetchurl, lib, stdenv, jre, coreutils, makeWrapper, gitUpdater }:
stdenv.mkDerivation rec {
pname = "ant";
version = "1.10.15";

nativeBuildInputs = [ makeWrapper ];
buildInputs = [ jre ];

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

postPatch = let
# Important: These strings are subject to Bash variable substitution.
# GNU sed has non-standard but useful handling of (literal) \n
vars = lib.concatStringsSep "\\n" [
"JAVA_HOME=${jre.home}"
"ANT_HOME=$out/lib/ant"
"CLASSPATH=$out/lib/ant/lib"
];
in ''
# Hard-code immutable paths by setting necessary variables
# immediately after the line with the shebang.
sed -i '/\/bin\/sh/a '"${vars}" bin/ant
'';

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 194a89e

Please sign in to comment.