[Initng-svn] r2306 - initng
svn at initng.thinktux.net
svn at initng.thinktux.net
Fri Dec 2 09:36:00 CET 2005
Author: danne
Date: Fri Dec 2 09:35:59 2005
New Revision: 2306
Modified:
initng/gen_system_runlevel
Log:
More changes to gen_system_runlevel. Please test in different distros,
hopefully I haven't broken anything...
Modified: initng/gen_system_runlevel
==============================================================================
--- initng/gen_system_runlevel (original)
+++ initng/gen_system_runlevel Fri Dec 2 09:35:59 2005
@@ -10,27 +10,54 @@
fi
mkdir -p "${DESTDIR}/etc/initng"
-#echo "DESTDIR: ${DESTDIR}"
+#This function works fine on Fedora. Feel free to use it, just don't
+#sabotage it ;-)
+get_default_sysvinit_runlevel() {
+ if [ -f /etc/inittab ]; then
+ deflevel=`grep ":initdefault:" /etc/inittab`
+ deflevel=${deflevel##id:}
+ deflevel=${deflevel%%:initdefault:}
+ return $deflevel
+ fi
+}
+#See comment above
+#Usage: Send sysvinit runlevel as first argument. The function will scan through
+#the runlevel and add all started services to initng's default.runlevel
+copy_sysvinit_services() {
+ if [ -d /etc/rc${1}.d ]; then
+ for i in /etc/rc${1}.d/S* ; do
+ sname=`basename $i`
+ sname=${sname##S[0-9][0-9]}
+ if [ -f /etc/initng/daemon/${sname}.i ]; then
+ grep "daemon/${sname}" ${DESTDIR}/etc/initng/default.runlevel > /dev/null
+ if [ $? -ne 0 ]; then
+ echo "daemon/${sname}" >> ${DESTDIR}/etc/initng/default.runlevel
+ fi
+ fi
+ done
+ fi
+}
+#On what distro's does this function do anything good?
check_and_add() {
- TARGET=""
- ls /etc/rc2.d/S*$1* >/dev/null 2>&1
- if [ "$?" = "0" ] ; then
- TARGET="$2"
- fi
+ TARGET=""
+ ls /etc/rc2.d/S*$1* >/dev/null 2>&1
+ if [ "$?" = "0" ] ; then
+ TARGET="$2"
+ fi
- ls /etc/runlevels/*/*$1* >/dev/null 2>&1
- if [ "$?" = "0" ] ; then
- TARGET="$2"
- fi
+ ls /etc/runlevels/*/*$1* >/dev/null 2>&1
+ if [ "$?" = "0" ] ; then
+ TARGET="$2"
+ fi
- if [ ! -z "$TARGET" ]; then
- echo "Adding $2 to $3.runlevel"
- echo "$2" >> "${DESTDIR}/etc/initng/$3.runlevel"
- return 1
- fi
- return 0
+ if [ ! -z "$TARGET" ]; then
+ echo "Adding $2 to $3.runlevel"
+ echo "$2" >> "${DESTDIR}/etc/initng/$3.runlevel"
+ return 1
+ fi
+ return 0
}
@@ -96,21 +123,9 @@
daemon/klogd
daemon/portmap" >> ${DESTDIR}/etc/initng/default.runlevel
- deflevel=`grep ":initdefault:" /etc/inittab`
- deflevel=${deflevel##id:}
- deflevel=${deflevel%%:initdefault:}
- for i in /etc/rc${deflevel}.d/S* ; do
- sname=`basename $i`
- sname2=${sname##S[0-9][0-9]}
- if [ -f /etc/initng/daemon/${sname2}.i ]; then
- grep "daemon/${sname2}" ${DESTDIR}/etc/initng/default.runlevel > /dev/null
- if [ $? -ne 0 ]; then
- echo "daemon/${sname2}" >> ${DESTDIR}/etc/initng/default.runlevel
- fi
- fi
- done
-
- if [ $deflevel == "5" ]; then
+ #Below is because dm isn't started as SysVinit service in fedora :-/
+ get_default_sysvinit_runlevel
+ if [ $? == "5" ]; then
if [ -f /etc/sysconfig/desktop ]; then
. /etc/sysconfig/desktop
if [ "$DISPLAYMANAGER" = GNOME ] && [ -x /usr/sbin/gdm ] ; then
@@ -147,14 +162,12 @@
echo "daemon/xdm" >> ${DESTDIR}/etc/initng/default.runlevel
;;
esac
-
else
check_and_add gdm daemon/gdm default
check_and_add kdm daemon/kdm default
check_and_add xdm daemon/xdm default
fi
-
check_and_add ssh daemon/sshd default
check_and_add samba daemon/samba default
@@ -220,10 +233,16 @@
echo "Adding daemon/syslog-ng to default.runlevel"
echo "daemon/syslog-ng" >> ${DESTDIR}/etc/initng/default.runlevel
fi
+
+#These calls SHOULD work on every distro, I've just tested it on Fedora this far.
+#If/when this works on all other thistros, we should be able to obsolete some
+#of the crap above. /Daniel
+get_default_sysvinit_runlevel
+copy_sysvinit_services $?
}
-echo "Automatically generating system,runlevel,default.runlevel and up.runlevel"
-if [ -e ${DESTDIR}/etc/initng/system.runlevel ] && [ -e ${DESTDIR}/etc/initng/default.runlevel ] && [ -e ${DESTDIR}/etc/initng/up.runlevel ] && [ "$1" != "overwrite" ]; then
+echo "Automatically generating system,runlevel and default.runlevel"
+if [ -e ${DESTDIR}/etc/initng/system.runlevel ] && [ -e ${DESTDIR}/etc/initng/default.runlevel ] && [ "$1" != "overwrite" ]; then
echo "Runlevels already exists, force overwrite with ./gen_system_runlevel overwrite"
exit 0
fi
More information about the Initng-svn
mailing list