Commit e335c56f authored by Seblu's avatar Seblu
Browse files

vbox up to 4.0.4-2


git-svn-id: https://seblu.net/s/archpkg@43 02741741-5192-46b8-8916-7152b19231d9
parent edeeaba1
Loading
Loading
Loading
Loading
+23 −19
Original line number Diff line number Diff line
@@ -9,7 +9,7 @@
pkgname=virtualbox_bin
pkgver=4.0.4
_build=70112
pkgrel=1
pkgrel=2
pkgdesc='Oracle VM VirtualBox Binary Edition'
arch=('i686' 'x86_64')
url='http://virtualbox.org'
@@ -25,17 +25,23 @@ optdepends=('virtualbox-ext-oracle: for Oracle extensions'
            'pulseaudio: for PulseAudio support')
provides=("virtualbox=${pkgver}")
conflicts=('virtualbox' 'virtualbox-ose' 'virtualbox-modules')
backup=('etc/vbox/vbox.cfg')
install='virtualbox.install'
backup=('etc/conf.d/vbox')
install='install'
_arch='x86'
[ "${CARCH}" = 'x86_64' ] && _arch='amd64'
source=("VirtualBox-${pkgver}-${_build}-Linux_${_arch}.run::http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}-${_build}-Linux_${_arch}.run"
source=(
  "VirtualBox-${pkgver}-${_build}-Linux_${_arch}.run::http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}-${_build}-Linux_${_arch}.run"
  'config'
  '10-vboxdrv.rules'
        'vboxdrv')
md5sums=('9598e9386cd31984c86381a41f673d7c'
  'vboxdrv'
  'vboxweb'
)
md5sums=('2a382c44557d06fa7337b045902baaa0'
         'd61eb2cab419c6250e30975f546e9f66'
         '98859bfca9ef2ebf2ea43eb9123316fc'
         '8b3b5fb34d5e8594ee873d7947f3d09b')
[ "${CARCH}" = 'x86_64' ] && md5sums[0]='2a382c44557d06fa7337b045902baaa0'
         'b10ba7fadee69a6a5c9692c0b0262b53'
         '8bd523861a44efdb82a19a9b7daf0a0c')
[ "${CARCH}" = 'i686' ] && md5sums[0]='9598e9386cd31984c86381a41f673d7c'

