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
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
# there when using OpenWRT. We just use that to create the
# "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
# 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:
# work around the bootloader's bug with extra nops
# FIXME: is this really needed now that we no longer append the code
@ -123,12 +108,19 @@ define Device/dlink-dns-313
endef
TARGET_DEVICES += dlink-dns-313
define Device/nas4220b
DEVICE_TITLE := Raidsonic NAS IB-4220-B
IMAGES += nas4220b-image
IMAGE/nas4220b-image := nas4220b-images
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
$(Device/nas4220b-sq201)
DEVICE_TITLE := Raidsonic NAS IB-4220-B
endef
TARGET_DEVICES += nas4220b
define Device/rut1xx
@ -138,10 +130,9 @@ endef
TARGET_DEVICES += rut1xx
define Device/sq201
$(Device/nas4220b-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
TARGET_DEVICES += sq201