diff options
| -rwxr-xr-x | meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh | 37 |
1 files changed, 33 insertions, 4 deletions
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 35316ec2ba..824f8f3a6b 100755 --- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh +++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh | |||
| @@ -112,7 +112,6 @@ check_requirements() { | |||
| 112 | } | 112 | } |
| 113 | 113 | ||
| 114 | CFGFILE="$1" | 114 | CFGFILE="$1" |
| 115 | [ `basename "${CFGFILE}"` = "${COREDEF}" ] && return 0 | ||
| 116 | 115 | ||
| 117 | TMP_INTERMED="${TMPROOT}/tmp.$$" | 116 | TMP_INTERMED="${TMPROOT}/tmp.$$" |
| 118 | TMP_DEFINED="${TMPROOT}/tmpdefined.$$" | 117 | TMP_DEFINED="${TMPROOT}/tmpdefined.$$" |
| @@ -154,8 +153,11 @@ check_requirements() { | |||
| 154 | 153 | ||
| 155 | apply_cfgfile() { | 154 | apply_cfgfile() { |
| 156 | CFGFILE="$1" | 155 | CFGFILE="$1" |
| 156 | SKIP_REQUIREMENTS="$2" | ||
| 157 | 157 | ||
| 158 | check_requirements "${CFGFILE}" || { | 158 | [ "${VERBOSE}" != "no" ] && echo "Applying ${CFGFILE}" |
| 159 | |||
| 160 | [ "${SKIP_REQUIREMENTS}" == "yes" ] || check_requirements "${CFGFILE}" || { | ||
| 159 | echo "Skipping ${CFGFILE}" | 161 | echo "Skipping ${CFGFILE}" |
| 160 | return 1 | 162 | return 1 |
| 161 | } | 163 | } |
| @@ -231,10 +233,37 @@ then | |||
| 231 | sh ${ROOT_DIR}/etc/volatile.cache | 233 | sh ${ROOT_DIR}/etc/volatile.cache |
| 232 | else | 234 | else |
| 233 | rm -f ${ROOT_DIR}/etc/volatile.cache ${ROOT_DIR}/etc/volatile.cache.build | 235 | rm -f ${ROOT_DIR}/etc/volatile.cache ${ROOT_DIR}/etc/volatile.cache.build |
| 234 | for file in `ls -1 "${CFGDIR}" | sort`; do | 236 | |
| 235 | apply_cfgfile "${CFGDIR}/${file}" | 237 | # Apply the core file with out checking requirements. ${TMPROOT} is |
| 238 | # needed by check_requirements but is setup by this file, so it must be | ||
| 239 | # processed first and without being checked. | ||
| 240 | [ -e "${CFGDIR}/${COREDEF}" ] && apply_cfgfile "${CFGDIR}/${COREDEF}" "yes" | ||
| 241 | |||
| 242 | # Fast path: check_requirements is slow and most of the time doesn't | ||
| 243 | # find any problems. If there are a lot of config files, it is much | ||
| 244 | # faster to to concatenate them all together and process them once to | ||
| 245 | # avoid the overhead of calling check_requirements repeatedly | ||
| 246 | TMP_FILE="${TMPROOT}/tmp_volatile.$$" | ||
| 247 | rm -f "$TMP_FILE" | ||
| 248 | |||
| 249 | CFGFILES="`ls -1 "${CFGDIR}" | grep -v "^${COREDEF}\$" | sort`" | ||
| 250 | for file in ${CFGFILES}; do | ||
| 251 | cat "${CFGDIR}/${file}" >> "$TMP_FILE" | ||
| 236 | done | 252 | done |
| 237 | 253 | ||
| 254 | if check_requirements "$TMP_FILE" | ||
| 255 | then | ||
| 256 | apply_cfgfile "$TMP_FILE" "yes" | ||
| 257 | else | ||
| 258 | # Slow path: One or more config files failed requirements. | ||
| 259 | # Process each one individually so the offending one can be | ||
| 260 | # skipped | ||
| 261 | for file in ${CFGFILES}; do | ||
| 262 | apply_cfgfile "${CFGDIR}/${file}" | ||
| 263 | done | ||
| 264 | fi | ||
| 265 | rm "$TMP_FILE" | ||
| 266 | |||
| 238 | [ -e ${ROOT_DIR}/etc/volatile.cache.build ] && sync && mv ${ROOT_DIR}/etc/volatile.cache.build ${ROOT_DIR}/etc/volatile.cache | 267 | [ -e ${ROOT_DIR}/etc/volatile.cache.build ] && sync && mv ${ROOT_DIR}/etc/volatile.cache.build ${ROOT_DIR}/etc/volatile.cache |
| 239 | fi | 268 | fi |
| 240 | 269 | ||
