[oe-commits] Christopher Larson : update-rc.d: process symlinks recursively

git at git.openembedded.org git at git.openembedded.org
Thu Dec 5 10:57:37 UTC 2013


Module: openembedded-core.git
Branch: master-next
Commit: 40f523e66b888587135e893cdd02f79531a3afcf
URL:    http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=40f523e66b888587135e893cdd02f79531a3afcf

Author: Christopher Larson <chris_larson at mentor.com>
Date:   Wed Nov 27 11:07:01 2013 -0700

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 at gmail.com>
Signed-off-by: Richard Purdie <richard.purdie at linuxfoundation.org>

---

 .../update-rc.d/check-if-symlinks-are-valid.patch  | 26 +++++++++++++---------
 1 file 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 6f402dd..075171a 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 at intel.com> 
+Signed-off-by: Christopher Larson <chris_larson at 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



More information about the Openembedded-commits mailing list