[OpenWrt-Devel] [PATCH 1/2] base-files: add leds migration

Tomasz Maciej Nowak tomek_n at o2.pl
Mon Mar 18 11:21:35 PDT 2019


Currently leds migration scripts in ar71xx and lantiq share a lot of
logic and introducing leds migration to another target would mean
copying this code, again. Therefore move common logic to library in
base-files package.

Suggested-by: Petr Štetiar <ynezz at true.cz>
Signed-off-by: Petr Štetiar <ynezz at true.cz>
Signed-off-by: Tomasz Maciej Nowak <tomek_n at o2.pl>
---
 .../files/lib/functions/migrations.sh         | 39 ++++++++++++++++++
 .../etc/uci-defaults/04_led_migration         | 39 +-----------------
 .../etc/uci-defaults/01_led_migration         | 40 +------------------
 3 files changed, 43 insertions(+), 75 deletions(-)
 create mode 100644 package/base-files/files/lib/functions/migrations.sh

diff --git a/package/base-files/files/lib/functions/migrations.sh b/package/base-files/files/lib/functions/migrations.sh
new file mode 100644
index 0000000000..b180a0242f
--- /dev/null
+++ b/package/base-files/files/lib/functions/migrations.sh
@@ -0,0 +1,39 @@
+#!/bin/sh
+
+. /lib/functions.sh
+
+migrate_led_sysfs() {
+	local cfg="$1"; shift
+	local tuples="$@"
+	local sysfs
+	local name
+
+	config_get sysfs ${cfg} sysfs
+	config_get name ${cfg} name
+
+	[ -z "${sysfs}" ] && return
+
+	for tuple in ${tuples}; do
+		local old=${tuple%=*}
+		local new=${tuple#*=}
+		local new_sysfs
+
+		new_sysfs=$(echo ${sysfs} | sed "s/${old}/${new}/")
+
+		[ "${new_sysfs}" = "${sysfs}" ] && continue
+
+		uci set system.${cfg}.sysfs="${new_sysfs}"
+
+		logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}"
+	done;
+}
+
+migrate_leds() {
+	config_load system
+	config_foreach migrate_led_sysfs led "$@"
+}
+
+migrations_apply() {
+	local realm="$1"
+	[ -n "$(uci changes ${realm})" ] && uci -q commit ${realm}
+}
diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration b/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration
index 4dd224b549..5b78d9a910 100644
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/04_led_migration
@@ -3,43 +3,8 @@
 # Copyright (C) 2013 OpenWrt.org
 #
 
-LED_OPTIONS_CHANGED=0
-
 . /lib/functions.sh
-
-do_led_update_sysfs()
-{
-	local cfg=$1; shift
-	local tuples="$@"
-	local sysfs
-	local name
-
-	config_get sysfs $cfg sysfs
-	config_get name $cfg name
-
-	[ -z "$sysfs" ] && return
-
-	for tuple in $tuples; do
-		local old=${tuple%=*}
-		local new=${tuple#*=}
-		local new_sysfs
-
-		new_sysfs=$(echo ${sysfs} | sed "s/${old}/${new}/")
-
-		[ "$new_sysfs" = "$sysfs" ] && continue
-
-		uci set system.${cfg}.sysfs="${new_sysfs}"
-		LED_OPTIONS_CHANGED=1
-
-		logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}"
-	done;
-}
-
-migrate_leds()
-{
-	config_load system
-	config_foreach do_led_update_sysfs led "$@"
-}
+. /lib/functions/migrations.sh
 
 board=$(board_name)
 
@@ -76,6 +41,6 @@ wnr612-v2)
 	;;
 esac
 
-[ "$LED_OPTIONS_CHANGED" = "1" ] && uci commit system
+migrations_apply system
 
 exit 0
diff --git a/target/linux/lantiq/base-files/etc/uci-defaults/01_led_migration b/target/linux/lantiq/base-files/etc/uci-defaults/01_led_migration
index dc594e35e9..b14751b6e6 100644
--- a/target/linux/lantiq/base-files/etc/uci-defaults/01_led_migration
+++ b/target/linux/lantiq/base-files/etc/uci-defaults/01_led_migration
@@ -3,37 +3,8 @@
 # Copyright (C) 2013 OpenWrt.org
 #
 
-LED_OPTIONS_CHANGED=0
-
 . /lib/functions.sh
-
-do_led_update_sysfs()
-{
-	local cfg=$1; shift
-	local tuples="$@"
-	local sysfs
-	local name
-
-	config_get sysfs $cfg sysfs
-	config_get name $cfg name
-
-	[ -z "$sysfs" ] && return
-
-	for tuple in $tuples; do
-		local old=${tuple%=*}
-		local new=${tuple#*=}
-		local new_sysfs
-
-		new_sysfs=$(echo ${sysfs} | sed "s/${old}/${new}/")
-
-		[ "$new_sysfs" = "$sysfs" ] && continue
-
-		uci set system.${cfg}.sysfs="${new_sysfs}"
-		LED_OPTIONS_CHANGED=1
-
-		logger -t led-migration "sysfs option of LED \"${name}\" updated to ${new_sysfs}"
-	done;
-}
+. /lib/functions/migrations.sh
 
 do_internet_led_rename()
 {
@@ -45,16 +16,9 @@ do_internet_led_rename()
 	uci rename system.led_internet=led_dsl
 	uci set system.led_dsl.name=dsl
 
-	LED_OPTIONS_CHANGED=1
 	logger -t led-migration "internet led renamed to dsl"
 }
 
-migrate_leds()
-{
-	config_load system
-	config_foreach do_led_update_sysfs led "$@"
-}
-
 case "$(board_name)" in
 arcadyan,arv452cqw|\
 arcadyan,arv7510pw22|\
@@ -77,6 +41,6 @@ netgear,dgn3500b)
 	;;
 esac
 
-[ "$LED_OPTIONS_CHANGED" = "1" ] && uci commit system
+migrations_apply system
 
 exit 0
-- 
2.21.0




More information about the openwrt-devel mailing list