Reland "Adjust build and test scripts for handling ICU prebuilts."
Test: run-tests, buildbot-build.sh, run-libcore-tests, run-libjdwp-tests, gtests (on device and host)
Test: gart/tools/golem/build-target.sh, and art/build/apex/runtests.sh.
Bug: 157734636
Bug: 129332183
Change-Id: I77ee0f07fb2d73dff6465da905c966bffa2c5d47
diff --git a/Android.mk b/Android.mk
index 08afe7a..776906d 100644
--- a/Android.mk
+++ b/Android.mk
@@ -468,8 +468,15 @@
.PHONY: build-art
build-art: build-art-host build-art-target
+# For host, we extract the ICU data from the apex and install it to HOST_OUT/I18N_APEX.
+host-i18n-data-file := $(HOST_OUT)/$(I18N_APEX)/etc
+$(host-i18n-data-file): $(TARGET_OUT)/apex/$(I18N_APEX).apex $(HOST_OUT)/bin/deapexer
+ $(call extract-from-apex,$(I18N_APEX))
+ mkdir -p $(HOST_OUT)/$(I18N_APEX)/
+ cp -R $(TARGET_OUT)/apex/$(I18N_APEX)/etc/ $(HOST_OUT)/$(I18N_APEX)/
+
.PHONY: build-art-host
-build-art-host: $(HOST_OUT_EXECUTABLES)/art $(ART_HOST_DEPENDENCIES) $(HOST_CORE_IMG_OUTS)
+build-art-host: $(HOST_OUT_EXECUTABLES)/art $(ART_HOST_DEPENDENCIES) $(HOST_CORE_IMG_OUTS) $(host-i18n-data-file)
.PHONY: build-art-target
build-art-target: $(TARGET_OUT_EXECUTABLES)/art $(ART_TARGET_DEPENDENCIES) $(TARGET_CORE_IMG_OUTS)
@@ -657,16 +664,6 @@
# ART APEX.
# Also include:
-# - a copy of the ICU prebuilt .dat file in /system/etc/icu on target
-# (see module `icu-data-art-test-i18n`); and
-# so that it can be found even if the ART APEX is not available, by setting the
-# environment variable `ART_TEST_ANDROID_ART_ROOT` to "/system" on device. This
-# is a temporary change needed until Golem fully supports the ART APEX.
-#
-# TODO(b/129332183): Remove this when Golem has full support for the
-# ART APEX.
-
-# Also include:
# - a copy of the time zone data prebuilt files in
# /system/etc/tzdata_module/etc/tz and /system/etc/tzdata_module/etc/icu
# on target, (see modules `tzdata-art-test-tzdata`,
@@ -688,7 +685,6 @@
$(ART_TARGET_SHARED_LIBRARY_BENCHMARK) \
$(TARGET_OUT_SHARED_LIBRARIES)/libz.so \
libartpalette-system \
- icu-data-art-test-i18n \
tzdata-art-test-tzdata tzlookup.xml-art-test-tzdata \
tz_version-art-test-tzdata icu_overlay-art-test-tzdata \
standalone-apex-files
diff --git a/build/Android.common_path.mk b/build/Android.common_path.mk
index 3ff2612..801a448 100644
--- a/build/Android.common_path.mk
+++ b/build/Android.common_path.mk
@@ -67,7 +67,7 @@
ART_CORE_SHARED_LIBRARIES := libjavacore libopenjdk libopenjdkjvm libopenjdkjvmti
ART_CORE_SHARED_DEBUG_LIBRARIES := libopenjdkd libopenjdkjvmd libopenjdkjvmtid
-ART_HOST_CORE_SHARED_LIBRARIES := $(ART_CORE_SHARED_LIBRARIES) libandroidicu-host libicuuc-host libicui18n-host libicu_jni
+ART_HOST_CORE_SHARED_LIBRARIES := $(ART_CORE_SHARED_LIBRARIES) libicuuc-host libicui18n-host libicu_jni
ART_HOST_SHARED_LIBRARY_DEPENDENCIES := $(foreach lib,$(ART_HOST_CORE_SHARED_LIBRARIES), $(ART_HOST_OUT_SHARED_LIBRARIES)/$(lib)$(ART_HOST_SHLIB_EXTENSION))
ART_HOST_SHARED_LIBRARY_DEBUG_DEPENDENCIES := $(foreach lib,$(ART_CORE_SHARED_DEBUG_LIBRARIES), $(ART_HOST_OUT_SHARED_LIBRARIES)/$(lib)$(ART_HOST_SHLIB_EXTENSION))
ifdef HOST_2ND_ARCH
diff --git a/build/Android.gtest.mk b/build/Android.gtest.mk
index a71ce41..7331033 100644
--- a/build/Android.gtest.mk
+++ b/build/Android.gtest.mk
@@ -176,6 +176,7 @@
# Dependencies for all host gtests.
gtest_deps := $$(ART_HOST_DEX_DEPENDENCIES) \
$$(ART_TEST_HOST_GTEST_DEPENDENCIES) \
+ $$(HOST_OUT)/$$(I18N_APEX)/etc \
$$(HOST_BOOT_IMAGE_JARS) \
$$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libicu_jni$$(ART_HOST_SHLIB_EXTENSION) \
$$($(3)ART_HOST_OUT_SHARED_LIBRARIES)/libjavacore$$(ART_HOST_SHLIB_EXTENSION) \
@@ -254,7 +255,7 @@
gtest_suffix :=
endef # define-art-gtest-rule-host
-ART_TEST_HOST_GTEST_DEPENDENCIES :=
+ART_TEST_HOST_GTEST_DEPENDENCIES := $(host-i18n-data-file)
ART_TEST_TARGET_GTEST_DEPENDENCIES := $(TESTING_ART_APEX)
# Add the additional dependencies for the specified test
@@ -306,7 +307,7 @@
ifeq ($(ART_BUILD_TARGET),true)
$(foreach name,$(ART_TARGET_GTEST_NAMES), $(eval $(call add-art-gtest-dependencies,$(name),)))
ART_TEST_TARGET_GTEST_DEPENDENCIES += \
- libicu_jni.com.android.i18n \
+ com.android.i18n \
libjavacore.com.android.art.testing \
libopenjdkd.com.android.art.testing \
com.android.art.testing \
diff --git a/tools/bootjars.sh b/tools/bootjars.sh
index 5516bfb..6c39d31 100755
--- a/tools/bootjars.sh
+++ b/tools/bootjars.sh
@@ -113,7 +113,12 @@
if [[ $jar == "conscrypt" ]]; then
echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.conscrypt_intermediates/classes.jar"
elif [[ $jar == "core-icu4j" ]]; then
- echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.i18n_intermediates/classes.jar"
+ # The location of ICU is different on an unbundled build.
+ if [[ -f "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.i18n_intermediates/classes.jar" ]]; then
+ echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.i18n_intermediates/classes.jar"
+ else
+ echo "$intermediates_dir/JAVA_LIBRARIES/${jar}_intermediates/classes.jar"
+ fi
else
echo "$intermediates_dir/JAVA_LIBRARIES/${jar}.com.android.art.testing_intermediates/classes.jar"
fi
diff --git a/tools/buildbot-build.sh b/tools/buildbot-build.sh
index dd8c188..80f771f 100755
--- a/tools/buildbot-build.sh
+++ b/tools/buildbot-build.sh
@@ -91,8 +91,8 @@
make_command="build/soong/soong_ui.bash --make-mode $j_arg $extra_args $showcommands build-art-target-tests $common_targets"
make_command+=" libnetd_client-target toybox sh"
make_command+=" debuggerd su gdbserver"
- # vogar requires the class files for conscrypt.
- make_command+=" conscrypt"
+ # vogar requires the class files for conscrypt and ICU.
+ make_command+=" conscrypt core-icu4j"
make_command+=" ${ANDROID_PRODUCT_OUT#"${ANDROID_BUILD_TOP}/"}/system/etc/public.libraries.txt"
# Targets required to generate a linker configuration for device within the
# chroot environment. The *.libraries.txt targets are required by