[vbox-dev] [PATCH] - add LFS distro support for Additions installerscripts

Arseny Krasutsky dtiger at mail.ru
Tue Feb 17 10:20:53 GMT 2009


Patches against VirtualBox 2.1.4 Additions installer scripts

Compared to previous redaction, this one fixes bugs and improves echo messages

===================================================================
--- ../VBoxAdd-2.1.4-orig/routines.sh	2009-02-16 18:26:56.000000000 +0200
+++ ../VBoxAdd-2.1.4/routines.sh	2009-02-17 08:55:06.000000000 +0200
@@ -184,7 +184,7 @@
         ro_INIT_TYPE=sysv
     elif [ -f /etc/lfs-release -a -d /etc/rc.d/init.d ]; then
         ro_SYS_TYPE=lfs
-        ro_INIT_TYPE=sysv
+        ro_INIT_TYPE=lfs
     elif [ -f /etc/rc.d/rc.local ]; then
         ro_SYS_TYPE=unknown
         ro_INIT_TYPE=bsd
@@ -223,6 +223,9 @@
     elif [ "$ro_INIT_TYPE" = "bsd" ]; then
         cp "$1" "/etc/rc.d/rc.$2" 2> /dev/null
         chmod 755 "/etc/rc.d/rc.$2" 2> /dev/null
+    elif [ "$ro_INIT_TYPE" = "lfs" ]; then
+        cp "$1" "/etc/rc.d/init.d/$2" 2> /dev/null
+        chmod 755 "/etc/rc.d/init.d/$2" 2> /dev/null
     else
         log "install_init_script: error: unknown init type"
         return 1
@@ -243,6 +246,8 @@
         rm -f "/etc/init.d/$1" > /dev/null 2>&1
     elif [ "$ro_INIT_TYPE" = "bsd" ]; then
         rm -f "/etc/rc.d/rc.$1" > /dev/null 2>&1
+    elif [ "$ro_INIT_TYPE" = "lfs" ]; then
+        rm -f "/etc/rc.d/init.d/$1" > /dev/null 2>&1
     else
         log "remove_init_script: error: unknown init type"
         return 1
@@ -263,6 +268,8 @@
         "/etc/init.d/$1" start >> $ro_LOG_FILE 2>&1
     elif [ "$ro_INIT_TYPE" = "bsd" ]; then
         "/etc/rc.d/rc.$1" start >> $ro_LOG_FILE  2>&1
+    elif [ "$ro_INIT_TYPE" = "lfs" ]; then
+        "/etc/rc.d/init.d/$1" start >> $ro_LOG_FILE 2>&1
     else
         log "start_init_script: error: unknown init type"
         return 1
@@ -282,6 +289,8 @@
         "/etc/init.d/$1" stop >> $ro_LOG_FILE 2>&1
     elif [ "$ro_INIT_TYPE" = "bsd" ]; then
         "/etc/rc.d/rc.$1" stop >> $ro_LOG_FILE 2>&1
+    elif [ "$ro_INIT_TYPE" = "lfs" ]; then
+        "/etc/rc.d/init.d/$1" stop >> $ro_LOG_FILE 2>&1
     else
         log "stop_init_script: error: unknown init type"
         return 1
@@ -343,19 +352,28 @@
     elif [ "$ro_SYS_TYPE" = "lfs" ]; then
         test -x /etc/rc.d/init.d/$1 || \
             { log "addrunlevel: name argument must be a script in /etc/rc.d/init.d" && return 1; }
-        expr "$2" + 0 > /dev/null 2>&1 && expr 0 \<= "$2" > /dev/null && \
-            [ `expr length "$2"` -eq 2 ] || \
+        P2=$2
+        P3=$3
+        # add leading zero
+        if [ `expr length "$P2"` -eq 1 ]; then
+            P2=`expr 0$P2`
+        fi
+        if [ `expr length "$P3"` -eq 1 ]; then
+            P3=`expr 0$P3`
+        fi
+        expr "$P2" + 0 > /dev/null 2>&1 && expr 0 \<= "$P2" > /dev/null && \
+            [ `expr length "$P2"` -eq 2 ] || \
             { log "addrunlevel: start sequence number must be between 00 and 99" && return 1; }
-        expr "$3" + 0 > /dev/null 2>&1 && expr 0 \<= "$3" > /dev/null && \
-            [ `expr length "$3"` -eq 2 ] || \
+        expr "$P3" + 0 > /dev/null 2>&1 && expr 0 \<= "$P3" > /dev/null && \
+            [ `expr length "$P3"` -eq 2 ] || \
             { log "addrunlevel: stop sequence number must be between 00 and 99" && return 1; }
-        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc0.d/K`expr $3`$1" > /dev/null 2>&1
-        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc1.d/K`expr $3`$1" > /dev/null 2>&1
-        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc2.d/S`expr $2`$1" > /dev/null 2>&1
-        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc3.d/S`expr $2`$1" > /dev/null 2>&1
-        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc4.d/S`expr $2`$1" > /dev/null 2>&1
-        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc5.d/S`expr $2`$1" > /dev/null 2>&1
-        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc6.d/K`expr $3`$1" > /dev/null 2>&1
+        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc.d/rc0.d/K`expr $P3`$1" > /dev/null 2>&1
+        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc.d/rc1.d/K`expr $P3`$1" > /dev/null 2>&1
+        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc.d/rc2.d/S`expr $P2`$1" > /dev/null 2>&1
+        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc.d/rc3.d/S`expr $P2`$1" > /dev/null 2>&1
+        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc.d/rc4.d/S`expr $P2`$1" > /dev/null 2>&1
+        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc.d/rc5.d/S`expr $P2`$1" > /dev/null 2>&1
+        ln -fs "/etc/rc.d/init.d/$1" "/etc/rc.d/rc6.d/K`expr $P3`$1" > /dev/null 2>&1
     # BSD-based systems require changing the rc.local file to start a new service.
     elif [ "$ro_INIT_TYPE" = "bsd" ]; then
         if ! grep $1 $ro_RC_LOCAL
