[PATCH 0/5] sysupgrade: introduce compatibility version for devices
freifunk at adrianschmutzler.de
Thu Jul 9 14:14:55 EDT 2020
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
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(-)
More information about the openwrt-devel