648ae3a9d3
When bind-mounting flattened APEX, use the apex name found in apex_manifest.pb as the mount point, instead of the directory name which might be different from apex name in case when the apex is overridden. This allowed us to remove the special casing for the ART apex since we /system/apex/com.android.art.release will be mounted to /apex/com.android.art instead of /apex/com.android.art.release. Bug: N/A Test: m Test: OVERRIDE_TARGET_FLATTEN_APEX=true m, device is bootable Change-Id: Ibdde7002b9078db390e6672b0eb82c474925451d
138 lines
3.1 KiB
Makefile
138 lines
3.1 KiB
Makefile
# Copyright 2005 The Android Open Source Project
|
|
|
|
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 := \
|
|
devices.cpp \
|
|
first_stage_init.cpp \
|
|
first_stage_main.cpp \
|
|
first_stage_mount.cpp \
|
|
reboot_utils.cpp \
|
|
selabel.cpp \
|
|
selinux.cpp \
|
|
switch_root.cpp \
|
|
uevent_listener.cpp \
|
|
util.cpp \
|
|
|
|
LOCAL_MODULE := init_first_stage
|
|
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.
|
|
LOCAL_POST_INSTALL_CMD := mkdir -p \
|
|
$(TARGET_RAMDISK_OUT)/debug_ramdisk \
|
|
$(TARGET_RAMDISK_OUT)/dev \
|
|
$(TARGET_RAMDISK_OUT)/mnt \
|
|
$(TARGET_RAMDISK_OUT)/proc \
|
|
$(TARGET_RAMDISK_OUT)/sys \
|
|
|
|
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 \
|
|
libdexfile_support_static \
|
|
libunwindstack \
|
|
libbacktrace \
|
|
libmodprobe \
|
|
libext2_uuid \
|
|
libprotobuf-cpp-lite \
|
|
libsnapshot_init \
|
|
|
|
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_REQUIRED_MODULES := \
|
|
init_second_stage \
|
|
|
|
include $(BUILD_PHONY_PACKAGE)
|
|
|
|
include $(CLEAR_VARS)
|
|
|
|
LOCAL_MODULE := init_vendor
|
|
ifneq ($(BOARD_BUILD_SYSTEM_ROOT_IMAGE),true)
|
|
LOCAL_REQUIRED_MODULES := \
|
|
init_first_stage \
|
|
|
|
endif
|
|
include $(BUILD_PHONY_PACKAGE)
|