]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
scripts/mkits.sh: move out .pagesync generation for RootFS blob
authorChristian Marangi <ansuelsmth@gmail.com>
Thu, 23 Oct 2025 13:31:46 +0000 (15:31 +0200)
committerChristian Marangi <ansuelsmth@gmail.com>
Thu, 23 Oct 2025 16:14:01 +0000 (18:14 +0200)
It's expected the mkits.sh script to generate only the relevant DTS
entry and have all the blob already prepared to use for mkimage.

This is not the case for the RootFS case where the script generates a
.pagesync with the dd command.

To better handle this, drop the dd command and instead error out if the
.pagesync blob is not found if RootFS is used.

Adapt the generic fit build in image-commands.mk to call the dd for
.pagesync right before mkits.sh.

Link: https://github.com/openwrt/openwrt/pull/20492
Signed-off-by: Christian Marangi <ansuelsmth@gmail.com>
include/image-commands.mk
scripts/mkits.sh

index 33c2ef89ad1952a3e377b9b0c4ed49ab10bac3d1..9ceec323b77c3018c503f5882d59c5c44af20f35 100644 (file)
@@ -431,24 +431,27 @@ define Build/initrd_compression
 endef
 
 define Build/fit
-       $(call locked,$(TOPDIR)/scripts/mkits.sh \
-               -D $(DEVICE_NAME) -o $@.its -k $@ \
-               -C $(word 1,$(1)) \
-               $(if $(word 2,$(1)),\
-                       $(if $(findstring 11,$(if $(DEVICE_DTS_OVERLAY),1)$(if $(findstring $(KERNEL_BUILD_DIR)/image-,$(word 2,$(1))),,1)), \
-                               -d $(KERNEL_BUILD_DIR)/image-$$(basename $(word 2,$(1))), \
-                               -d $(word 2,$(1)))) \
-               $(if $(findstring with-rootfs,$(word 3,$(1))),-r $(IMAGE_ROOTFS)) \
-               $(if $(findstring with-initrd,$(word 3,$(1))), \
-                       $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \
-                               -i $(KERNEL_BUILD_DIR)/initrd$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))).cpio$(strip $(call Build/initrd_compression)))) \
-               -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
-               $(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \
-               $(if $(DEVICE_DTS_DELIMITER),-l $(DEVICE_DTS_DELIMITER)) \
-               $(if $(DEVICE_DTS_LOADADDR),-s $(DEVICE_DTS_LOADADDR)) \
-               $(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtbo)) \
-               -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
-               -A $(LINUX_KARCH) -v $(LINUX_VERSION), gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
+       $(call locked, { \
+               $(if $(findstring with-rootfs,$(word 3,$(1))),dd if=$(IMAGE_ROOTFS) of=$(IMAGE_ROOTFS).pagesync bs=4096 conv=sync;) \
+               $(TOPDIR)/scripts/mkits.sh \
+                       -D $(DEVICE_NAME) -o $@.its -k $@ \
+                       -C $(word 1,$(1)) \
+                       $(if $(word 2,$(1)),\
+                               $(if $(findstring 11,$(if $(DEVICE_DTS_OVERLAY),1)$(if $(findstring $(KERNEL_BUILD_DIR)/image-,$(word 2,$(1))),,1)), \
+                                       -d $(KERNEL_BUILD_DIR)/image-$$(basename $(word 2,$(1))), \
+                                       -d $(word 2,$(1)))) \
+                       $(if $(findstring with-rootfs,$(word 3,$(1))),-r $(IMAGE_ROOTFS)) \
+                       $(if $(findstring with-initrd,$(word 3,$(1))), \
+                               $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \
+                                       -i $(KERNEL_BUILD_DIR)/initrd$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))).cpio$(strip $(call Build/initrd_compression)))) \
+                       -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \
+                       $(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \
+                       $(if $(DEVICE_DTS_DELIMITER),-l $(DEVICE_DTS_DELIMITER)) \
+                       $(if $(DEVICE_DTS_LOADADDR),-s $(DEVICE_DTS_LOADADDR)) \
+                       $(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtbo)) \
+                       -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \
+                       -A $(LINUX_KARCH) -v $(LINUX_VERSION) \
+       }, gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
        $(call locked,PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(findstring external,$(word 3,$(1))),\
                -E -B 0x1000 $(if $(findstring static,$(word 3,$(1))),-p 0x1000)) -f $@.its $@.new, \
          gen-cpio$(if $(TARGET_PER_DEVICE_ROOTFS),.$(ROOTFS_ID/$(DEVICE_NAME))))
index 46ab5ee023f54249e41793f9a2ee8ab3a0d0805d..fc2b580ee202816a3e39d9520ba0d62a394200dd 100755 (executable)
@@ -82,6 +82,11 @@ if [ -z "${ARCH}" ] || [ -z "${COMPRESS}" ] || [ -z "${LOAD_ADDR}" ] || \
        usage
 fi
 
+if [ -n "${ROOTFS}" ] && [ ! -f "${ROOTFS}".pagesync ]; then
+       echo "Missing .pagesync blob for RootFS blob '${ROOTFS}'"
+       exit 1
+fi
+
 ARCH_UPPER=$(echo "$ARCH" | tr '[:lower:]' '[:upper:]')
 
 if [ -n "${COMPATIBLE}" ]; then
@@ -136,7 +141,6 @@ fi
 
 
 if [ -n "${ROOTFS}" ]; then
-       dd if="${ROOTFS}" of="${ROOTFS}.pagesync" bs=4096 conv=sync
        ROOTFS_NODE="
                rootfs${REFERENCE_CHAR}$ROOTFSNUM {
                        description = \"${ARCH_UPPER} OpenWrt ${DEVICE} rootfs\";