diff options
| author | Christian Marangi | 2024-09-16 16:38:16 +0000 |
|---|---|---|
| committer | Christian Marangi | 2024-09-17 10:12:38 +0000 |
| commit | d78dec3e19e3f2ab0f14ba6819357d50156b30b8 (patch) | |
| tree | 2f49286a29b0d4c163f3ad6484a4a75f9b1e47c0 | |
| parent | 52cc9d82f1138e28dcf590fbe60c8a69635abcea (diff) | |
| download | openwrt-d78dec3e19e3f2ab0f14ba6819357d50156b30b8.tar.gz | |
kernel: copy kernel build dir on Per-Device Initramfs compilation
To speedup compilation of Per-Device Initramfs, copy the kernel build
directory for each rootfs ID.
This permits concurrent execution of kernel build without conflicting
with each other at the expense of additional disk space usage.
To limit disk space usage, the copied kernel directory is deleted after
the Per-Device Initramfs image is generated and saved.
Link: https://github.com/openwrt/openwrt/pull/16404
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
| -rw-r--r-- | include/kernel-defaults.mk | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/include/kernel-defaults.mk b/include/kernel-defaults.mk index fc1262aad3..e9e36d72b6 100644 --- a/include/kernel-defaults.mk +++ b/include/kernel-defaults.mk @@ -153,13 +153,13 @@ endif # $1: image suffix # $2: Per Device Rootfs ID define Kernel/CopyImage - cmp -s $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug$(2) || { \ - $(KERNEL_CROSS)objcopy -O binary $(OBJCOPY_STRIP) -S $(LINUX_DIR)/vmlinux $(LINUX_KERNEL)$(1)$(2); \ - $(KERNEL_CROSS)objcopy $(OBJCOPY_STRIP) -S $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).elf$(2); \ - $(CP) $(LINUX_DIR)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug$(2); \ + cmp -s $(LINUX_DIR)$(2)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug$(2) || { \ + $(KERNEL_CROSS)objcopy -O binary $(OBJCOPY_STRIP) -S $(LINUX_DIR)$(2)/vmlinux $(LINUX_KERNEL)$(1)$(2); \ + $(KERNEL_CROSS)objcopy $(OBJCOPY_STRIP) -S $(LINUX_DIR)$(2)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).elf$(2); \ + $(CP) $(LINUX_DIR)$(2)/vmlinux $(KERNEL_BUILD_DIR)/vmlinux$(1).debug$(2); \ $(foreach k, \ $(if $(KERNEL_IMAGES),$(KERNEL_IMAGES),$(filter-out vmlinux dtbs,$(KERNELNAME))), \ - $(CP) $(LINUX_DIR)/arch/$(LINUX_KARCH)/boot/$(IMAGES_DIR)/$(k) $(KERNEL_BUILD_DIR)/$(k)$(1)$(2); \ + $(CP) $(LINUX_DIR)$(2)/arch/$(LINUX_KARCH)/boot/$(IMAGES_DIR)/$(k) $(KERNEL_BUILD_DIR)/$(k)$(1)$(2); \ ) \ } endef @@ -173,7 +173,9 @@ endef define Kernel/PrepareConfigPerRootfs { \ [ ! -d "$(1)" ] || rm -rf $(1); \ - mkdir $(1) && $(CP) $(LINUX_DIR)/.config $(1); \ + mkdir $(1) && $(CP) -T $(LINUX_DIR) $(1); \ + touch $(1)/.config; \ + rm -rf $(1)/usr/initramfs_data.cpio*; \ } endef @@ -209,10 +211,9 @@ define Kernel/CompileImage/Initramfs $(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD), \ $(STAGING_DIR_HOST)/bin/zstd -T0 -f -o $(if $(2),$(LINUX_DIR)$(2),$(KERNEL_BUILD_DIR))/initrd.cpio.zstd $(if $(2),$(LINUX_DIR)$(2),$(KERNEL_BUILD_DIR))/initrd.cpio;) \ $(if $(2),,$(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all);),\ - $(call locked,$(if $(2),$(CP) $(LINUX_DIR)$(2)/.config* $(LINUX_DIR) && touch $(LINUX_DIR)/.config && ) \ - rm -rf $(LINUX_DIR)/usr/initramfs_data.cpio* $(LINUX_DIR)/.config.prev && \ - $(KERNEL_MAKE) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all), compile-initramfs);) \ + $(KERNEL_MAKE) $(if $(2),-C $(LINUX_DIR)$(2)) $(KERNEL_MAKEOPTS_IMAGE) $(if $(KERNELNAME),$(KERNELNAME),all);) \ $(call Kernel/CopyImage,-initramfs,$(2)); \ + $(if $(2),rm -rf $(LINUX_DIR)$(2);) \ }, gen-initramfs$(if $(2),-$(2))); endef else |