forked from openkylin/platform_build
add BOARD_*_KERNEL_MODULE_ARCHIVE support
It may be the case that the list of kernel modules to be copied into various partitions is not known at the time the build is invoked. To support this configuration, create a set of make variables, each of which can be set to the path of a zip archive of kernel modules to be used. Bug: 144317186 Bug: 144844424 Test: build and verify *.ko in vendor, repackage prebuilt kernel modules into zip, build and verify *.ko in vendor Change-Id: Ie6f7e2c72efa11d39be341920dd46e4ed6678fe1
This commit is contained in:
parent
83131cbef9
commit
810a0ba56f
|
@ -670,10 +670,11 @@ DEPMOD_STAGING_SUBDIR :=$= lib/modules/0.0
|
||||||
# $(4): staging dir
|
# $(4): staging dir
|
||||||
# $(5): module load list
|
# $(5): module load list
|
||||||
# $(6): module load list filename
|
# $(6): module load list filename
|
||||||
|
# $(7): module archive
|
||||||
# Returns the a list of src:dest pairs to install the modules using copy-many-files.
|
# Returns the a list of src:dest pairs to install the modules using copy-many-files.
|
||||||
define build-image-kernel-modules
|
define build-image-kernel-modules
|
||||||
$(foreach module,$(1),$(module):$(2)/lib/modules/$(notdir $(module))) \
|
$(foreach module,$(1),$(module):$(2)/lib/modules/$(notdir $(module))) \
|
||||||
$(eval $(call build-image-kernel-modules-depmod,$(1),$(3),$(4),$(5),$(6))) \
|
$(eval $(call build-image-kernel-modules-depmod,$(1),$(3),$(4),$(5),$(6),$(7),$(2))) \
|
||||||
$(4)/$(DEPMOD_STAGING_SUBDIR)/modules.dep:$(2)/lib/modules/modules.dep \
|
$(4)/$(DEPMOD_STAGING_SUBDIR)/modules.dep:$(2)/lib/modules/modules.dep \
|
||||||
$(4)/$(DEPMOD_STAGING_SUBDIR)/modules.alias:$(2)/lib/modules/modules.alias \
|
$(4)/$(DEPMOD_STAGING_SUBDIR)/modules.alias:$(2)/lib/modules/modules.alias \
|
||||||
$(4)/$(DEPMOD_STAGING_SUBDIR)/modules.softdep:$(2)/lib/modules/modules.softdep \
|
$(4)/$(DEPMOD_STAGING_SUBDIR)/modules.softdep:$(2)/lib/modules/modules.softdep \
|
||||||
|
@ -685,6 +686,13 @@ endef
|
||||||
# $(3): staging dir
|
# $(3): staging dir
|
||||||
# $(4): module load list
|
# $(4): module load list
|
||||||
# $(5): module load list filename
|
# $(5): module load list filename
|
||||||
|
# $(6): module archive
|
||||||
|
# $(7): output dir
|
||||||
|
# TODO(b/144844424): If a module archive is being used, this step (which
|
||||||
|
# generates obj/PACKAGING/.../modules.dep) also unzips the module archive into
|
||||||
|
# the output directory. This should be moved to a module with a
|
||||||
|
# LOCAL_POST_INSTALL_CMD so that if modules.dep is removed from the output dir,
|
||||||
|
# the archive modules are restored along with modules.dep.
|
||||||
define build-image-kernel-modules-depmod
|
define build-image-kernel-modules-depmod
|
||||||
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: .KATI_IMPLICIT_OUTPUTS := $(3)/$(DEPMOD_STAGING_SUBDIR)/modules.alias $(3)/$(DEPMOD_STAGING_SUBDIR)/modules.softdep $(3)/$(DEPMOD_STAGING_SUBDIR)/$(5)
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: .KATI_IMPLICIT_OUTPUTS := $(3)/$(DEPMOD_STAGING_SUBDIR)/modules.alias $(3)/$(DEPMOD_STAGING_SUBDIR)/modules.softdep $(3)/$(DEPMOD_STAGING_SUBDIR)/$(5)
|
||||||
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: $(DEPMOD)
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: $(DEPMOD)
|
||||||
|
@ -694,16 +702,29 @@ $(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_MODULE_DIR := $(3)/$(DEPMOD_S
|
||||||
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_STAGING_DIR := $(3)
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_STAGING_DIR := $(3)
|
||||||
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_LOAD_MODULES := $(4)
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_LOAD_MODULES := $(4)
|
||||||
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_LOAD_FILE := $(3)/$(DEPMOD_STAGING_SUBDIR)/$(5)
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_LOAD_FILE := $(3)/$(DEPMOD_STAGING_SUBDIR)/$(5)
|
||||||
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: $(1)
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_MODULE_ARCHIVE := $(6)
|
||||||
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: PRIVATE_OUTPUT_DIR := $(7)
|
||||||
|
$(3)/$(DEPMOD_STAGING_SUBDIR)/modules.dep: $(1) $(6)
|
||||||
@echo depmod $$(PRIVATE_STAGING_DIR)
|
@echo depmod $$(PRIVATE_STAGING_DIR)
|
||||||
rm -rf $$(PRIVATE_STAGING_DIR)
|
rm -rf $$(PRIVATE_STAGING_DIR)
|
||||||
mkdir -p $$(PRIVATE_MODULE_DIR)
|
mkdir -p $$(PRIVATE_MODULE_DIR)
|
||||||
cp $$(PRIVATE_MODULES) $$(PRIVATE_MODULE_DIR)/
|
$(if $(6),\
|
||||||
|
unzip -qo -d $$(PRIVATE_MODULE_DIR) $$(PRIVATE_MODULE_ARCHIVE); \
|
||||||
|
mkdir -p $$(PRIVATE_OUTPUT_DIR)/lib; \
|
||||||
|
rm -rf $$(PRIVATE_OUTPUT_DIR)/lib/modules; \
|
||||||
|
cp -r $$(PRIVATE_MODULE_DIR) $$(PRIVATE_OUTPUT_DIR)/lib/; \
|
||||||
|
find $$(PRIVATE_MODULE_DIR) -type f -name *.ko | xargs basename -a > $$(PRIVATE_LOAD_FILE); \
|
||||||
|
)
|
||||||
|
$(if $(1),\
|
||||||
|
cp $$(PRIVATE_MODULES) $$(PRIVATE_MODULE_DIR)/; \
|
||||||
|
for MODULE in $$(PRIVATE_LOAD_MODULES); do \
|
||||||
|
basename $$$$MODULE >> $$(PRIVATE_LOAD_FILE); \
|
||||||
|
done; \
|
||||||
|
)
|
||||||
$(DEPMOD) -b $$(PRIVATE_STAGING_DIR) 0.0
|
$(DEPMOD) -b $$(PRIVATE_STAGING_DIR) 0.0
|
||||||
# Turn paths in modules.dep into absolute paths
|
# Turn paths in modules.dep into absolute paths
|
||||||
sed -i.tmp -e 's|\([^: ]*lib/modules/[^: ]*\)|/\1|g' $$(PRIVATE_STAGING_DIR)/$$(DEPMOD_STAGING_SUBDIR)/modules.dep
|
sed -i.tmp -e 's|\([^: ]*lib/modules/[^: ]*\)|/\1|g' $$(PRIVATE_STAGING_DIR)/$$(DEPMOD_STAGING_SUBDIR)/modules.dep
|
||||||
touch $$(PRIVATE_LOAD_FILE)
|
touch $$(PRIVATE_LOAD_FILE)
|
||||||
(for MODULE in $$(PRIVATE_LOAD_MODULES); do basename $$$$MODULE >> $$(PRIVATE_LOAD_FILE); done)
|
|
||||||
endef
|
endef
|
||||||
|
|
||||||
# $(1): staging dir
|
# $(1): staging dir
|
||||||
|
@ -747,40 +768,40 @@ ifneq ($(strip $(BOARD_GENERIC_RAMDISK_KERNEL_MODULES)),)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(strip $(BOARD_RECOVERY_KERNEL_MODULES)),)
|
ifneq ($(strip $(BOARD_RECOVERY_KERNEL_MODULES))$(strip $(BOARD_RECOVERY_KERNEL_MODULES_ARCHIVE)),)
|
||||||
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT), true)
|
ifeq ($(BOARD_USES_RECOVERY_AS_BOOT), true)
|
||||||
ifdef BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD
|
ifdef BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD
|
||||||
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call module-load-list-copy-paths,$(call intermediates-dir-for,PACKAGING,ramdisk_modules),$(BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD),modules.load,$(TARGET_RECOVERY_ROOT_OUT)))
|
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call module-load-list-copy-paths,$(call intermediates-dir-for,PACKAGING,ramdisk_modules),$(BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD),modules.load,$(TARGET_RECOVERY_ROOT_OUT)))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_RECOVERY_KERNEL_MODULES),$(TARGET_RECOVERY_ROOT_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_recovery),$(BOARD_RECOVERY_KERNEL_MODULES_LOAD),modules.load.recovery))
|
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_RECOVERY_KERNEL_MODULES),$(TARGET_RECOVERY_ROOT_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_recovery),$(BOARD_RECOVERY_KERNEL_MODULES_LOAD),modules.load.recovery,$(BOARD_RECOVERY_KERNEL_MODULES_ARCHIVE)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(strip $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES)),)
|
ifneq ($(strip $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES))$(strip $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE)),)
|
||||||
ifeq ($(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD),)
|
ifeq ($(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD),)
|
||||||
BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES)
|
BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD := $(BOARD_VENDOR_RAMDISK_KERNEL_MODULES)
|
||||||
endif
|
endif
|
||||||
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_VENDOR_RAMDISK_KERNEL_MODULES),$(TARGET_VENDOR_RAMDISK_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_vendor_ramdisk),$(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD),modules.load))
|
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_VENDOR_RAMDISK_KERNEL_MODULES),$(TARGET_VENDOR_RAMDISK_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_vendor_ramdisk),$(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_LOAD),modules.load,$(BOARD_VENDOR_RAMDISK_KERNEL_MODULES_ARCHIVE)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(BOARD_USES_RECOVERY_AS_BOOT), true)
|
ifneq ($(BOARD_USES_RECOVERY_AS_BOOT), true)
|
||||||
ifneq ($(strip $(BOARD_GENERIC_RAMDISK_KERNEL_MODULES)),)
|
ifneq ($(strip $(BOARD_GENERIC_RAMDISK_KERNEL_MODULES)),)
|
||||||
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_GENERIC_RAMDISK_KERNEL_MODULES),$(TARGET_RAMDISK_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_ramdisk),$(BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD),modules.load))
|
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_GENERIC_RAMDISK_KERNEL_MODULES),$(TARGET_RAMDISK_OUT),,$(call intermediates-dir-for,PACKAGING,depmod_ramdisk),$(BOARD_GENERIC_RAMDISK_KERNEL_MODULES_LOAD),modules.load,))
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(strip $(BOARD_VENDOR_KERNEL_MODULES)),)
|
ifneq ($(strip $(BOARD_VENDOR_KERNEL_MODULES)$(strip $(BOARD_VENDOR_KERNEL_MODULES_ARCHIVE))),)
|
||||||
ifeq ($(BOARD_VENDOR_KERNEL_MODULES_LOAD),)
|
ifeq ($(BOARD_VENDOR_KERNEL_MODULES_LOAD),)
|
||||||
BOARD_VENDOR_KERNEL_MODULES_LOAD := $(BOARD_VENDOR_KERNEL_MODULES)
|
BOARD_VENDOR_KERNEL_MODULES_LOAD := $(BOARD_VENDOR_KERNEL_MODULES)
|
||||||
endif
|
endif
|
||||||
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_VENDOR_KERNEL_MODULES),$(TARGET_OUT_VENDOR),vendor,$(call intermediates-dir-for,PACKAGING,depmod_vendor),$(BOARD_VENDOR_KERNEL_MODULES_LOAD),modules.load))
|
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_VENDOR_KERNEL_MODULES),$(TARGET_OUT_VENDOR),vendor,$(call intermediates-dir-for,PACKAGING,depmod_vendor),$(BOARD_VENDOR_KERNEL_MODULES_LOAD),modules.load,$(BOARD_VENDOR_KERNEL_MODULES_ARCHIVE)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq ($(strip $(BOARD_ODM_KERNEL_MODULES)),)
|
ifneq ($(strip $(BOARD_ODM_KERNEL_MODULES))$(strip $(BOARD_ODM_KERNEL_MODULES_ARCHIVE)),)
|
||||||
ifeq ($(BOARD_RECOVERY_KERNEL_MODULES_LOAD),)
|
ifeq ($(BOARD_RECOVERY_KERNEL_MODULES_LOAD),)
|
||||||
BOARD_ODM_KERNEL_MODULES_LOAD := $(BOARD_ODM_KERNEL_MODULES)
|
BOARD_ODM_KERNEL_MODULES_LOAD := $(BOARD_ODM_KERNEL_MODULES)
|
||||||
endif
|
endif
|
||||||
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_ODM_KERNEL_MODULES),$(TARGET_OUT_ODM),odm,$(call intermediates-dir-for,PACKAGING,depmod_odm),$(BOARD_ODM_KERNEL_MODULES_LOAD),modules.load))
|
ALL_DEFAULT_INSTALLED_MODULES += $(call copy-many-files,$(call build-image-kernel-modules,$(BOARD_ODM_KERNEL_MODULES),$(TARGET_OUT_ODM),odm,$(call intermediates-dir-for,PACKAGING,depmod_odm),$(BOARD_ODM_KERNEL_MODULES_LOAD),modules.load,$(BOARD_ODM_KERNEL_MODULES_ARCHIVE)))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
# -----------------------------------------------------------------
|
# -----------------------------------------------------------------
|
||||||
|
|
Loading…
Reference in New Issue