diff options
author | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-01-09 11:14:36 +0100 |
---|---|---|
committer | Eelco Dolstra <eelco.dolstra@logicblox.com> | 2014-01-09 11:14:36 +0100 |
commit | 4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef (patch) | |
tree | 570a63d5d5ac6187401d7fc905e9e50a20b07039 /pkgs/development/tools/build-managers/apache-ant | |
parent | c32d0180e4fda3c69e9a50dfabb45dac004788f9 (diff) | |
download | nixlib-4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef.tar nixlib-4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef.tar.gz nixlib-4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef.tar.bz2 nixlib-4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef.tar.lz nixlib-4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef.tar.xz nixlib-4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef.tar.zst nixlib-4e29062fbcecf2ac3e7c146cd3b458c1e0eb57ef.zip |
ant: Support the OpenJRE (without OpenJDK) and the GNU JVM
For instance, a package can now say: buildInputs = [ ant jre ecj ]; which would cause the Eclipse compiler to be used with the OpenJRE. Similarly: buildInputs = [ ant gcj ]; uses the GNU JVM with the GNU Java compiler.
Diffstat (limited to 'pkgs/development/tools/build-managers/apache-ant')
-rw-r--r-- | pkgs/development/tools/build-managers/apache-ant/default.nix | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/pkgs/development/tools/build-managers/apache-ant/default.nix b/pkgs/development/tools/build-managers/apache-ant/default.nix index c3b00227c69c..97483e2a016d 100644 --- a/pkgs/development/tools/build-managers/apache-ant/default.nix +++ b/pkgs/development/tools/build-managers/apache-ant/default.nix @@ -36,17 +36,40 @@ stdenv.mkDerivation { 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 - if ! JAVACCMD="\$(type -p javac)"; then - echo "\$0: cannot find the Java SDK" >&2 + for i in javac java gij; do + if p="\$(type -p \$i)"; then + export JAVA_HOME="\$(dirname \$(dirname \$(readlink -f \$p)))" + break + fi + done + if [ -z "\$JAVA_HOME" ]; then + echo "\$0: cannot find the JDK or JRE" >&2 exit 1 fi - export JAVA_HOME="\$(dirname \$(dirname \$(readlink -f \$JAVACCMD)))" fi - LOCALCLASSPATH="\$ANT_HOME/lib/ant-launcher.jar:\$JAVA_HOME/lib/tools.jar\''${LOCALCLASSPATH:+:}\$LOCALCLASSPATH" + 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" + + if [ -e \$JAVA_HOME/lib/tools.jar ]; then + LOCALCLASSPATH="\$JAVA_HOME/lib/tools.jar\''${LOCALCLASSPATH:+:}\$LOCALCLASSPATH" + fi - exec "\$JAVA_HOME/bin/java" \$NIX_ANT_OPTS \$ANT_OPTS -classpath "\$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" "\$@" |