[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