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 <chunkeey@gmail.com>
This commit is contained in:
Christian Lamparter 2019-01-22 22:18:57 +01:00
parent de07a0a29a
commit 5bac623895
2 changed files with 26 additions and 35 deletions

View File

@ -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 # Create the special NAS4220B and Itian Square One SQ201 image
# and overlay inside the "rd.gz" file. We pad it out to 6144K # format with the squashfs and overlay inside the "rd.gz" file.
# which is the size of the initramfs partition. # 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 define Build/nas4220b-sq201-images
dd if=$(IMAGE_ROOTFS) of=$(BIN_DIR)/rd.gz bs=6144k conv=sync rm -rf $@-tmp
dd if=/dev/zero of=$(BIN_DIR)/hddapp.tgz bs=6144k count=1 mkdir -p $@-tmp
cp $(IMAGE_KERNEL) $(BIN_DIR)/zImage dd if=$(IMAGE_ROOTFS) of=$@-tmp/rd.gz bs=6144k conv=sync
cp ./ImageInfo-ib4220 $(BIN_DIR)/ImageInfo dd if=/dev/zero of=$@-tmp/hddapp.tgz bs=6144k count=1
(cd $(BIN_DIR); tar -czf $(IMG_PREFIX)-sysupgrade-ib4220b.tar.gz ImageInfo zImage rd.gz hddapp.tgz) cp $(IMAGE_KERNEL) $@-tmp/zImage
mv $(BIN_DIR)/rd.gz $(BIN_DIR)/$(IMG_PREFIX)-nas4220b-rd.gz cp ./ImageInfo-$(1) $@-tmp/ImageInfo
rm $(BIN_DIR)/hddapp.tgz (cd $@-tmp; tar --owner=0 --group=0 --numeric-owner --mtime=@$(SOURCE_DATE_EPOCH) \
mv $(BIN_DIR)/zImage $(BIN_DIR)/$(IMG_PREFIX)-nas4220b-zImage -czf $@ ImageInfo zImage rd.gz hddapp.tgz)
rm -f $(BIN_DIR)/ImageInfo 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,12 +108,19 @@ define Device/dlink-dns-313
endef endef
TARGET_DEVICES += dlink-dns-313 TARGET_DEVICES += dlink-dns-313
define Device/nas4220b define Device/nas4220b-sq201
DEVICE_TITLE := Raidsonic NAS IB-4220-B ARTIFACTS := zImage
IMAGES += nas4220b-image ARTIFACT/zImage := append-kernel
IMAGE/nas4220b-image := nas4220b-images 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) DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
endef endef
define Device/nas4220b
$(Device/nas4220b-sq201)
DEVICE_TITLE := Raidsonic NAS IB-4220-B
endef
TARGET_DEVICES += nas4220b TARGET_DEVICES += nas4220b
define Device/rut1xx define Device/rut1xx
@ -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 DEVICE_PACKAGES += rt61-pci usb2-pci
IMAGE/sq201-image := sq201-images
DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES) rt61-pci usb2-pci
endef endef
TARGET_DEVICES += sq201 TARGET_DEVICES += sq201