aboutsummaryrefslogtreecommitdiffstats
path: root/recipes/update-rc.d
diff options
context:
space:
mode:
authorFrans Meulenbroeks <fransmeulenbroeks@gmail.com>2010-11-20 21:24:30 +0100
committerFrans Meulenbroeks <fransmeulenbroeks@gmail.com>2010-11-22 18:31:22 +0100
commit24acf53f550b659f2666aa45a31b4d825ed8c999 (patch)
treeb224d1ff446461fffe95148d7f16c9aa3e5fd8d5 /recipes/update-rc.d
parente4721e70afa802ff301fc0ac511fcea26561c173 (diff)
downloadopenembedded-24acf53f550b659f2666aa45a31b4d825ed8c999.tar.gz
update-rc.d: make update-rc.d local
the recipe did not build any more as handhelds.org is gone. Since this one is fairly crucial as lots of recipes depend on it I decided to put the update-rc.d file in update-rc.d/ instead of fetching it. It has been decided (after discussion on irc with Philip Balister, the maintainer of update-rc.d) to keep the code the same as the old upstream version and not apply the patch to it. While at it als renamed the files dir to update-rc.d Signed-off-by: Frans Meulenbroeks <fransmeulenbroeks@gmail.com> Acked-by: Philip Balister <philip@balister.org> (on irc)
Diffstat (limited to 'recipes/update-rc.d')
-rw-r--r--recipes/update-rc.d/update-rc.d/add-verbose.patch (renamed from recipes/update-rc.d/files/add-verbose.patch)0
-rw-r--r--recipes/update-rc.d/update-rc.d/update-rc.d231
-rw-r--r--recipes/update-rc.d/update-rc.d_0.7.bb7
3 files changed, 235 insertions, 3 deletions
diff --git a/recipes/update-rc.d/files/add-verbose.patch b/recipes/update-rc.d/update-rc.d/add-verbose.patch
index 0f068308f6..0f068308f6 100644
--- a/recipes/update-rc.d/files/add-verbose.patch
+++ b/recipes/update-rc.d/update-rc.d/add-verbose.patch
diff --git a/recipes/update-rc.d/update-rc.d/update-rc.d b/recipes/update-rc.d/update-rc.d/update-rc.d
new file mode 100644
index 0000000000..ec50d156d9
--- /dev/null
+++ b/recipes/update-rc.d/update-rc.d/update-rc.d
@@ -0,0 +1,231 @@
+#!/bin/sh
+#
+# update-rc.d Update the links in /etc/rc[0-9S].d/
+#
+# (c) 2003, 2004 Phil Blundell <pb@handhelds.org>
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+
+initd="/etc/init.d"
+etcd="/etc/rc"
+notreally=0
+force=0
+dostart=0
+
+usage()
+{
+ cat >&2 <<EOF
+usage: update-rc.d [-n] [-f] [-r <root>] <basename> remove
+ update-rc.d [-n] [-r <root>] [-s] <basename> defaults [NN | sNN kNN]
+ update-rc.d [-n] [-r <root>] [-s] <basename> start|stop NN runlvl [runlvl] [...] .
+ -n: not really
+ -f: force
+ -r: alternate root path (default is /)
+ -s: invoke start methods if appropriate to current runlevel
+EOF
+}
+
+checklinks()
+{
+ local i dn fn remove=0
+ if [ "x$1" = "xremove" ]; then
+ echo " Removing any system startup links for $bn ..."
+ remove=1
+ fi
+
+ for i in 0 1 2 3 4 5 6 7 8 9 S; do
+ dn="${etcd}${i}.d"
+ if [ ! -d $dn ]; then
+ continue;
+ fi
+ for f in ${dn}/[SK]??${bn}; do
+ if [ -L $f ]; then
+ if [ $remove -eq 0 ]; then
+ return 1
+ fi
+ echo " $f"
+ if [ $notreally -eq 1 ]; then
+ continue
+ fi
+ rm $f
+ fi
+ done
+ done
+
+ return 0
+}
+
+dolink()
+{
+ startstop=$1
+ lev=`echo $2 | cut -d/ -f1`
+ nn=`echo $2 | cut -d/ -f2`
+ fn="${etcd}${lev}.d/${startstop}${nn}${bn}"
+ echo " $fn -> ../init.d/$bn"
+ if [ $notreally -eq 0 ]; then
+ mkdir -p `dirname $fn`
+ ln -s ../init.d/$bn $fn
+ fi
+ if [ $dostart -eq 1 ] && [ $startstop = "S" ] && [ $lev = $RUNLEVEL ]; then
+ $fn start || true
+ fi
+}
+
+makelinks()
+{
+ if ! checklinks; then
+ echo " System startup links for $initd/$bn already exist."
+ if [ $dostart -eq 1 ] && [ $notreally -eq 0 ] && [ -L ${etcd}${RUNLEVEL}.d/S??${bn} ]; then
+ ${etcd}${RUNLEVEL}.d/S??${bn} restart || true
+ fi
+ exit 0
+ fi
+
+ echo " Adding system startup for $initd/$bn ..."
+
+ for i in $startlinks; do
+ dolink S $i
+ done
+ for i in $stoplinks; do
+ dolink K $i
+ done
+}
+
+while [ $# -gt 0 ]; do
+ case $1 in
+ -n) notreally=1
+ shift
+ continue
+ ;;
+ -f) force=1
+ shift
+ continue
+ ;;
+ -s) dostart=1
+ shift
+ continue
+ ;;
+ -r) shift
+ root=$1
+ initd="${root}${initd}"
+ etcd="${root}${etcd}"
+ shift
+ ;;
+ -h | --help)
+ usage
+ exit 0
+ ;;
+ -*)
+ usage
+ exit 1
+ ;;
+ *)
+ break
+ ;;
+ esac
+done
+
+if [ $# -lt 2 ]; then
+ usage
+ exit 1
+fi
+
+bn=$1
+shift
+
+if [ $1 != "remove" ]; then
+ if [ ! -f "$initd/$bn" ]; then
+ echo "update-rc.d: $initd/$bn: file does not exist" >&2
+ exit 1
+ fi
+else
+ if [ -f "$initd/$bn" ]; then
+ if [ $force -eq 1 ]; then
+ echo "update-rc.d: $initd/$bn exists during rc.d purge (continuing)" >&2
+ else
+ echo "update-rc.d: $initd/$bn exists during rc.d purge (use -f to force)" >&2
+ exit 1
+ fi
+ fi
+fi
+
+if [ $dostart -eq 1 ]; then
+ #RUNLEVEL=`sed 's/.*\[\(.*\)\]/\1/' < /proc/1/cmdline`
+ RUNLEVEL=`runlevel | cut -d" " -f2`
+ if [ "x$RUNLEVEL" = "x" ]; then
+ echo "Unable to determine current runlevel" >&2
+ exit 1
+ fi
+fi
+
+case $1 in
+ remove)
+ checklinks "remove"
+ ;;
+
+ defaults)
+ if [ $# -gt 3 ]; then
+ echo "defaults takes only one or two arguments" >&2
+ usage
+ exit 1
+ fi
+ start=20
+ stop=20
+ if [ $# -gt 1 ]; then
+ start=$2
+ stop=$2
+ fi
+ if [ $# -gt 2 ]; then
+ stop=$3
+ fi
+ start=`printf %02d $start`
+ stop=`printf %02d $stop`
+ stoplinks="0/$stop 1/$stop 6/$stop"
+ startlinks="2/$start 3/$start 4/$start 5/$start"
+ makelinks
+ ;;
+
+ start | stop)
+ while [ $# -gt 0 ]; do
+ if [ $1 = "start" ]; then
+ letter=S
+ elif [ $1 = "stop" ]; then
+ letter=K
+ else
+ echo "expected start or stop" >&2
+ usage
+ exit 1
+ fi
+ shift
+ NN=`printf %02d $1`
+ shift
+ while [ "x$1" != "x." ]; do
+ if [ $# -eq 0 ]; then
+ echo "action with list of runlevels not terminated by \`.'" >&2
+ exit 1
+ fi
+ level=$1
+ shift
+ case $letter in
+ S) startlinks="$startlinks $level/$NN" ;;
+ K) stoplinks="$stoplinks $level/$NN" ;;
+ esac
+ done
+ shift
+ done
+ makelinks
+ ;;
+
+ *)
+ usage
+ exit 1
+ ;;
+esac
diff --git a/recipes/update-rc.d/update-rc.d_0.7.bb b/recipes/update-rc.d/update-rc.d_0.7.bb
index b36b8cae95..43ebd04f36 100644
--- a/recipes/update-rc.d/update-rc.d_0.7.bb
+++ b/recipes/update-rc.d/update-rc.d_0.7.bb
@@ -2,13 +2,14 @@ SECTION = "base"
PRIORITY = "standard"
DESCRIPTION = "Manage symlinks in /etc/rcN.d"
LICENSE = "GPLv2+"
-S = "${WORKDIR}/update-rc.d"
+S = "${WORKDIR}"
+# S = "${WORKDIR}/update-rc.d"
INHIBIT_DEFAULT_DEPS = "1"
-PR = "r1"
+PR = "r2"
BBCLASSEXTEND = "native"
-SRC_URI = "${HANDHELDS_CVS};module=apps/update-rc.d;tag=r0_7 \
+SRC_URI = "file://update-rc.d \
file://add-verbose.patch"
PACKAGE_ARCH = "all"