mirror of https://github.com/hak5/openwrt.git
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>master
parent
257110c08a
commit
9b4eab023c
|
@ -12,7 +12,7 @@ include $(INCLUDE_DIR)/version.mk
|
||||||
include $(INCLUDE_DIR)/feeds.mk
|
include $(INCLUDE_DIR)/feeds.mk
|
||||||
|
|
||||||
PKG_NAME:=base-files
|
PKG_NAME:=base-files
|
||||||
PKG_RELEASE:=231
|
PKG_RELEASE:=232
|
||||||
PKG_FLAGS:=nonshared
|
PKG_FLAGS:=nonshared
|
||||||
|
|
||||||
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
PKG_FILE_DEPENDS:=$(PLATFORM_DIR)/ $(GENERIC_PLATFORM_DIR)/base-files/
|
||||||
|
|
|
@ -29,7 +29,8 @@ migrate_led_sysfs() {
|
||||||
}
|
}
|
||||||
|
|
||||||
remove_devicename_led_sysfs() {
|
remove_devicename_led_sysfs() {
|
||||||
local cfg="$1"
|
local cfg="$1"; shift
|
||||||
|
local exceptions="$@"
|
||||||
local sysfs
|
local sysfs
|
||||||
local name
|
local name
|
||||||
local new_sysfs
|
local new_sysfs
|
||||||
|
@ -37,8 +38,14 @@ remove_devicename_led_sysfs() {
|
||||||
config_get sysfs ${cfg} sysfs
|
config_get sysfs ${cfg} sysfs
|
||||||
config_get name ${cfg} name
|
config_get name ${cfg} name
|
||||||
|
|
||||||
|
# only continue if two or more colons are present
|
||||||
echo "${sysfs}" | grep -q ":.*:" || return
|
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/^[^:]*://")
|
new_sysfs=$(echo ${sysfs} | sed "s/^[^:]*://")
|
||||||
|
|
||||||
uci set system.${cfg}.sysfs="${new_sysfs}"
|
uci set system.${cfg}.sysfs="${new_sysfs}"
|
||||||
|
@ -53,7 +60,7 @@ migrate_leds() {
|
||||||
|
|
||||||
remove_devicename_leds() {
|
remove_devicename_leds() {
|
||||||
config_load system
|
config_load system
|
||||||
config_foreach remove_devicename_led_sysfs led
|
config_foreach remove_devicename_led_sysfs led "$@"
|
||||||
}
|
}
|
||||||
|
|
||||||
migrations_apply() {
|
migrations_apply() {
|
||||||
|
|
Loading…
Reference in New Issue