X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fstaging%2Fchunkeey.git;a=blobdiff_plain;f=include%2Fimage-commands.mk;h=740d627fc735cb32d9a5297fd688ab86481166db;hp=c3f8b4b95a30eeecc4ff90892506f85100933ab9;hb=HEAD;hpb=d468ff97b71994d5f30751fdd22c530c85a52f42 diff --git a/include/image-commands.mk b/include/image-commands.mk index c3f8b4b95a..376553b8d2 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -3,6 +3,10 @@ IMAGE_KERNEL = $(word 1,$^) IMAGE_ROOTFS = $(word 2,$^) +define ModelNameLimit16 +$(shell expr substr "$(word 2, $(subst _, ,$(1)))" 1 16) +endef + define rootfs_align $(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1)))))) endef @@ -23,6 +27,39 @@ define Build/append-kernel dd if=$(IMAGE_KERNEL) >> $@ endef +define Build/package-kernel-ubifs + mkdir $@.kernelubifs + cp $@ $@.kernelubifs/kernel + $(STAGING_DIR_HOST)/bin/mkfs.ubifs \ + $(KERNEL_UBIFS_OPTS) \ + -r $@.kernelubifs $@ + rm -r $@.kernelubifs +endef + +define Build/append-image + cp "$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)" "$@.stripmeta" + fwtool -s /dev/null -t "$@.stripmeta" || : + fwtool -i /dev/null -t "$@.stripmeta" || : + dd if="$@.stripmeta" >> "$@" + rm "$@.stripmeta" +endef + +ifdef IB +define Build/append-image-stage + dd if=$(STAGING_DIR_IMAGE)/$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))-$(DEVICE_NAME)-$(1) >> $@ +endef +else +define Build/append-image-stage + cp "$(BIN_DIR)/$(DEVICE_IMG_PREFIX)-$(1)" "$@.stripmeta" + fwtool -s /dev/null -t "$@.stripmeta" || : + fwtool -i /dev/null -t "$@.stripmeta" || : + dd if="$@.stripmeta" of="$(STAGING_DIR_IMAGE)/$(BOARD)$(if $(SUBTARGET),-$(SUBTARGET))-$(DEVICE_NAME)-$(1)" + dd if="$@.stripmeta" >> "$@" + rm "$@.stripmeta" +endef +endif + + compat_version=$(if $(DEVICE_COMPAT_VERSION),$(DEVICE_COMPAT_VERSION),1.0) json_quote=$(subst ','\'',$(subst ",\",$(1))) #")') @@ -52,6 +89,7 @@ metadata_json = \ define Build/append-metadata $(if $(SUPPORTED_DEVICES),-echo $(call metadata_json) | fwtool -I - $@) + sha256sum "$@" | cut -d" " -f1 > "$@.sha256sum" [ ! -s "$(BUILD_KEY)" -o ! -s "$(BUILD_KEY).ucert" -o ! -s "$@" ] || { \ cp "$(BUILD_KEY).ucert" "$@.ucert" ;\ usign -S -m "$@" -s "$(BUILD_KEY)" -x "$@.sig" ;\ @@ -83,7 +121,7 @@ define Build/append-ubi $(if $(UBOOTENV_IN_UBI),--uboot-env) \ $(if $(KERNEL_IN_UBI),--kernel $(IMAGE_KERNEL)) \ $(foreach part,$(UBINIZE_PARTS),--part $(part)) \ - $(IMAGE_ROOTFS) \ + --rootfs $(IMAGE_ROOTFS) \ $@.tmp \ -p $(BLOCKSIZE:%k=%KiB) -m $(PAGESIZE) \ $(if $(SUBPAGESIZE),-s $(SUBPAGESIZE)) \ @@ -93,6 +131,18 @@ define Build/append-ubi rm $@.tmp endef +define Build/ubinize-kernel + cp $@ $@.tmp + sh $(TOPDIR)/scripts/ubinize-image.sh \ + --kernel $@.tmp \ + $@ \ + -p $(BLOCKSIZE:%k=%KiB) -m $(PAGESIZE) \ + $(if $(SUBPAGESIZE),-s $(SUBPAGESIZE)) \ + $(if $(VID_HDR_OFFSET),-O $(VID_HDR_OFFSET)) \ + $(UBINIZE_OPTS) + rm $@.tmp +endef + define Build/append-uboot dd if=$(UBOOT_PATH) >> $@ endef @@ -150,11 +200,15 @@ define Build/check-size @imagesize="$$(stat -c%s $@)"; \ limitsize="$$(($(subst k,* 1024,$(subst m, * 1024k,$(if $(1),$(1),$(IMAGE_SIZE))))))"; \ [ $$limitsize -ge $$imagesize ] || { \ - echo "WARNING: Image file $@ is too big: $$imagesize > $$limitsize" >&2; \ + $(call ERROR_MESSAGE, WARNING: Image file $@ is too big: $$imagesize > $$limitsize); \ rm -f $@; \ } endef +define Build/copy-file + cat "$(1)" > "$@" +endef + define Build/elecom-product-header $(eval product=$(word 1,$(1))) $(eval fw=$(if $(word 2,$(1)),$(word 2,$(1)),$@)) @@ -167,6 +221,19 @@ define Build/elecom-product-header mv $(fw).new $(fw) endef +define Build/elecom-wrc-gs-factory + $(eval product=$(word 1,$(1))) + $(eval version=$(word 2,$(1))) + $(eval hash_opt=$(word 3,$(1))) + $(MKHASH) md5 $(hash_opt) $@ >> $@ + ( \ + echo -n "ELECOM $(product) v$(version)" | \ + dd bs=32 count=1 conv=sync; \ + dd if=$@; \ + ) > $@.new + mv $@.new $@ +endef + define Build/elx-header $(eval hw_id=$(word 1,$(1))) $(eval xor_pattern=$(word 2,$(1))) @@ -178,7 +245,7 @@ define Build/elx-header dd bs=20 count=1 conv=sync; \ echo -ne "$$(printf '%08x' $$(stat -c%s $@) | fold -s2 | xargs -I {} echo \\x{} | tr -d '\n')" | \ dd bs=8 count=1 conv=sync; \ - echo -ne "$$($(STAGING_DIR_HOST)/bin/mkhash md5 $@ | fold -s2 | xargs -I {} echo \\x{} | tr -d '\n')" | \ + echo -ne "$$($(MKHASH) md5 $@ | fold -s2 | xargs -I {} echo \\x{} | tr -d '\n')" | \ dd bs=58 count=1 conv=sync; \ ) > $(KDIR)/tmp/$(DEVICE_NAME).header $(call Build/xor-image,-p $(xor_pattern) -x) @@ -192,15 +259,32 @@ define Build/eva-image mv $@.new $@ endef +define Build/initrd_compression + $(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_BZIP2),.bzip2) \ + $(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_GZIP),.gzip) \ + $(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_LZMA),.lzma) \ + $(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_XZ),.xz) \ + $(if $(CONFIG_TARGET_INITRAMFS_COMPRESSION_ZSTD),.zstd) +endef + define Build/fit $(TOPDIR)/scripts/mkits.sh \ -D $(DEVICE_NAME) -o $@.its -k $@ \ - $(if $(word 2,$(1)),-d $(word 2,$(1))) -C $(word 1,$(1)) \ + -C $(word 1,$(1)) $(if $(word 2,$(1)),\ + $(if $(DEVICE_DTS_OVERLAY),-d $(KERNEL_BUILD_DIR)/image-$$(basename $(word 2,$(1))),\ + -d $(word 2,$(1)))) \ + $(if $(findstring with-rootfs,$(word 3,$(1))),-r $(IMAGE_ROOTFS)) \ + $(if $(findstring with-initrd,$(word 3,$(1))), \ + $(if $(CONFIG_TARGET_ROOTFS_INITRAMFS_SEPARATE), \ + -i $(KERNEL_BUILD_DIR)/initrd.cpio$(strip $(call Build/initrd_compression)))) \ -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ $(if $(DEVICE_FDT_NUM),-n $(DEVICE_FDT_NUM)) \ - -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config@1") \ + $(if $(DEVICE_DTS_DELIMITER),-l $(DEVICE_DTS_DELIMITER)) \ + $(if $(DEVICE_DTS_OVERLAY),$(foreach dtso,$(DEVICE_DTS_OVERLAY), -O $(dtso):$(KERNEL_BUILD_DIR)/image-$(dtso).dtb)) \ + -c $(if $(DEVICE_DTS_CONFIG),$(DEVICE_DTS_CONFIG),"config-1") \ -A $(LINUX_KARCH) -v $(LINUX_VERSION) - PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage -f $@.its $@.new + PATH=$(LINUX_DIR)/scripts/dtc:$(PATH) mkimage $(if $(findstring external,$(word 3,$(1))),\ + -E -B 0x1000 $(if $(findstring static,$(word 3,$(1))),-p 0x1000)) -f $@.its $@.new @mv $@.new $@ endef @@ -220,6 +304,16 @@ define Build/install-dtb ) endef +define Build/iptime-crc32 + $(STAGING_DIR_HOST)/bin/iptime-crc32 $(1) $@ $@.new + mv $@.new $@ +endef + +define Build/iptime-naspkg + $(STAGING_DIR_HOST)/bin/iptime-naspkg $(1) $@ $@.new + mv $@.new $@ +endef + define Build/jffs2 rm -rf $(KDIR_TMP)/$(DEVICE_NAME)/jffs2 && \ mkdir -p $(KDIR_TMP)/$(DEVICE_NAME)/jffs2/$$(dirname $(1)) && \ @@ -236,8 +330,11 @@ define Build/jffs2 endef define Build/kernel2minor - kernel2minor -k $@ -r $@.new $(1) - mv $@.new $@ + $(eval temp_file := $(shell mktemp)) + cp $@ $(temp_file) + kernel2minor -k $(temp_file) -r $(temp_file).new $(1) + mv $(temp_file).new $@ + rm -f $(temp_file) endef define Build/kernel-bin @@ -321,7 +418,7 @@ define Build/patch-cmdline endef # Convert a raw image into a $1 type image. -# E.g. | qemu-image vdi +# E.g. | qemu-image vdi define Build/qemu-image if command -v qemu-img; then \ qemu-img convert -f raw -O $1 $@ $@.new; \ @@ -450,12 +547,12 @@ define Build/xor-image endef define Build/zip + rm -rf $@.tmp mkdir $@.tmp - mv $@ $@.tmp/$(1) - - zip -j -X \ - $(if $(SOURCE_DATE_EPOCH),--mtime="$(SOURCE_DATE_EPOCH)") \ - $@ $@.tmp/$(if $(1),$(1),$@) + mv $@ $@.tmp/$(word 1,$(1)) + TZ=UTC $(STAGING_DIR_HOST)/bin/zip -j -X \ + $(wordlist 2,$(words $(1)),$(1)) \ + $@ $@.tmp/$(if $(word 1,$(1)),$(word 1,$(1)),$$(basename $@)) rm -rf $@.tmp endef