diff options
Diffstat (limited to 'remote/modules/vbox')
-rw-r--r-- | remote/modules/vbox/module.build | 127 | ||||
-rw-r--r-- | remote/modules/vbox/module.conf | 12 | ||||
-rw-r--r-- | remote/modules/vbox/module.conf.opensuse | 0 | ||||
-rw-r--r-- | remote/modules/vbox/module.conf.opensuse.12.3 | 19 | ||||
-rw-r--r-- | remote/modules/vbox/module.conf.ubuntu | 18 | ||||
-rw-r--r-- | remote/modules/vbox/module.conf.ubuntu.13.04 | 18 |
6 files changed, 194 insertions, 0 deletions
diff --git a/remote/modules/vbox/module.build b/remote/modules/vbox/module.build new file mode 100644 index 00000000..f095b4e2 --- /dev/null +++ b/remote/modules/vbox/module.build @@ -0,0 +1,127 @@ +#!/bin/bash + +patch_vbox_scripts() { + # patching some virtualbox utility scripts to include openslx-busybox paths. Strange sed-ing, as the added + # openslx paths need to be at the end of PATH to not impede with system binaries to not impede with system binaries + pinfo "Patching virtual box scripts to include openslx (busybox)-paths ..." + # vboxmanage is a link to VBox; will get unlinked. Original link will be vboxmanage.original + for i in virtualbox vboxmanage vboxheadless; do + pinfo "Patching virtual box script $i ..." + SCRIPTPATH=$(grep -m 1 PATH "${MODULE_BUILD_DIR}/usr/bin/$i"|sed 's/"//g') # assume first hit is real path + sed -i "-i.original" "/^PATH=/c ${SCRIPTPATH}:/opt/openslx/bin:/opt/openslx/usr/bin:/opt/openslx/sbin"\ + "${MODULE_BUILD_DIR}/usr/bin/$i" # append openslx paths + done +} + +extract_extpack() { + pinfo "Unpacking Extension Pack ..." + mkdir -p ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack + cp ${MODULE_DIR}/src/vbox/extpack/[EP][xX][tE]* ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack + if [ x${AMD64_X86} == "xamd64" ]; then + pinfo "Unpacking 64bit branch of Extension Pack ..." + cp -r ${MODULE_DIR}/src/vbox/extpack/linux.amd64 ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack + else # then we assume 32bit x86... + pinfo "Unpacking32bit branch of Extension Pack ..." + cp -r ${MODULE_DIR}/src/vbox/extpack/linux.x86 ${MODULE_BUILD_DIR}/usr/lib/virtualbox/ExtensionPacks/Oracle_VM_VirtualBox_Extension_Pack + fi +} + +build_modules() { + pinfo "Recompiling VirtualBox kernel modules ..." + # Set some variables to use/patch VBox scripts + local MODULE_SRC="${MODULE_BUILD_DIR}/usr/share/virtualbox/src/vboxhost" + local BUILDINTMP="$MODULE_SRC/build_in_tmp" + local BUILDSUBDIR="modules" + + # Some Vars for VBs kernel module makefiles + MODULE_DIR_ALT="$MODULE_DIR" # save usual MODULE_DIR + export KERN_DIR="${MODULE_DIR}/../kernel/build/lib/modules/$(ls ${MODULE_DIR}/../kernel/build/lib/modules/)/build/" + # export MODULE_DIR="${MODULE_DIR}/../kernel/build/lib/modules/$(ls ${MODULE_DIR}/../kernel/build/lib/modules/)/kernel/misc" + export MODULE_DIR="${MODULE_DIR}/build/lib/modules/vbox" + + pinfo "Recompiling VirtualBox kernel module vboxdrv ..." + if ! $BUILDINTMP \ + --save-module-symvers /tmp/vboxdrv-Module.symvers \ + --module-source "$MODULE_SRC/vboxdrv" \ + --no-print-directory install; + then + perror "[vbox]: Error compiling VirtualBox kernel module vboxdrv" + fi + pinfo "Recompiling VirtualBox kernel module vboxnetflt ..." + if ! $BUILDINTMP \ + --use-module-symvers /tmp/vboxdrv-Module.symvers \ + --module-source "$MODULE_SRC/vboxnetflt" \ + --no-print-directory install; + then + perror "[vbox]: Error compiling VirtualBox kernel module vboxnetflt" + fi + pinfo "Recompiling VirtualBox kernel module vboxnetadp ..." + if ! $BUILDINTMP \ + --use-module-symvers /tmp/vboxdrv-Module.symvers \ + --module-source "$MODULE_SRC/vboxnetadp" \ + --no-print-directory install; + then + perror "[vbox]: Error compiling VirtualBox kernel module vboxnetadp" + fi + pinfo "Recompiling VirtualBox kernel module vboxpci ..." + if ! $BUILDINTMP \ + --use-module-symvers /tmp/vboxdrv-Module.symvers \ + --module-source "$MODULE_SRC/vboxpci" \ + --no-print-directory install; + then + perror "[vbox]: Error compiling VirtualBox kernel module vboxpci" + fi + pinfo "Compiled successfully the VirtualBox kernel modules." + export MODULE_DIR="$MODULE_DIR_ALT" # re-set MODULE_DIR +} + + +fetch_source() { + mkdir -p "src/vbox" + cd src/vbox + # pinfo "Downloading $REQUIRED_VBOXBASEURL" + download "$REQUIRED_VBOXBASEURL" + # pinfo "Downloading $REQUIRED_VBOXEXTURL" + download_untar "$REQUIRED_VBOXEXTURL" "extpack" "vbox_extpack.tar.gz" + cd - +} + + +build() { + case "$PACKET_HANDLER" in + rpm) + pinfo "Unpacking rpm ..." + cd build || perror "Cannot cd to build directory!" + rpm2cpio ../src/vbox/$(basename "$REQUIRED_VBOXBASEURL")|cpio -idmv || perror "Could not unpack rpm-archive!" + # it seems that sometimes directories from rpm will be created with 700-permissions, + # if that directory is not explicitly mentioned to create. So eg. usr, etc will carry the + # permissions 700, which is no fun. So we search for these directories and correct them. + find . -type d -perm 700 -exec chmod 755 {} \; + ;; + dpkg ) + pinfo "Unpacking deb ..." + cd build || perror "Cannot cd to build directory!" + dpkg -x ../src/vbox/$(basename "$REQUIRED_VBOXBASEURL") . || perror "Could not unpack deb-archive!" + # VirtualBox needs to be suid-root: + for i in VBoxHeadless VBoxNetAdpCtl VBoxNetDHCP VBoxSDL VBoxVolInfo VirtualBox; do + chmod u+s ${MODULE_BUILD_DIR}/usr/lib/virtualbox/$i || pwarning "(Debian/Ubuntu) Could not suid $i executable!" + done + ;; + *) perror "Unknown Distribution: $SYS_DISTRIBUTION - Please specify its packet manager in remote/setup_target" ;; + esac + + build_modules + patch_vbox_scripts + extract_extpack + + COPYLIST="list_dpkg_output" + [ -e "$COPYLIST" ] && rm "$COPYLIST" + list_packet_files >> "$COPYLIST" + tarcopy "$(cat "$COPYLIST" | sort -u)" "${MODULE_BUILD_DIR}" +} + +post_copy() { + # clean a bit, as sometimes there are residual files in /tmp/vbox.*/ + rm -rf /tmp/vbox.*/ +} + diff --git a/remote/modules/vbox/module.conf b/remote/modules/vbox/module.conf new file mode 100644 index 00000000..29067791 --- /dev/null +++ b/remote/modules/vbox/module.conf @@ -0,0 +1,12 @@ +REQUIRED_VBOXEXTURL="http://download.virtualbox.org/virtualbox/4.2.16/Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack" + +# Just for local usage, development: +# REQUIRED_VBOXEXTURL="http://132.230.8.69/Oracle_VM_VirtualBox_Extension_Pack-4.2.16-86992.vbox-extpack" + +REQUIRED_DIRECTORIES=" + /etc + /lib + /usr +" +# REQUIRED_LDD_BLACKLIST: Keep in minde the leading '\|'! +REQUIRED_LDD_BLACKLIST="\|VBoxVMM" diff --git a/remote/modules/vbox/module.conf.opensuse b/remote/modules/vbox/module.conf.opensuse new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/remote/modules/vbox/module.conf.opensuse diff --git a/remote/modules/vbox/module.conf.opensuse.12.3 b/remote/modules/vbox/module.conf.opensuse.12.3 new file mode 100644 index 00000000..ae42e8aa --- /dev/null +++ b/remote/modules/vbox/module.conf.opensuse.12.3 @@ -0,0 +1,19 @@ +REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/VirtualBox-4.2-4.2.16_86992_openSUSE114-1.${X86_64_I586}.rpm" + +# Just for local usage, development: +# REQUIRED_VBOXBASEURL="http://132.230.8.69/VirtualBox-4.2-4.2.16_86992_openSUSE114-1.${X86_64_I586}.rpm" + +REQUIRED_CONTENT_PACKAGES=" + libSDL-1_2-0 + libpng12-0 +" + +REQUIRED_INSTALLED_PACKAGES=" + libSDL-1_2-0 + libpng12-0 +" + +REQUIRED_LIBRARIES=" + libSDL-1.2 + libpng12 +" diff --git a/remote/modules/vbox/module.conf.ubuntu b/remote/modules/vbox/module.conf.ubuntu new file mode 100644 index 00000000..4efbd571 --- /dev/null +++ b/remote/modules/vbox/module.conf.ubuntu @@ -0,0 +1,18 @@ +REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb" + +# Just for local usage, development: +# REQUIRED_VBOXBASEURL="http://132.230.8.69/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb" + +REQUIRED_CONTENT_PACKAGES=" + libsdl1.2debian + libpng12-0 +" + +REQUIRED_INSTALLED_PACKAGES=" + libsdl1.2debian + libpng12-0 +" + +REQUIRED_LIBRARIES=" + libpng12 +" diff --git a/remote/modules/vbox/module.conf.ubuntu.13.04 b/remote/modules/vbox/module.conf.ubuntu.13.04 new file mode 100644 index 00000000..fbef8447 --- /dev/null +++ b/remote/modules/vbox/module.conf.ubuntu.13.04 @@ -0,0 +1,18 @@ +REQUIRED_VBOXBASEURL="http://download.virtualbox.org/virtualbox/4.2.16/virtualbox-4.2_4.2.16-86992~Ubuntu~raring_${AMD64_I386}.deb" + +# Just for local usage, development: +# REQUIRED_VBOXBASEURL="http://132.230.8.69/virtualbox-4.2_4.2.16-86992~Ubuntu~precise_${AMD64_I386}.deb" + +REQUIRED_CONTENT_PACKAGES=" + libsdl1.2debian + libpng12-0 +" + +REQUIRED_INSTALLED_PACKAGES=" + libsdl1.2debian + libpng12-0 +" + +REQUIRED_LIBRARIES=" + libpng12 +" |