From fcbb743d86f2842e33189d360d0202027dd28e64 Mon Sep 17 00:00:00 2001 From: Inseob Kim Date: Tue, 30 Jul 2024 16:32:20 +0900 Subject: [PATCH] Migrate init.environ.rc module to Soong Makefile module still remains to handle post install commands. We're going to move that to somewhere else as a followup. Bug: 353429422 Test: boot with and without USE_SOONG_DEFINED_SYSTEM_IMAGE Change-Id: I85ec048e6e57981ad4496ea90762aa34bd9a5ca1 --- rootdir/Android.bp | 53 ++++++++++++++++++++++++++++++++++++++++++++++ rootdir/Android.mk | 44 ++++++-------------------------------- 2 files changed, 59 insertions(+), 38 deletions(-) diff --git a/rootdir/Android.bp b/rootdir/Android.bp index 7105ed52a..3b79cd5e6 100644 --- a/rootdir/Android.bp +++ b/rootdir/Android.bp @@ -134,3 +134,56 @@ llndk_libraries_txt { sanitizer_libraries_txt { name: "sanitizer.libraries.txt", } + +EXPORT_GLOBAL_ASAN_OPTIONS = select(soong_config_variable("ANDROID", "ASAN_ENABLED"), { + true: "export ASAN_OPTIONS include=/system/asan.options", + default: "", +}) + +EXPORT_GLOBAL_HWASAN_OPTIONS = select((soong_config_variable("ANDROID", "HWASAN_ENABLED"), soong_config_variable("ANDROID", "HWADDRESS_SANITIZER_GLOBAL_OPTIONS")), { + (true, ""): "", + (true, any @ options): "export HWASAN_OPTIONS " + options, + (default, default): "", +}) + +EXPORT_GLOBAL_GCOV_OPTIONS = select(soong_config_variable("ANDROID", "GCOV_COVERAGE"), { + true: "export GCOV_PREFIX /data/misc/trace", + default: "", +}) + +EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS = select((soong_config_variable("ANDROID", "CLANG_COVERAGE"), soong_config_variable("ANDROID", "CLANG_COVERAGE_CONTINUOUS_MODE")), { + (true, true): "export LLVM_PROFILE_FILE /data/misc/trace/clang%c-%20m.profraw", + (true, default): "export LLVM_PROFILE_FILE /data/misc/trace/clang-%20m.profraw", + (default, default): "", +}) + +EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE = select(soong_config_variable("ANDROID", "SCUDO_ALLOCATION_RING_BUFFER_SIZE"), { + "": "", + any @ size: "export SCUDO_ALLOCATION_RING_BUFFER_SIZE " + size, + default: "", +}) + +genrule { + name: "init.environ.rc.gen", + srcs: ["init.environ.rc.in"], + out: ["init.environ.rc"], + cmd: "cp -f $(in) $(out) && " + + "sed -i -e 's?%EXPORT_GLOBAL_ASAN_OPTIONS%?" + EXPORT_GLOBAL_ASAN_OPTIONS + "?g' $(out) && " + + "sed -i -e 's?%EXPORT_GLOBAL_GCOV_OPTIONS%?" + EXPORT_GLOBAL_GCOV_OPTIONS + "?g' $(out) && " + + "sed -i -e 's?%EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS%?" + EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS + "?g' $(out) && " + + "sed -i -e 's?%EXPORT_GLOBAL_HWASAN_OPTIONS%?" + EXPORT_GLOBAL_HWASAN_OPTIONS + "?g' $(out) && " + + "sed -i -e 's?%EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE%?" + EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE + "?g' $(out)", +} + +prebuilt_root { + name: "init.environ.rc-soong", + src: ":init.environ.rc.gen", + filename: "init.environ.rc", + install_in_root: true, + no_full_install: true, + required: select((soong_config_variable("ANDROID", "ASAN_ENABLED"), soong_config_variable("ANDROID", "SANITIZE_TARGET_SYSTEM_ENABLED")), { + (true, true): ["asan.options", "asan_extract"], + (true, default): ["asan.options"], + (default, default): [], + }), +} diff --git a/rootdir/Android.mk b/rootdir/Android.mk index e6ccda788..e743743bd 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -11,6 +11,7 @@ endif endif ####################################### # init.environ.rc +# TODO(b/353429422): move LOCAL_POST_INSTALL_CMD to other rules and remove Android.mk module. include $(CLEAR_VARS) LOCAL_MODULE_CLASS := ETC @@ -19,36 +20,8 @@ LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 LOCAL_LICENSE_CONDITIONS := notice LOCAL_MODULE_PATH := $(TARGET_ROOT_OUT) -EXPORT_GLOBAL_ASAN_OPTIONS := ifneq ($(filter address,$(SANITIZE_TARGET)),) - EXPORT_GLOBAL_ASAN_OPTIONS := export ASAN_OPTIONS include=/system/asan.options - LOCAL_REQUIRED_MODULES := asan.options $(ASAN_OPTIONS_FILES) $(ASAN_EXTRACT_FILES) -endif - -EXPORT_GLOBAL_HWASAN_OPTIONS := -ifneq ($(filter hwaddress,$(SANITIZE_TARGET)),) - ifneq ($(HWADDRESS_SANITIZER_GLOBAL_OPTIONS),) - EXPORT_GLOBAL_HWASAN_OPTIONS := export HWASAN_OPTIONS $(HWADDRESS_SANITIZER_GLOBAL_OPTIONS) - endif -endif - -EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE := -ifneq ($(PRODUCT_SCUDO_ALLOCATION_RING_BUFFER_SIZE),) - EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE := export SCUDO_ALLOCATION_RING_BUFFER_SIZE $(PRODUCT_SCUDO_ALLOCATION_RING_BUFFER_SIZE) -endif - -EXPORT_GLOBAL_GCOV_OPTIONS := -ifeq ($(NATIVE_COVERAGE),true) - EXPORT_GLOBAL_GCOV_OPTIONS := export GCOV_PREFIX /data/misc/trace -endif - -EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := -ifeq ($(CLANG_COVERAGE),true) - ifeq ($(CLANG_COVERAGE_CONTINUOUS_MODE),true) - EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/misc/trace/clang%c-%20m.profraw - else - EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS := export LLVM_PROFILE_FILE /data/misc/trace/clang-%20m.profraw - endif + LOCAL_REQUIRED_MODULES := asan.options $(ASAN_EXTRACT_FILES) endif # Put it here instead of in init.rc module definition, @@ -173,15 +146,10 @@ ALL_DEFAULT_INSTALLED_MODULES += $(ALL_ROOTDIR_SYMLINKS) include $(BUILD_SYSTEM)/base_rules.mk $(ALL_ROOTDIR_SYMLINKS): $(LOCAL_BUILT_MODULE) -$(LOCAL_BUILT_MODULE): $(LOCAL_PATH)/init.environ.rc.in - @echo "Generate: $< -> $@" - @mkdir -p $(dir $@) - $(hide) cp $< $@ - $(hide) sed -i -e 's?%EXPORT_GLOBAL_ASAN_OPTIONS%?$(EXPORT_GLOBAL_ASAN_OPTIONS)?g' $@ - $(hide) sed -i -e 's?%EXPORT_GLOBAL_GCOV_OPTIONS%?$(EXPORT_GLOBAL_GCOV_OPTIONS)?g' $@ - $(hide) sed -i -e 's?%EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS%?$(EXPORT_GLOBAL_CLANG_COVERAGE_OPTIONS)?g' $@ - $(hide) sed -i -e 's?%EXPORT_GLOBAL_HWASAN_OPTIONS%?$(EXPORT_GLOBAL_HWASAN_OPTIONS)?g' $@ - $(hide) sed -i -e 's?%EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE%?$(EXPORT_GLOBAL_SCUDO_ALLOCATION_RING_BUFFER_SIZE)?g' $@ + +init.environ.rc-soong := $(call intermediates-dir-for,ETC,init.environ.rc-soong)/init.environ.rc-soong +$(eval $(call copy-one-file,$(init.environ.rc-soong),$(LOCAL_BUILT_MODULE))) +init.environ.rc-soong := ####################################### # ramdisk_node_list