@@ -10,6 +10,7 @@ include $(INCLUDE_DIR)/prereq.mk
include $(INCLUDE_DIR)/kernel.mk
include $(INCLUDE_DIR)/version.mk
include $(INCLUDE_DIR)/image-commands.mk
+include $(INCLUDE_DIR)/kernel-defaults.mk
ifndef IB
ifdef CONFIG_TARGET_PER_DEVICE_ROOTFS
@@ -469,10 +470,17 @@ define set_rootfs_packages
PACKAGES_$$(ROOTFS_ID/$(1)) := $(2)
endef
+define set_initramfs_packages
+ PKGID := $$(call mkfs_packages_id,$(2))
+ KERNEL_INITRAMFS_NAME := $$(strip $$(KERNEL_INITRAMFS_NAME)+pkg=$$(PKGID))
+ PACKAGES_$$(PKGID) := $(2)
+endef
+
define Device/Check/Common
_PROFILE_SET = $$(strip $$(foreach profile,$$(PROFILES) DEVICE_$(1),$$(call DEVICE_CHECK_PROFILE,$$(profile))))
DEVICE_PACKAGES += $$(call extra_packages,$$(DEVICE_PACKAGES))
- $$(eval $$(if $$(_PROFILE_SET),$$(foreach image,$$(IMAGES),$$(if $$(IMAGE_PACKAGES/$$(image)),$$(call set_rootfs_packages,$(1)/$$(image),$$(IMAGE_PACKAGES/$$(image)))))))
+ $$(if $$(_PROFILE_SET),$$(eval $$(foreach image,$$(IMAGES),$$(if $$(IMAGE_PACKAGES/$$(image)),$$(call set_rootfs_packages,$(1)/$$(image),$$(IMAGE_PACKAGES/$$(image)))))))
+ $$(if $$(_PROFILE_SET)$$(KERNEL_INITRAMFS)$$(IMAGE_PACKAGES/initramfs),$$(eval $$(call set_initramfs_packages,$(1),$$(IMAGE_PACKAGES/initramfs))))
ifdef TARGET_PER_DEVICE_ROOTFS
$$(if $$(_PROFILE_SET),$$(eval $$(call merge_packages,_PACKAGES,$$(DEVICE_PACKAGES) $$(call DEVICE_EXTRA_PACKAGES,$(1)))))
$$(if $$(_PROFILE_SET),$$(call set_rootfs_packages,$(1),$$(_PACKAGES)))
@@ -490,10 +498,13 @@ endef
ifndef IB
define Device/Build/initramfs
+ PKGID := $(param_get,pkg,$(subst +,$(space),$$(KERNEL_INITRAMFS_NAME)))
$(call Device/Export,$(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE),$(1))
$$(_TARGET): $$(if $$(KERNEL_INITRAMFS),$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE))
- $(KDIR)/$$(KERNEL_INITRAMFS_NAME):: image_prepare
+ $(KDIR)/$$(KERNEL_INITRAMFS_NAME):: $$(if $$(PKGID),target-dir-$$(PKGID)) image_prepare
+ $$(call Kernel/CompileImage/Initramfs,$(if $$(PKGID),$(KDIR)/target-dir-$$(PKGID),$(TARGET_DIR)))
+
$(BIN_DIR)/$$(KERNEL_INITRAMFS_IMAGE): $(KDIR)/tmp/$$(KERNEL_INITRAMFS_IMAGE)
cp $$^ $$@
@@ -32,7 +32,6 @@ endef
define Kernel/CompileImage
$(call Kernel/CompileImage/Default)
- $(call Kernel/CompileImage/Initramfs)
endef
define Kernel/Clean
@@ -74,11 +74,11 @@ ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
$(CP) $(GENERIC_PLATFORM_DIR)/other-files/init $(KERNEL_BUILD_DIR)/initramfs.init
$(if $(SOURCE_DATE_EPOCH),touch -hcd "@$(SOURCE_DATE_EPOCH)" $(KERNEL_BUILD_DIR)/initramfs.init)
echo "file /init $(KERNEL_BUILD_DIR)/initramfs.init 0755 0 0" >$(KERNEL_BUILD_DIR)/initramfs.txt
- $(eval INITRAMFS_SOURCES?="$(strip $(KERNEL_BUILD_DIR)/initramfs.txt $(TARGET_DIR) $(INITRAMFS_EXTRA_FILES))")
+ $(eval INITRAMFS_SOURCES=$(KERNEL_BUILD_DIR)/initramfs.txt $(1) $(INITRAMFS_EXTRA_FILES))
endef
else
define Kernel/Configure/Initramfs
- $(eval INITRAMFS_SOURCES="$(call qstrip,$(CONFIG_EXTERNAL_CPIO))")
+ $(eval INITRAMFS_SOURCES=$(call qstrip,$(CONFIG_EXTERNAL_CPIO)))
endef
endif
else
@@ -115,7 +115,7 @@ endef
ifneq ($(CONFIG_TARGET_ROOTFS_INITRAMFS),)
define Kernel/CompileImage/Initramfs
- $(call Kernel/Configure/Initramfs)
+ $(call Kernel/Configure/Initramfs,$(1))
+$(KERNEL_MAKE) \
CONFIG_BLK_DEV_INITRD=y \
CONFIG_INITRAMFS_ROOT_UID=$(shell id -u) \
@@ -126,7 +126,7 @@ define Kernel/CompileImage/Initramfs
$(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_$(c)),\
CONFIG_INITRAMFS_COMPRESSION_$(c)=y CONFIG_RD_$(c)=y,\
CONFIG_INITRAMFS_COMPRESSION_$(c)=n CONFIG_RD_$(c)=n))\
- CONFIG_INITRAMFS_SOURCE=$(INITRAMFS_SOURCES) \
+ CONFIG_INITRAMFS_SOURCE="$(INITRAMFS_SOURCES)" \
$(if $(KERNELNAME),$(KERNELNAME),all)
$(call Kernel/CopyImage,-initramfs)
endef
Move the kernel initramfs build later in the build process and into image.mk. This allows using per-target and per-image rootfs base directories for the initramfs build too. Proof-of-Concept state. This needs cleanup and testing, and someone who knows how to write a Makefilea... Signed-off-by: Bjørn Mork <bjorn@mork.no> --- include/image.mk | 15 +++++++++++++-- include/kernel-build.mk | 1 - include/kernel-defaults.mk | 8 ++++---- 3 files changed, 17 insertions(+), 7 deletions(-)