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 = {