浏览代码

gemini: unify and fix ib-nas4220b and sq201 image creation

Both Build/sq201-images and Build/nas4220b-images scripts
are very similar. This patch unifies both methods at the
cost of renaming the produced sysupgrade file names, but
with the benifit of creating better reproducible files.

The patch also fixes a race in parallel builds in which case
the ImageInfo of one device could end up in both sysupgrade
files.

Signed-off-by: Christian Lamparter <[email protected]>
Christian Lamparter 6 年之前
父节点
当前提交
5bac623895
共有 2 个文件被更改,包括 25 次插入34 次删除
  1. 0 0
      target/linux/gemini/image/ImageInfo-nas4220b
  2. 25 34
      target/linux/gemini/image/Makefile

+ 0 - 0
target/linux/gemini/image/ImageInfo-ib4220 → target/linux/gemini/image/ImageInfo-nas4220b


+ 25 - 34
target/linux/gemini/image/Makefile

@@ -39,40 +39,25 @@ define Build/dns313-images
 	if [ -d $(BIN_DIR)/.boot ] ; then rm -rf $(BIN_DIR)/.boot ; fi
 	if [ -d $(BIN_DIR)/.boot ] ; then rm -rf $(BIN_DIR)/.boot ; fi
 endef
 endef
 
 
-# Create the special NAS4220B image format with the squashfs
-# and overlay inside the "rd.gz" file. We pad it out to 6144K
-# which is the size of the initramfs partition.
+# Create the special NAS4220B and Itian Square One SQ201 image
+# format with the squashfs and overlay inside the "rd.gz" file.
+# We pad it out to 6144K which is the size of the initramfs partition.
 #
 #
 # The "application" partition is just blank. You can put anything
 # The "application" partition is just blank. You can put anything
 # there when using OpenWRT. We just use that to create the
 # there when using OpenWRT. We just use that to create the
 # "sysupgrade" firmware image.
 # "sysupgrade" firmware image.
-define Build/nas4220b-images
-	dd if=$(IMAGE_ROOTFS) of=$(BIN_DIR)/rd.gz bs=6144k conv=sync
-	dd if=/dev/zero of=$(BIN_DIR)/hddapp.tgz bs=6144k count=1
-	cp $(IMAGE_KERNEL) $(BIN_DIR)/zImage
-	cp ./ImageInfo-ib4220 $(BIN_DIR)/ImageInfo
-	(cd $(BIN_DIR); tar -czf $(IMG_PREFIX)-sysupgrade-ib4220b.tar.gz ImageInfo zImage rd.gz hddapp.tgz)
-	mv $(BIN_DIR)/rd.gz $(BIN_DIR)/$(IMG_PREFIX)-nas4220b-rd.gz
-	rm $(BIN_DIR)/hddapp.tgz
-	mv $(BIN_DIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-nas4220b-zImage
-	rm -f $(BIN_DIR)/ImageInfo
+define Build/nas4220b-sq201-images
+	rm -rf $@-tmp
+	mkdir -p $@-tmp
+	dd if=$(IMAGE_ROOTFS) of=$@-tmp/rd.gz bs=6144k conv=sync
+	dd if=/dev/zero of=$@-tmp/hddapp.tgz bs=6144k count=1
+	cp $(IMAGE_KERNEL) $@-tmp/zImage
+	cp ./ImageInfo-$(1) $@-tmp/ImageInfo
+	(cd $@-tmp; tar --owner=0 --group=0 --numeric-owner --mtime=@$(SOURCE_DATE_EPOCH) \
+			-czf $@ ImageInfo zImage rd.gz hddapp.tgz)
+	rm -rf $@-tmp
 endef
 endef
 
 
-# The Itian Square One SQ201 uses the same method.
-define Build/sq201-images
-	dd if=$(IMAGE_ROOTFS) of=$(BIN_DIR)/rd.gz bs=6144k conv=sync
-	dd if=/dev/zero of=$(BIN_DIR)/hddapp.tgz bs=6144k count=1
-	cp $(IMAGE_KERNEL) $(BIN_DIR)/zImage
-	cp ./ImageInfo-sq201 $(BIN_DIR)/ImageInfo
-	sed -i -e "s/DATESTR/`date +%Y%m%d`/g" $(BIN_DIR)/ImageInfo
-	(cd $(BIN_DIR); tar -czf $(IMG_PREFIX)-sysupgrade-sq201.tar.gz ImageInfo zImage rd.gz hddapp.tgz)
-	mv $(BIN_DIR)/rd.gz $(BIN_DIR)/$(IMG_PREFIX)-sq201-rd.gz
-	rm $(BIN_DIR)/hddapp.tgz
-	mv $(BIN_DIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-sq201-zImage
-	rm -f $(BIN_DIR)/ImageInfo
-endef
-
-
 # WBD-111 and WBD-222:
 # WBD-111 and WBD-222:
 # work around the bootloader's bug with extra nops
 # work around the bootloader's bug with extra nops
 # FIXME: is this really needed now that we no longer append the code
 # FIXME: is this really needed now that we no longer append the code
@@ -123,11 +108,18 @@ define Device/dlink-dns-313
 endef
 endef
 TARGET_DEVICES += dlink-dns-313
 TARGET_DEVICES += dlink-dns-313
 
 
+define Device/nas4220b-sq201
+	ARTIFACTS := zImage
+	ARTIFACT/zImage := append-kernel
+	IMAGES += rd.gz sysupgrade.tar.gz
+	IMAGE/rd.gz := append-rootfs | pad-to 6144k
+	IMAGE/sysupgrade.tar.gz := nas4220b-sq201-images $(1)
+	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
+endef
+
 define Device/nas4220b
 define Device/nas4220b
+	$(Device/nas4220b-sq201)
 	DEVICE_TITLE := Raidsonic NAS IB-4220-B
 	DEVICE_TITLE := Raidsonic NAS IB-4220-B
-	IMAGES += nas4220b-image
-	IMAGE/nas4220b-image := nas4220b-images
-	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
 endef
 endef
 TARGET_DEVICES += nas4220b
 TARGET_DEVICES += nas4220b
 
 
@@ -138,10 +130,9 @@ endef
 TARGET_DEVICES += rut1xx
 TARGET_DEVICES += rut1xx
 
 
 define Device/sq201
 define Device/sq201
+	$(Device/nas4220b-sq201)
 	DEVICE_TITLE := ITian Square One SQ201
 	DEVICE_TITLE := ITian Square One SQ201
-	IMAGES += sq201-image
-	IMAGE/sq201-image := sq201-images
-	DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES) rt61-pci usb2-pci
+	DEVICE_PACKAGES += rt61-pci usb2-pci
 endef
 endef
 TARGET_DEVICES += sq201
 TARGET_DEVICES += sq201