build() {
  # Check and unpack the run package via sh(1)
@@ -76,13 +82,16 @@ build() {
  rm -Rf build
  cd "${pkgdir}/opt/VirtualBox"

  # Install rc.d script for module compilation
  # Install rc.d scripts
  install -Dm0755 "${srcdir}/vboxdrv" "${pkgdir}/etc/rc.d/vboxdrv"
  install -Dm0755 "${srcdir}/vboxweb" "${pkgdir}/etc/rc.d/vboxweb"

  # Replace init script stuff
  # Update Arch way of life in VBox.sh
  sed -i -e 's#CONFIG="/etc/vbox/vbox.cfg"#CONFIG="/etc/conf.d/vbox"#' \
    "${pkgdir}/opt/VirtualBox/VBox.sh"
  sed -i -e 's,sudo /etc/init.d/vboxdrv setup,/etc/rc.d/vboxdrv setup,g' \
    "${pkgdir}/opt/VirtualBox/VBox.sh"
  sed -i -e 's,sudo /etc/init.d/vboxdrv restart,modprobe vboxdrv,g' \
  sed -i -e 's,sudo /etc/init.d/vboxdrv restart,/etc/rc.d/vboxdrv restart,g' \
    "${pkgdir}/opt/VirtualBox/VBox.sh"

  # Install udev rules
@@ -107,13 +116,8 @@ build() {
  install -d "${pkgdir}/usr/share/doc/${pkgname}"
  ln -s "/opt/VirtualBox/VirtualBox.chm" "${pkgdir}/usr/share/doc/$pkgname/VirtualBox.chm"

  # Symlink the license
  install -d "${pkgdir}/usr/share/licenses/${pkgname}"
  ln -s /opt/VirtualBox/LICENSE "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE"

  # Setup configuration
  install -d "${pkgdir}/etc/vbox"
  echo 'INSTALL_DIR="/opt/VirtualBox"' > "${pkgdir}/etc/vbox/vbox.cfg"
  # Setup default configuration
  install -Dm0644 "${srcdir}/config" "${pkgdir}/etc/conf.d/vbox"
  
  # Create the directory below if it doesn't exist
  install -d "${pkgdir}/var/run/VirtualBox"

virtualbox_bin/config

0 → 100644
+17 −0
Original line number Diff line number Diff line
# Default Installation Directory
INSTALL_DIR="/opt/VirtualBox"

# Try to build module if don't exist when calling start
START_BUILD=yes

# WebService Mandatory Variables
#VBOXWEB_USER=

# WebService Variables
#VBOXWEB_LOGFILE=
#$VBOXWEB_HOST=
#$VBOXWEB_PORT=
#$VBOXWEB_TIMEOUT=
#$VBOXWEB_CHECK_INTERVAL=
#$VBOXWEB_THREADS=
#$VBOXWEB_KEEPALIVE=
+9 −25
Original line number Diff line number Diff line
@@ -14,31 +14,16 @@ post_install() {
  # Show warnings
  /bin/cat <<EOF

==> Add your user to the vboxusers group:
==> Think to add user the vboxusers group:
==> # gpasswd -a USERNAME vboxusers
==>
==> You must load vboxdrv module before starting VirtualBox:
==> # modprobe vboxdrv
==>
==> You must load vboxnetflt for Host Interface Networking:
==> # modprobe vboxnetflt
==>
==> You must load vboxnetadp for Host-Only networking:
==> # modprobe vboxnetadp
==>
==> To load it automatically, add vboxdrv module to the "MODULES" array
==> "/etc/rc.conf".
==>
==> Run \`/etc/rc.d/vboxdrv setup\` as root every time your kernel is
==> upgraded, to compile the module for the new kernel version.

==> To load virtualbox modules automatically you can add vboxdrv in your DAEMONS
==> To start virtualbox web service automatically you can add vboxweb in your DAEMONS
EOF
}

pre_upgrade() {
  pre_remove 
  # Remove the module files
  rm -f "/lib/modules/`uname -r`/misc/"{vboxdrv,vboxnetadp,vboxnetflt}.ko

  # Remove any stuff remaining from the module compilation
  rm -Rf "/opt/VirtualBox"
@@ -49,16 +34,15 @@ post_upgrade() {
}

pre_remove() {
  # Unload modules (if any)
  for _mod in vbox{drv,netadp,netflt}; do
    modprobe -r $_mod &> /dev/null
  done
  # Stop running services
  [[ -x /etc/rc.d/vboxdrv ]] && /etc/rc.d/vboxdrv stop
  [[ -x /etc/rc.d/vboxweb ]] && /etc/rc.d/vboxweb stop

  # Remove modules
  [[ -x /etc/rc.d/vboxdrv ]] && /etc/rc.d/vboxdrv remove
}

post_remove() {
  # Remove the module files
  rm -f "/lib/modules/`uname -r`/misc/"{vboxdrv,vboxnetadp,vboxnetflt}.ko

  # Remove any stuff remaining from the module compilation
  rm -Rf "/opt/VirtualBox"
  
+86 −61
Original line number Diff line number Diff line
@@ -2,57 +2,67 @@

. /etc/rc.conf
. /etc/rc.d/functions
. /etc/vbox/vbox.cfg
. /etc/conf.d/vbox

MODLIST=()
LOG="/var/log/vbox-install.log"

if [ -n "$INSTALL_DIR" ]; then
if [[ -n "$INSTALL_DIR" ]]; then
  VBOXMANAGE="$INSTALL_DIR/VBoxManage"
  BUILDVBOXDRV="$INSTALL_DIR/src/vboxhost/vboxdrv/build_in_tmp"
  BUILDVBOXNETFLT="$INSTALL_DIR/src/vboxhost/vboxnetflt/build_in_tmp"
  BUILDVBOXNETADP="$INSTALL_DIR/src/vboxhost/vboxnetadp/build_in_tmp"
else
  echo "missing vbox.cfg"
  echo "Missing vbox config file"
  exit 0
fi

case "$1" in
  setup)
    stat_busy "Unloading VirtualBox kernel modules"
load() {
  if [[ "$START_BUILD" =~ yes|YES ]]; then
    # check if module exists
    c=$(find /lib/modules/`uname -r` -name "vbox*" 2>/dev/null | wc -l)
    [[ $c -eq 0 ]] && setup
  fi
  stat_busy "Loading VirtualBox kernel modules"
  # trivial loading
  for module in vbox{netflt,netadp,drv}; do
      if grep -q "^${module}" /proc/modules; then
        MODLIST+=($module)
        modprobe -r $module
      modprobe $module &>/dev/null
  done
  # check
  for module in vbox{netflt,netadp,drv}; do
    if ! grep -q "^${module}" /proc/modules; then
      stat_fail
      return 1
    fi
  done
  stat_done
    for p in /lib/modules/*; do
      if [ ! -d "$p/kernel" ]; then
        if [ -e "$p/misc/vboxdrv.ko" ]; then
          stat_busy "Removing old VirtualBox kernel modules from $p"
          rm -f "$p/misc/vbox"{drv,netadp,netflt}.ko 2>/dev/null
          rmdir -p --ignore-fail-on-non-empty "$p/misc/" 2>/dev/null
          stat_done
        fi
}

unload() {
  stat_busy "Unloading VirtualBox kernel modules"
  # trivial unload
  for module in vbox{netflt,netadp,drv}; do
    if grep -q "^${module}" /proc/modules; then
      modprobe -r $module &>/dev/null
    fi
  done
    if find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|grep -q vboxnetadp; then
      stat_busy "Removing old VirtualBox netadp kernel module"
      find /lib/modules/`uname -r` -name "vboxnetadp\.*" 2>/dev/null|xargs rm -f 2>/dev/null
      stat_done
  # check
  for module in vbox{netflt,netadp,drv}; do
    if grep -q "^${module}" /proc/modules; then
      stat_fail
      return 1
    fi
    if find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|grep -q vboxnetflt; then
      stat_busy "Removing old VirtualBox netflt kernel module"
      find /lib/modules/`uname -r` -name "vboxnetflt\.*" 2>/dev/null|xargs rm -f 2>/dev/null
  done
  stat_done
    fi
    if find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|grep -q vboxdrv; then
      stat_busy "Removing old VirtualBox kernel module"
      find /lib/modules/`uname -r` -name "vboxdrv\.*" 2>/dev/null|xargs rm -f 2>/dev/null
}

remove() {
  stat_busy "Removing VirtualBox kernel modules"
  'rm' -f "/lib/modules/$(uname -r)/misc/"{vboxdrv,vboxnetadp,vboxnetflt}.ko
  stat_done
    fi
    stat_busy "Recompiling VirtualBox kernel modules"
}

setup() {
  remove
  stat_busy "Compiling VirtualBox kernel modules"
  LOG="/tmp/vbox-install.log"
  if ! $BUILDVBOXDRV \
    --save-module-symvers /tmp/vboxdrv-Module.symvers \
    --no-print-directory install > $LOG 2>&1; then
@@ -69,12 +79,27 @@ case "$1" in
    echo "Look at $LOG to find out what went wrong"
  fi
  stat_done
    stat_busy "Reloading VirtualBox kernel modules"
    for module in "${MODLIST[@]}"; do
      modprobe $module
    done
    stat_done
}

case "$1" in
  start)
    load
    ;;
  stop)
      unload
      ;;
  restart)
      unload
      load
      ;;
  setup)
    setup
    ;;
  remove)
    remove
    ;;
  *)
    echo "usage: $0 {setup}"
    echo "usage: $0 {start|stop|restart|setup|remove}"
esac

# vim:set ts=2 sw=2 ft=sh et:

virtualbox_bin/vboxweb

0 → 100644
+90 −0
Original line number Diff line number Diff line
#!/bin/bash

. /etc/rc.conf
. /etc/rc.d/functions
. /etc/conf.d/vbox

BINARY="$INSTALL_DIR/vboxwebsrv"
PID=$(pidof -o %PPID $BINARY)

start() {
  stat_busy "Starting VirtualBox Web Service";
  if [[ ! -n "$PID" ]]; then
      [[ -n "$VBOXWEB_USER" ]] || stat_die
      lsmod | grep -q "vboxdrv[^_-]" || stat_die
      PARAMS="--background"
      [[ -n "$VBOXWEB_HOST" ]]           && PARAMS="$PARAMS -H $VBOXWEB_HOST"
      [[ -n "$VBOXWEB_PORT" ]]           && PARAMS="$PARAMS -p $VBOXWEB_PORT"
      [[ -n "$VBOXWEB_TIMEOUT" ]]        && PARAMS="$PARAMS -t $VBOXWEB_TIMEOUT"
      [[ -n "$VBOXWEB_CHECK_INTERVAL" ]] && PARAMS="$PARAMS -i $VBOXWEB_CHECK_INTERVAL"
      [[ -n "$VBOXWEB_THREADS" ]]        && PARAMS="$PARAMS -T $VBOXWEB_THREADS"
      [[ -n "$VBOXWEB_KEEPALIVE" ]]      && PARAMS="$PARAMS -k $VBOXWEB_KEEPALIVE"
      [[ -n "$VBOXWEB_LOGFILE" ]]        && PARAMS="$PARAMS -F $VBOXWEB_LOGFILE"
      # prevent inheriting this setting to VBoxSVC
      unset VBOX_RELEASE_LOG_DEST
      su - $VBOXWEB_USER -c "$BINARY $PARAMS" &>/dev/null
      # ugly: wait until the final process has forked
      sleep .2
      PID=$(pidof -o %PPID $BINARY)
      if [ -n "$PID" ]; then
          add_daemon vboxweb
          stat_done
      else
          stat_die
      fi
  else
    stat_die
  fi
}

stop() {
  stat_busy "Stopping VirtualBox Web Service"
  if [[ -n $PID ]]; then
    kill $PID
    if [[ $? -eq 0 ]]; then 
      rm_daemon vboxweb
      stat_done
    else
      stat_die
    fi
  else
      stat_die
  fi
}

restart() {
  stop && start
}

status() {
  stat_busy "Checking for VirtualBox Web Service"
  if [[ -n $PID ]]; then
      stat_done
  else
      stat_fail
      false
  fi
}

case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart)
    restart
    ;;
force-reload)
    restart
    ;;
status)
    status
    ;;
*)
    echo "Usage: $0 {start|stop|restart|status}"
    exit 1
esac

# vim:set ts=2 sw=2 ft=sh et: