[OE-core] [PATCH 1/1] populate-volatile.sh: detect the change of configuration files
Chen Qi
Qi.Chen at windriver.com
Fri Mar 20 06:27:48 UTC 2015
In case the configuration files are modified by user, the cached script,
/etc/volatile.cache should not be executed. Instead, the configuration
files should be parsed again and generate the new cache. Otherwise, the
user modifications take no effect which would obviously confuse users.
Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
---
.../initscripts/initscripts-1.0/populate-volatile.sh | 19 ++++++++++++++++++-
1 file changed, 18 insertions(+), 1 deletion(-)
diff --git a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
index 904037e..eaf0f1c 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
@@ -204,9 +204,25 @@ do
done
exec 9>&-
-if test -e ${ROOT_DIR}/etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0"
+# Check whether configuration files have changed, if so, the cache needs to be removed
+# and generated again
+CACHE_MATCH="no"
+CACHE_DATA="${ROOT_DIR}/etc/.volatile.cache.data"
+CACHE_TMP="${ROOT_DIR}/etc/.volatile.cache.tmp"
+VOLATILE_CONFFILES="${ROOT_DIR}/etc/default/volatiles/*"
+if [ "$VOLATILE_ENABLE_CACHE" = "yes" ]; then
+ stat -c '%s %Y %n' $VOLATILE_CONFFILES | awk -F/ '{print $1 " " $NF;}' > $CACHE_TMP
+ if [ -e $CACHE_DATA ]; then
+ if cmp $CACHE_DATA $CACHE_TMP > /dev/null; then
+ CACHE_MATCH="yes"
+ fi
+ fi
+fi
+
+if test -e ${ROOT_DIR}/etc/volatile.cache -a "$VOLATILE_ENABLE_CACHE" = "yes" -a "x$1" != "xupdate" -a "x$clearcache" = "x0" -a "$CACHE_MATCH" = "yes"
then
sh ${ROOT_DIR}/etc/volatile.cache
+ [ -e $CACHE_TMP ] && rm $CACHE_TMP
else
rm -f ${ROOT_DIR}/etc/volatile.cache ${ROOT_DIR}/etc/volatile.cache.build
for file in `ls -1 "${CFGDIR}" | sort`; do
@@ -214,6 +230,7 @@ else
done
[ -e ${ROOT_DIR}/etc/volatile.cache.build ] && sync && mv ${ROOT_DIR}/etc/volatile.cache.build ${ROOT_DIR}/etc/volatile.cache
+ [ -e $CACHE_TMP ] && mv $CACHE_TMP $CACHE_DATA
fi
if [ -z "${ROOT_DIR}" ] && [ -f /etc/ld.so.cache ] && [ ! -f /var/run/ld.so.cache ]
--
1.9.1
More information about the Openembedded-core
mailing list