From 193175094081e9cc3c44e2b3ee290195b1b89613 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Fri, 30 Jun 2017 16:01:45 -0700 Subject: [PATCH] Use java prebuilts Point the make java variables at JDK prebuilts in prebuilts/jdk/jdk8, add them to the path, and clean up some old overrides. Bug: 62956999 Test: m -j checkbuild Change-Id: Ibbeb30fab96e45aedd5bb6d710d1170f85789982 --- core/combo/javac.mk | 20 ++++++-------- core/config.mk | 23 +++++++++-------- core/find-jdk-tools-jar.sh | 20 -------------- envsetup.sh | 53 ++++---------------------------------- 4 files changed, 25 insertions(+), 91 deletions(-) delete mode 100755 core/find-jdk-tools-jar.sh diff --git a/core/combo/javac.mk b/core/combo/javac.mk index 5c2668c17..6d05e068d 100644 --- a/core/combo/javac.mk +++ b/core/combo/javac.mk @@ -16,16 +16,20 @@ endif common_jdk_flags := -Xmaxerrs 9999999 +ANDROID_JAVA_HOME := prebuilts/jdk/jdk8/$(HOST_PREBUILT_TAG) +ANDROID_JAVA_TOOLCHAIN := $(ANDROID_JAVA_HOME)/bin +export JAVA_HOME := $(ANDROID_JAVA_HOME) + # Use the indexer wrapper to index the codebase instead of the javac compiler ifeq ($(ALTERNATE_JAVAC),) -JAVACC := javac +JAVACC := $(ANDROID_JAVA_TOOLCHAIN)/javac else JAVACC := $(ALTERNATE_JAVAC) endif -JAVA := java -JAVADOC := javadoc -JAR := jar +JAVA := $(ANDROID_JAVA_TOOLCHAIN)/java +JAVADOC := $(ANDROID_JAVA_TOOLCHAIN)/javadoc +JAR := $(ANDROID_JAVA_TOOLCHAIN)/jar # The actual compiler can be wrapped by setting the JAVAC_WRAPPER var. ifdef JAVAC_WRAPPER @@ -34,16 +38,8 @@ ifdef JAVAC_WRAPPER endif endif -# Whatever compiler is on this system. COMMON_JAVAC := $(JAVACC) -J-Xmx2048M $(common_jdk_flags) -# Eclipse. -ifeq ($(CUSTOM_JAVA_COMPILER), eclipse) - COMMON_JAVAC := java -Xmx256m -jar prebuilt/common/ecj/ecj.jar -5 \ - -maxProblems 9999999 -nowarn - $(info CUSTOM_JAVA_COMPILER=eclipse) -endif - GLOBAL_JAVAC_DEBUG_FLAGS := -g HOST_JAVAC ?= $(COMMON_JAVAC) diff --git a/core/config.mk b/core/config.mk index f839d3d65..00a3c3b1e 100644 --- a/core/config.mk +++ b/core/config.mk @@ -675,22 +675,13 @@ ANDROID_MANIFEST_MERGER := $(JAVA) -classpath prebuilts/devtools/tools/lib/manif COLUMN:= column -# We may not have the right JAVA_HOME/PATH set up yet when this is run from envsetup.sh. -ifneq ($(CALLED_FROM_SETUP),true) - # Path to tools.jar, or empty if EXPERIMENTAL_USE_OPENJDK9 is set HOST_JDK_TOOLS_JAR := # TODO: Remove HOST_JDK_TOOLS_JAR and all references to it once OpenJDK 8 # toolchains are no longer supported (i.e. when what is now # EXPERIMENTAL_USE_OPENJDK9 becomes the standard). http://b/38418220 ifeq ($(EXPERIMENTAL_USE_OPENJDK9),) -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 at $(HOST_JDK_TOOLS_JAR), please check if your JDK was installed correctly) -endif -endif +HOST_JDK_TOOLS_JAR := $(ANDROID_JAVA_TOOLCHAIN)/../lib/tools.jar endif # ifeq ($(EXPERIMENTAL_USE_OPENJDK9),) # Is the host JDK 64-bit version? @@ -698,7 +689,6 @@ HOST_JDK_IS_64BIT_VERSION := ifneq ($(filter 64-Bit, $(shell $(JAVA) -version 2>&1)),) HOST_JDK_IS_64BIT_VERSION := true endif -endif # CALLED_FROM_SETUP not true # It's called md5 on Mac OS and md5sum on Linux ifeq ($(HOST_OS),darwin) @@ -848,6 +838,17 @@ unexport ANDROID_JAVA_HOME unexport JAVA_HOME export ANDROID_BUILD_PATHS:=$(abspath $(BUILD_SYSTEM)/no_java_path):$(ANDROID_BUILD_PATHS) export PATH:=$(abspath $(BUILD_SYSTEM)/no_java_path):$(PATH) +else + # Put java first on the path + # TODO(ccross): remove this once tools run during the build no longer depend on + # finding java in the path + ifeq (,$(strip $(CALLED_FROM_SETUP))) + ifneq ($(shell which java),$(abspath $(ANDROID_JAVA_TOOLCHAIN)/java)) + $(warning Found incorrect java $(shell which java) in $$PATH) + $(warning Adding $(abspath $(ANDROID_JAVA_TOOLCHAIN)) to $$PATH) + export PATH:=$(abspath $(ANDROID_JAVA_TOOLCHAIN)):$(PATH) + endif + endif endif # Projects clean of compiler warnings should be compiled with -Werror. diff --git a/core/find-jdk-tools-jar.sh b/core/find-jdk-tools-jar.sh deleted file mode 100755 index ac0b3b6b5..000000000 --- a/core/find-jdk-tools-jar.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -if [ "x$ANDROID_JAVA_HOME" != x ] && [ -e "$ANDROID_JAVA_HOME/lib/tools.jar" ] ; then - echo $ANDROID_JAVA_HOME/lib/tools.jar -else - JAVAC=$(realpath $(which javac) 2>/dev/null) - if [ -z "$JAVAC" ]; then - JAVAC=$(readlink -f $(which javac) 2>/dev/null) - fi - if [ -z "$JAVAC" ]; then - JAVAC=$(which javac) - fi - if [ -z "$JAVAC" ] ; then - exit 1 - fi - while [ -L "$JAVAC" ] ; do - LSLINE=$(ls -l "$JAVAC") - JAVAC=$(echo -n "$LSLINE" | sed -e "s/.* -> //") - done - echo $JAVAC | sed -e 's:\(.*\)/javac$:\1/../lib/tools.jar:' -fi diff --git a/envsetup.sh b/envsetup.sh index d2bcd369d..dca817a16 100644 --- a/envsetup.sh +++ b/envsetup.sh @@ -248,13 +248,11 @@ function setpaths() export PATH=$ANDROID_BUILD_PATHS$PATH export PYTHONPATH=$T/development/python-packages:$PYTHONPATH - unset ANDROID_JAVA_TOOLCHAIN - unset ANDROID_PRE_BUILD_PATHS - if [ -n "$JAVA_HOME" ]; then - export ANDROID_JAVA_TOOLCHAIN=$JAVA_HOME/bin - export ANDROID_PRE_BUILD_PATHS=$ANDROID_JAVA_TOOLCHAIN: - export PATH=$ANDROID_PRE_BUILD_PATHS$PATH - fi + export ANDROID_JAVA_HOME=$(get_abs_build_var ANDROID_JAVA_HOME) + export JAVA_HOME=$ANDROID_JAVA_HOME + export ANDROID_JAVA_TOOLCHAIN=$(get_abs_build_var ANDROID_JAVA_TOOLCHAIN) + export ANDROID_PRE_BUILD_PATHS=$ANDROID_JAVA_TOOLCHAIN: + export PATH=$ANDROID_PRE_BUILD_PATHS$PATH unset ANDROID_PRODUCT_OUT export ANDROID_PRODUCT_OUT=$(get_abs_build_var PRODUCT_OUT) @@ -287,7 +285,6 @@ function printconfig() function set_stuff_for_environment() { settitle - set_java_home setpaths set_sequence_number @@ -1528,46 +1525,6 @@ function godir () { \cd $T/$pathname } -# Force JAVA_HOME to point to java 1.7/1.8 if it isn't already set. -function set_java_home() { - # Clear the existing JAVA_HOME value if we set it ourselves, so that - # we can reset it later, depending on the version of java the build - # system needs. - # - # If we don't do this, the JAVA_HOME value set by the first call to - # build/envsetup.sh will persist forever. - if [ -n "$ANDROID_SET_JAVA_HOME" ]; then - export JAVA_HOME="" - fi - - if [ ! "$JAVA_HOME" ]; then - if [ -n "$LEGACY_USE_JAVA7" ]; then - echo Warning: Support for JDK 7 will be dropped. Switch to JDK 8. - case `uname -s` in - Darwin) - export JAVA_HOME=$(/usr/libexec/java_home -v 1.7) - ;; - *) - export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 - ;; - esac - else - case `uname -s` in - Darwin) - export JAVA_HOME=$(/usr/libexec/java_home -v 1.8) - ;; - *) - export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64 - ;; - esac - fi - - # Keep track of the fact that we set JAVA_HOME ourselves, so that - # we can change it on the next envsetup.sh, if required. - export ANDROID_SET_JAVA_HOME=true - fi -} - # Print colored exit condition function pez { "$@"