[OE-core] [PATCH 4/4] populate-volatile.sh: improve the handling of link config items
Qi.Chen at windriver.com
Qi.Chen at windriver.com
Tue Feb 19 07:38:16 UTC 2013
From: Chen Qi <Qi.Chen at windriver.com>
Previously, if there's a link config item in the config file like
l root root 1777 /tmp /var/tmp
and /tmp has existed, the symlink will not be created correctly.
Another example is the /run directory. If /run directory has been
created by some recipe or script before populate-volatile.sh runs,
the symlink of /run to /var/run will not be created correctly.
This patch ensures that the system creates symlinks exactly as the
config file tells it.
[YOCTO #3404]
[YOCTO #3406]
Signed-off-by: Chen Qi <Qi.Chen at windriver.com>
---
.../initscripts-1.0/populate-volatile.sh | 36 +++++++++++---------
1 file changed, 20 insertions(+), 16 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 f1f8793..444c40d 100755
--- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
+++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh
@@ -68,21 +68,27 @@ mk_dir() {
}
link_file() {
- EXEC="test -e \"$2\" -o -L $2 || ln -s \"$1\" \"$2\" >/dev/tty0 2>&1"
+ EXEC="
+ if [ -L \"$2\" ]; then
+ [ \"$(readlink -f \"$2\")\" != \"$(readlink -f \"$1\")\" ] && { rm -f \"$2\"; ln -sf \"$1\" \"$2\"; };
+ elif [ -d \"$2\" ]; then
+ for f in $2/* $2/.[^.]*; do [ -e \$f ] && cp -rf \$f $1; done;
+ rm -rf \"$2\";
+ ln -sf \"$1\" \"$2\";
+ else
+ ln -sf \"$1\" \"$2\";
+ fi
+ "
test "$VOLATILE_ENABLE_CACHE" = yes && echo " $EXEC" >> /etc/volatile.cache.build
- [ -e "$2" ] && {
- echo "Cannot create link over existing -${TNAME}-." >&2
- } || {
- if [ "$ROOT_DIR" = "/" ]; then
- eval $EXEC &
- else
- # For the same reason with create_file(), failures should
- # not be logged.
- eval $EXEC > /dev/null 2>&1
- fi
- }
+ if [ "$ROOT_DIR" = "/" ]; then
+ eval $EXEC &
+ else
+ # For the same reason with create_file(), failures should
+ # not be logged.
+ eval $EXEC > /dev/null 2>&1
+ fi
}
check_requirements() {
@@ -149,10 +155,8 @@ apply_cfgfile() {
[ "${TTYPE}" = "l" ] && {
TSOURCE="$TLTARGET"
- [ -L "${TNAME}" ] || {
- [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-."
- link_file "${TSOURCE}" "${TNAME}" &
- }
+ [ "${VERBOSE}" != "no" ] && echo "Creating link -${TNAME}- pointing to -${TSOURCE}-."
+ link_file "${TSOURCE}" "${TNAME}"
continue
}
--
1.7.9.5
More information about the Openembedded-core
mailing list