Convert bionic dlext test zips to Android.bp
Use cc_genrules to create the dlext test zips needed by the bionic
tests. The genrules aren't visible to Make, and so don't work with
the `required` property. Move all of the dependencies to `data_bins`,
`data_libs` or `data` for helper binaries, shared libraries or
genrule zip files respectively. The `data*` properties copy the
files into the same directory as a test, respecting the
`bionic-loader-test-libs` relative path specified by each, but
does not put each helper binary in its own subdirectory, so update
the paths in each of the tests.
Bug: 200872604
Test: atest CtsBionicTestCases
Test: atest bionic-unit-tests
Test: cts-tradefed run commandAndExit cts -m CtsBionicTestCases
Test: adb push $OUT/data/nativetest/bionic-unit-tests /data/nativetest/ && adb shell /data/nativetest/bionic-unit-tests/bionic-unit-tests
Change-Id: Ic4257cb4104ff558326df2363730acd20464b051
diff --git a/tests/libs/Android.bp b/tests/libs/Android.bp
index fabcd04..cef95cd 100644
--- a/tests/libs/Android.bp
+++ b/tests/libs/Android.bp
@@ -1667,3 +1667,71 @@
memtag_heap: false,
},
}
+
+cc_genrule {
+ name: "libdlext_test_zip_zipaligned",
+ out: ["bionic-loader-test-libs/libdlext_test_zip/libdlext_test_zip_zipaligned.zip"],
+ tools: [
+ "soong_zip",
+ "bionic_tests_zipalign",
+ ],
+ srcs: [
+ ":libdlext_test_zip",
+ ":libatest_simple_zip",
+ ":exec_linker_helper",
+ ":exec_linker_helper_lib",
+ ],
+ cmd: "mkdir -p $(genDir)/zipdir/libdir &&" +
+ " cp $(in) $(genDir)/zipdir/libdir/ &&" +
+ " touch $(genDir)/zipdir/empty_file.txt &&" +
+ " $(location soong_zip) -o $(out).unaligned -L 0 -C $(genDir)/zipdir -D $(genDir)/zipdir &&" +
+ " $(location bionic_tests_zipalign) 4096 $(out).unaligned $(out)",
+
+ bazel_module: {
+ // Depends on soong_zip, which is not available yet.
+ bp2build_available: false
+ },
+}
+
+cc_genrule {
+ name: "libdlext_test_runpath_zip_zipaligned",
+ out: ["bionic-loader-test-libs/libdlext_test_runpath_zip/libdlext_test_runpath_zip_zipaligned.zip"],
+ tools: [
+ "soong_zip",
+ "bionic_tests_zipalign",
+ ],
+ srcs: [
+ ":libtest_dt_runpath_d_zip",
+ ":libtest_dt_runpath_a",
+ ":libtest_dt_runpath_b",
+ ":libtest_dt_runpath_c",
+ ":libtest_dt_runpath_x",
+ ":libtest_dt_runpath_y",
+ ],
+ cmd: "mkdir -p $(genDir)/zipdir/libdir &&" +
+ " if [[ \"$$CC_MULTILIB\" = lib32 ]]; then" +
+ " PRIVATE_LIB_OR_LIB64=lib;" +
+ " else" +
+ " PRIVATE_LIB_OR_LIB64=lib64;" +
+ " fi &&" +
+ " if [[ -n \"$$CC_NATIVE_BRIDGE\" ]]; then" +
+ " PRIVATE_LIB_OR_LIB64=$$PRIVATE_LIB_OR_LIB64/$$CC_NATIVE_BRIDGE;" +
+ " fi &&" +
+ " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_a &&" +
+ " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
+ " mkdir -p $(genDir)/zipdir/libdir/dt_runpath_y/$$PRIVATE_LIB_OR_LIB64 &&" +
+ " cp $(location :libtest_dt_runpath_d_zip) $(genDir)/zipdir/libdir &&" +
+ " cp $(location :libtest_dt_runpath_a) $(genDir)/zipdir/libdir/dt_runpath_a &&" +
+ " cp $(location :libtest_dt_runpath_b) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
+ " cp $(location :libtest_dt_runpath_c) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
+ " cp $(location :libtest_dt_runpath_x) $(genDir)/zipdir/libdir/dt_runpath_b_c_x &&" +
+ " cp $(location :libtest_dt_runpath_y) $(genDir)/zipdir/libdir/dt_runpath_y/$$PRIVATE_LIB_OR_LIB64 &&" +
+ " touch $(genDir)/zipdir/empty_file.txt &&" +
+ " $(location soong_zip) -o $(out).unaligned -L 0 -C $(genDir)/zipdir -D $(genDir)/zipdir &&" +
+ " $(location bionic_tests_zipalign) 4096 $(out).unaligned $(out)",
+
+ bazel_module: {
+ // Depends on soong_zip, which is not available yet.
+ bp2build_available: false
+ },
+}
diff --git a/tests/libs/Android.build.dlext_testzip.mk b/tests/libs/Android.build.dlext_testzip.mk
deleted file mode 100644
index 66ed343..0000000
--- a/tests/libs/Android.build.dlext_testzip.mk
+++ /dev/null
@@ -1,102 +0,0 @@
-#
-# Copyright (C) 2014 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-# -----------------------------------------------------------------------------
-# Library used by dlext tests - zipped and aligned
-# -----------------------------------------------------------------------------
-
-BIONIC_TESTS_ZIPALIGN := $(HOST_OUT_EXECUTABLES)/bionic_tests_zipalign
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := NATIVE_TESTS
-LOCAL_MODULE := libdlext_test_zip_zipaligned
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
-LOCAL_MODULE_SUFFIX := .zip
-LOCAL_MODULE_PATH := $($(bionic_2nd_arch_prefix)TARGET_OUT_DATA_NATIVE_TESTS)/bionic-loader-test-libs/libdlext_test_zip
-LOCAL_2ND_ARCH_VAR_PREFIX := $(bionic_2nd_arch_prefix)
-
-include $(BUILD_SYSTEM)/base_rules.mk
-
-my_shared_libs := \
- $(call intermediates-dir-for,SHARED_LIBRARIES,libdlext_test_zip,,,$(bionic_2nd_arch_prefix))/libdlext_test_zip.so \
- $(call intermediates-dir-for,SHARED_LIBRARIES,libatest_simple_zip,,,$(bionic_2nd_arch_prefix))/libatest_simple_zip.so \
- $(call intermediates-dir-for,NATIVE_TESTS,exec_linker_helper,,,$(bionic_2nd_arch_prefix))/exec_linker_helper \
- $(call intermediates-dir-for,SHARED_LIBRARIES,exec_linker_helper_lib,,,$(bionic_2nd_arch_prefix))/exec_linker_helper_lib.so
-
-$(LOCAL_BUILT_MODULE): PRIVATE_SHARED_LIBS := $(my_shared_libs)
-$(LOCAL_BUILT_MODULE): $(my_shared_libs) $(BIONIC_TESTS_ZIPALIGN)
- @echo "Aligning zip: $@"
- $(hide) rm -rf $@.unaligned $@ $(dir $@)/zipdir && mkdir -p $(dir $@)/zipdir/libdir
- $(hide) cp $(PRIVATE_SHARED_LIBS) $(dir $@)/zipdir/libdir
- $(hide) touch $(dir $@)/zipdir/empty_file.txt
- $(hide) (cd $(dir $@)/zipdir && zip -qrD0 ../$(notdir $@).unaligned .)
- $(hide) $(BIONIC_TESTS_ZIPALIGN) 4096 $@.unaligned $@
-
-include $(CLEAR_VARS)
-
-LOCAL_MODULE_CLASS := NATIVE_TESTS
-LOCAL_MODULE := libdlext_test_runpath_zip_zipaligned
-LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 SPDX-license-identifier-BSD
-LOCAL_LICENSE_CONDITIONS := notice
-LOCAL_NOTICE_FILE := $(LOCAL_PATH)/../NOTICE
-LOCAL_MODULE_SUFFIX := .zip
-LOCAL_MODULE_PATH := $($(bionic_2nd_arch_prefix)TARGET_OUT_DATA_NATIVE_TESTS)/bionic-loader-test-libs/libdlext_test_runpath_zip
-LOCAL_2ND_ARCH_VAR_PREFIX := $(bionic_2nd_arch_prefix)
-
-include $(BUILD_SYSTEM)/base_rules.mk
-lib_d := $(call intermediates-dir-for,SHARED_LIBRARIES,libtest_dt_runpath_d_zip,,,$(bionic_2nd_arch_prefix))/libtest_dt_runpath_d_zip.so
-lib_a := $(call intermediates-dir-for,SHARED_LIBRARIES,libtest_dt_runpath_a,,,$(bionic_2nd_arch_prefix))/libtest_dt_runpath_a.so
-lib_b := $(call intermediates-dir-for,SHARED_LIBRARIES,libtest_dt_runpath_b,,,$(bionic_2nd_arch_prefix))/libtest_dt_runpath_b.so
-lib_c := $(call intermediates-dir-for,SHARED_LIBRARIES,libtest_dt_runpath_c,,,$(bionic_2nd_arch_prefix))/libtest_dt_runpath_c.so
-lib_x := $(call intermediates-dir-for,SHARED_LIBRARIES,libtest_dt_runpath_x,,,$(bionic_2nd_arch_prefix))/libtest_dt_runpath_x.so
-lib_y := $(call intermediates-dir-for,SHARED_LIBRARIES,libtest_dt_runpath_y,,,$(bionic_2nd_arch_prefix))/libtest_dt_runpath_y.so
-
-$(LOCAL_BUILT_MODULE) : PRIVATE_LIB_D := $(lib_d)
-$(LOCAL_BUILT_MODULE) : PRIVATE_LIB_A := $(lib_a)
-$(LOCAL_BUILT_MODULE) : PRIVATE_LIB_B := $(lib_b)
-$(LOCAL_BUILT_MODULE) : PRIVATE_LIB_C := $(lib_c)
-$(LOCAL_BUILT_MODULE) : PRIVATE_LIB_X := $(lib_x)
-$(LOCAL_BUILT_MODULE) : PRIVATE_LIB_Y := $(lib_y)
-ifeq ($(TARGET_IS_64_BIT),true)
- ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
- $(LOCAL_BUILT_MODULE) : PRIVATE_LIB_OR_LIB64 := $(if $(LOCAL_2ND_ARCH_VAR_PREFIX),lib/$(TARGET_2ND_ARCH),lib64)
- else
- $(LOCAL_BUILT_MODULE) : PRIVATE_LIB_OR_LIB64 := $(if $(LOCAL_2ND_ARCH_VAR_PREFIX),lib,lib64)
- endif
-else
- ifeq ($(TARGET_TRANSLATE_2ND_ARCH),true)
- $(LOCAL_BUILT_MODULE) : PRIVATE_LIB_OR_LIB64 := $(if $(LOCAL_2ND_ARCH_VAR_PREFIX),lib/$(TARGET_2ND_ARCH),lib)
- else
- $(LOCAL_BUILT_MODULE) : PRIVATE_LIB_OR_LIB64 := lib
- endif
-endif
-$(LOCAL_BUILT_MODULE) : $(lib_d) $(lib_a) $(lib_b) $(lib_c) $(lib_x) $(lib_y) $(BIONIC_TESTS_ZIPALIGN)
- @echo "Aligning zip: $@"
- $(hide) rm -rf $@.unaligned $@ $(dir $@)/zipdir && mkdir -p $(dir $@)/zipdir/libdir && \
- mkdir -p $(dir $@)/zipdir/libdir/dt_runpath_a && mkdir -p $(dir $@)/zipdir/libdir/dt_runpath_b_c_x && \
- mkdir -p $(dir $@)/zipdir/libdir/dt_runpath_y/$(PRIVATE_LIB_OR_LIB64)
- $(hide) cp $(PRIVATE_LIB_D) $(dir $@)/zipdir/libdir
- $(hide) cp $(PRIVATE_LIB_A) $(dir $@)/zipdir/libdir/dt_runpath_a
- $(hide) cp $(PRIVATE_LIB_B) $(dir $@)/zipdir/libdir/dt_runpath_b_c_x
- $(hide) cp $(PRIVATE_LIB_C) $(dir $@)/zipdir/libdir/dt_runpath_b_c_x
- $(hide) cp $(PRIVATE_LIB_X) $(dir $@)/zipdir/libdir/dt_runpath_b_c_x
- $(hide) cp $(PRIVATE_LIB_Y) $(dir $@)/zipdir/libdir/dt_runpath_y/$(PRIVATE_LIB_OR_LIB64)
- $(hide) touch $(dir $@)/zipdir/empty_file.txt
- $(hide) (cd $(dir $@)/zipdir && zip -qrD0 ../$(notdir $@).unaligned .)
- $(hide) $(BIONIC_TESTS_ZIPALIGN) 4096 $@.unaligned $@
diff --git a/tests/libs/Android.mk b/tests/libs/Android.mk
deleted file mode 100644
index 08416ac..0000000
--- a/tests/libs/Android.mk
+++ /dev/null
@@ -1,28 +0,0 @@
-#
-# Copyright (C) 2012 The Android Open Source Project
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-LOCAL_PATH := $(call my-dir)
-
-# -----------------------------------------------------------------------------
-# Library used by dlext tests - zipped and aligned
-# -----------------------------------------------------------------------------
-include $(CLEAR_VARS)
-bionic_2nd_arch_prefix :=
-include $(LOCAL_PATH)/Android.build.dlext_testzip.mk
-ifneq ($(TARGET_2ND_ARCH),)
- bionic_2nd_arch_prefix := $(TARGET_2ND_ARCH_VAR_PREFIX)
- include $(LOCAL_PATH)/Android.build.dlext_testzip.mk
-endif