diff --git a/core/artifact_path_requirements.mk b/core/artifact_path_requirements.mk index 8b2d71bf08..ceaefa2696 100644 --- a/core/artifact_path_requirements.mk +++ b/core/artifact_path_requirements.mk @@ -35,7 +35,9 @@ $(foreach makefile,$(ARTIFACT_PATH_REQUIREMENT_PRODUCTS),\ $(makefile) produces files outside its artifact path requirement. \ Allowed paths are $(subst $(space),$(comma)$(space),$(addsuffix *,$(requirements)))) \ $(eval unused_allowed := $(filter-out $(files),$(allowed_patterns))) \ - $(call maybe-print-list-and-error,$(unused_allowed),$(makefile) includes redundant allowed entries in its artifact path requirement.) \ + $(if $(PRODUCTS.$(makefile).ARTIFACT_PATH_REQUIREMENT_IS_RELAXED),, \ + $(call maybe-print-list-and-error,$(unused_allowed),$(makefile) includes redundant allowed entries in its artifact path requirement.) \ + ) \ $(eval ### Optionally verify that nothing else produces files inside this artifact path requirement.) \ $(eval extra_files := $(filter-out $(files) $(HOST_OUT)/%,$(product_target_FILES))) \ $(eval files_in_requirement := $(filter $(path_patterns),$(extra_files))) \ diff --git a/core/product.mk b/core/product.mk index 9aebc28d6d..f47e6f20bd 100644 --- a/core/product.mk +++ b/core/product.mk @@ -463,6 +463,13 @@ define require-artifacts-in-path $(sort $(ARTIFACT_PATH_REQUIREMENT_PRODUCTS) $(current_mk))) endef +# Like require-artifacts-in-path, but does not require all allow-list entries to +# have an effect. +define require-artifacts-in-path-relaxed + $(require-artifacts-in-path) \ + $(eval PRODUCTS.$(current_mk).ARTIFACT_PATH_REQUIREMENT_IS_RELAXED := true) +endef + # Makes including non-existent modules in PRODUCT_PACKAGES an error. # $(1): list of non-existent modules to allow. define enforce-product-packages-exist diff --git a/target/board/generic_arm64/device.mk b/target/board/generic_arm64/device.mk index 7c1927972a..930083c8d9 100644 --- a/target/board/generic_arm64/device.mk +++ b/target/board/generic_arm64/device.mk @@ -32,3 +32,5 @@ endif PRODUCT_BUILD_VENDOR_BOOT_IMAGE := false PRODUCT_BUILD_RECOVERY_IMAGE := false + +$(call inherit-product, $(SRC_TARGET_DIR)/product/generic_ramdisk.mk) diff --git a/target/product/generic_ramdisk.mk b/target/product/generic_ramdisk.mk new file mode 100644 index 0000000000..0698648695 --- /dev/null +++ b/target/product/generic_ramdisk.mk @@ -0,0 +1,42 @@ +# +# Copyright (C) 2020 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. +# + +# This makefile installs contents of the generic ramdisk. +# Inherit from this makefile to declare that this product uses generic ramdisk. +# This makefile checks that other makefiles must not install things to the +# ramdisk. + +PRODUCT_NAME := generic_ramdisk +PRODUCT_BRAND := generic + +# Ramdisk +PRODUCT_PACKAGES += \ + init_first_stage \ + +# Debug ramdisk +PRODUCT_PACKAGES += \ + userdebug_plat_sepolicy.cil \ + +_my_paths := \ + $(TARGET_COPY_OUT_RAMDISK) \ + $(TARGET_COPY_OUT_DEBUG_RAMDISK) \ + system/usr/share/zoneinfo/tz_version \ + system/usr/share/zoneinfo/tzdata \ + +# We use the "relaxed" version here because tzdata / tz_version is only produced +# by this makefile on a subset of devices. +# TODO: remove this +$(call require-artifacts-in-path-relaxed, $(_my_paths), )