@@ -420,13 +438,13 @@
         rc-update del "$1" > /dev/null 2>&1
     # Linux from scratch, by the book
     elif [ "$ro_SYS_TYPE" = "lfs" ]; then
-        rm "/etc/rc0.d/K??$1" > /dev/null 2>&1
-        rm "/etc/rc1.d/K??$1" > /dev/null 2>&1
-        rm "/etc/rc2.d/S??$1" > /dev/null 2>&1
-        rm "/etc/rc3.d/S??$1" > /dev/null 2>&1
-        rm "/etc/rc4.d/S??$1" > /dev/null 2>&1
-        rm "/etc/rc5.d/S??$1" > /dev/null 2>&1
-        rm "/etc/rc6.d/K??$1" > /dev/null 2>&1
+        rm "/etc/rc.d/rc0.d/K??$1" > /dev/null 2>&1
+        rm "/etc/rc.d/rc1.d/K??$1" > /dev/null 2>&1
+        rm "/etc/rc.d/rc2.d/S??$1" > /dev/null 2>&1
+        rm "/etc/rc.d/rc3.d/S??$1" > /dev/null 2>&1
+        rm "/etc/rc.d/rc4.d/S??$1" > /dev/null 2>&1
+        rm "/etc/rc.d/rc5.d/S??$1" > /dev/null 2>&1
+        rm "/etc/rc.d/rc6.d/K??$1" > /dev/null 2>&1
     # Unknown sysv-type system
     elif [ "$ro_INIT_TYPE" = "sysv" ]; then
         echo 1>&2 "Please remove remove references to the initialization script"
===================================================================

===================================================================
--- ../VBoxAdd-2.1.4-orig/vboxadd.sh	2009-02-16 18:26:56.000000000 +0200
+++ ../VBoxAdd-2.1.4/vboxadd.sh	2009-02-17 09:24:20.000000000 +0200
@@ -43,6 +43,8 @@
     system=suse
 elif [ -f /etc/gentoo-release ]; then
     system=gentoo
+elif [ -f /etc/lfs-release -a -d /etc/rc.d/init.d ]; then
+    system=lfs
 else
     system=other
 fi
@@ -113,6 +115,19 @@
     fi
 fi
 
+if [ "$system" = "lfs" ]; then
+    . /etc/rc.d/init.d/functions
+    fail_msg() {
+        echo_failure
+    }
+    succ_msg() {
+        echo_ok
+    }
+    begin() {
+        echo $1
+    }
+fi
+
 if [ "$system" = "other" ]; then
     fail_msg() {
         echo " ...fail!"
===================================================================

===================================================================
--- ../VBoxAdd-2.1.4-orig/vboxadd-timesync.sh	2009-02-16 18:26:56.000000000 +0200
+++ ../VBoxAdd-2.1.4/vboxadd-timesync.sh	2009-02-17 09:23:19.000000000 +0200
@@ -51,6 +51,9 @@
 elif [ -f /etc/slackware-version ]; then
     system=slackware
     PIDFILE="/var/run/vboxadd-timesync"
+elif [ -f /etc/lfs-release ]; then
+    system=lfs
+    PIDFILE="/var/run/vboxadd-timesync.pid"
 else
     system=other
     if [ -d /var/run -a -w /var/run ]; then
@@ -196,6 +199,29 @@
 
 fi
 
+if [ "$system" = "lfs" ]; then
+    . /etc/rc.d/init.d/functions
+    daemon() {
+        loadproc $1 $2
+    }
+
+    fail_msg() {
+        echo_failure
+    }
+
+    succ_msg() {
+        echo_ok
+    }
+
+    begin() {
+        echo $1
+    }
+
+    status() {
+        statusproc $1
+    }
+fi
+
 if [ "$system" = "other" ]; then
     fail_msg() {
         echo " ...fail!"
@@ -230,7 +256,7 @@
         }
         daemon $binary --daemonize
         RETVAL=$?
-        test $RETVAL -eq 0 && touch $PIDFILE
+        test $RETVAL -eq 0 && echo `pidof vboxadd-timesync` > $PIDFILE
         succ_msg
     fi
     return $RETVAL
===================================================================

The code is released under the MIT license.

Arseny Krasutsky




-------------- next part --------------
A non-text attachment was scrubbed...
Name: vboxadd-timesync.sh.patch
Type: application/x-patch
Size: 1106 bytes
Desc: not available
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20090217/86813a42/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: vboxadd.sh.patch
Type: application/x-patch
Size: 650 bytes
Desc: not available
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20090217/86813a42/attachment-0001.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: routines.sh.patch
Type: application/x-patch
Size: 5381 bytes
Desc: not available
URL: <http://www.virtualbox.org/pipermail/vbox-dev/attachments/20090217/86813a42/attachment-0002.bin>


More information about the vbox-dev mailing list