From 157601b6948adc50efe73f9ee76bcd9cc46c0122 Mon Sep 17 00:00:00 2001 From: blogic Date: Thu, 11 Jul 2013 17:00:54 +0000 Subject: [PATCH] procd: add a small script that handles config reloads until configd is ready Signed-off-by: John Crispin git-svn-id: svn://svn.openwrt.org/openwrt/trunk@37248 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/base-files/files/etc/init.d/boot | 4 ++++ package/base-files/files/etc/rc.common | 4 ++++ package/system/procd/Makefile | 1 + package/system/procd/files/procd.sh | 3 +++ package/system/procd/files/reload_config | 8 ++++++++ 5 files changed, 20 insertions(+) create mode 100644 package/system/procd/files/reload_config diff --git a/package/base-files/files/etc/init.d/boot b/package/base-files/files/etc/init.d/boot index 078adb8ecc..aad59e25da 100755 --- a/package/base-files/files/etc/init.d/boot +++ b/package/base-files/files/etc/init.d/boot @@ -60,6 +60,10 @@ start() { rm -f /tmp/wireless.tmp apply_uci_config + + # temporary hack until configd exists + /sbin/reload_config + config_load system config_foreach system_config system diff --git a/package/base-files/files/etc/rc.common b/package/base-files/files/etc/rc.common index aeec90c37c..22111895db 100755 --- a/package/base-files/files/etc/rc.common +++ b/package/base-files/files/etc/rc.common @@ -80,6 +80,10 @@ start_service() { return 0 } +service_triggers() { + return 0 +} + stop_service() { return 0 } diff --git a/package/system/procd/Makefile b/package/system/procd/Makefile index 27879e8443..b91af98146 100644 --- a/package/system/procd/Makefile +++ b/package/system/procd/Makefile @@ -32,6 +32,7 @@ define Package/procd/install $(INSTALL_DIR) $(1)/sbin $(1)/lib/functions $(1)/etc/init.d $(CP) $(PKG_INSTALL_DIR)/usr/sbin/{procd,askfirst,udevtrigger,logread} $(1)/sbin/ + $(INSTALL_BIN) ./files/reload_config $(1)/sbin/ $(INSTALL_BIN) ./files/log.init $(1)/etc/init.d/log $(INSTALL_DATA) ./files/hotplug*.json $(1)/etc/ $(INSTALL_DATA) ./files/procd.sh $(1)/lib/functions/ diff --git a/package/system/procd/files/procd.sh b/package/system/procd/files/procd.sh index b706b1e97d..096eb2de32 100644 --- a/package/system/procd/files/procd.sh +++ b/package/system/procd/files/procd.sh @@ -67,6 +67,9 @@ _procd_open_service() { _procd_close_service() { json_close_object + _procd_open_trigger + service_triggers + _procd_close_trigger _procd_ubus_call set } diff --git a/package/system/procd/files/reload_config b/package/system/procd/files/reload_config new file mode 100644 index 0000000000..ef8ab87e0c --- /dev/null +++ b/package/system/procd/files/reload_config @@ -0,0 +1,8 @@ +#!/bin/sh +MD5FILE=/var/run/config.md5 +[ -f $MD5FILE ] && { + for c in `md5sum -c $MD5FILE 2>/dev/null| grep FAILED | cut -d: -f1`; do + ubus call service event "{ \"type\": \"config.change\", \"data\": { \"package\": \"$(basename $c)\" }}" + done +} +md5sum /etc/config/* > $MD5FILE -- 2.11.0