summaryrefslogtreecommitdiffstats
path: root/meta/recipes-core/update-rc.d
diff options
context:
space:
mode:
authorLaurentiu Palcu <laurentiu.palcu@intel.com>2013-01-16 13:58:55 +0200
committerRichard Purdie <richard.purdie@linuxfoundation.org>2013-01-16 12:08:00 +0000
commite02b31623dac54f82509fcb5588bb58daaaa75e0 (patch)
tree6c0e8a7d1a92629f27c4dd7cdd589c5225d5939b /meta/recipes-core/update-rc.d
parenta2375f49e19f93e651ea65a8ead5bf70060c13c4 (diff)
downloadpoky-e02b31623dac54f82509fcb5588bb58daaaa75e0.tar.gz
update-rc.d: check also that symlinks are valid
Running: update-rc.d -r /path/to/target/rootfs basename defaults at do_rootfs time in package postinstall stage, when /path/to/target/rootfs/etc/init.d/basename is a symlink and points to some path on target (for example: /etc/init.d/basename.some_package), would fail and the postinstall execution would be postponed for first boot, on target. This patch adds the posibility to verify whether the file the symlink points to actually exists in the target rootfs. [YOCTO #3716] (From OE-Core rev: 4b63e73422ea25aba1bde0beddb02bc04948e13c) Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'meta/recipes-core/update-rc.d')
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch53
-rw-r--r--meta/recipes-core/update-rc.d/update-rc.d_0.7.bb6
2 files changed, 57 insertions, 2 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
new file mode 100644
index 0000000000..4476e9101d
--- /dev/null
+++ b/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch
@@ -0,0 +1,53 @@
1Check if symlinks are valid
2
3When using root option and $initd/$bn is a symlink, the script would fail because
4the symlink points to a path on target. For example:
5
6/path/to/target/rootfs/etc/init.d/syslog -> /etc/init.d/syslog.busybox
7
8Hence, [ -f /path/to/target/rootfs/etc/init.d/syslog ] condition would return
9false.
10
11This patch adds the posibility to check whether the file the symlink points to
12actually exists in rootfs path and then continue.
13
14Upstream-Status: Pending
15
16Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
17
18Index: git/update-rc.d
19===================================================================
20--- git.orig/update-rc.d 2013-01-16 12:12:58.349814356 +0200
21+++ git/update-rc.d 2013-01-16 13:02:42.490864939 +0200
22@@ -147,13 +147,29 @@
23 bn=$1
24 shift
25
26+sn=$initd/$bn
27+if [ -L "$sn" -a -n $root ]; then
28+ readlink=$(which readlink)
29+
30+ if [ -n $readlink ]; then
31+ sn=$($readlink "$sn")
32+ case "$sn" in
33+ /*) sn=${root}${sn} ;;
34+ *) sn=$initd/$sn ;;
35+ esac
36+ else
37+ echo "update-rc.d: readlink tool not present, cannot check whether \
38+ $sn symlink points to a valid file." >&2
39+ fi
40+fi
41+
42 if [ $1 != "remove" ]; then
43- if [ ! -f "$initd/$bn" ]; then
44+ if [ ! -f "$sn" ]; then
45 echo "update-rc.d: $initd/$bn: file does not exist" >&2
46 exit 1
47 fi
48 else
49- if [ -f "$initd/$bn" ]; then
50+ if [ -f "$sn" ]; then
51 if [ $force -eq 1 ]; then
52 echo "update-rc.d: $initd/$bn exists during rc.d purge (continuing)" >&2
53 else
diff --git a/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb b/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
index 0aac5fa013..bfcbd97bcd 100644
--- a/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
+++ b/meta/recipes-core/update-rc.d/update-rc.d_0.7.bb
@@ -5,13 +5,15 @@ SECTION = "base"
5LICENSE = "GPLv2+" 5LICENSE = "GPLv2+"
6LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=148a48321b10eb37c1fa3ee02b940a75" 6LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=148a48321b10eb37c1fa3ee02b940a75"
7 7
8PR = "r4" 8PR = "r5"
9 9
10# Revision corresponding to tag update-rc.d_0.7 10# Revision corresponding to tag update-rc.d_0.7
11SRCREV = "eca680ddf28d024954895f59a241a622dd575c11" 11SRCREV = "eca680ddf28d024954895f59a241a622dd575c11"
12 12
13SRC_URI = "git://github.com/philb/update-rc.d.git;protocol=git \ 13SRC_URI = "git://github.com/philb/update-rc.d.git;protocol=git \
14 file://add-verbose.patch;" 14 file://add-verbose.patch \
15 file://check-if-symlinks-are-valid.patch \
16 "
15 17
16S = "${WORKDIR}/git" 18S = "${WORKDIR}/git"
17 19