diff options
author | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2020-10-02 14:23:59 +0200 |
---|---|---|
committer | Adrian Schmutzler <freifunk@adrianschmutzler.de> | 2020-10-02 14:51:57 +0200 |
commit | 9b4eab023c0add0063260e8a5da6193fc44f1658 (patch) | |
tree | 48382a0643886e0794e32c63c938fd68ef3162f5 /package/base-files | |
parent | 257110c08a0002894e130f9d09e1635bcff21ca6 (diff) | |
download | upstream-9b4eab023c0add0063260e8a5da6193fc44f1658.tar.gz upstream-9b4eab023c0add0063260e8a5da6193fc44f1658.tar.bz2 upstream-9b4eab023c0add0063260e8a5da6193fc44f1658.zip |
base-files: allow exceptions when removing devicename from LEDs
Without the model-based devicename for LEDs, there are still cases
where a third component is required, typically when it refers to
internal "devices" like phys etc. An example are the following two
found on ramips:
- rt2800soc-phy0::radio
- rt2800pci-phy0::radio
So far, the rt2800*-phy: prefixes would be removed by the devicename
removal ("migration") script, and the configuration for these LEDs
would be broken.
To address this, this patch allows to add arguments to a call of
remove_devicename_leds, which will be compared against the first
part of the LED names/labels, and then be ignored by the routine,
and thus not removed:
remove_devicename_leds "rt2800soc-phy0" "rt2800pci-phy0"
This mechanism is supposed to be used when a "devicename" applies
to several devices. If only a single device is affected, it might
be more effective to use a case statement and exclude the device
from migration by that entirely.
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Diffstat (limited to 'package/base-files')
-rw-r--r-- | package/base-files/Makefile | 2 | ||||
-rw-r--r-- | package/base-files/files/lib/functions/migrations.sh | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/package/base-files/Makefile b/package/base-files/Makefile index 3cb3d2034a..bf6b5c3c9a 100644 --- a/package/base-files/Makefile +++ b/package/base-files/Makefile @@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk include $(INCLUDE_DIR)/feeds.mk PKG_NAME:=base-files -PKG_RELEASE:=231 +PKG_RELEASE:=232 PKG_FLAGS:=nonshared PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/ diff --git a/package/base-files/files/lib/functions/migrations.sh b/package/base-files/files/lib/functions/migrations.sh index da10d2be5a..d2f1bc19aa 100644 --- a/package/base-files/files/lib/functions/migrations.sh +++ b/package/base-files/files/lib/functions/migrations.sh @@ -29,7 +29,8 @@ migrate_led_sysfs() { } remove_devicename_led_sysfs() { - local cfg="$1" + local cfg="$1"; shift + local exceptions="$@" local sysfs local name local new_sysfs @@ -37,8 +38,14 @@ remove_devicename_led_sysfs() { config_get sysfs ${cfg} sysfs config_get name ${cfg} name + # only continue if two or more colons are present echo "${sysfs}" | grep -q ":.*:" || return + for exception in ${exceptions}; do + # no change if exceptions provided as argument are found for devicename + echo "${sysfs}" | grep -q "^${exception}:" && return + done + new_sysfs=$(echo ${sysfs} | sed "s/^[^:]*://") uci set system.${cfg}.sysfs="${new_sysfs}" @@ -53,7 +60,7 @@ migrate_leds() { remove_devicename_leds() { config_load system - config_foreach remove_devicename_led_sysfs led + config_foreach remove_devicename_led_sysfs led "$@" } migrations_apply() { |