diff options
author | Christopher Larson <chris_larson@mentor.com> | 2013-11-27 11:07:01 -0700 |
---|---|---|
committer | Richard Purdie <richard.purdie@linuxfoundation.org> | 2013-12-05 13:30:20 +0000 |
commit | 987a203f85e9474fd1807e577c7fd8c30ecf78d6 (patch) | |
tree | 436e71ba0b04a1c0e78d06acfbb07b79b2ad4f49 | |
parent | 7e7ff7d1e5e86f097ef40befcf00dd28657e26f8 (diff) | |
download | openembedded-core-987a203f85e9474fd1807e577c7fd8c30ecf78d6.tar.gz openembedded-core-987a203f85e9474fd1807e577c7fd8c30ecf78d6.tar.bz2 openembedded-core-987a203f85e9474fd1807e577c7fd8c30ecf78d6.zip |
update-rc.d: process symlinks recursively
When processing startup scripts which use update-alternatives, we need to keep
resolving the symlink recursively until we hit a real file, due to the
alternatives indirection. This fixes the ability to run certain postinsts at
do_rootfs time, which is needed for good read-only-rootfs support.
Signed-off-by: Christopher Larson <kergoth@gmail.com>
Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r-- | meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch b/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch index 6f402ddb6d..075171a5a3 100644 --- a/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch +++ b/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch @@ -14,25 +14,31 @@ actually exists in rootfs path and then continue. Upstream-Status: Pending Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> +Signed-off-by: Christopher Larson <chris_larson@mentor.com> Index: git/update-rc.d =================================================================== ---- git.orig/update-rc.d 2013-01-16 12:12:58.349814356 +0200 -+++ git/update-rc.d 2013-01-16 13:02:42.490864939 +0200 -@@ -147,13 +147,29 @@ +--- git.orig/update-rc.d ++++ git/update-rc.d +@@ -147,13 +147,34 @@ fi bn=$1 shift +sn=$initd/$bn +if [ -L "$sn" -a -n "$root" ]; then -+ readlink=$(which readlink) ++ if which readlink >/dev/null; then ++ while true; do ++ linksn="$(readlink "$sn")" ++ if [ -z "$linksn" ]; then ++ break ++ fi + -+ if [ -n "$readlink" ]; then -+ sn=$($readlink "$sn") -+ case "$sn" in -+ /*) sn=${root}${sn} ;; -+ *) sn=$initd/$sn ;; -+ esac ++ sn="$linksn" ++ case "$sn" in ++ /*) sn="$root$sn" ;; ++ *) sn="$initd/$sn" ;; ++ esac ++ done + else + echo "update-rc.d: readlink tool not present, cannot check whether \ + $sn symlink points to a valid file." >&2 |