[openwrt/openwrt] base-files: allow exceptions when removing devicename from LEDs

LEDE Commits lede-commits at lists.infradead.org
Fri Oct 2 08:52:10 EDT 2020


adrian pushed a commit to openwrt/openwrt.git, branch master:
https://git.openwrt.org/9b4eab023c0add0063260e8a5da6193fc44f1658

commit 9b4eab023c0add0063260e8a5da6193fc44f1658
Author: Adrian Schmutzler <freifunk at adrianschmutzler.de>
AuthorDate: Fri Oct 2 14:23:59 2020 +0200

    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 at adrianschmutzler.de>
---
 package/base-files/Makefile                          |  2 +-
 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() {



More information about the lede-commits mailing list