[Lunar-commits] <moonbase> virtualbox: split into two modules

Zachary McGrew zmcgrew at lunar-linux.org
Fri Feb 20 00:10:15 CET 2009


commit df1660089de904ea7e56fa48385389ad23bbd373
Author: Zachary McGrew <zmcgrew at lunar-linux.org>
Date:   Thu Feb 19 15:10:15 2009 -0800

    virtualbox: split into two modules
    
    virtualbox now creates a .tar.bz2 of the kernel module source for use by virtualbox-module.
    this saves time when updating the kernel as all of virtualbox no longer has to be rebuilt.
    
    it also auto installs virtualbox-module in the POST_INSTALL
---
 x11-utils/virtualbox/BUILD             |   13 +-
 x11-utils/virtualbox/POST_INSTALL      |    2 +
 x11-utils/virtualbox/init.d/vboxdrv    |  229 ------------------
 x11-utils/virtualbox/init.d/vboxnet    |  400 --------------------------------
 x11-utils/virtualbox/init.d/virtualbox |   43 ----
 5 files changed, 7 insertions(+), 680 deletions(-)

diff --git a/x11-utils/virtualbox/BUILD b/x11-utils/virtualbox/BUILD
index dd71f38..1300fdf 100644
--- a/x11-utils/virtualbox/BUILD
+++ b/x11-utils/virtualbox/BUILD
@@ -14,9 +14,11 @@
   source ./env.sh               &&
   kmk                           &&
 
-  # Build kernel module
-  pushd out/linux.x86/release/bin/src &&
-  make &&
+  #Build source package for kernel module
+  pushd out/linux.x86/release/bin/ &&
+  message "Building ${MODULE_COLOR}virtualbox-module-${VERSION_COLOR}${VERSION}${DEFAULT_COLOR}." &&
+  message "This may take a while..." &&
+  tar -cjf $SOURCE_CACHE/virtualbox-module-$VERSION.tar.bz2 src &&
   popd &&
 
   # Prepare for installation
