summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristopher Larson <chris_larson@mentor.com>2013-11-27 11:07:01 -0700
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-12-05 13:30:20 +0000
commit987a203f85e9474fd1807e577c7fd8c30ecf78d6 (patch)
tree436e71ba0b04a1c0e78d06acfbb07b79b2ad4f49
parent7e7ff7d1e5e86f097ef40befcf00dd28657e26f8 (diff)
downloadopenembedded-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.patch26
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