From patchwork Mon Oct 26 19:39:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1388044 X-Patchwork-Delegate: freifunk@adrianschmutzler.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=adrianschmutzler.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=dUAYzbWv; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CKlbt0SXSz9sRR for ; Tue, 27 Oct 2020 06:42:34 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe :List-Id:MIME-Version:Message-Id:Date:Subject:To:From:Reply-To:Cc:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Owner; bh=fjI3Dz+dyoZDsU7m0Z58NsCEtYH+p4JnWViEpDwSmRs=; b=dUAYzbWv6koG5VO5CAp0CSj7Os FE7JPHjU0SDiyfyvD/LW1we793Y9cVnFufB6s4/OPh09WBbu/cOnsT5FWG/Ku4zNdgnF85JKjW5xu stsw+6qLeRf7sBffPkzpV+kzZwXAihdqNgSyxj0v7EIqHtTQWP5T8qT7ivX0nlq/caHeWSC+4MPTp nyJr0Ntfrc0LscdZOxxZc08xKQsH3Am+gH9Zj6j1PSpoA0H2JebMG3kWzQasC6RA8uHcfQvv4blRU GetsZo4I/8V9dLjXJUrSFPifJfFVupI6fKIFNYpyPGDfmR+wupG9eqSDxtGsuApWcbewlQC/OS5E3 xbtCcf+g==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX8Mc-0002nC-5K; Mon, 26 Oct 2020 19:41:06 +0000 Received: from mout.kundenserver.de ([212.227.126.187]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX8MC-0002cj-Qq for openwrt-devel@lists.openwrt.org; Mon, 26 Oct 2020 19:41:02 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MWRZr-1kuZBM0Y83-00Xqlg for ; Mon, 26 Oct 2020 20:40:39 +0100 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH 1/2] image: drop combined-image build recipe Date: Mon, 26 Oct 2020 20:39:47 +0100 Message-Id: <20201026193948.45893-1-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 X-Provags-ID: V03:K1:DFLg+89FzNTpm38EhN3RKIA0MhB4tWqB52/Mxwx3MB8Sgx93a7L 9Fi9XXoI7L8iJhZtVgaHA6X1/egCiazlVCN+Pc+pIuNR/ObXUtcO9bd/rn8LxcuqAOMIAPS F/UmwwEdVXfTThtsMfUjy+bDhc7iYNovZLlF3VLnwq3dPbY9M9mrKeBXYjuT+I/u1Gscaz8 KmssklGKE5POqyIFWubXw== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:I1+a2+73dSY=:rXa5A7OEKI3mtjUKv9I+ch r6uE04m9XKOJfIbfK2c93w2G5z6iMSSY3VkQ22ii5rmyvfQGpWbZ5IXiJQkHADF7D+ltvjhZN rslB2HyM7OED4/etnfrilE+qOhRW2pZGRH4vOIniCKU3a81x6B4/AXFyzFQOvBPnCQt3vzNdl 4Z2E7nsxoBiW74dxoHHZPwYzruB8/wRYPgHbFMHZxmaZkVfdrM9gujeRjuVi4kmKPXbsKsHjA IfU0xlgKeal94ru11wXVzrmrqiNTWAWbU1y105jrxdPBnR8W3Ont9BSua16wvGtcQ+jW55dLD ekjBTsXInAvZM4BQ/XhXC8ATudkjAyR+QI9lmCPSblfd/XZh282gOPFMutBuM5OkEvPNe8aBW yHGrbuRm0dTfKOdziwhy47dKPuJ7h1xKZxvw/mh/Yurak6MEHM/7pfV3axUJe3sXg+94A+7LJ XDz975vIuA== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201026_154041_126829_215B27FD X-CRM114-Status: UNSURE ( 9.49 ) X-CRM114-Notice: Please train this message. X-Spam-Score: -0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [212.227.126.187 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.126.187 listed in wl.mailspike.net] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org Build/combined-image is only used in ath25 target, and that defines its own version. Thus, drop the unused definition in image-commands.mk. Signed-off-by: Adrian Schmutzler --- include/image-commands.mk | 8 -------- 1 file changed, 8 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index 740d627fc7..25a9dc84c8 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -278,14 +278,6 @@ define Build/check-size } endef -define Build/combined-image - -sh $(TOPDIR)/scripts/combined-image.sh \ - "$(IMAGE_KERNEL)" \ - "$@" \ - "$@.new" - @mv $@.new $@ -endef - define Build/linksys-image $(TOPDIR)/scripts/linksys-image.sh \ "$(call param_get_default,type,$(1),$(DEVICE_NAME))" \ From patchwork Mon Oct 26 19:39:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1388045 X-Patchwork-Delegate: freifunk@adrianschmutzler.de Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (sender SPF authorized) smtp.mailfrom=lists.openwrt.org (client-ip=2001:8b0:10b:1231::1; helo=merlin.infradead.org; envelope-from=openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=adrianschmutzler.de Authentication-Results: ozlabs.org; dkim=pass (2048-bit key; secure) header.d=lists.infradead.org header.i=@lists.infradead.org header.a=rsa-sha256 header.s=merlin.20170209 header.b=y4kUvGCo; dkim-atps=neutral Received: from merlin.infradead.org (merlin.infradead.org [IPv6:2001:8b0:10b:1231::1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 4CKlcJ5pzYz9sRR for ; Tue, 27 Oct 2020 06:42:56 +1100 (AEDT) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:List-Subscribe:List-Help:List-Post:List-Archive:List-Unsubscribe :List-Id:MIME-Version:References:In-Reply-To:Message-Id:Date:Subject:To:From: Reply-To:Cc:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=Dm4Z5WRLfJuhInLNqbRYhgo+SsBvbEVSVj3UK4aYVZ4=; b=y4kUvGCop0xncZyFzSKL8stSUm Z5SNnv7F+IDCXejR60nI4uG+W7rPGleKcWmlWPmW27QrFh43ft97rKiSstFFJlEkv5p7qGJ/pL9i/ 9B5/cmY05WTc6W1BHky+PDzYY79k7c/F9KBQDs6S3tnXO/qAq4jOTD89UKYCsHNdNLrJ+8o5FRfmO TF0BDGicEzzu4BbNLqZ9cvj/fsdVvpYpTAKvprQl/WSMlYanmHVybYP1eY5C05YOegp323IwftT5h 9KXftyaM+mZYQJ9aY7H61uum+mFPxkesIVgEtMY7rmf+ZaLToZlJJYcwve/P9gsYsSNj1jUaB6rxL +KE1WqsQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX8Mj-0002pj-QY; Mon, 26 Oct 2020 19:41:13 +0000 Received: from mout.kundenserver.de ([212.227.126.187]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kX8MC-0002ci-Qq for openwrt-devel@lists.openwrt.org; Mon, 26 Oct 2020 19:41:08 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue009 [212.227.15.167]) with ESMTPSA (Nemesis) id 1N9MlI-1kJ1Ix17rA-015Fud for ; Mon, 26 Oct 2020 20:40:39 +0100 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH 2/2] image: sort image-commands.mk alphabetically Date: Mon, 26 Oct 2020 20:39:48 +0100 Message-Id: <20201026193948.45893-2-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20201026193948.45893-1-freifunk@adrianschmutzler.de> References: <20201026193948.45893-1-freifunk@adrianschmutzler.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:BqUGtBZRr04GIIqbpY+RUpLzszRqKJnfRBhCyDjbd7COggp4G6n X9V4hrjOOr54DwQeLU15kAVTlrA8MM4qiUqp96sT5EghaooelrH42Z5xlRc8WC9zIsjAPym zESyNrW6LsF6YAbaVTPvum2zePju25VBT4QkTc8AGx8B4iW1234DeB+k7IM16CMa+xB2xEg GLnzjgTkVdiXOmUE2ePzg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:sXagdilVvPc=:p1oiB0yf01QuFL1VsEc0ef zCfFAeHs9jE6OwATS/Ti7aki0V0a4vCOU42OpwFCaBPulySkaBIcg1vYTH1eFqRbDnS5Rk2LX Aiy8IZTKOoDllJ3jK9TiW2nLghCtXTOxss4a3hhN6MJ7A3EbixHF0VT9c+S7AzykcslunJyCh nH1/eAU97hrp7hjrHxUTri7lPlMxmzExoY5d7gV74ClTgbkTtgeL7De7Zd9Hdt6moOOWWX5Zc PqrKbxvmM7kyCiE7Yq+7s1WIB3nSbv5dS0scnW+5O9nKNgoYmuXxRUf9ejuCyokKymH7jawxV VrErIk+Jjd9eJmcLzwXcajgkQTNtJ7GaD7hAhQyhOBzaaJkOd2Nb5uGVXzlpKWDmhpfkOcohu WBZaDsYfartNuEI/3c8GzkoqPB9I+VLtAyYPqwAWo69q6tnO0KHG0Nd3qTZxawfY2DbC7M+Qq AULkGQGqTA== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201026_154041_224758_8B9AD4B8 X-CRM114-Status: GOOD ( 11.38 ) X-Spam-Score: -0.0 (/) X-Spam-Report: SpamAssassin version 3.4.4 on merlin.infradead.org summary: Content analysis details: (-0.0 points) pts rule name description ---- ---------------------- -------------------------------------------------- -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.126.187 listed in wl.mailspike.net] -0.0 RCVD_IN_DNSWL_NONE RBL: Sender listed at https://www.dnswl.org/, no trust [212.227.126.187 listed in list.dnswl.org] -0.0 SPF_PASS SPF: sender matches SPF record 0.0 SPF_HELO_NONE SPF: HELO does not publish an SPF Record X-BeenThere: openwrt-devel@lists.openwrt.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: OpenWrt Development List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: "openwrt-devel" Errors-To: openwrt-devel-bounces+incoming=patchwork.ozlabs.org@lists.openwrt.org The definitions in image-commands.mk seem to have no particular order. Sort them alphabetically to make it easier to actually find anything there. No other changes made beyond moving entire blocks. Signed-off-by: Adrian Schmutzler --- include/image-commands.mk | 423 +++++++++++++++++++------------------- 1 file changed, 212 insertions(+), 211 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index 25a9dc84c8..63e823594e 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -7,93 +7,54 @@ define rootfs_align $(patsubst %-256k,0x40000,$(patsubst %-128k,0x20000,$(patsubst %-64k,0x10000,$(patsubst squashfs%,0x4,$(patsubst root.%,%,$(1)))))) endef -define Build/uImage - mkimage -A $(LINUX_KARCH) \ - -O linux -T kernel \ - -C $(1) -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ - -n '$(if $(UIMAGE_NAME),$(UIMAGE_NAME),$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION))' -d $@ $@.new - mv $@.new $@ -endef -define Build/buffalo-enc - $(eval product=$(word 1,$(1))) - $(eval version=$(word 2,$(1))) - $(eval args=$(wordlist 3,$(words $(1)),$(1))) - $(STAGING_DIR_HOST)/bin/buffalo-enc \ - -p $(product) -v $(version) $(args) \ - -i $@ -o $@.new - mv $@.new $@ -endef - -define Build/buffalo-enc-tag - $(call Build/buffalo-enc,'' '' -S 152 $(1)) -endef - -define Build/buffalo-tag-dhp - $(eval product=$(word 1,$(1))) - $(eval region=$(word 2,$(1))) - $(eval language=$(word 3,$(1))) - $(STAGING_DIR_HOST)/bin/buffalo-tag \ - -d 0x01000000 -w 1 \ - -a $(BUFFALO_TAG_PLATFORM) \ - -v $(BUFFALO_TAG_VERSION) -m $(BUFFALO_TAG_MINOR) \ - -b $(product) -p $(product) \ - -r $(region) -r $(region) -l $(language) \ - -I $@ -o $@.new - mv $@.new $@ -endef - -define Build/buffalo-dhp-image - $(STAGING_DIR_HOST)/bin/mkdhpimg $@ $@.new - mv $@.new $@ +define Build/append-dtb + cat $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb >> $@ endef -define Build/eva-image - $(STAGING_DIR_HOST)/bin/lzma2eva $(KERNEL_LOADADDR) $(KERNEL_LOADADDR) $@ $@.new - mv $@.new $@ +define Build/append-kernel + dd if=$(IMAGE_KERNEL) >> $@ endef -define Build/seama - $(STAGING_DIR_HOST)/bin/seama -i $@ \ - -m "dev=/dev/mtdblock/$(SEAMA_MTDBLOCK)" -m "type=firmware" - mv $@.seama $@ -endef +compat_version=$(if $(DEVICE_COMPAT_VERSION),$(DEVICE_COMPAT_VERSION),1.0) +json_quote=$(subst ','\'',$(subst ",\",$(1))) +#")') -define Build/seama-seal - $(STAGING_DIR_HOST)/bin/seama -i $@ -s $@.seama \ - -m "signature=$(SEAMA_SIGNATURE)" - mv $@.seama $@ -endef +legacy_supported_message=$(SUPPORTED_DEVICES) - Image version mismatch: image $(compat_version), \ + device 1.0. Please wipe config during upgrade (force required) or reinstall. \ + $(if $(DEVICE_COMPAT_MESSAGE),Reason: $(DEVICE_COMPAT_MESSAGE),Please check documentation ...) -define Build/zyxel-ras-image - let \ - newsize="$(subst k,* 1024,$(RAS_ROOTFS_SIZE))"; \ - $(STAGING_DIR_HOST)/bin/mkrasimage \ - -b $(RAS_BOARD) \ - -v $(RAS_VERSION) \ - -r $@ \ - -s $$newsize \ - -o $@.new \ - $(if $(findstring separate-kernel,$(word 1,$(1))),-k $(IMAGE_KERNEL)) \ - && mv $@.new $@ -endef +metadata_devices=$(if $(1),$(subst "$(space)","$(comma)",$(strip $(foreach v,$(1),"$(call json_quote,$(v))")))) +metadata_json = \ + '{ $(if $(IMAGE_METADATA),$(IMAGE_METADATA)$(comma)) \ + "metadata_version": "1.1", \ + "compat_version": "$(call json_quote,$(compat_version))", \ + $(if $(DEVICE_COMPAT_MESSAGE),"compat_message": "$(call json_quote,$(DEVICE_COMPAT_MESSAGE))"$(comma)) \ + $(if $(filter-out 1.0,$(compat_version)),"new_supported_devices": \ + [$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma) \ + "supported_devices": ["$(call json_quote,$(legacy_supported_message))"]$(comma)) \ + $(if $(filter 1.0,$(compat_version)),"supported_devices":[$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma)) \ + "version": { \ + "dist": "$(call json_quote,$(VERSION_DIST))", \ + "version": "$(call json_quote,$(VERSION_NUMBER))", \ + "revision": "$(call json_quote,$(REVISION))", \ + "target": "$(call json_quote,$(TARGETID))", \ + "board": "$(call json_quote,$(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)))" \ + } \ + }' -define Build/netgear-chk - $(STAGING_DIR_HOST)/bin/mkchkimg \ - -o $@.new \ - -k $@ \ - -b $(NETGEAR_BOARD_ID) \ - $(if $(NETGEAR_REGION),-r $(NETGEAR_REGION),) - mv $@.new $@ +define Build/append-metadata + $(if $(SUPPORTED_DEVICES),-echo $(call metadata_json) | fwtool -I - $@) + [ ! -s "$(BUILD_KEY)" -o ! -s "$(BUILD_KEY).ucert" -o ! -s "$@" ] || { \ + cp "$(BUILD_KEY).ucert" "$@.ucert" ;\ + usign -S -m "$@" -s "$(BUILD_KEY)" -x "$@.sig" ;\ + ucert -A -c "$@.ucert" -x "$@.sig" ;\ + fwtool -S "$@.ucert" "$@" ;\ + } endef -define Build/netgear-dni - $(STAGING_DIR_HOST)/bin/mkdniimg \ - -B $(NETGEAR_BOARD_ID) -v $(VERSION_DIST).$(firstword $(subst -, ,$(REVISION))) \ - $(if $(NETGEAR_HW_ID),-H $(NETGEAR_HW_ID)) \ - -r "$(1)" \ - -i $@ -o $@.new - mv $@.new $@ +define Build/append-rootfs + dd if=$(IMAGE_ROOTFS) >> $@ endef define Build/append-squashfs-fakeroot-be @@ -110,6 +71,25 @@ define Build/append-string echo -n $(1) >> $@ endef +define Build/append-ubi + sh $(TOPDIR)/scripts/ubinize-image.sh \ + $(if $(UBOOTENV_IN_UBI),--uboot-env) \ + $(if $(KERNEL_IN_UBI),--kernel $(IMAGE_KERNEL)) \ + $(foreach part,$(UBINIZE_PARTS),--part $(part)) \ + $(IMAGE_ROOTFS) \ + $@.tmp \ + -p $(BLOCKSIZE:%k=%KiB) -m $(PAGESIZE) \ + $(if $(SUBPAGESIZE),-s $(SUBPAGESIZE)) \ + $(if $(VID_HDR_OFFSET),-O $(VID_HDR_OFFSET)) \ + $(UBINIZE_OPTS) + cat $@.tmp >> $@ + rm $@.tmp +endef + +define Build/append-uboot + dd if=$(UBOOT_PATH) >> $@ +endef + # append a fake/empty uImage header, to fool bootloaders rootfs integrity check # for example define Build/append-uImage-fakehdr @@ -126,31 +106,51 @@ define Build/append-uImage-fakehdr cat $@.fakehdr >> $@ endef -define Build/tplink-safeloader - -$(STAGING_DIR_HOST)/bin/tplink-safeloader \ - -B $(TPLINK_BOARD_ID) \ - -V $(REVISION) \ - -k $(IMAGE_KERNEL) \ - -r $@ \ - -o $@.new \ - -j \ - $(wordlist 2,$(words $(1)),$(1)) \ - $(if $(findstring sysupgrade,$(word 1,$(1))),-S) && mv $@.new $@ || rm -f $@ +define Build/buffalo-dhp-image + $(STAGING_DIR_HOST)/bin/mkdhpimg $@ $@.new + mv $@.new $@ endef -define Build/append-dtb - cat $(KDIR)/image-$(firstword $(DEVICE_DTS)).dtb >> $@ +define Build/buffalo-enc + $(eval product=$(word 1,$(1))) + $(eval version=$(word 2,$(1))) + $(eval args=$(wordlist 3,$(words $(1)),$(1))) + $(STAGING_DIR_HOST)/bin/buffalo-enc \ + -p $(product) -v $(version) $(args) \ + -i $@ -o $@.new + mv $@.new $@ endef -define Build/install-dtb - $(call locked, \ - $(foreach dts,$(DEVICE_DTS), \ - $(CP) \ - $(DTS_DIR)/$(dts).dtb \ - $(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \ - ), \ - install-dtb-$(IMG_PREFIX) \ - ) +define Build/buffalo-enc-tag + $(call Build/buffalo-enc,'' '' -S 152 $(1)) +endef + +define Build/buffalo-tag-dhp + $(eval product=$(word 1,$(1))) + $(eval region=$(word 2,$(1))) + $(eval language=$(word 3,$(1))) + $(STAGING_DIR_HOST)/bin/buffalo-tag \ + -d 0x01000000 -w 1 \ + -a $(BUFFALO_TAG_PLATFORM) \ + -v $(BUFFALO_TAG_VERSION) -m $(BUFFALO_TAG_MINOR) \ + -b $(product) -p $(product) \ + -r $(region) -r $(region) -l $(language) \ + -I $@ -o $@.new + mv $@.new $@ +endef + +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; \ + rm -f $@; \ + } +endef + +define Build/eva-image + $(STAGING_DIR_HOST)/bin/lzma2eva $(KERNEL_LOADADDR) $(KERNEL_LOADADDR) $@ $@.new + mv $@.new $@ endef define Build/fit @@ -165,28 +165,20 @@ define Build/fit @mv $@.new $@ endef -define Build/lzma - $(call Build/lzma-no-dict,-lc1 -lp2 -pb2 $(1)) -endef - -define Build/lzma-no-dict - $(STAGING_DIR_HOST)/bin/lzma e $@ $(1) $@.new - @mv $@.new $@ -endef - define Build/gzip gzip -f -9n -c $@ $(1) > $@.new @mv $@.new $@ endef -define Build/zip - mkdir $@.tmp - mv $@ $@.tmp/$(1) - - zip -j -X \ - $(if $(SOURCE_DATE_EPOCH),--mtime="$(SOURCE_DATE_EPOCH)") \ - $@ $@.tmp/$(if $(1),$(1),$@) - rm -rf $@.tmp +define Build/install-dtb + $(call locked, \ + $(foreach dts,$(DEVICE_DTS), \ + $(CP) \ + $(DTS_DIR)/$(dts).dtb \ + $(BIN_DIR)/$(IMG_PREFIX)-$(dts).dtb; \ + ), \ + install-dtb-$(IMG_PREFIX) \ + ) endef define Build/jffs2 @@ -204,55 +196,67 @@ define Build/jffs2 @mv $@.new $@ endef +define Build/kernel2minor + kernel2minor -k $@ -r $@.new $(1) + mv $@.new $@ +endef + define Build/kernel-bin rm -f $@ cp $< $@ endef -define Build/patch-cmdline - $(STAGING_DIR_HOST)/bin/patch-cmdline $@ '$(CMDLINE)' +define Build/linksys-image + $(TOPDIR)/scripts/linksys-image.sh \ + "$(call param_get_default,type,$(1),$(DEVICE_NAME))" \ + $@ $@.new + mv $@.new $@ endef -define Build/append-kernel - dd if=$(IMAGE_KERNEL) >> $@ +define Build/lzma + $(call Build/lzma-no-dict,-lc1 -lp2 -pb2 $(1)) endef -define Build/append-rootfs - dd if=$(IMAGE_ROOTFS) >> $@ +define Build/lzma-no-dict + $(STAGING_DIR_HOST)/bin/lzma e $@ $(1) $@.new + @mv $@.new $@ endef -define Build/append-ubi - sh $(TOPDIR)/scripts/ubinize-image.sh \ - $(if $(UBOOTENV_IN_UBI),--uboot-env) \ - $(if $(KERNEL_IN_UBI),--kernel $(IMAGE_KERNEL)) \ - $(foreach part,$(UBINIZE_PARTS),--part $(part)) \ - $(IMAGE_ROOTFS) \ - $@.tmp \ - -p $(BLOCKSIZE:%k=%KiB) -m $(PAGESIZE) \ - $(if $(SUBPAGESIZE),-s $(SUBPAGESIZE)) \ - $(if $(VID_HDR_OFFSET),-O $(VID_HDR_OFFSET)) \ - $(UBINIZE_OPTS) - cat $@.tmp >> $@ - rm $@.tmp +define Build/netgear-chk + $(STAGING_DIR_HOST)/bin/mkchkimg \ + -o $@.new \ + -k $@ \ + -b $(NETGEAR_BOARD_ID) \ + $(if $(NETGEAR_REGION),-r $(NETGEAR_REGION),) + mv $@.new $@ endef -define Build/append-uboot - dd if=$(UBOOT_PATH) >> $@ +define Build/netgear-dni + $(STAGING_DIR_HOST)/bin/mkdniimg \ + -B $(NETGEAR_BOARD_ID) -v $(VERSION_DIST).$(firstword $(subst -, ,$(REVISION))) \ + $(if $(NETGEAR_HW_ID),-H $(NETGEAR_HW_ID)) \ + -r "$(1)" \ + -i $@ -o $@.new + mv $@.new $@ endef -define Build/pad-to - $(call Image/pad-to,$@,$(1)) +define Build/openmesh-image + $(TOPDIR)/scripts/om-fwupgradecfg-gen.sh \ + "$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \ + "$@-fwupgrade.cfg" \ + "$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" \ + "$(call param_get_default,rootfs,$(1),$@)" + $(TOPDIR)/scripts/combined-ext-image.sh \ + "$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" "$@" \ + "$@-fwupgrade.cfg" "fwupgrade.cfg" \ + "$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" "kernel" \ + "$(call param_get_default,rootfs,$(1),$@)" "rootfs" endef define Build/pad-extra dd if=/dev/zero bs=$(1) count=1 >> $@ endef -define Build/pad-rootfs - $(STAGING_DIR_HOST)/bin/padjffs2 $@ $(1) \ - $(if $(BLOCKSIZE),$(BLOCKSIZE:%k=%),4 8 16 64 128 256) -endef - define Build/pad-offset let \ size="$$(stat -c%s $@)" \ @@ -264,38 +268,24 @@ define Build/pad-offset mv $@.new $@ endef -define Build/xor-image - $(STAGING_DIR_HOST)/bin/xorimage -i $@ -o $@.xor $(1) - mv $@.xor $@ +define Build/pad-rootfs + $(STAGING_DIR_HOST)/bin/padjffs2 $@ $(1) \ + $(if $(BLOCKSIZE),$(BLOCKSIZE:%k=%),4 8 16 64 128 256) endef -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; \ - rm -f $@; \ - } +define Build/pad-to + $(call Image/pad-to,$@,$(1)) endef -define Build/linksys-image - $(TOPDIR)/scripts/linksys-image.sh \ - "$(call param_get_default,type,$(1),$(DEVICE_NAME))" \ - $@ $@.new - mv $@.new $@ +define Build/patch-cmdline + $(STAGING_DIR_HOST)/bin/patch-cmdline $@ '$(CMDLINE)' endef -define Build/openmesh-image - $(TOPDIR)/scripts/om-fwupgradecfg-gen.sh \ - "$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" \ - "$@-fwupgrade.cfg" \ - "$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" \ - "$(call param_get_default,rootfs,$(1),$@)" - $(TOPDIR)/scripts/combined-ext-image.sh \ - "$(call param_get_default,ce_type,$(1),$(DEVICE_NAME))" "$@" \ - "$@-fwupgrade.cfg" "fwupgrade.cfg" \ - "$(call param_get_default,kernel,$(1),$(IMAGE_KERNEL))" "kernel" \ - "$(call param_get_default,rootfs,$(1),$@)" "rootfs" +# Convert a raw image into a $1 type image. +# E.g. | qemu-image vdi +define Build/qemu-image + qemu-img convert -f raw -O $1 $@ $@.new + @mv $@.new $@ endef define Build/qsdk-ipq-factory-nand @@ -312,6 +302,18 @@ define Build/qsdk-ipq-factory-nor @mv $@.new $@ endef +define Build/seama + $(STAGING_DIR_HOST)/bin/seama -i $@ \ + -m "dev=/dev/mtdblock/$(SEAMA_MTDBLOCK)" -m "type=firmware" + mv $@.seama $@ +endef + +define Build/seama-seal + $(STAGING_DIR_HOST)/bin/seama -i $@ -s $@.seama \ + -m "signature=$(SEAMA_SIGNATURE)" + mv $@.seama $@ +endef + define Build/senao-header $(STAGING_DIR_HOST)/bin/mksenaofw $(1) -e $@ -o $@.new mv $@.new $@ @@ -325,6 +327,18 @@ define Build/sysupgrade-tar $@ endef +define Build/tplink-safeloader + -$(STAGING_DIR_HOST)/bin/tplink-safeloader \ + -B $(TPLINK_BOARD_ID) \ + -V $(REVISION) \ + -k $(IMAGE_KERNEL) \ + -r $@ \ + -o $@.new \ + -j \ + $(wordlist 2,$(words $(1)),$(1)) \ + $(if $(findstring sysupgrade,$(word 1,$(1))),-S) && mv $@.new $@ || rm -f $@ +endef + define Build/tplink-v1-header $(STAGING_DIR_HOST)/bin/mktplinkfw \ -c -H $(TPLINK_HWID) -W $(TPLINK_HWREV) -L $(KERNEL_LOADADDR) \ @@ -372,51 +386,38 @@ define Build/tplink-v2-image rm -rf $@.new endef -compat_version=$(if $(DEVICE_COMPAT_VERSION),$(DEVICE_COMPAT_VERSION),1.0) -json_quote=$(subst ','\'',$(subst ",\",$(1))) -#")') - -legacy_supported_message=$(SUPPORTED_DEVICES) - Image version mismatch: image $(compat_version), \ - device 1.0. Please wipe config during upgrade (force required) or reinstall. \ - $(if $(DEVICE_COMPAT_MESSAGE),Reason: $(DEVICE_COMPAT_MESSAGE),Please check documentation ...) - -metadata_devices=$(if $(1),$(subst "$(space)","$(comma)",$(strip $(foreach v,$(1),"$(call json_quote,$(v))")))) -metadata_json = \ - '{ $(if $(IMAGE_METADATA),$(IMAGE_METADATA)$(comma)) \ - "metadata_version": "1.1", \ - "compat_version": "$(call json_quote,$(compat_version))", \ - $(if $(DEVICE_COMPAT_MESSAGE),"compat_message": "$(call json_quote,$(DEVICE_COMPAT_MESSAGE))"$(comma)) \ - $(if $(filter-out 1.0,$(compat_version)),"new_supported_devices": \ - [$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma) \ - "supported_devices": ["$(call json_quote,$(legacy_supported_message))"]$(comma)) \ - $(if $(filter 1.0,$(compat_version)),"supported_devices":[$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma)) \ - "version": { \ - "dist": "$(call json_quote,$(VERSION_DIST))", \ - "version": "$(call json_quote,$(VERSION_NUMBER))", \ - "revision": "$(call json_quote,$(REVISION))", \ - "target": "$(call json_quote,$(TARGETID))", \ - "board": "$(call json_quote,$(if $(BOARD_NAME),$(BOARD_NAME),$(DEVICE_NAME)))" \ - } \ - }' +define Build/uImage + mkimage -A $(LINUX_KARCH) \ + -O linux -T kernel \ + -C $(1) -a $(KERNEL_LOADADDR) -e $(if $(KERNEL_ENTRY),$(KERNEL_ENTRY),$(KERNEL_LOADADDR)) \ + -n '$(if $(UIMAGE_NAME),$(UIMAGE_NAME),$(call toupper,$(LINUX_KARCH)) $(VERSION_DIST) Linux-$(LINUX_VERSION))' -d $@ $@.new + mv $@.new $@ +endef -define Build/append-metadata - $(if $(SUPPORTED_DEVICES),-echo $(call metadata_json) | fwtool -I - $@) - [ ! -s "$(BUILD_KEY)" -o ! -s "$(BUILD_KEY).ucert" -o ! -s "$@" ] || { \ - cp "$(BUILD_KEY).ucert" "$@.ucert" ;\ - usign -S -m "$@" -s "$(BUILD_KEY)" -x "$@.sig" ;\ - ucert -A -c "$@.ucert" -x "$@.sig" ;\ - fwtool -S "$@.ucert" "$@" ;\ - } +define Build/xor-image + $(STAGING_DIR_HOST)/bin/xorimage -i $@ -o $@.xor $(1) + mv $@.xor $@ endef -define Build/kernel2minor - kernel2minor -k $@ -r $@.new $(1) - mv $@.new $@ +define Build/zip + mkdir $@.tmp + mv $@ $@.tmp/$(1) + + zip -j -X \ + $(if $(SOURCE_DATE_EPOCH),--mtime="$(SOURCE_DATE_EPOCH)") \ + $@ $@.tmp/$(if $(1),$(1),$@) + rm -rf $@.tmp endef -# Convert a raw image into a $1 type image. -# E.g. | qemu-image vdi -define Build/qemu-image - qemu-img convert -f raw -O $1 $@ $@.new - @mv $@.new $@ +define Build/zyxel-ras-image + let \ + newsize="$(subst k,* 1024,$(RAS_ROOTFS_SIZE))"; \ + $(STAGING_DIR_HOST)/bin/mkrasimage \ + -b $(RAS_BOARD) \ + -v $(RAS_VERSION) \ + -r $@ \ + -s $$newsize \ + -o $@.new \ + $(if $(findstring separate-kernel,$(word 1,$(1))),-k $(IMAGE_KERNEL)) \ + && mv $@.new $@ endef