@@ -28,11 +30,6 @@
   # Install contents of the build directory
   cp -R out/linux.x86/release/bin/* $MODULE_PREFIX &&
 
-  # Install kernel module
-  pushd out/linux.x86/release/bin/src &&
-  make install &&
-  popd &&
-
   # Install the startup script to /usr/bin
   install -m 755 $SCRIPT_DIRECTORY/VirtualBox /usr/bin &&
 
diff --git a/x11-utils/virtualbox/POST_INSTALL b/x11-utils/virtualbox/POST_INSTALL
new file mode 100644
index 0000000..13d4d06
--- /dev/null
+++ b/x11-utils/virtualbox/POST_INSTALL
@@ -0,0 +1,2 @@
+#Install the kernel module
+lin -c virtualbox-module
diff --git a/x11-utils/virtualbox/init.d/vboxdrv b/x11-utils/virtualbox/init.d/vboxdrv
deleted file mode 100755
index 750f24f..0000000
--- a/x11-utils/virtualbox/init.d/vboxdrv
+++ /dev/null
@@ -1,229 +0,0 @@
-#! /bin/sh
-# innotek VirtualBox
-# Linux kernel module init script
-
-#
-#  Copyright (C) 2006-2007 innotek GmbH
-# 
-#  This file is part of VirtualBox Open Source Edition (OSE), as
-#  available from http://www.virtualbox.org. This file 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,
-#  in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
-#  distribution. VirtualBox OSE is distributed in the hope that it will
-#  be useful, but WITHOUT ANY WARRANTY of any kind.
-
-# chkconfig: 35 30 60
-# description: VirtualBox Linux kernel module
-#
-### BEGIN INIT INFO
-# Provides:       vboxdrv
-# Required-Start: $syslog
-# Required-Stop:
-# Default-Start:  3 5
-# Default-Stop:
-# Description:    VirtualBox Linux kernel module
-### END INIT INFO
-
-PATH=$PATH:/bin:/sbin:/usr/sbin
-CONFIG="/etc/vbox/vbox.cfg"
-
-if [ -f /etc/redhat-release ]; then
-    system=redhat
-elif [ -f /etc/SuSE-release ]; then
-    system=suse
-elif [ -f /etc/gentoo-release ]; then
-    system=gentoo
-else
-    system=other
-fi
-
-if [ "$system" = "redhat" ]; then
-    . /etc/init.d/functions
-    fail_msg() {
-        echo_failure
-        echo
-    }
-
-    succ_msg() {
-        echo_success
-        echo
-    }
-
-    begin() {
-        echo -n "$1"
-    }
-fi
-
-if [ "$system" = "suse" ]; then
-    . /etc/rc.status
-    fail_msg() {
-        rc_failed 1
-        rc_status -v
-    }
-
-    succ_msg() {
-        rc_reset
-        rc_status -v
-    }
-
-    begin() {
-        echo -n "$1"
-    }
-fi
-
-if [ "$system" = "gentoo" ]; then
-    . /sbin/functions.sh
-    fail_msg() {
-        eend 1
-    }
-
-    succ_msg() {
-        eend $?
-    }
-
-    begin() {
-        ebegin $1
-    }
-
-    if [ "`which $0`" = "/sbin/rc" ]; then
-        shift
-    fi
-fi
-
-if [ "$system" = "other" ]; then
-    fail_msg() {
-        echo " ...fail!"
-    }
-
-    succ_msg() {
-        echo " ...done."
-    }
-
-    begin() {
-        echo -n $1
-    }
-fi
-
-
-kdir=/lib/modules/`uname -r`/misc
-dev=/dev/vboxdrv
-modname=vboxdrv
-groupname=vboxusers
-
-fail() {
-    if [ "$system" = "gentoo" ]; then
-        eerror $1
-        exit 1
-    fi
-    fail_msg
-    echo "($1)"
-    exit 1
-}
-
-running() {
-    lsmod | grep -q $modname[^_-]
-}
-
-start() {
-    begin "Starting VirtualBox kernel module "
-    test -f "$kdir/$modname.o" -o -f "$kdir/$modname.ko" || {
-        fail "Kernel module not found"
-    }
-    running || {
-        rm -f $dev || {
-            fail "Cannot remove $dev"
-        }
-
-        modprobe $modname || {
-            fail "modprobe $modname failed"
-        }
-
-        sleep 1
-    }
-    if [ ! -c $dev ]; then
-        maj=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/devices`
-        if [ ! -z "$maj" ]; then
-            min=0
-        else
-            min=`sed -n 's;\([0-9]\+\) vboxdrv;\1;p' /proc/misc`
-            if [ ! -z "$min" ]; then
-                maj=10
-            fi
-        fi
-        test -z "$maj" && {
-            rmmod $modname
-            fail "Cannot locate the VirtualBox device"
-        }
-
-        mknod -m 0664 $dev c $maj $min || {
-            rmmod $modname
-            fail "Cannot create device $dev with major $maj and minor $min"
-        }
-    fi
-
-    chown :$groupname $dev || {
-        rmmod $modname
-        fail "Cannot change owner $groupname for device $dev"
-    }
-
-    succ_msg
-    return 0
-}
-
-stop() {
-    begin "Stopping VirtualBox kernel module "
-    if running; then
-        rmmod $modname || fail "Cannot unload module $modname"
-        rm -f $dev || fail "Cannot unlink $dev"
-    fi
-    succ_msg
-    return 0
-}
-
-restart() {
-    stop && start
-    return 0
-}
-
-setup() {
-    . "$CONFIG"
-    stop
-    begin "Recompiling VirtualBox kernel module "
-    if ! $INSTALL_DIR/src/build_in_tmp install > /var/log/vbox-install.log 2>&1; then
-        fail "Look at /var/log/vbox-install.log to find out what went wrong"
-    fi
-    succ_msg
-    start
-}
-
-dmnstatus() {
-    if running; then
-        echo "VirtualBox kernel module is loaded."
-    else
-        echo "VirtualBox kernel module is not loaded."
-    fi
-}
-
-case "$1" in
-start)
-    start
-    ;;
-stop)
-    stop
-    ;;
-restart)
-    restart
-    ;;
-setup)
-    setup
-    ;;
-status)
-    dmnstatus
-    ;;
-*)
-    echo "Usage: $0 {start|stop|restart|status|setup}"
-    exit 1
-esac
-
-exit
diff --git a/x11-utils/virtualbox/init.d/vboxnet b/x11-utils/virtualbox/init.d/vboxnet
deleted file mode 100755
index 85af235..0000000
--- a/x11-utils/virtualbox/init.d/vboxnet
+++ /dev/null
@@ -1,400 +0,0 @@
-#! /bin/sh
-# innotek VirtualBox
-# Linux static host networking interface initialization
-#
-
-#
-#  Copyright (C) 2007 innotek GmbH
-# 
-#  This file is part of VirtualBox Open Source Edition (OSE), as
-#  available from http://www.virtualbox.org. This file 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,
-#  in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
-#  distribution. VirtualBox OSE is distributed in the hope that it will
-#  be useful, but WITHOUT ANY WARRANTY of any kind.
-
-# chkconfig: 35 30 60
-# description: VirtualBox permanent host networking setup
-#
-### BEGIN INIT INFO
-# Provides:       vboxnet
-# Required-Start: $network
-# Required-Stop:
-# Default-Start:  3 5
-# Default-Stop:
-# Description:    VirtualBox permanent host networking setup
-### END INIT INFO
-
-PATH=$PATH:/bin:/sbin:/usr/sbin
-CONFIG="/etc/vbox/interfaces"
-VARDIR="/var/run/VirtualBox"
-VARFILE="/var/run/VirtualBox/vboxnet"
-TAPDEV="/dev/net/tun"
-
-if [ -f /etc/redhat-release ]; then
-    system=redhat
-elif [ -f /etc/SuSE-release ]; then
-    system=suse
-elif [ -f /etc/gentoo-release ]; then
-    system=gentoo
-else
-    system=other
-fi
-
-if [ "$system" = "redhat" ]; then
-    . /etc/init.d/functions
-    fail_msg() {
-        echo_failure
-        echo
-    }
-
-    succ_msg() {
-        echo_success
-        echo
-    }
-
-    begin() {
-        echo -n "$1"
-    }
-fi
-
-if [ "$system" = "suse" ]; then
-    . /etc/rc.status
-    fail_msg() {
-        rc_failed 1
-        rc_status -v
-    }
-
-    succ_msg() {
-        rc_reset
-        rc_status -v
-    }
-
-    begin() {
-        echo -n "$1"
-    }
-fi
-
-if [ "$system" = "gentoo" ]; then
-    . /sbin/functions.sh
-    fail_msg() {
-        eend 1
-    }
-
-    succ_msg() {
-        eend $?
-    }
-
-    begin() {
-        ebegin $1
-    }
-
-    if [ "`which $0`" = "/sbin/rc" ]; then
-        shift
-    fi
-fi
-
-if [ "$system" = "other" ]; then
-    fail_msg() {
-        echo " ...fail!"
-    }
-
-    succ_msg() {
-        echo " ...done."
-    }
-
-    begin() {
-        echo -n $1
-    }
-fi
-
-fail() {
-    if [ "$system" = "gentoo" ]; then
-        eerror $1
-        exit 1
-    fi
-    fail_msg
-    echo "($1)"
-    exit 1
-}
-
-running() {
-    test -f "$VARFILE"
-}
-
-valid_ifname() {
-    if expr match "$1" "vbox[0-9][0-9]*$" > /dev/null 2>&1
-    then
-      return 0
-    else
-      return 1
-    fi
-}
-
-# Create all permanent TAP devices registered on the system, add them to a
-# bridge if required and keep a record of proceedings in the file
-# /var/run/VirtualBox/vboxnet.  If this file already exists, assume that the
-# script has already been started and do nothing.
-start_network() {
-    begin "Starting VirtualBox host networking"
-    # If the service is already running, return successfully.
-    if [ -f "$VARFILE" ]
-    then
-      succ_msg
-      return 0
-    fi
-    # Fail if we can't create our runtime record file
-    if [ ! -d "$VARDIR" ]
-    then
-      if ! mkdir "$VARDIR" 2> /dev/null
-      then
-        fail_msg
-        return 1
-      fi
-    fi
-    if ! touch "$VARFILE" 2> /dev/null
-    then
-      fail_msg
-      return 1
-    fi
-    # If there is no configuration file, report success
-    if [ ! -f "$CONFIG" ]
-    then
-      succ_msg
-      return 0
-    fi
-    # Fail if we can't read our configuration
-    if [ ! -r "$CONFIG" ]
-    then
-      fail_msg
-      return 1
-    fi
-    # Fail if we don't have tunctl
-    if ! VBoxTunctl -h 2>&1 | grep VBoxTunctl > /dev/null
-    then
-      fail_msg
-      return 1
-    fi
-    succ_msg
-    # Read the configuration file entries line by line and create the
-    # interfaces
-    while read line
-    do
-      set ""$line
-      # If the line is a comment then ignore it
-      if ((! expr match "$1" "#" > /dev/null) && (! test -z "$1"))
-      then
-        # Check that the line is correctly formed (an interface name plus one
-        # or two non-comment entries, possibly followed by a comment).
-        if ((! expr match "$2" "#" > /dev/null) &&
-            (test -z "$4" || expr match "$4" "#" > /dev/null) &&
-            (valid_ifname "$1"))
-        then
-          # Try to create the interface
-          if VBoxTunctl -t "$1" -u "$2" > /dev/null 2>&1
-          then
-            # On SUSE Linux Enterprise Server, the interface does not
-            # appear immediately, so we loop trying to bring it up.
-            i=1
-            while [ $i -le 10 ]
-            do
-              ifconfig "$1" up 2> /dev/null
-              if ifconfig | grep "$1" > /dev/null 2>&1
-              then
-                # Add the interface to a bridge if one was specified
-                if [ ! -z "$3" ]
-                then
-                  if brctl addif "$3" "$1" 2> /dev/null
-                  then
-                    echo "$1 $2 $3" > "$VARFILE"
-                  else
-                    echo "$1 $2" > "$VARFILE"
-                    echo "Warning - failed to add interface $1 to the bridge $3"
-                  fi
-                else
-                  echo "$1 $2" > $VARFILE
-                fi
-                i=20
-              else
-                i=`expr $i + 1`
-                sleep .1
-              fi
-            done
-            if [ $i -ne 20 ]
-            then
-              echo "Warning - failed to bring up the interface $1"
-            fi
-          else
-            echo "Warning - failed to create the interface $1 for the user $2"
-          fi
-        else
-          echo "Warning - invalid line in $CONFIG:"
-          echo "  $line"
-        fi
-      fi
-    done < "$CONFIG"
-    # Set /dev/net/tun to belong to the group vboxusers if it exists and does
-    # yet belong to a group.
-    if ls -g "$TAPDEV" 2>/dev/null | grep root
-    then
-      chgrp vboxusers "$TAPDEV"
-      chmod 0660 "$TAPDEV"
-    fi
-    return 0
-}
-
-# Shut down VirtualBox host networking and remove all permanent TAP
-# interfaces.  This action will fail if some interfaces could not be removed.
-stop_network() {
-    begin "Shutting down VirtualBox host networking"
-    # If there is no runtime record file, assume that the service is not
-    # running.
-    if [ ! -f "$VARFILE" ]
-    then
-      succ_msg
-      return 0
-    fi
-    # Fail if we can't read our runtime record file or write to the
-    # folder it is located in
-    if [ ! -r "$VARFILE" -o ! -w "$VARDIR" ]
-    then
-      fail_msg
-      return 1
-    fi
-    # Fail if we don't have tunctl
-    if ! VBoxTunctl -h 2>&1 | grep VBoxTunctl > /dev/null
-    then
-      fail_msg
-      return 1
-    fi
-    # Read the runtime record file entries line by line and delete the
-    # interfaces.  The format of the runtime record file is not checked for
-    # errors.
-    while read line
-    do
-      set ""$line
-      # Remove the interface from a bridge if it is part of one
-      if [ ! -z "$3" ]
-      then
-        brctl delif "$3" "$1" 2> /dev/null
-      fi
-      # Remove the interface.  Roll back everything and fail if this is not
-      # possible
-      if (! ifconfig "$1" down 2> /dev/null ||
-          ! VBoxTunctl -d "$1" > /dev/null 2>&1)
-      then
-        while read line
-        do
-          set ""$line
-          VBoxTunctl -t "$1" -u "$2" > /dev/null 2>&1
-          ifconfig "$1" up 2> /dev/null
-          if [ ! -z "$3" ]
-          then
-            brctl addif "$3" "$1"
-          fi
-        done < "$VARFILE"
-        fail_msg
-        return 1
-      fi
-    done < "$VARFILE"
-    rm -f "$VARFILE" 2> /dev/null
-    succ_msg
-    return 0
-}
-
-# Shut down VirtualBox host networking and remove all permanent TAP
-# interfaces.  This action will succeed even if not all interfaces could be
-# removed.  It is only intended for exceptional circumstances such as
-# uninstalling VirtualBox.
-force_stop_network() {
-    begin "Shutting down VirtualBox host networking"
-    # If there is no runtime record file, assume that the service is not
-    # running.
-    if [ ! -f "$VARFILE" ]
-    then
-      succ_msg
-      return 0
-    fi
-    # Fail if we can't read our runtime record file or write to the
-    # folder it is located in
-    if [ ! -r "$VARFILE" -o ! -w "$VARDIR" ]
-    then
-      fail_msg
-      return 1
-    fi
-    # Fail if we don't have tunctl
-    if ! VBoxTunctl -h 2>&1 | grep VBoxTunctl > /dev/null
-    then
-      fail_msg
-      return 1
-    fi
-    # Read the runtime record file entries line by line and delete the
-    # interfaces.  The format of the runtime record file is not checked for
-    # errors.
-    while read line
-    do
-      set ""$line
-      # Remove the interface from a bridge if it is part of one
-      if [ ! -z "$3" ]
-      then
-        brctl delif "$3" "$1" 2> /dev/null
-      fi
-      # Remove the interface.
-      ifconfig "$1" down 2> /dev/null
-      VBoxTunctl -d "$1" > /dev/null 2>&1
-    done < "$VARFILE"
-    rm -f "$VARFILE" 2> /dev/null
-    succ_msg
-    return 0
-}
-
-start() {
-    start_network
-}
-
-stop() {
-    stop_network
-}
-
-force_stop() {
-    force_stop_network
-}
-
-restart() {
-    stop_network && start_network
-}
-
-status() {
-    if running; then
-        echo "VirtualBox host networking is loaded."
-    else
-        echo "VirtualBox host networking is not loaded."
-    fi
-}
-
-case "$1" in
-start)
-    start
-    ;;
-stop)
-    stop
-    ;;
-restart)
-    restart
-    ;;
-force-reload)
-    restart
-    ;;
-force-stop)
-    force_stop
-    ;;
-status)
-    status
-    ;;
-*)
-    echo "Usage: `basename $0` {start|stop|restart|force-reload|status}"
-    exit 1
-esac
-
-exit
diff --git a/x11-utils/virtualbox/init.d/virtualbox b/x11-utils/virtualbox/init.d/virtualbox
deleted file mode 100755
index 7371fba..0000000
--- a/x11-utils/virtualbox/init.d/virtualbox
+++ /dev/null
@@ -1,43 +0,0 @@
-#!/bin/bash
-#
-# Startup script for VirtualBox
-#
-# chkconfig:   345 50 50
-# description: Initializes VirtualBox
-# short:       VirtualBox
-
-load_kernel_module () {
-  modprobe vboxdrv
-}
-
-unload_kernel_module () {
-  rmmod vboxdrv
-}
-
-set_permissions () {
-  chgrp vboxusers /dev/vboxdrv &&
-  chmod g+rwx /dev/vboxdrv
-}
-
-start () {
-  echo -n "Starting VirtualBox: "
-  load_kernel_module && set_permissions
-  if [ $? == 0 ]; then
-    echo -e $RESULT_OK
-  else
-    echo -e $RESULT_FAIL
-  fi
-}
-
-stop () {
-  echo -n "Stopping VirtualBox: "
-  unload_kernel_module
-  echo -e $RESULT_OK
-}
-
-restart () {
-  stop
-  start
-}
-
-. /lib/lsb/init-functions


More information about the Lunar-commits mailing list