From 651db0935d0f7ce424c04a24ecf8c36d151b2631 Mon Sep 17 00:00:00 2001 From: Inseob Kim Date: Thu, 1 Jul 2021 06:50:40 +0000 Subject: [PATCH] Revert "Completely migrate init first stage to Soong" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Update init_first_stage" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add ramdisk_available to init_first_stage's deps" Revert "Add BOARD_BUILD_SYSTEM_ROOT_IMAGE to config vars" Revert "Add install_in_root to cc_binary" Revert "Add ramdisk_available to init_first_stage's deps" Revert submission 15071196-init_first_stage_soong Reason for revert: fixes b/192248690 Reverted Changes: I23cf4f975:Add ramdisk_available to init_first_stage's deps Icd98c7e24:Add ramdisk_available to init_first_stage's deps If9da9ba16:Add ramdisk_available to init_first_stage's deps Ibc8668029:Add ramdisk_available to init_first_stage's deps I3b4b8c475:Add ramdisk_available to init_first_stage's deps I59cd149e0:Completely migrate init first stage to Soong I36d789578:Add ramdisk_available to init_first_stage's deps I2a0daa612:Add BUILD_USES_RECOVERY_AS_BOOT to soong config Ic76c325ce:Directly create ramdisk dirs in ramdisk image rule... I4c5374deb:Add BOARD_BUILD_SYSTEM_ROOT_IMAGE to config vars I8aab5faf3:Add ramdisk_available to init_first_stage's deps I9d5a10661:Add ramdisk_available to init_first_stage's deps Iaa2edeb4a:Add ramdisk_available to init_first_stage's deps I7cb582ca0:Update init_first_stage I06091d15e:Add ramdisk_available to init_first_stage's deps I8bdb8dda3:Add ramdisk_available to init_first_stage's deps I7436b8dd1:Add ramdisk_available to init_first_stage's deps I39693fd86:Add ramdisk_available to init_first_stage's deps I0a9ba90f0:Add ramdisk_available to init_first_stage's deps Ib66b4c4ea:Add ramdisk_available to init_first_stage's deps I31ce63d23:Add ramdisk_available to init_first_stage's deps Icb580f97c:Add ramdisk_available to init_first_stage's deps I044a075b7:Add ramdisk_available to init_first_stage's deps I33164a7e7:Fix ndk and aml arch order Ib8d92904a:Add ramdisk_available to sysprop_library Ibc3516453:Add install_in_root to cc_binary Change-Id: I147777bb1c4a3b818bc0118c6cf44ccfbf7970a0 --- fs_mgr/Android.bp | 2 - fs_mgr/libfiemap/Android.bp | 1 - fs_mgr/libfs_avb/Android.bp | 1 - fs_mgr/liblp/Android.bp | 1 - fs_mgr/libsnapshot/Android.bp | 1 - fs_mgr/libstorage_literals/Android.bp | 1 - init/Android.bp | 45 +------- init/Android.mk | 151 +++++++++++++++++++++++++- libcrypto_utils/Android.bp | 1 - libkeyutils/Android.bp | 1 - libmodprobe/Android.bp | 1 - rootdir/Android.bp | 9 +- rootdir/Android.mk | 11 ++ 13 files changed, 164 insertions(+), 62 deletions(-) diff --git a/fs_mgr/Android.bp b/fs_mgr/Android.bp index 3d63a4437..5356b006d 100644 --- a/fs_mgr/Android.bp +++ b/fs_mgr/Android.bp @@ -141,7 +141,6 @@ cc_library { // Do not ever allow this library to be vendor_available as a shared library. // It does not have a stable interface. name: "libfs_mgr", - ramdisk_available: true, recovery_available: true, defaults: [ "libfs_mgr_defaults", @@ -166,7 +165,6 @@ cc_library_static { // It does not have a stable interface. name: "libfstab", vendor_available: true, - ramdisk_available: true, recovery_available: true, host_supported: true, defaults: ["fs_mgr_defaults"], diff --git a/fs_mgr/libfiemap/Android.bp b/fs_mgr/libfiemap/Android.bp index b62e33fdd..1c5872e6f 100644 --- a/fs_mgr/libfiemap/Android.bp +++ b/fs_mgr/libfiemap/Android.bp @@ -20,7 +20,6 @@ package { cc_library_headers { name: "libfiemap_headers", - ramdisk_available: true, recovery_available: true, export_include_dirs: ["include"], } diff --git a/fs_mgr/libfs_avb/Android.bp b/fs_mgr/libfs_avb/Android.bp index 62493ebd9..6892025a1 100644 --- a/fs_mgr/libfs_avb/Android.bp +++ b/fs_mgr/libfs_avb/Android.bp @@ -27,7 +27,6 @@ package { cc_library_static { name: "libfs_avb", defaults: ["fs_mgr_defaults"], - ramdisk_available: true, recovery_available: true, host_supported: true, export_include_dirs: ["include"], diff --git a/fs_mgr/liblp/Android.bp b/fs_mgr/liblp/Android.bp index 86ca8f35f..7e528b164 100644 --- a/fs_mgr/liblp/Android.bp +++ b/fs_mgr/liblp/Android.bp @@ -30,7 +30,6 @@ liblp_lib_deps = [ cc_library { name: "liblp", host_supported: true, - ramdisk_available: true, recovery_available: true, defaults: ["fs_mgr_defaults"], cppflags: [ diff --git a/fs_mgr/libsnapshot/Android.bp b/fs_mgr/libsnapshot/Android.bp index aa1f4154c..6a764e4fa 100644 --- a/fs_mgr/libsnapshot/Android.bp +++ b/fs_mgr/libsnapshot/Android.bp @@ -118,7 +118,6 @@ cc_library_static { native_coverage : true, defaults: ["libsnapshot_defaults"], srcs: [":libsnapshot_sources"], - ramdisk_available: true, recovery_available: true, cflags: [ "-DLIBSNAPSHOT_NO_COW_WRITE", diff --git a/fs_mgr/libstorage_literals/Android.bp b/fs_mgr/libstorage_literals/Android.bp index fd7ea0473..5b0716851 100644 --- a/fs_mgr/libstorage_literals/Android.bp +++ b/fs_mgr/libstorage_literals/Android.bp @@ -6,7 +6,6 @@ package { cc_library_headers { name: "libstorage_literals_headers", host_supported: true, - ramdisk_available: true, recovery_available: true, export_include_dirs: ["."], target: { diff --git a/init/Android.bp b/init/Android.bp index d0b58caf7..7eeafa24b 100644 --- a/init/Android.bp +++ b/init/Android.bp @@ -253,32 +253,11 @@ cc_binary { visibility: ["//packages/modules/Virtualization/microdroid"], } -soong_config_module_type { - name: "init_first_stage_cc_defaults", - module_type: "cc_defaults", - config_namespace: "ANDROID", - bool_variables: ["BOARD_BUILD_SYSTEM_ROOT_IMAGE", "BOARD_USES_RECOVERY_AS_BOOT"], - properties: ["installable"], -} - -// Do not install init_first_stage even with mma if we're system-as-root. -// Otherwise, it will overwrite the symlink. -init_first_stage_cc_defaults { - name: "init_first_stage_defaults", - soong_config_variables: { - BOARD_BUILD_SYSTEM_ROOT_IMAGE: { - installable: false, - }, - BOARD_USES_RECOVERY_AS_BOOT: { - installable: false, - }, - }, -} - +// This currently is only for the VM usecase. +// TODO(jiyong): replace init_first_stage in Android.mk with this cc_binary { - name: "init_first_stage", - stem: "init", - defaults: ["init_first_stage_defaults"], + name: "init_first_stage_soong", + stem: "init_vendor", srcs: [ "block_dev_initializer.cpp", @@ -334,7 +313,6 @@ cc_binary { ], static_executable: true, - system_shared_libs: [], cflags: [ "-Wall", @@ -385,23 +363,8 @@ cc_binary { sanitize: { misc_undefined: ["signed-integer-overflow"], - - // First stage init is weird: it may start without stdout/stderr, and no /proc. hwaddress: false, }, - - // Install adb_debug.prop into debug ramdisk. - // This allows adb root on a user build, when debug ramdisk is used. - required: ["adb_debug.prop"], - - ramdisk: true, - - install_in_root: true, -} - -phony { - name: "init_system", - required: ["init_second_stage"], } // Tests diff --git a/init/Android.mk b/init/Android.mk index c08fe0393..3c7d95acf 100644 --- a/init/Android.mk +++ b/init/Android.mk @@ -2,6 +2,153 @@ LOCAL_PATH:= $(call my-dir) +-include system/sepolicy/policy_version.mk + +# -- + +ifneq (,$(filter userdebug eng,$(TARGET_BUILD_VARIANT))) +init_options += \ + -DALLOW_FIRST_STAGE_CONSOLE=1 \ + -DALLOW_LOCAL_PROP_OVERRIDE=1 \ + -DALLOW_PERMISSIVE_SELINUX=1 \ + -DREBOOT_BOOTLOADER_ON_PANIC=1 \ + -DWORLD_WRITABLE_KMSG=1 \ + -DDUMP_ON_UMOUNT_FAILURE=1 +else +init_options += \ + -DALLOW_FIRST_STAGE_CONSOLE=0 \ + -DALLOW_LOCAL_PROP_OVERRIDE=0 \ + -DALLOW_PERMISSIVE_SELINUX=0 \ + -DREBOOT_BOOTLOADER_ON_PANIC=0 \ + -DWORLD_WRITABLE_KMSG=0 \ + -DDUMP_ON_UMOUNT_FAILURE=0 +endif + +ifneq (,$(filter eng,$(TARGET_BUILD_VARIANT))) +init_options += \ + -DSHUTDOWN_ZERO_TIMEOUT=1 +else +init_options += \ + -DSHUTDOWN_ZERO_TIMEOUT=0 +endif + +init_options += -DLOG_UEVENTS=0 \ + -DSEPOLICY_VERSION=$(POLICYVERS) + +init_cflags += \ + $(init_options) \ + -Wall -Wextra \ + -Wno-unused-parameter \ + -Werror \ + +# -- + +# Do not build this even with mmma if we're system-as-root, otherwise it will overwrite the symlink. +ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) +include $(CLEAR_VARS) +LOCAL_CPPFLAGS := $(init_cflags) +LOCAL_SRC_FILES := \ + block_dev_initializer.cpp \ + devices.cpp \ + first_stage_console.cpp \ + first_stage_init.cpp \ + first_stage_main.cpp \ + first_stage_mount.cpp \ + reboot_utils.cpp \ + selabel.cpp \ + selinux.cpp \ + service_utils.cpp \ + snapuserd_transition.cpp \ + switch_root.cpp \ + uevent_listener.cpp \ + util.cpp \ + +LOCAL_MODULE := init_first_stage +LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 +LOCAL_LICENSE_CONDITIONS := notice +LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE +LOCAL_MODULE_STEM := init + +LOCAL_FORCE_STATIC_EXECUTABLE := true + +LOCAL_MODULE_PATH := $(TARGET_RAMDISK_OUT) +LOCAL_UNSTRIPPED_PATH := $(TARGET_RAMDISK_OUT_UNSTRIPPED) + +# Install adb_debug.prop into debug ramdisk. +# This allows adb root on a user build, when debug ramdisk is used. +LOCAL_REQUIRED_MODULES := \ + adb_debug.prop \ + +# Set up the directories that first stage init mounts on. + +my_ramdisk_dirs := \ + debug_ramdisk \ + dev \ + metadata \ + mnt \ + proc \ + second_stage_resources \ + sys \ + +LOCAL_POST_INSTALL_CMD := mkdir -p $(addprefix $(TARGET_RAMDISK_OUT)/,$(my_ramdisk_dirs)) +ifeq (true,$(BOARD_USES_GENERIC_KERNEL_IMAGE)) + LOCAL_POST_INSTALL_CMD += $(addprefix $(TARGET_RAMDISK_OUT)/first_stage_ramdisk/,$(my_ramdisk_dirs)) +endif + +my_ramdisk_dirs := + +LOCAL_STATIC_LIBRARIES := \ + libc++fs \ + libfs_avb \ + libfs_mgr \ + libfec \ + libfec_rs \ + libsquashfs_utils \ + liblogwrap \ + libext4_utils \ + libcrypto_utils \ + libsparse \ + libavb \ + libkeyutils \ + liblp \ + libcutils \ + libbase \ + liblog \ + libcrypto_static \ + libdl \ + libz \ + libselinux \ + libcap \ + libgsi \ + libcom.android.sysprop.apex \ + liblzma \ + libunwindstack_no_dex \ + libbacktrace_no_dex \ + libmodprobe \ + libext2_uuid \ + libprotobuf-cpp-lite \ + libsnapshot_cow \ + libsnapshot_init \ + update_metadata-protos \ + libprocinfo \ + +LOCAL_SANITIZE := signed-integer-overflow +# First stage init is weird: it may start without stdout/stderr, and no /proc. +LOCAL_NOSANITIZE := hwaddress +include $(BUILD_EXECUTABLE) +endif + +include $(CLEAR_VARS) + +LOCAL_MODULE := init_system +LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 +LOCAL_LICENSE_CONDITIONS := notice +LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE +LOCAL_REQUIRED_MODULES := \ + init_second_stage \ + +include $(BUILD_PHONY_PACKAGE) + include $(CLEAR_VARS) LOCAL_MODULE := init_vendor @@ -9,10 +156,8 @@ LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 LOCAL_LICENSE_CONDITIONS := notice LOCAL_NOTICE_FILE := $(LOCAL_PATH)/NOTICE ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true) -ifneq ($(BOARD_USES_RECOVERY_AS_BOOT),true) LOCAL_REQUIRED_MODULES := \ init_first_stage \ -endif # BOARD_USES_RECOVERY_AS_BOOT -endif # BOARD_BUILD_SYSTEM_ROOT_IMAGE +endif include $(BUILD_PHONY_PACKAGE) diff --git a/libcrypto_utils/Android.bp b/libcrypto_utils/Android.bp index c8a183bf1..b33d46d50 100644 --- a/libcrypto_utils/Android.bp +++ b/libcrypto_utils/Android.bp @@ -21,7 +21,6 @@ package { cc_library { name: "libcrypto_utils", vendor_available: true, - ramdisk_available: true, recovery_available: true, vndk: { enabled: true, diff --git a/libkeyutils/Android.bp b/libkeyutils/Android.bp index a940b8cec..86f68fb57 100644 --- a/libkeyutils/Android.bp +++ b/libkeyutils/Android.bp @@ -15,7 +15,6 @@ cc_library { name: "libkeyutils", cflags: ["-Werror"], defaults: ["linux_bionic_supported"], - ramdisk_available: true, recovery_available: true, export_include_dirs: ["include/"], local_include_dirs: ["include/"], diff --git a/libmodprobe/Android.bp b/libmodprobe/Android.bp index 525a88063..ba11dc920 100644 --- a/libmodprobe/Android.bp +++ b/libmodprobe/Android.bp @@ -8,7 +8,6 @@ cc_library_static { "-Werror", ], vendor_available: true, - ramdisk_available: true, recovery_available: true, srcs: [ "libmodprobe.cpp", diff --git a/rootdir/Android.bp b/rootdir/Android.bp index e98733ada..ae21633da 100644 --- a/rootdir/Android.bp +++ b/rootdir/Android.bp @@ -45,11 +45,4 @@ prebuilt_etc { src: "etc/public.libraries.android.txt", filename: "public.libraries.txt", installable: false, -} - -// adb_debug.prop in debug ramdisk -prebuilt_root { - name: "adb_debug.prop", - src: "adb_debug.prop", - debug_ramdisk: true, -} +} \ No newline at end of file diff --git a/rootdir/Android.mk b/rootdir/Android.mk index 9b80575ef..99d8f9a83 100644 --- a/rootdir/Android.mk +++ b/rootdir/Android.mk @@ -210,4 +210,15 @@ $(LOCAL_BUILT_MODULE): $(hide) $(foreach lib,$(PRIVATE_SANITIZER_RUNTIME_LIBRARIES), \ echo $(lib) >> $@;) +####################################### +# adb_debug.prop in debug ramdisk +include $(CLEAR_VARS) +LOCAL_MODULE := adb_debug.prop +LOCAL_LICENSE_KINDS := SPDX-license-identifier-Apache-2.0 +LOCAL_LICENSE_CONDITIONS := notice +LOCAL_SRC_FILES := $(LOCAL_MODULE) +LOCAL_MODULE_CLASS := ETC +LOCAL_MODULE_PATH := $(TARGET_DEBUG_RAMDISK_OUT) +include $(BUILD_PREBUILT) + include $(call all-makefiles-under,$(LOCAL_PATH))