gemini: unify and fix ib-nas4220b and sq201 image creation
[openwrt/openwrt.git] / target / linux / gemini / image / Makefile
index a92b466a64ffd69d418657af81e1580ee0353ff0..566ac96122477fcf100f07eb5944912d77de3266 100644 (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,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