diff options
author | Chen Qi <Qi.Chen@windriver.com> | 2013-02-20 11:28:37 +0800 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-03-07 11:01:08 +0000 |
commit | a54287d8e3d75a727c8ed5654a822bda256b0849 (patch) | |
tree | 06bb72fff2c015225895a7c808d9565aa1e66e29 /meta/recipes-core/initscripts | |
parent | 45396e3edcce4a33fcbef6456f31811f30c26c63 (diff) | |
download | openembedded-core-a54287d8e3d75a727c8ed5654a822bda256b0849.tar.gz openembedded-core-a54287d8e3d75a727c8ed5654a822bda256b0849.tar.bz2 openembedded-core-a54287d8e3d75a727c8ed5654a822bda256b0849.zip |
populate-volatile.sh: improve the handling of link config items
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@windriver.com>
Signed-off-by: Saul Wold <sgw@linux.intel.com>
Diffstat (limited to 'meta/recipes-core/initscripts')
-rwxr-xr-x | meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh | 37 |
1 files changed, 21 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 c4bf70e5de..fec3b0c75c 100755 --- a/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh +++ b/meta/recipes-core/initscripts/initscripts-1.0/populate-volatile.sh @@ -68,20 +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() { @@ -148,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 } |