aboutsummaryrefslogtreecommitdiffstats
path: root/package/base-files/files/lib
diff options
context:
space:
mode:
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-10-02 14:23:59 +0200
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>2020-10-02 14:51:57 +0200
commit9b4eab023c0add0063260e8a5da6193fc44f1658 (patch)
tree48382a0643886e0794e32c63c938fd68ef3162f5 /package/base-files/files/lib
parent257110c08a0002894e130f9d09e1635bcff21ca6 (diff)
downloadupstream-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/files/lib')
-rw-r--r--package/base-files/files/lib/functions/migrations.sh11
1 files changed, 9 insertions, 2 deletions
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() {