[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