From patchwork Tue Jul 14 14:28:20 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1328927 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=29cWTdt8; 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 4B5jdH4W4gz9sRN for ; Wed, 15 Jul 2020 00:31:47 +1000 (AEST) 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=vIdGU0PZcx25bm6Wmfd6U5+lpZhgeuITPaXFTNj/NCQ=; b=29cWTdt8cxMMNL1Ty6KCX6CQ1l PZez8v2DWBn70kNBAeSbIJ5Ds79l19QvvgNTPMcEjcpch7MJ4Kou1wWGCwStLUJk8Hgbmbo2Hl3OQ a8Tqu2IE2BvmGwSUDfPQTuO2ZNlb02SkxE+13vETC5ykI+6rhQGxfMSniHStO9o7y6H1g3rMxv5Kz faBerEUwZW18aSrGOQLtt2RGnDR63bB+2QCa81HLKqBzjPpTvxMVYyrvSAKHRC4qGieGyCR1rZsj/ SmUICVYCOwetqkc3zvi9CiTvgz3Vjden84RLqm5wDlpskCM7HP48f1u/TopxVHvV6v33d463ZQI6c rMu5TN8Q==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvw-0000MP-OT; Tue, 14 Jul 2020 14:29:24 +0000 Received: from mout.kundenserver.de ([212.227.17.24]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvn-0000FS-LB for openwrt-devel@lists.openwrt.org; Tue, 14 Jul 2020 14:29:19 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MOzKk-1kE0s71rVE-00PQ0T for ; Tue, 14 Jul 2020 16:29:11 +0200 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH v2 1/6] build: add DEVICE_COMPAT_VERSION and DEVICE_COMPAT_MESSAGE Date: Tue, 14 Jul 2020 16:28:20 +0200 Message-Id: <20200714142825.16889-2-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200714142825.16889-1-freifunk@adrianschmutzler.de> References: <20200714142825.16889-1-freifunk@adrianschmutzler.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:ID61EaK5vlrVfoceBLSXFhSWWVKsrCmHylyatGFxD7GgmCb0AeV NXp2FAkV/uqNdWCJBNBVW9kc/OMYrFpihUI51Z30jbTMO5/eaSNzBkAAK7begIStQ+cVzpI B/Od0gLwxdLDMbDMTBb+9PkOxsFFhy6OhJY5lUBzTu8C2eSxKhukQYyQhYWfK/aGLK/VWtY iHj3KcuQwdi5Cc5yxXZPg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:Blq3xamVcBk=:x9Fr6yj44YfzyDObVEs2cm TJDDqDA8/FTC1KmNd+Yx1IENG7R00cqnTm4giL0NRjft6zAs4UyBdha9XJuRKck/3sMa3sa64 T9I+PseP3NrC+sVLeqFuXmHJK7hL6EKLa3YzqQ2XhBGgr+YiRK7+XmSabOXUurbTYiq2fWvP7 7KFsF8TLjS4lw3sQLMfcrY7NsGh2RJtYKVBC9H4T8TH1WVroVriucY7kKM6mFWUBY01vM0I1P OeJ3kbm/o7T6shHw3ox9zFjLfLfcwu+a+jM5BUZH6Ugadlpn/qZxoJnpOBEtjr9WsgjSwjcU2 XwFBN7+VGjyQVXbaiSgSTqqon0fDw01VpLqtMoxleAt45thR9K5NWZZMS7goI+xgq5cU57FI6 WuAI9PY4QLwb39fA9cKJsHvnY2vMAQymDtclVCtCjy8Rj7JC+0nkAyHgLwEek3Y3AGBBJTLIX wdk7i4KTpr6jhFNoAa6y9v+ZWXi//NuRal1JoVGqJoXmNnUM8gKDJWOwokl5RMayNKEeMFe9l C/9ybeW4JhwPmiwqwNAHK7sQ79tuKeyVBUiitE5s6KVB7yTU6ei80YYeDgxNyn4U0Qc9bPKL7 eS5CZRga1yGtN1Uq5oHR1WjqtI2E+0ZqixWUznFLbKGg13y9H6TfUnvmzsgPVmJTKc3t+ipjO SgTNsgteKUy7IbzLXWMDocovX/bxw/+m9WoRyKzK2YIVkYSYj5vtwWWJQlHM1fAbr6rzc90Oh 6USnoGV/PunX9eOM2heArdb/mVfnIl1ZDKINviOps9US2sX9rChoxqOHZagOKuCOFlommS5li Qonk0VfVI1ylY5D/KsbR+aoDyOcN5pilB6JTNqfvjeLEtAm8mPMDdpHUG5SALYc0Y++ox3eqW C6A2SF705nzxmaj6iulQ== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_102916_047226_E73A490C X-CRM114-Status: GOOD ( 12.11 ) 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.17.24 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.24 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 We regularly encounter the situation that devices are subject to changes that will make them incompatible to previous versions. Removing SUPPORTED_DEVICES will not really be helpful in most of these cases, as this only helps after a rename. To solve this situation, this patchset introduces a compatibility version for devices. It will be implemented via a per-device Make variable DEVICE_COMPAT_VERSION, which will be set to 1.0 globally by default and then can be overwritten as needed. Furthermore, a variable DEVICE_COMPAT_MESSAGE is added, where a message to be displayed during sysupgrade may be specified optionally. This patch only implements the build variables and adds them to the sysupgrade metadata, the evaluation will be addressed in a subsequent patch. To set it, one would just need to add the following to a device node: define Device/somedevice ... DEVICE_COMPAT_VERSION := 1.1 DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA endef Signed-off-by: Adrian Schmutzler --- include/image-commands.mk | 7 +++++-- include/image.mk | 3 +++ 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index e7db7128b4..9da712e733 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -384,13 +384,16 @@ 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))) #")') 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.0", \ - "supported_devices":[$(call metadata_devices,$(1))], \ + "compat_version": "$(call json_quote,$(compat_version))", \ + $(if $(DEVICE_COMPAT_MESSAGE),"compat_message": "$(call json_quote,$(DEVICE_COMPAT_MESSAGE))"$(comma)) \ + "supported_devices":[$(call metadata_devices,$(SUPPORTED_DEVICES))], \ "version": { \ "dist": "$(call json_quote,$(VERSION_DIST))", \ "version": "$(call json_quote,$(VERSION_NUMBER))", \ @@ -401,7 +404,7 @@ metadata_json = \ }' define Build/append-metadata - $(if $(SUPPORTED_DEVICES),-echo $(call metadata_json,$(SUPPORTED_DEVICES)) | fwtool -I - $@) + $(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" ;\ diff --git a/include/image.mk b/include/image.mk index 300f7a6619..dbdc820f4d 100644 --- a/include/image.mk +++ b/include/image.mk @@ -419,6 +419,8 @@ define Device/Init BOARD_NAME := UIMAGE_NAME := + DEVICE_COMPAT_VERSION := 1.0 + DEVICE_COMPAT_MESSAGE := SUPPORTED_DEVICES := IMAGE_METADATA := @@ -435,6 +437,7 @@ DEFAULT_DEVICE_VARS := \ VID_HDR_OFFSET UBINIZE_OPTS UBINIZE_PARTS MKUBIFS_OPTS DEVICE_DTS \ DEVICE_DTS_CONFIG DEVICE_DTS_DIR SOC BOARD_NAME UIMAGE_NAME SUPPORTED_DEVICES \ IMAGE_METADATA KERNEL_ENTRY KERNEL_LOADADDR UBOOT_PATH IMAGE_SIZE \ + DEVICE_COMPAT_VERSION DEVICE_COMPAT_MESSAGE \ DEVICE_VENDOR DEVICE_MODEL DEVICE_VARIANT \ DEVICE_ALT0_VENDOR DEVICE_ALT0_MODEL DEVICE_ALT0_VARIANT \ DEVICE_ALT1_VENDOR DEVICE_ALT1_MODEL DEVICE_ALT1_VARIANT \ From patchwork Tue Jul 14 14:28:21 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1328932 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=MobyysAS; 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 4B5jdM1CqCz9sRk for ; Wed, 15 Jul 2020 00:31:50 +1000 (AEST) 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=hp8HlW9f1yzKAo07+FzYRZOcxHS1/rsdEAJh35jschs=; b=MobyysAS8TNcR4GglnOo5d6vho IfDMSSpzQSqT3jTUsp8xaVFeC3N523Dqi15pHgQpIATR7MBX4ToNcqfcj1a2oKt81y2YiwnuPPWVW 6/uXRAxmoV0pz65UEqPyPRgHlsTdLbyc4I0p+Dgdlktvglsavi7xg+FY/6tE6i3/NgPt3//+K7Fhc uAJ4Mp++MaZ5VvUiKvHlwSuuRn955vixGCzGYcNdDN5QDT3oDU3dYwzRNk5BcvkW7iR2XUhMV0KDL JQN4K83SaN6j5Zx6RVUrPwgcKN/5XlG/xqmMuyloMmP0MADKDs29nLtbe+Uek+R3EdQL+8wxfzUnU azMjy7OA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvy-0000N3-9b; Tue, 14 Jul 2020 14:29:26 +0000 Received: from mout.kundenserver.de ([212.227.17.24]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvn-0000FR-LB for openwrt-devel@lists.openwrt.org; Tue, 14 Jul 2020 14:29:19 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MYNW8-1kQgZp2Mk6-00VRsB for ; Tue, 14 Jul 2020 16:29:11 +0200 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH v2 2/6] base-files: add support for compat_version on device Date: Tue, 14 Jul 2020 16:28:21 +0200 Message-Id: <20200714142825.16889-3-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200714142825.16889-1-freifunk@adrianschmutzler.de> References: <20200714142825.16889-1-freifunk@adrianschmutzler.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:9bMo/O3/nk9zIBU4DGWEvubaLHm919fOTu6gtPiBBFkUo8HqMIO 7SHvR2gSRtUmEbCI+OId0YQEr7Vv2ElYAzNnP10+E/EmR8O8idOoLhTGRl2lsfvAovgigx6 spo5VgtVR4ZFejEo8Ys3IPD5xrz0xabA2MmyG3si2x1exRHF7gdktNFGEugfB0KHZksUYbZ +zBbJym8gWIG9r35B6VfQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:KlyAGW9P6qk=:VVsVrXZxl6KeI6KAHOr53+ rgbkN+UWDqa0psYJEv3x8BaIDBofOnMEgkrtPHpUOMyBj3+xVhHcj3NE5krQBhRTLOIKfwz5U kE+D/ggsnVrA/eR1rBh0uwXJjViUz/jL4lBjpDrXKpwmZwWsPrVgkyKYHUa4TWrUvKAroXep4 67/6LvQvBVb1eqkMqm8mWeozA6TdeFPH4aLVJ/mBT0J5Ldb/b5XcaLAkba05YL+mdPC0nDAdP PBqBXS2DGnDeRXYrdHN9lXxJ8haRiJuFRX0BcCBr0BnJJVneKalVVV1hoeWyjK5GG1LVUbeUE fC5cB1/nf2AX+X4DoW27pbGw53t5O4GNSHzka8bSBLagf47Ks7+pY+Kvrdtu/nFvvfE0dGl8a pxzXP00m8QVpeFpJFz30IC+0kQQgi5c7rsPPH+86wPINS4OfQ0o0HcymT52NNwTj7n34QQeJD LDAw/WGcRTKOOEPoiS0Ty1B7vtckZn3+usgcbdmvezhprfgPGUS5eHHFqB2/NJq7WhQC6GQyM XbG1/Y6/33/27b4SO8GP8AlcgFlX+UcZSF7hBtP3xPJnfnsGH19IbG4GLExocrEVY9iXhf80b OmwwEJ+tDPQ8DX+WgYzahjRf8Ryd4BFQnzseT+hGgarnhoTXd8n4nLjM05gTKHwUfJjPN/8Mz p8CLpqsz/9ecUa+5z33ZV6ctoXKF6eUKhJqg/CgvA9bXm4zEzsAxnhzLU28w1lbZqgu+mXpRR wuSy8I/wiJpXtqpR+kvX/gXyjwsOSFjM55OvacJAr82xKjEvdkF2RqtcmUOaQjJCvkGzZU37F f9UN5dTeiY3XOIRRFgsg0C4aYQPwqGGkYKvZt50vUi3HXWZ47tCdnZO/hGi9o72DbwydVAZ+V HMrpyvVqDt8v45+Cq32w== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_102916_070875_491054BF X-CRM114-Status: GOOD ( 10.48 ) 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.17.24 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.24 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 We regularly encounter the situation that devices are subject to changes that will make them incompatible to previous versions. Removing SUPPORTED_DEVICES will not really be helpful in most of these cases, as this only helps after a rename. To solve this situation, this patchset introduces a compatibility version for devices. To complement the DEVICE_COMPAT_VERSION set for the image to be flashed, this implements a compat_version on the device, so it will have something to compare with the image. The only viable way to achieve this seems to be via board.d files, i.e. this is technically adding a compat version for the device's config. Like for the network setup, this will set up a command ucidef_set_compat_version to set the compat_version in board.d. This will then add a string to /etc/board.json, which will be translated into uci system config by bin/config_generate. By this, the compat_version, being a version of the config, will also be exposed to the user. As with DEVICE_COMPAT_VERSION, missing uci entry will be assumed as compat_version "1.0", so we only need to add this if a device needs to be bumped, e.g. ucidef_set_compat_version "1.1" Signed-off-by: Adrian Schmutzler --- package/base-files/files/bin/config_generate | 7 +++++++ package/base-files/files/lib/functions/uci-defaults.sh | 6 ++++++ 2 files changed, 13 insertions(+) diff --git a/package/base-files/files/bin/config_generate b/package/base-files/files/bin/config_generate index abb1388ba1..eb6816e519 100755 --- a/package/base-files/files/bin/config_generate +++ b/package/base-files/files/bin/config_generate @@ -264,6 +264,13 @@ generate_static_system() { uci -q set "system.@system[-1].hostname=$hostname" fi + local compat_version + if json_get_var compat_version compat_version; then + uci -q set "system.@system[-1].compat_version=$compat_version" + else + uci -q set "system.@system[-1].compat_version=1.0" + fi + if json_is_a ntpserver array; then local keys key json_get_keys keys ntpserver diff --git a/package/base-files/files/lib/functions/uci-defaults.sh b/package/base-files/files/lib/functions/uci-defaults.sh index 12b900031d..27a409fe3b 100755 --- a/package/base-files/files/lib/functions/uci-defaults.sh +++ b/package/base-files/files/lib/functions/uci-defaults.sh @@ -68,6 +68,12 @@ ucidef_set_model_name() { json_select .. } +ucidef_set_compat_version() { + json_select_object system + json_add_string compat_version "${1:-1.0}" + json_select .. +} + ucidef_set_interface_lan() { ucidef_set_interface "lan" ifname "$1" protocol "${2:-static}" } From patchwork Tue Jul 14 14:28:22 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1328931 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=s0seL+/6; 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 4B5jdL35wPz9sRf for ; Wed, 15 Jul 2020 00:31:50 +1000 (AEST) 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=L2+ecTr0NFNK0GjUplSnY+EUxlSizJIvNdCnXmaTc74=; b=s0seL+/6Wx+UNxkhE5ECOlw7O7 Q7oKYvjl4ERio7FIwu+vcqNrCcADE790SSHo5JPw6102hUd3LUdw7jFxqqHZh3MY0/MkepYIMPlSK B3p2jKa3lIqq8vcnSr6EwQf9wQzGJZ8aw+xLt/ATYPawsHjZ0u0Cr4mswN8Qx7MbtM0IlBTYW2RvW HQMMGBs4gBo0eZbc8t/MHFGQdv6hSv4jrPkyFOaXibM6V7et7LWua0qoFIKD8/QAApCxrAa4TUf2c B5dMAV170vKtYnwVJl5kg5x97TzpkzIrhTmy0LiGAjaL9d9hndk/kRx2ibWblxc6duAk3BksR55CO zu4D4tBA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvq-0000Iu-Jl; Tue, 14 Jul 2020 14:29:18 +0000 Received: from mout.kundenserver.de ([217.72.192.73]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvn-0000FT-Kj for openwrt-devel@lists.openwrt.org; Tue, 14 Jul 2020 14:29:17 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MCsLu-1k4BcN2pMG-008oPh for ; Tue, 14 Jul 2020 16:29:11 +0200 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH v2 3/6] base-files: fwtool: implement compatibility check for images Date: Tue, 14 Jul 2020 16:28:22 +0200 Message-Id: <20200714142825.16889-4-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200714142825.16889-1-freifunk@adrianschmutzler.de> References: <20200714142825.16889-1-freifunk@adrianschmutzler.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:MQBaAx98R81IjiZzz3mPZv1qWubv0oa9tjGkBNe/17FUe3c02g/ ymk6/DlmUNCz4QO17OZE7TOEUmdIwIadyHTrq9gegRiCsqYpzkop0QfV7Dfcg6WzBqryf+a jfCfpkjk7kPtM3uesYzfPiWlAK+8ojJwz8QQ0BM+Np2NOQd17GWOddjeGjsSFyQuRjO8TBD i7QbUXNo2XcoMJRh8K9lg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:AjnNyKQ5jSE=:iocZm1Vwg+PJyHScg4P7sr sjVIhfNPItxFV6El4kbol4JoL9BVF1cl19rypb0LwMOqlozqyQtRtjHQOVrcx7/xlS9rLxMD/ QCb0LMCe/BMnWd/ba0yIxHgwFz4Am3V6D0bhudvVn3gDxBK6nTh8G6Vkyefu29MswImLdfXiH Tq30THNVhR/twJzTWlufDauGBttDndrGXf5W0VCiNwVrYVGfC2fMU6RDqs3S5pIICfEdUBWlr xeuYEe6hIKvwc6JQcdnk7r2SuQemtkvn/0Ot9V3n0UcwSggdJKw2P72UowM97yqBkcmn4cFPD F65KuvbS9K14ZlVt50p7h0OXSmkz+MpArfdv94Ik3Vk2ZeBmNhJ9+bC72z5UK0y4O5C8Cf1UQ ByP3BOaMLUMg/5kEeTambFKP7bADqi6tm15eMvZ5kxyd/2EzK6W7byzaeJagfJHA9SqNXkcyq qh1WmezHflI0FsUuGdP+qdI+3x7K//dyxOz/UBSKj/0SRjoQwS8IrAMkb/zaN/FS3nGv87Iyz 39G5odgC6eRnH4ZAPKbRF8uzK5WYRnT98knswhkdRI5NBeV9n2nbN4gYWTcqXp25ZUkEdxSuj RFqw/piHhfdtdAOQGv2sN7/NczTaeAmQv3nEQ0wDfrBan9iDSEpVaUrb0hZosR6UAMX/gP+Ey Xq4fTJJFE0ymRg//KyeIvBqRvmzKkVgSB7+iUfS6R2xhwlhw9OhMH7RQRMp2DUO7rB8LUCRHw Hbz0Ids69MA+8jYYg2ArV+wxbvPbRL2GirUYy+oAaIVKAmpumXfspHNPpBZ+V/CJe+Hf+Y2n6 EUcSpSAaTeDhUCvTOB+YNKEXQlWTXp1Haj0dP6CEKT9l+qqKBh6DZBGM7IUnc3YoUkwG43Ov/ v7TR+22tKm6gqp6wPRuA== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_102915_906976_AF82EAB5 X-CRM114-Status: GOOD ( 12.81 ) 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 [217.72.192.73 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [217.72.192.73 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 We regularly encounter the situation that devices are subject to changes that will make them incompatible to previous versions. Removing SUPPORTED_DEVICES will not really be helpful in most of these cases, as this only helps after a rename. To solve this situation, this patchset introduces a compatibility version for devices. In this patch, the actual checks are implemented into fwtool_check_image(): If an incompatible change is introduced, one can increase either the minor version (1.0->1.1) or the major version (1.0->2.0). Minor version increment: This will still allow sysupgrade, but require to reset config (-n or SAVE_CONFIG=0). If sysupgrade is called without -n, a corresponding message will be printed. If sysupgrade is called with -n, it will just pass, with supported devices being checked as usual. (Which will allow us to add back SUPPORTED_DEVICES for many cases.) Major version increment: This is meant for potential (rare) cases where sysupgrade is not possible at all, because it would break the device. In this case, a warning will be printed, and -n won't help. If image check fails because of one of the versions parts not matching, the content of DEVICE_COMPAT_MESSAGE is printed in addition to the generic message (if set). For both cases, upgrade can still be forced with -F as usual. Signed-off-by: Adrian Schmutzler --- Changes in v2: - Move compat check AFTER supported_devices check - Improve error messages --- .../base-files/files/lib/upgrade/fwtool.sh | 24 ++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/package/base-files/files/lib/upgrade/fwtool.sh b/package/base-files/files/lib/upgrade/fwtool.sh index a0b3fb0a04..1807aecd6d 100644 --- a/package/base-files/files/lib/upgrade/fwtool.sh +++ b/package/base-files/files/lib/upgrade/fwtool.sh @@ -44,13 +44,35 @@ fwtool_check_image() { } device="$(cat /tmp/sysinfo/board_name)" + devicecompat="$(uci -q get system.@system[0].compat_version)" + [ -n "$devicecompat" ] || devicecompat="1.0" + + json_get_var imagecompat compat_version + json_get_var compatmessage compat_message + [ -n "$imagecompat" ] || imagecompat="1.0" json_select supported_devices || return 1 json_get_keys dev_keys for k in $dev_keys; do json_get_var dev "$k" - [ "$dev" = "$device" ] && return 0 + if [ "$dev" = "$device" ]; then + # major compat version -> no sysupgrade + if [ "${devicecompat%.*}" != "${imagecompat%.*}" ]; then + echo "The device is supported, but this image is incompatible for sysupgrade based on the image version ($devicecompat->$imagecompat)." + [ -n "$compatmessage" ] && echo "$compatmessage" + return 1 + fi + + # minor compat version -> sysupgrade with -n required + if [ "${devicecompat#.*}" != "${imagecompat#.*}" ] && [ "$SAVE_CONFIG" = "1" ]; then + echo "The device is supported, but the config is incompatible to the new image ($devicecompat->$imagecompat). Please upgrade with -n." + [ -n "$compatmessage" ] && echo "$compatmessage" + return 1 + fi + + return 0 + fi done echo "Device $device not supported by this image" From patchwork Tue Jul 14 14:28:23 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1328930 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=Qkk1lalY; 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 4B5jdK3RyGz9sRW for ; Wed, 15 Jul 2020 00:31:49 +1000 (AEST) 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=NrGmE+NkHpcNIS6gjKwQ6IMP/njZ7e0ZTaKiCcDYzSk=; b=Qkk1lalYaa9G3Bq6cYRJeL6Y1B 0i8mK+ynuopayNO+Dbz4n4K/n8OnhSTcg2jwZHd4iIr8RG6yG3oQ99Sa1QxNUxqe/dtfDEl5f2S00 nw99dwK+6UG9WiXAV6i1q86Ab/8PnEjqpJjL84vGcdSme/XpKf9UZmhjNuDyUyd+lBsKYMtLdyuK7 P9w91C/mhoPOPJ/2ROEfjLD8toDBF2sOn9CgKKuuK5Vi6i0km0DN7wYpP743ooX6FUQr6qXG0dgHk EgTD7rsgfHHdA6PY008Ciibg7h/q2SU4AuAePFieflK3F3qpa/9yrxQXNl5s0og5zqLPa7G8Gqmij dJ5U87jw==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvt-0000KO-5K; Tue, 14 Jul 2020 14:29:21 +0000 Received: from mout.kundenserver.de ([217.72.192.73]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvn-0000FU-Ki for openwrt-devel@lists.openwrt.org; Tue, 14 Jul 2020 14:29:17 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MEVBc-1k6xpt3IbK-00FyMF for ; Tue, 14 Jul 2020 16:29:11 +0200 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH v2 4/6] base-files: fwtool: make compat_version backward compatible Date: Tue, 14 Jul 2020 16:28:23 +0200 Message-Id: <20200714142825.16889-5-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200714142825.16889-1-freifunk@adrianschmutzler.de> References: <20200714142825.16889-1-freifunk@adrianschmutzler.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:xy5oeS7eP2LhTR1DAdY0fKNmXdvUPB4U9W9yYwdpwvfU1KN52tO VXy12BzAXFIQGLHakmZkEh7cEQXh87KlPGnNFrvfVQXkgEz6BYIu1YNBFd3RTyd9Bjobp+V jT4nyeV3yZbbhqW56yA3LlWfYEMFCiZklfaoUrRj7nliFZQ0zoyDmTVR2EcUVLm2vt9EVdQ USwRDndS+HwYdUdyVCJkg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:AG2oMZW/nyE=:AiDxnUNxclVbzTlXFrFQzr OessF1+8Iw2HiZmaMgcv0pD19vVntHqx5sv0XD6Uzo+RuNke7EgU21Bpb7OSI40hCF4nhWCzc ryabyP5MJdN7H62qw4vC866babpfepmPO2JRB9hIbtmeh9vjGuIImJGT2vlMzv35kMZgit55L pRvSHAqbSFy3FL3+YHD5l+xDrMQdI+Vcmw4vaMF4Z1kX/qhgSW0LQLrZTceMo+U/17v6hkNKs wbDNkL5hYQTkzCe/BGZvpD8gsoLW274KAOk1sIzZHHIo3g7ol1TDaaCAjvkFmful732a9DK0t hi124Hh/DsnCSWDwZQF0GX4LTXMmPA4bXN/KBihGahuzakkdrEXFNV6jyUdXP9cknCLuxzmI+ 3H04DpWREWy60MTd9YXNvMYtzVshSk3Y4Q0qVKWSz5BmgSJIdjSWAAqvljpvqy1eYd3Z/FTim iO81yoODdw/rw/8Ij0Cp9GZJXBJ9wBfZJcZpuBB0tge6o3Rydu3lHSio7GKCdmfE2As29sty+ K/SGwfnnnMtMbpyUlnt0aO4Yz/aX2Ler0v0W9pH4KIupRWWyx19pllSRDmuwE4+Ye2ZR4XuL4 kAF/B5ppvtx9NOo/2Kf8h5XQT3jN0RbiPMxmPPw/oT1whtgJ3tydQepFIYXwAZ9cvzB7I9c3j Jk3ZJhEnE+JurPyqGeu1HsK1zWX7mRqIPNzs6Hqpmpin2eZb8Mflv09nPcEc/9JeSd4n/CDV/ FtzIW2b7gpK+yUSPpY4IHJ7eSjPmlp2WBXNLrBe0/HQApukbksGdq19y0V7GYhK4GjyBl5+Wu o7Xozix2MAiQd8uKnCgC37jRe24LMhusxLx7t4/lUVqwYzUQSO4rFj9CGKoCRIkodK7gxVPnC p42r2AYFe7y45eemrMIA== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_102915_916096_3BCD0A95 X-CRM114-Status: GOOD ( 12.88 ) 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 [217.72.192.73 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [217.72.192.73 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 So far, the compatibility mechanism only works if both device and image are already updated to the new routines. This patch extends the sysupgrade metadata and fwtool_check_image() to account for "older" images as well: The basic mechanism for older devices to check for image compatibility is the supported_devices entry. This can be exploited by putting a custom message into this variable of the metadata, so older FW will produce a mismatch and print the message as it thinks it's the list of supported devices. So, we have two cases: device 1.0, image 1.0: The metadata will just contain supported_devices as before. device 1.0, image 1.1: The metadata will contain: "new_supported_devices":["device_string1", "device_string2", ...], "supported_devices":["Upgrade incompatible. Please check Wiki ..."] If the device is "legacy", i.e. does not have the updated fwtool.sh, it will just fail with image check and print the content of supported_devices. Upgrade can still be performed with -F like when SUPPORTED_DEVICES has been removed to prevent bricking. If the device has updated fwtool.sh (but is 1.0), it will just use the new_supported_devices instead, and work as intended (flashing with -n will work, flashing without will print the appropriate warning). This mechanism should provide a fair tradeoff between simplicity and functionality. Signed-off-by: Adrian Schmutzler --- Changes in v2: - Add DEVICE_COMPAT_MESSAGE and reword comment for legacy warning. --- include/image-commands.mk | 5 ++++- package/base-files/files/lib/upgrade/fwtool.sh | 7 ++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/include/image-commands.mk b/include/image-commands.mk index 9da712e733..e21472a659 100644 --- a/include/image-commands.mk +++ b/include/image-commands.mk @@ -393,7 +393,10 @@ metadata_json = \ "metadata_version": "1.0", \ "compat_version": "$(call json_quote,$(compat_version))", \ $(if $(DEVICE_COMPAT_MESSAGE),"compat_message": "$(call json_quote,$(DEVICE_COMPAT_MESSAGE))"$(comma)) \ - "supported_devices":[$(call metadata_devices,$(SUPPORTED_DEVICES))], \ + $(if $(filter-out 1.0,$(compat_version)),"new_supported_devices":[$(call metadata_devices,$(SUPPORTED_DEVICES))]$(comma)) \ + $(if $(filter-out 1.0,$(compat_version)),"supported_devices": \ + ["$(call json_quote,Image version $(compat_version) incompatible to device: $(if $(DEVICE_COMPAT_MESSAGE),$(DEVICE_COMPAT_MESSAGE),Please check documentation ...)"]$(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))", \ diff --git a/package/base-files/files/lib/upgrade/fwtool.sh b/package/base-files/files/lib/upgrade/fwtool.sh index 1807aecd6d..59f981f6c3 100644 --- a/package/base-files/files/lib/upgrade/fwtool.sh +++ b/package/base-files/files/lib/upgrade/fwtool.sh @@ -51,7 +51,12 @@ fwtool_check_image() { json_get_var compatmessage compat_message [ -n "$imagecompat" ] || imagecompat="1.0" - json_select supported_devices || return 1 + # select correct supported list based on compat_version + # (using this ensures that compatibility check works for devices + # not knowing about compat-version) + local supported=supported_devices + [ "$imagecompat" != "1.0" ] && supported=new_supported_devices + json_select $supported || return 1 json_get_keys dev_keys for k in $dev_keys; do From patchwork Tue Jul 14 14:28:24 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1328928 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=jAnwmMk3; 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 4B5jdJ5Ztqz9sRR for ; Wed, 15 Jul 2020 00:31:48 +1000 (AEST) 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=KP4Q/GrWJ1YFGfT07zfToRqHlSWakOcgjhIq2CstVHc=; b=jAnwmMk3V8JQASJZ0F45TRCK6l JP6WCniJwmJ510RYC88jBjgaaccCCHr1K99STGZhvpB0AYs1loC/hVVXkcNrO2u8Mx4L1K2VCAvyX Oo+V4yS53rDyjh3u2bbzIF76M9Itmj/DEir8yo7/HP3m/icTWXnefqmcnJTHvwFQ8hZOoywQPZICJ nLyeEy8OOgakx5q39qH6dIe2lZPuUEO8AWZYiJhATjk0jDuIGAgZ1E3xw+T82ykR6hJ6q7gbUs81a j2AFNopHZ/T83RjfY0tJFzNrdDDXLFXz9sgjPv3tZmARjyMYL7LeaJPxSwfSqC9yrD5tcxFZ1LBEv gzKAmgXQ==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLw4-0000Oj-Fo; Tue, 14 Jul 2020 14:29:32 +0000 Received: from mout.kundenserver.de ([212.227.17.10]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvs-0000JW-SL for openwrt-devel@lists.openwrt.org; Tue, 14 Jul 2020 14:29:22 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N336J-1krDMw3mDV-013NRk for ; Tue, 14 Jul 2020 16:29:11 +0200 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH v2 5/6] mvebu: implement compatibility version for DSA migration Date: Tue, 14 Jul 2020 16:28:24 +0200 Message-Id: <20200714142825.16889-6-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200714142825.16889-1-freifunk@adrianschmutzler.de> References: <20200714142825.16889-1-freifunk@adrianschmutzler.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:NTjndNzRLyPpkYKkNWP7xvRjSNdyOVVFgMWCSwseM8Nx4/5R1qC i0AB/kKKNz/voBBwaaVe850yWyU1uHAqBgnHlCP6wWAhyHkO8okE1l+wGZclRcesrMk+JJF 2WwqlwKwNOl51UTgXXdEn87G/G/EI8qFqFbFnQBj8tlUsVFo7qJUBht6BebxlP/FTnmzdDV LZjFs+1AFLnnnZPRD9aKQ== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:w3hceH+vubA=:k73Z856VMjMuVqTDEIop5Y 9hkMksQEYtbwaxzLbW04yuAeyhBUKQM9L7FQL7T2AE8kWTe1WM+Nmq8HRk0FinaXw0Sazn8SN TuzHbssBU3gy8ggwt5J5immaTfMt6FHeSMnXE8MU1Tak8z9KPlkNGy3+c7jiemcRZ5KykSq1c dMwkIYwku0NC4z78cs5Y+VYHn/STMbK4q3tojzKLVRQE+rNjcdHHJWK2NAjRU80YOdGRQzIRv c/bkp/DfaX0REJW8/piFwfoIngSpKsm3CEjAeAREnHPtgKCf897N3OBPZf394wYfVVOtcT6jR yOgLBeBTJYI3+WQURxefQ680qdRtzYb243Hobm8BnmFDC3BBc026HRce5uSgynzCyNN8p2BCy DD4CImIkjrLZg00gt4GzQLCu8PCpTzuHWLDpg6CcgQVVZHb6eQQuVxAVwEYTsph3SZcGWHvB2 Up/kngdt6kr7T5rr578QnBF1PZYUZTwSpdaQvuVUxGZznJ4M+vmIS/4NUIP4ckBjNL3AXCxc3 ZLOft9xcMhuSWfrgSwgf2FYWl66T5bGRx2+GRpTDc2UiIb4bKkHMOEaxek+iTdaru8qfhoJIF wcKHFioVl07b6/NrtPunAIArOJXeA9uhL/HZyEmPsZ0ugTGEI/NptEKQZJcMREgY3fIn9GEBj 2OdEjNbEU8C9h7qi5ndAwZ+QtqhqS/lXpi4H42Quz0zB3NjvcrQyTnYxfOl5QQN2ia/WQKvR0 AVe5o0D3IANJnt5Tgj0u8jskS7riGThYON6iYOyd3vNPgQj6L3UBph/bVsE8ChmTqYw2tMO5h meW1br1HlXKU7rQMNvKcr92qVcRTGl2029hiozHiMXrxMhrwnnS4eCDoa+2M9veewBA0DaHZP qxLmZkS/f3eATZtlZwJg== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_102921_192480_749680CA X-CRM114-Status: UNSURE ( 8.50 ) 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.17.10 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [212.227.17.10 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 This implements the newly introduced compat-version to prevent upgrade between swconfig and DSA for mvebu. Just define a compat version with minor increment and an appropriate message for both image (in Makefile) and device (in base-files). Having taken care of sysupgrade, we can put back the SUPPORTED_DEVICES that have been removed in previous patches to prevent broken config. While at it, fix alphabetic sorting in 02_network. Signed-off-by: Adrian Schmutzler --- Added in v2 --- .../base-files/etc/board.d/02_network | 14 ++++++++------ target/linux/mvebu/image/cortexa9.mk | 19 +++++++++++++++++++ 2 files changed, 27 insertions(+), 6 deletions(-) diff --git a/target/linux/mvebu/cortexa9/base-files/etc/board.d/02_network b/target/linux/mvebu/cortexa9/base-files/etc/board.d/02_network index 9718b332a7..9255f2535e 100755 --- a/target/linux/mvebu/cortexa9/base-files/etc/board.d/02_network +++ b/target/linux/mvebu/cortexa9/base-files/etc/board.d/02_network @@ -23,6 +23,7 @@ mvebu_setup_interfaces() linksys,wrt3200acm|\ linksys,wrt32x) ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4" "wan" + ucidef_set_compat_version "1.1" ;; marvell,a385-db-ap) ucidef_set_interfaces_lan_wan "eth0 eth1" "eth2" @@ -30,18 +31,19 @@ mvebu_setup_interfaces() marvell,axp-gp) ucidef_set_interface_lan "eth0 eth1 eth2 eth3" ;; - solidrun,clearfog-pro-a1) - # eth0 is standalone ethernet - # eth1 is switch - # eth2 is SFP - ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan5 lan6" "eth0 eth2" - ;; solidrun,clearfog-base-a1) # eth0 is standalone ethernet # eth1 is standalone ethernet # eth2 is SFP ucidef_set_interfaces_lan_wan "eth1" "eth0 eth2" ;; + solidrun,clearfog-pro-a1) + # eth0 is standalone ethernet + # eth1 is switch + # eth2 is SFP + ucidef_set_interfaces_lan_wan "lan1 lan2 lan3 lan4 lan5 lan6" "eth0 eth2" + ucidef_set_compat_version "1.1" + ;; *) ucidef_set_interface_lan "eth0" ;; diff --git a/target/linux/mvebu/image/cortexa9.mk b/target/linux/mvebu/image/cortexa9.mk index 7f0a2fe697..1a4c43d133 100644 --- a/target/linux/mvebu/image/cortexa9.mk +++ b/target/linux/mvebu/image/cortexa9.mk @@ -6,6 +6,11 @@ # See /LICENSE for more information. # +define Device/dsa-migration + DEVICE_COMPAT_VERSION := 1.1 + DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA +endef + define Device/buffalo_ls421de $(Device/NAND-128K) DEVICE_VENDOR := Buffalo @@ -63,16 +68,19 @@ endef define Device/linksys_wrt1200ac $(call Device/linksys) + $(Device/dsa-migration) DEVICE_MODEL := WRT1200AC DEVICE_ALT0_VENDOR := Linksys DEVICE_ALT0_MODEL := Caiman DEVICE_DTS := armada-385-linksys-caiman DEVICE_PACKAGES += mwlwifi-firmware-88w8864 + SUPPORTED_DEVICES += armada-385-linksys-caiman linksys,caiman endef TARGET_DEVICES += linksys_wrt1200ac define Device/linksys_wrt1900acs $(call Device/linksys) + $(Device/dsa-migration) DEVICE_MODEL := WRT1900ACS DEVICE_VARIANT := v1 DEVICE_ALT0_VENDOR := Linksys @@ -82,11 +90,13 @@ define Device/linksys_wrt1900acs DEVICE_ALT1_MODEL := Shelby DEVICE_DTS := armada-385-linksys-shelby DEVICE_PACKAGES += mwlwifi-firmware-88w8864 + SUPPORTED_DEVICES += armada-385-linksys-shelby linksys,shelby endef TARGET_DEVICES += linksys_wrt1900acs define Device/linksys_wrt1900ac-v1 $(call Device/linksys) + $(Device/dsa-migration) DEVICE_MODEL := WRT1900AC DEVICE_VARIANT := v1 DEVICE_ALT0_VENDOR := Linksys @@ -94,32 +104,38 @@ define Device/linksys_wrt1900ac-v1 DEVICE_DTS := armada-xp-linksys-mamba DEVICE_PACKAGES += mwlwifi-firmware-88w8864 KERNEL_SIZE := 3072k + SUPPORTED_DEVICES += armada-xp-linksys-mamba linksys,mamba endef TARGET_DEVICES += linksys_wrt1900ac-v1 define Device/linksys_wrt1900ac-v2 $(call Device/linksys) + $(Device/dsa-migration) DEVICE_MODEL := WRT1900AC DEVICE_VARIANT := v2 DEVICE_ALT0_VENDOR := Linksys DEVICE_ALT0_MODEL := Cobra DEVICE_DTS := armada-385-linksys-cobra DEVICE_PACKAGES += mwlwifi-firmware-88w8864 + SUPPORTED_DEVICES += armada-385-linksys-cobra linksys,cobra endef TARGET_DEVICES += linksys_wrt1900ac-v2 define Device/linksys_wrt3200acm $(call Device/linksys) + $(Device/dsa-migration) DEVICE_MODEL := WRT3200ACM DEVICE_ALT0_VENDOR := Linksys DEVICE_ALT0_MODEL := Rango DEVICE_DTS := armada-385-linksys-rango DEVICE_PACKAGES += kmod-btmrvl kmod-mwifiex-sdio mwlwifi-firmware-88w8964 + SUPPORTED_DEVICES += armada-385-linksys-rango linksys,rango endef TARGET_DEVICES += linksys_wrt3200acm define Device/linksys_wrt32x $(call Device/linksys) + $(Device/dsa-migration) DEVICE_MODEL := WRT32X DEVICE_ALT0_VENDOR := Linksys DEVICE_ALT0_MODEL := Venom @@ -127,6 +143,7 @@ define Device/linksys_wrt32x DEVICE_PACKAGES += kmod-btmrvl kmod-mwifiex-sdio mwlwifi-firmware-88w8964 KERNEL_SIZE := 3072k KERNEL := kernel-bin | append-dtb + SUPPORTED_DEVICES += armada-385-linksys-venom linksys,venom endef TARGET_DEVICES += linksys_wrt32x @@ -218,6 +235,7 @@ endef TARGET_DEVICES += solidrun_clearfog-base-a1 define Device/solidrun_clearfog-pro-a1 + $(Device/dsa-migration) DEVICE_VENDOR := SolidRun DEVICE_MODEL := ClearFog Pro KERNEL_INSTALL := 1 @@ -228,5 +246,6 @@ define Device/solidrun_clearfog-pro-a1 DEVICE_DTS := armada-388-clearfog-pro armada-388-clearfog-base UBOOT := clearfog-u-boot-spl.kwb BOOT_SCRIPT := clearfog + SUPPORTED_DEVICES += armada-388-clearfog armada-388-clearfog-pro endef TARGET_DEVICES += solidrun_clearfog-pro-a1 From patchwork Tue Jul 14 14:28:25 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Adrian Schmutzler X-Patchwork-Id: 1328933 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=sF2toHLw; 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 4B5jfC4Bkbz9sQt for ; Wed, 15 Jul 2020 00:32:35 +1000 (AEST) 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=bb+S7cJTHNxVnHz79QBA2skIzTIIHCHMiKnhP3K3Lhg=; b=sF2toHLwZ1KKN0nV0AFv1KAJD7 25ZEZ4yJI0YzLx0w7AzfHn6Kolb00BSiqo2zmbHO1gq+Hf8Y69ZbZRh/ofHerrcVgQBcZWBeR5rjw HDL3c3gZXkw5FjSYexbrUI10lDMvf7E55RF4vCc3Df8WMNuWvQrkwwlCwXLcl+9R6l+Hq1k9Qa8IM R8dG9maXlWp7OTWYeq/4pX5YCoSZ053MwlpJoQ90V0fNXxCOtonKHJ1bCMC9zru24zZrD2WB+ygSb TcL7scKNCIsCGZ9Gltwloq8SuEGnZ58vIT8Ma0DaPoEd40Lloa772xBnlrn1gx8jUGGMcCuQeqwlC foik77LA==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLw2-0000OI-Rc; Tue, 14 Jul 2020 14:29:30 +0000 Received: from mout.kundenserver.de ([217.72.192.74]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1jvLvr-0000IJ-25 for openwrt-devel@lists.openwrt.org; Tue, 14 Jul 2020 14:29:20 +0000 Received: from buildfff.adridolf.com ([188.192.134.246]) by mrelayeu.kundenserver.de (mreue109 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MCKO4-1k4jqk02ny-009Me3 for ; Tue, 14 Jul 2020 16:29:12 +0200 From: Adrian Schmutzler To: openwrt-devel@lists.openwrt.org Subject: [PATCH v2 6/6] kirkwood: implement compatibility version for DSA migration Date: Tue, 14 Jul 2020 16:28:25 +0200 Message-Id: <20200714142825.16889-7-freifunk@adrianschmutzler.de> X-Mailer: git-send-email 2.20.1 In-Reply-To: <20200714142825.16889-1-freifunk@adrianschmutzler.de> References: <20200714142825.16889-1-freifunk@adrianschmutzler.de> MIME-Version: 1.0 X-Provags-ID: V03:K1:MWQvph4OJ+4SLfHBERRf6Y0hoCLZi2XuBIIx7BTEkUJqKyxEFDD aNSNNJ1aA0Lnii4H/bLkk4wa2YyFQFNmYWBXUtOm9Y5z5rsSEjtdokvSPRGW+cyD4xr5jfG hDCzjGNwnU8JiopsaQ6g0szr9Ieh6xEaPgY/AMKrTaz7Mhmfhb1RHV39QrRmN/3M0BXEoBL 5GUEG48MEiPM1gRQb71Rg== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:hgeVg3HzXuE=:HUfEXXjkw1zDViSN4Txig0 wVZjrSC8qXS3e34iaEYxITnai913FJmCOpGX9Twz06dITLHgsD4aAeyPpjKldONzjFJl7Dkeb SyNuqbAuK4V5Mcmv7tSJSgObjHWF26FHSwHlDbi5JE42jZnx49SuzFmq4KV1lYh39UIbp2BB7 tWoYYWNu4f3R0nOa4l5f6Np4n1BscH0nb8v0I4/PRTNqS6yr82vQjbdelGssQazv9GIojD5QI blTkDuz2e7cCJ+J8oqd6CMUr0HIERUg6S6sT//BNebI1Ap0iuUN5yM3FyZXCRs+AoKHQqyBCV /AKDN599RCDXvMBj/xaeJ+XnbEaDvwRJwB9TWHczX8hIzEIb/TBZw3YanOz7m/cEX2kY6NzWS 3Z1b0cAcwhwSJ4fWFkvD0vSZ69O6JLPYj5lRYzeXcF0rDi/u3XGLu0btmgN1dxhk++NAdz7pW GW8wRZJMYy6qQAvtLMpQXll+eadJlrmEtlDsgZycudS/JpQRuyMe2ZDAe6RkuJGqQYXONCTyw dArf+DNYizWXYKcxUKJjZsUI9QOKqOGW3nliE0caXH39pi8prYbzr9+VPQSqKtDWusefdiaDI EXG1by+cIxON+I8FR8lrcnQbzTpQMJhy190FXs100gEXS/YudB+YzegM3/HLqCseKzwd0vdpq azm27+6wG88/lONRfM48bNXOVe2byCnGZO0ECzE282kUctWThuavTfnmEL0UIyocLfoUOc0B6 CU+gfDhtrxOzu4Xd5XBll2HcFsPHubnKDKrM4gG2OF+ONdF/dEk8jQEA6sGYvmSj1I00f8jHA qVXlzmCfb2MRCKn3x55ufD5bFB17ePVp18AVWMrNuxXocBH5vnvxHOYILBKGMDfxMO34znZmm JvwAxn24r1xt2Pex9TwA== X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20200714_102919_386914_9054D580 X-CRM114-Status: UNSURE ( 7.53 ) 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 [217.72.192.74 listed in list.dnswl.org] -0.0 RCVD_IN_MSPIKE_H2 RBL: Average reputation (+2) [217.72.192.74 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 This implements the newly introduced compat-version to prevent upgrade between swconfig and DSA for kirkwood. Just define a compat version with minor increment and an appropriate message for both image (in Makefile) and device (in base-files). Since we never removed SUPPORTED_DEVICES for this target, we don't have to add it back either. Signed-off-by: Adrian Schmutzler --- Added in v2 --- target/linux/kirkwood/base-files/etc/board.d/02_network | 1 + target/linux/kirkwood/image/Makefile | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/target/linux/kirkwood/base-files/etc/board.d/02_network b/target/linux/kirkwood/base-files/etc/board.d/02_network index 658ce13346..45c0182493 100755 --- a/target/linux/kirkwood/base-files/etc/board.d/02_network +++ b/target/linux/kirkwood/base-files/etc/board.d/02_network @@ -32,6 +32,7 @@ case "$board" in "linksys,viper") ucidef_set_interfaces_lan_wan "ethernet1 ethernet2 ethernet3 ethernet4" "internet" ucidef_set_interface_macaddr "wan" $( mtd_get_mac_ascii u_env eth1addr ) + ucidef_set_compat_version "1.1" ;; "zyxel,nsa310b"|\ "zyxel,nsa325") diff --git a/target/linux/kirkwood/image/Makefile b/target/linux/kirkwood/image/Makefile index ba93fffeb2..6554fc2669 100644 --- a/target/linux/kirkwood/image/Makefile +++ b/target/linux/kirkwood/image/Makefile @@ -10,6 +10,11 @@ include $(INCLUDE_DIR)/image.mk KERNEL_LOADADDR:=0x8000 +define Device/dsa-migration + DEVICE_COMPAT_VERSION := 1.1 + DEVICE_COMPAT_MESSAGE := Config cannot be migrated from swconfig to DSA +endef + define Device/Default PROFILES := Default DEVICE_DTS = $$(if $$(BOARD_NAME),kirkwood-$$(BOARD_NAME),) @@ -92,6 +97,7 @@ endef TARGET_DEVICES += iom_ix2-200 define Device/linksys_audi + $(Device/dsa-migration) DEVICE_VENDOR := Linksys DEVICE_MODEL := EA3500 (Audi) DEVICE_PACKAGES := kmod-mwl8k wpad-basic kmod-gpio-button-hotplug @@ -107,6 +113,7 @@ endef TARGET_DEVICES += linksys_audi define Device/linksys_viper + $(Device/dsa-migration) DEVICE_VENDOR := Linksys DEVICE_MODEL := E4200v2 / EA4500 (Viper) DEVICE_PACKAGES := kmod-mwl8k wpad-basic kmod-gpio-button-hotplug