From 5547f68449dcf185257c4d2df0a763df2b695654 Mon Sep 17 00:00:00 2001
From: Tomodachi94 <tomodachi94@protonmail.com>
Date: Tue, 26 Nov 2024 21:55:35 +0000
Subject: [PATCH] ant: use upstream launcher script

---
 pkgs/by-name/ap/apacheAnt/package.nix | 71 +++++++--------------------
 1 file changed, 18 insertions(+), 53 deletions(-)

diff --git a/pkgs/by-name/ap/apacheAnt/package.nix b/pkgs/by-name/ap/apacheAnt/package.nix
index 785a518edd3b11..338ae22b49f007 100644
--- a/pkgs/by-name/ap/apacheAnt/package.nix
+++ b/pkgs/by-name/ap/apacheAnt/package.nix
@@ -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";
@@ -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 = {