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 is implemented by a compat_version set for the device and in image metadata, where old images default to 1.0. 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. By a small trick, this is also applied in a way that will work sufficiently well for old devices not having the updated fwtool.sh I hope that this will allow to improve the update experience for incompatible changes beyond just removing SUPPORTED_DEVICES as it has been done in the past. This has been tested on device and appear to work. I have no idea what this will do with LuCI... Adrian Schmutzler (5): build: add DEVICE_COMPAT_VERSION and DEVICE_COMPAT_MESSAGE base-files: add support for compat_version on device base-files: fwtool: implement compatibility check for images base-files: fwtool: make compat_version backward compatible example: implement compat_version for devices include/image-commands.mk | 9 +++++-- include/image.mk | 3 +++ package/base-files/files/bin/config_generate | 7 +++++ .../files/lib/functions/uci-defaults.sh | 6 +++++ .../base-files/files/lib/upgrade/fwtool.sh | 27 ++++++++++++++++++- .../generic/base-files/etc/board.d/02_network | 12 +++++++-- target/linux/ath79/image/generic-tp-link.mk | 3 +++ 7 files changed, 62 insertions(+), 5 deletions(-) -- 2.20.1 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel