ping ...

//Chen Qi

On 03/20/2015 02:27 PM, Chen Qi wrote:
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 <[email protected]>
---
  .../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 ]

--
_______________________________________________
Openembedded-core mailing list
[email protected]
http://lists.openembedded.org/mailman/listinfo/openembedded-core

Reply via email to