From: Laurentiu Palcu <laurentiu.palcu@intel.com>
To: Martin Jansa <martin.jansa@gmail.com>
Cc: openembedded-core@lists.openembedded.org
Subject: Re: [oe-commits] Laurentiu Palcu : update-rc.d: check also that symlinks are valid
Date: Thu, 17 Jan 2013 20:23:22 +0200 [thread overview]
Message-ID: <50F8419A.5000500@intel.com> (raw)
In-Reply-To: <20130117174412.GL3067@jama>
On 01/17/2013 07:44 PM, Martin Jansa wrote:
> On Wed, Jan 16, 2013 at 12:54:28PM +0000, git@git.openembedded.org wrote:
>> Module: openembedded-core.git
>> Branch: master
>> Commit: 4b63e73422ea25aba1bde0beddb02bc04948e13c
>> URL: http://git.openembedded.org/?p=openembedded-core.git&a=commit;h=4b63e73422ea25aba1bde0beddb02bc04948e13c
>>
>> Author: Laurentiu Palcu <laurentiu.palcu@intel.com>
>> Date: Wed Jan 16 13:58:55 2013 +0200
>>
>> update-rc.d: check also that symlinks are valid
>>
>
> now every update-rc.d call on target fails with
> /usr/sbin/update-rc.d: line 151: [: argument expected
Addressed. Sent a patch for that. I guess I never tested when root was
not set... :(
Thanks,
Laurentiu
>
>> 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]
>>
>> Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.com>
>> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
>>
>> ---
>>
>> .../update-rc.d/check-if-symlinks-are-valid.patch | 53 ++++++++++++++++++++
>> meta/recipes-core/update-rc.d/update-rc.d_0.7.bb | 6 ++-
>> 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 0000000..4476e91
>> --- /dev/null
>> +++ b/meta/recipes-core/update-rc.d/update-rc.d/check-if-symlinks-are-valid.patch
>> @@ -0,0 +1,53 @@
>> +Check if symlinks are valid
>> +
>> +When using root option and $initd/$bn is a symlink, the script would fail because
>> +the symlink points to a path on target. For example:
>> +
>> +/path/to/target/rootfs/etc/init.d/syslog -> /etc/init.d/syslog.busybox
>> +
>> +Hence, [ -f /path/to/target/rootfs/etc/init.d/syslog ] condition would return
>> +false.
>> +
>> +This patch adds the posibility to check whether the file the symlink points to
>> +actually exists in rootfs path and then continue.
>> +
>> +Upstream-Status: Pending
>> +
>> +Signed-off-by: Laurentiu Palcu <laurentiu.palcu@intel.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 @@
>> + bn=$1
>> + shift
>> +
>> ++sn=$initd/$bn
>> ++if [ -L "$sn" -a -n $root ]; then
>> ++ readlink=$(which readlink)
>> ++
>> ++ if [ -n $readlink ]; then
>> ++ sn=$($readlink "$sn")
>> ++ case "$sn" in
>> ++ /*) sn=${root}${sn} ;;
>> ++ *) sn=$initd/$sn ;;
>> ++ esac
>> ++ else
>> ++ echo "update-rc.d: readlink tool not present, cannot check whether \
>> ++ $sn symlink points to a valid file." >&2
>> ++ fi
>> ++fi
>> ++
>> + if [ $1 != "remove" ]; then
>> +- if [ ! -f "$initd/$bn" ]; then
>> ++ if [ ! -f "$sn" ]; then
>> + echo "update-rc.d: $initd/$bn: file does not exist" >&2
>> + exit 1
>> + fi
>> + else
>> +- if [ -f "$initd/$bn" ]; then
>> ++ if [ -f "$sn" ]; then
>> + if [ $force -eq 1 ]; then
>> + echo "update-rc.d: $initd/$bn exists during rc.d purge (continuing)" >&2
>> + 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 0aac5fa..bfcbd97 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"
>> LICENSE = "GPLv2+"
>> LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=148a48321b10eb37c1fa3ee02b940a75"
>>
>> -PR = "r4"
>> +PR = "r5"
>>
>> # Revision corresponding to tag update-rc.d_0.7
>> SRCREV = "eca680ddf28d024954895f59a241a622dd575c11"
>>
>> SRC_URI = "git://github.com/philb/update-rc.d.git;protocol=git \
>> - file://add-verbose.patch;"
>> + file://add-verbose.patch \
>> + file://check-if-symlinks-are-valid.patch \
>> + "
>>
>> S = "${WORKDIR}/git"
>>
>>
>>
>> _______________________________________________
>> Openembedded-commits mailing list
>> Openembedded-commits@lists.openembedded.org
>> http://lists.linuxtogo.org/cgi-bin/mailman/listinfo/openembedded-commits
>
prev parent reply other threads:[~2013-01-17 18:38 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20130116125428.8B76B1036C@opal>
2013-01-17 17:44 ` [oe-commits] Laurentiu Palcu : update-rc.d: check also that symlinks are valid Martin Jansa
2013-01-17 18:23 ` Laurentiu Palcu [this message]
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=50F8419A.5000500@intel.com \
--to=laurentiu.palcu@intel.com \
--cc=martin.jansa@gmail.com \
--cc=openembedded-core@lists.openembedded.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.