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 <[email protected]>
---
 include/image.mk           | 15 +++++++++++++--
 include/kernel-build.mk    |  1 -
 include/kernel-defaults.mk |  8 ++++----
 3 files changed, 17 insertions(+), 7 deletions(-)

diff --git a/include/image.mk b/include/image.mk
index 69b2bd5445fa..bcddb8e29362 100644
--- a/include/image.mk
+++ b/include/image.mk
@@ -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 $$^ $$@
 
diff --git a/include/kernel-build.mk b/include/kernel-build.mk
index c371e78ab9b0..66f521d7aa7b 100644
--- a/include/kernel-build.mk
+++ b/include/kernel-build.mk
@@ -32,7 +32,6 @@ endef
 
 define Kernel/CompileImage
        $(call Kernel/CompileImage/Default)
-       $(call Kernel/CompileImage/Initramfs)
 endef
 
 define Kernel/Clean
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk
index f442106ecbcb..934658170f9b 100644
--- a/include/kernel-defaults.mk
+++ b/include/kernel-defaults.mk
@@ -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
-- 
2.20.1


_______________________________________________
openwrt-devel mailing list
[email protected]
https://lists.openwrt.org/mailman/listinfo/openwrt-devel

Reply via email to