OSDN Git Service

Error out early on nonstandard JDK directory layouts
authorColin Cross <ccross@android.com>
Fri, 23 Oct 2015 21:33:51 +0000 (14:33 -0700)
committerColin Cross <ccross@android.com>
Sat, 24 Oct 2015 02:00:43 +0000 (19:00 -0700)
On Darwin, javac may be located in a nonstandard directory layout such as:
/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
The sed command to replace bin/javac with lib/tools.jar would fail to
match, resulting in the HOST_JDK_TOOLS_JAR being set to the javac path.
Since javac exists, the checks for missing tools.jar would all pass, and
javac would be added to the classpath instead of tools.jar, and causing
hard to debug errors about missing com.sun.javadoc when building doclava.

Change the sed command to replace /javac$, which should always be found,
with /../lib/tools.jar.

Change-Id: I5072f04636a5c14b3aeaa3a5cc3b366feae89c37

core/config.mk
core/find-jdk-tools-jar.sh

index 8863064..423cb9f 100644 (file)
@@ -533,7 +533,7 @@ HOST_JDK_TOOLS_JAR:= $(shell $(BUILD_SYSTEM)/find-jdk-tools-jar.sh)
 
 ifneq ($(HOST_JDK_TOOLS_JAR),)
 ifeq ($(wildcard $(HOST_JDK_TOOLS_JAR)),)
-$(error Error: could not find jdk tools.jar, please check if your JDK was installed correctly)
+$(error Error: could not find jdk tools.jar at $(HOST_JDK_TOOLS_JAR), please check if your JDK was installed correctly)
 endif
 endif
 
index 0224829..ac0b3b6 100755 (executable)
@@ -16,5 +16,5 @@ else
         LSLINE=$(ls -l "$JAVAC")
         JAVAC=$(echo -n "$LSLINE" | sed -e "s/.* -> //")
     done
-    echo $JAVAC | sed -e "s:\(.*\)/bin/javac.*:\\1/lib/tools.jar:"
+    echo $JAVAC | sed -e 's:\(.*\)/javac$:\1/../lib/tools.jar:'
 fi