update-rc.d seems to be located at an unreliable url, making a local copy of it.

and the dependant patches.
This commit is contained in:
Buzz 2022-05-12 13:24:13 +10:00
parent abbe08fc18
commit 652be42857
3 changed files with 138 additions and 0 deletions

View File

@ -0,0 +1,49 @@
Upstream-Status: Pending
--- update-rc.d/update-rc.d.org 2005-01-03 00:30:47.000000000 +0200
+++ update-rc.d/update-rc.d 2007-12-01 19:41:08.000000000 +0200
@@ -19,6 +19,7 @@
notreally=0
force=0
dostart=0
+verbose=0
usage()
{
@@ -28,6 +29,7 @@
update-rc.d [-n] [-r <root>] [-s] <basename> start|stop NN runlvl [runlvl] [...] .
-n: not really
-f: force
+ -v: verbose
-r: alternate root path (default is /)
-s: invoke start methods if appropriate to current runlevel
EOF
@@ -69,7 +71,7 @@
lev=`echo $2 | cut -d/ -f1`
nn=`echo $2 | cut -d/ -f2`
fn="${etcd}${lev}.d/${startstop}${nn}${bn}"
- echo " $fn -> ../init.d/$bn"
+ [ $verbose -eq 1 ] && echo " $fn -> ../init.d/$bn"
if [ $notreally -eq 0 ]; then
mkdir -p `dirname $fn`
ln -s ../init.d/$bn $fn
@@ -89,7 +91,7 @@
exit 0
fi
- echo " Adding system startup for $initd/$bn ..."
+ echo " Adding system startup for $initd/$bn."
for i in $startlinks; do
dolink S $i
@@ -105,6 +107,10 @@
shift
continue
;;
+ -v) verbose=1
+ shift
+ continue
+ ;;
-f) force=1
shift
continue

View File

@ -0,0 +1,59 @@
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>
Signed-off-by: Christopher Larson <chris_larson@mentor.com>
Index: git/update-rc.d
===================================================================
--- 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
+ if which readlink >/dev/null; then
+ while true; do
+ linksn="$(readlink "$sn")"
+ if [ -z "$linksn" ]; then
+ break
+ fi
+
+ 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
+ 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

View File

@ -0,0 +1,30 @@
SUMMARY = "manage symlinks in /etc/rcN.d."
DESCRIPTION = "update-rc.d is a utilities that allows the management of symlinks to the initscripts in the /etc/rcN.d directory structure."
SECTION = "base"
LICENSE = "GPLv2+"
LIC_FILES_CHKSUM = "file://update-rc.d;beginline=5;endline=15;md5=148a48321b10eb37c1fa3ee02b940a75"
PR = "r5"
# Revision corresponding to tag update-rc.d_0.7
SRCREV = "eca680ddf28d024954895f59a241a622dd575c11"
SRC_URI = "git://github.com/philb/update-rc.d.git;protocol=http \
file://add-verbose.patch \
file://check-if-symlinks-are-valid.patch \
"
S = "${WORKDIR}/git"
inherit allarch
do_compile() {
}
do_install() {
install -d ${D}${sbindir}
install -m 0755 ${S}/update-rc.d ${D}${sbindir}/update-rc.d
}
BBCLASSEXTEND = "native"