Skip to content
Permalink
Browse files

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>
  • Loading branch information...
chunkeey committed Jan 22, 2019
1 parent de07a0a commit 5bac62389596b260d89677cb808c7eddd5cc6ad9
File renamed without changes.
@@ -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,11 +108,18 @@ define Device/dlink-dns-313
endef
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
$(Device/nas4220b-sq201)
DEVICE_TITLE := Raidsonic NAS IB-4220-B
IMAGES += nas4220b-image
IMAGE/nas4220b-image := nas4220b-images
DEVICE_PACKAGES := $(GEMINI_NAS_PACKAGES)
endef
TARGET_DEVICES += nas4220b

@@ -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

0 comments on commit 5bac623

Please sign in to comment.
You can’t perform that action at this time.