Merge "Reland: Verify init scripts for correctness during build"
am: bdaaab2e39
Change-Id: Ia0cdc6067e357e97ab88b1dd2690358ead4edd18
This commit is contained in:
commit
281d343dfb
|
@ -36,7 +36,9 @@ $(foreach cf,$(unique_product_copy_files_pairs), \
|
|||
$(eval $(call copy-xml-file-checked,$(_src),$(_fulldest))),\
|
||||
$(if $(and $(filter %.jar,$(_dest)),$(filter $(basename $(notdir $(_dest))),$(PRODUCT_LOADED_BY_PRIVILEGED_MODULES))),\
|
||||
$(eval $(call copy-and-uncompress-dexs,$(_src),$(_fulldest))), \
|
||||
$(eval $(call copy-one-file,$(_src),$(_fulldest))))) \
|
||||
$(if $(filter init%rc,$(notdir $(_dest)))$(filter %/etc/init,$(dir $(_dest))),\
|
||||
$(eval $(call copy-init-script-file-checked,$(_src),$(_fulldest))),\
|
||||
$(eval $(call copy-one-file,$(_src),$(_fulldest)))))) \
|
||||
$(eval ALL_DEFAULT_INSTALLED_MODULES += $(_fulldest)) \
|
||||
$(eval unique_product_copy_files_destinations += $(_dest))))
|
||||
|
||||
|
|
|
@ -424,7 +424,7 @@ my_init_rc_installed := $(foreach rc,$(my_init_rc_pairs),$(call word-colon,2,$(r
|
|||
# Make sure we only set up the copy rules once, even if another arch variant
|
||||
# shares a common LOCAL_INIT_RC.
|
||||
my_init_rc_new_pairs := $(filter-out $(ALL_INIT_RC_INSTALLED_PAIRS),$(my_init_rc_pairs))
|
||||
my_init_rc_new_installed := $(call copy-many-files,$(my_init_rc_new_pairs))
|
||||
my_init_rc_new_installed := $(call copy-many-init-script-files-checked,$(my_init_rc_new_pairs))
|
||||
ALL_INIT_RC_INSTALLED_PAIRS += $(my_init_rc_new_pairs)
|
||||
|
||||
$(my_all_targets) : $(my_init_rc_installed)
|
||||
|
|
|
@ -622,6 +622,7 @@ ACP := $(prebuilt_build_tools_bin)/acp
|
|||
CKATI := $(prebuilt_build_tools_bin)/ckati
|
||||
DEPMOD := $(HOST_OUT_EXECUTABLES)/depmod
|
||||
FILESLIST := $(SOONG_HOST_OUT_EXECUTABLES)/fileslist
|
||||
HOST_INIT_VERIFIER := $(HOST_OUT_EXECUTABLES)/host_init_verifier
|
||||
MAKEPARALLEL := $(prebuilt_build_tools_bin)/makeparallel
|
||||
SOONG_JAVAC_WRAPPER := $(SOONG_HOST_OUT_EXECUTABLES)/soong_javac_wrapper
|
||||
SOONG_ZIP := $(SOONG_HOST_OUT_EXECUTABLES)/soong_zip
|
||||
|
|
|
@ -2658,6 +2658,33 @@ $(foreach f, $(1), $(strip \
|
|||
$(_cmf_dest)))
|
||||
endef
|
||||
|
||||
# Copy the file only if it's a well-formed init script file. For use via $(eval).
|
||||
# $(1): source file
|
||||
# $(2): destination file
|
||||
define copy-init-script-file-checked
|
||||
# Host init verifier doesn't exist on darwin.
|
||||
ifneq ($(HOST_OS),darwin)
|
||||
$(2): $(1) $(HOST_INIT_VERIFIER) $(call intermediates-dir-for,ETC,passwd)/passwd
|
||||
$(hide) $(HOST_INIT_VERIFIER) $$< $(call intermediates-dir-for,ETC,passwd)/passwd
|
||||
else
|
||||
$(2): $(1)
|
||||
endif
|
||||
@echo "Copy init script: $$@"
|
||||
$$(copy-file-to-target)
|
||||
endef
|
||||
|
||||
# Copies many init script files and check they are well-formed.
|
||||
# $(1): The init script files to copy. Each entry is a ':' separated src:dst pair.
|
||||
# Evaluates to the list of the dst files. (ie suitable for a dependency list.)
|
||||
define copy-many-init-script-files-checked
|
||||
$(foreach f, $(1), $(strip \
|
||||
$(eval _cmf_tuple := $(subst :, ,$(f))) \
|
||||
$(eval _cmf_src := $(word 1,$(_cmf_tuple))) \
|
||||
$(eval _cmf_dest := $(word 2,$(_cmf_tuple))) \
|
||||
$(eval $(call copy-init-script-file-checked,$(_cmf_src),$(_cmf_dest))) \
|
||||
$(_cmf_dest)))
|
||||
endef
|
||||
|
||||
# Copy the file only if it's a well-formed xml file. For use via $(eval).
|
||||
# $(1): source file
|
||||
# $(2): destination file, must end with .xml.
|
||||
|
|
|
@ -508,10 +508,13 @@ $(built_module) : $(my_prebuilt_src_file)
|
|||
endif # LOCAL_DEX_PREOPT
|
||||
|
||||
else # ! prebuilt_module_is_dex_javalib
|
||||
ifneq ($(filter init%rc,$(notdir $(LOCAL_INSTALLED_MODULE)))$(filter %/etc/init,$(dir $(LOCAL_INSTALLED_MODULE))),)
|
||||
$(eval $(call copy-init-script-file-checked,$(my_prebuilt_src_file),$(built_module)))
|
||||
else ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
||||
$(built_module) : $(my_prebuilt_src_file)
|
||||
ifneq ($(LOCAL_PREBUILT_STRIP_COMMENTS),)
|
||||
$(transform-prebuilt-to-target-strip-comments)
|
||||
else
|
||||
$(built_module) : $(my_prebuilt_src_file)
|
||||
$(transform-prebuilt-to-target)
|
||||
endif
|
||||
ifneq ($(filter EXECUTABLES NATIVE_TESTS,$(LOCAL_MODULE_CLASS)),)
|
||||
|
|
Loading…
Reference in New Issue