diff --git a/CleanSpec.mk b/CleanSpec.mk index 1e0e97194c..284ef394bd 100644 --- a/CleanSpec.mk +++ b/CleanSpec.mk @@ -662,6 +662,10 @@ $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*system_ext*) $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*/product) $(call add-clean-step, rm -rf $(OUT_DIR)/target/product/generic*/*/system_ext) +# Move GSI-specific files from /system to /system/system_ext +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/init.gsi.rc) +$(call add-clean-step, rm -rf $(PRODUCT_OUT)/system/etc/init/config/) + # ************************************************ # NEWER CLEAN STEPS MUST BE AT THE END OF THE LIST # ************************************************ diff --git a/target/product/gsi/Android.mk b/target/product/gsi/Android.mk index 018bbb07a1..54f41ca947 100644 --- a/target/product/gsi/Android.mk +++ b/target/product/gsi/Android.mk @@ -169,3 +169,38 @@ _binder32 := include $(BUILD_PHONY_PACKAGE) endif # BOARD_VNDK_VERSION is set + +##################################################################### +# skip_mount.cfg, read by init to skip mounting some partitions when GSI is used. + +include $(CLEAR_VARS) +LOCAL_MODULE := gsi_skip_mount.cfg +LOCAL_MODULE_STEM := skip_mount.cfg +LOCAL_SRC_FILES := $(LOCAL_MODULE) +LOCAL_MODULE_CLASS := ETC +LOCAL_SYSTEM_EXT_MODULE := true +LOCAL_MODULE_RELATIVE_PATH := init/config + +# Adds a symlink under /system/etc/init/config pointing to /system/system_ext/etc/init/config +# because first-stage init in Android 10.0 will read the skip_mount.cfg from /system/etc/* after +# chroot /system. +# TODO: remove this symlink when no need to support new GSI on Android 10. +# The actual file needs to be under /system/system_ext because it's GSI-specific and does not +# belong to core CSI. +LOCAL_POST_INSTALL_CMD := \ + mkdir -p $(TARGET_OUT)/etc/init; \ + ln -sf /system/system_ext/etc/init/config $(TARGET_OUT)/etc/init/config + +include $(BUILD_PREBUILT) + +##################################################################### +# init.gsi.rc, GSI-specific init script. + +include $(CLEAR_VARS) +LOCAL_MODULE := init.gsi.rc +LOCAL_SRC_FILES := $(LOCAL_MODULE) +LOCAL_MODULE_CLASS := ETC +LOCAL_SYSTEM_EXT_MODULE := true +LOCAL_MODULE_RELATIVE_PATH := init + +include $(BUILD_PREBUILT) diff --git a/target/product/gsi/skip_mount.cfg b/target/product/gsi/gsi_skip_mount.cfg similarity index 100% rename from target/product/gsi/skip_mount.cfg rename to target/product/gsi/gsi_skip_mount.cfg diff --git a/target/product/gsi_common.mk b/target/product/gsi_common.mk index 1b5cd55475..bfecc9563a 100644 --- a/target/product/gsi_common.mk +++ b/target/product/gsi_common.mk @@ -50,11 +50,6 @@ PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ # Some GSI builds enable dexpreopt, whitelist these preopt files PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += %.odex %.vdex %.art -# Exclude GSI specific files -PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ - system/etc/init/config/skip_mount.cfg \ - system/etc/init/init.gsi.rc \ - # Exclude all files under system/product and system/system_ext PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ system/product/% \ @@ -71,9 +66,9 @@ PRODUCT_USE_DYNAMIC_PARTITION_SIZE := true PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true # GSI specific tasks on boot -PRODUCT_COPY_FILES += \ - build/make/target/product/gsi/skip_mount.cfg:system/etc/init/config/skip_mount.cfg \ - build/make/target/product/gsi/init.gsi.rc:system/etc/init/init.gsi.rc \ +PRODUCT_PACKAGES += \ + gsi_skip_mount.cfg \ + init.gsi.rc # Support addtional P vendor interface PRODUCT_EXTRA_VNDK_VERSIONS := 28 diff --git a/target/product/gsi_release.mk b/target/product/gsi_release.mk index 0dd2598971..cab3916382 100644 --- a/target/product/gsi_release.mk +++ b/target/product/gsi_release.mk @@ -24,11 +24,6 @@ # - etc. # -# Exclude GSI specific files -PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ - system/etc/init/config/skip_mount.cfg \ - system/etc/init/init.gsi.rc \ - # Exclude all files under system/product and system/system_ext PRODUCT_ARTIFACT_PATH_REQUIREMENT_WHITELIST += \ system/product/% \ @@ -50,9 +45,9 @@ PRODUCT_USE_DYNAMIC_PARTITION_SIZE := true PRODUCT_COMPATIBLE_PROPERTY_OVERRIDE := true # GSI specific tasks on boot -PRODUCT_COPY_FILES += \ - build/make/target/product/gsi/skip_mount.cfg:system/etc/init/config/skip_mount.cfg \ - build/make/target/product/gsi/init.gsi.rc:system/etc/init/init.gsi.rc \ +PRODUCT_PACKAGES += \ + gsi_skip_mount.cfg \ + init.gsi.rc # Support addtional P and Q VNDK packages PRODUCT_EXTRA_VNDK_VERSIONS := 28 29