diff options
Diffstat (limited to 'PKGBUILD')
-rw-r--r-- | PKGBUILD | 216 |
1 files changed, 216 insertions, 0 deletions
diff --git a/PKGBUILD b/PKGBUILD new file mode 100644 index 000000000000..e0aa90d1fb07 --- /dev/null +++ b/PKGBUILD @@ -0,0 +1,216 @@ +# Maintainer: Yurii Kolesnykov <root@yurikoles.com> +# Contributor: Daniel Bermond < gmail: danielbermond > +# Contributor: Rainmaker <rainmaker52@gmail.com> +# Contributor: gary9872 <garysBoXatgeemale.com> +# Contributor: khomutsky <bogdan@khomutsky.com> +# Contributor: M0Rf30 + +pkgname=virtualbox-beta-bin +pkgver=6.0.0.126642 +_pkgver=6.0.0_BETA2 +_build=126642 +_rev=75527 +pkgrel=1 +pkgdesc='Oracle VM VirtualBox Binary Edition (Oracle branded non-OSE version)' +arch=('i686' 'x86_64') +url='https://www.virtualbox.org/' +license=('GPL2') +depends=('dkms' 'fontconfig' 'gcc' 'libgl' 'libidl2' 'libxcursor' 'libxinerama' + 'libxmu' 'python' 'sdl') +makedepends=('linux-headers') +optdepends=('virtualbox-ext-oracle: for Oracle extensions' + 'linux-headers: build the module for Arch kernel' + 'linux-lts-headers: build the module for LTS Arch kernel') +provides=(virtualbox-beta "virtualbox=${_pkgver}" 'virtualbox-sdk' 'VIRTUALBOX-HOST-MODULES' + 'virtualbox-host-dkms' 'virtualbox-guest-iso') +conflicts=('virtualbox' 'virtualbox-sdk' 'virtualbox-host-dkms' 'virtualbox-host-modules-arch') +replaces=('virtualbox_bin' 'virtualbox-sun') +backup=('etc/vbox/vbox.cfg' 'etc/conf.d/vboxweb') +options=('!strip' '!emptydirs') +install="${pkgname}.install" +source=("https://download.virtualbox.org/virtualbox/${_pkgver}/VirtualBoxSDK-${_pkgver}-${_build}.zip" + "VBoxAuth-r${_rev}.h"::"https://www.virtualbox.org/svn/vbox/trunk/include/VBox/VBoxAuth.h?p=${_rev}" + "VBoxAuthPAM-r${_rev}.c"::"https://www.virtualbox.org/svn/vbox/trunk/src/VBox/HostServices/auth/pam/VBoxAuthPAM.c?p=${_rev}" + "VBoxAuthSimple-r${_rev}.cpp"::"https://www.virtualbox.org/svn/vbox/trunk/src/VBox/HostServices/auth/simple/VBoxAuthSimple.cpp?p=${_rev}" + 'VBoxFixUSB' + '10-vboxdrv.rules' + 'vboxweb.rc' + 'vboxweb.conf' + 'do_dkms' + 'dkms.conf' + '009-include-path.patch') +source_i686=("http://download.virtualbox.org/virtualbox/${_pkgver}/VirtualBox-${_pkgver}-${_build}-Linux_x86.run") +source_x86_64=("http://download.virtualbox.org/virtualbox/${_pkgver}/VirtualBox-${_pkgver}-${_build}-Linux_amd64.run") +noextract=("VirtualBoxSDK-${_pkgver}-${_build}.zip") +sha256sums=('c818959c8310f3f323c75c29cacac86b749ca258373d48479efd41d26b2e4391' + '23e3e0e6abfaa69bf0aa046c0ee070d19435b97cb4bfbb16bba65a2783502154' + '815f6e2e3ab687356aad0e6f59eef6e266514fb12a6b569d239d834e0a480f37' + '99deff35d8a600f20223b96ba409451834e58ac21a589a989dd82a2d6fe006ae' + '0aebe22abab402ea6b6573af637a99d8056a904920a52d84fb97729219219c23' + '69417a9e8855cab8e4878886abe138f559fd17ae487d4cd19c8a24974a8bbec2' + '656905de981ffa24f6f921c920538854a235225053f44baedacc07b46ca0cf56' + '12dbba3b59991f2b68cddeeeda20236aeff63e11b7e2d1b08d9d6a82225f6651' + 'cc1c0500ab07bc13563d99037f776bf64bdc90bb521e31e2e0b04e42ea5bb36a' + 'e9df0fff15184d0a90abe17707bdbe1931582433bbc14ded4fb3b0252653c801' + '5112f0e1ba3bd0bd92ef2edb2d21024e265abb02841aa29aa05410526adc273f') +sha256sums_i686=('2db1e18d175561474e2dfdd1b674103b89c35ade732aaf8802e02969ca09b559') +sha256sums_x86_64=('3ed0e18aecbb03f63ca18938d4f019f4dff4b6cedfe2b0e88868e714592854a0') + +prepare() { + [ "$CARCH" = 'i686' ] && local _arch='x86' + [ "$CARCH" = 'x86_64' ] && local _arch='amd64' + + mkdir -p "${pkgname}-${_pkgver}" + + # extract the main source file + yes | sh "VirtualBox-${_pkgver}-${_build}-Linux_${_arch}.run" \ + --target "${srcdir}/${pkgname}-${_pkgver}" \ + --nox11 \ + --noexec \ + &> /dev/null + + # extract sdk + cd "${pkgname}-${_pkgver}" + bsdtar -xf "${srcdir}/VirtualBoxSDK-${_pkgver}-${_build}.zip" +} + +package() { + local _installdir='/opt/VirtualBox' + + # install bundled files + printf '%s\n' ' -> Installing bundled files...' + install -d "${pkgdir}/${_installdir}" + tar -jxf "${srcdir}/${pkgname}-${_pkgver}/VirtualBox.tar.bz2" -C "${pkgdir}/${_installdir}" + + # apply patch 009-include-path (thanks to Christian Hesse) + printf '%s\n' " -> Applying patch '009-includepath.patch'..." + cd "${pkgdir}/${_installdir}/src/vboxhost/" + patch -Np5 -i "${srcdir}/009-include-path.patch" + + # hardened build: mark binaries suid root, create symlinks for working around + # unsupported $ORIGIN/.. in VBoxC.so and make sure the + # directory is only writable by the user (paranoid) + cd "${pkgdir}/${_installdir}" + chmod 4511 VirtualBox VBox{SDL,Headless,NetDHCP,NetNAT,NetAdpCtl,VolInfo} + for _lib in VBox{VMM,RT}.so + do + ln -s "${_installdir}/${_lib}" "components/${_lib}" + done + chmod go-w "${pkgdir}/${_installdir}" + + # install SDK + printf '%s\n' ' -> Installing SDK...' + cd "${srcdir}/${pkgname}-${_pkgver}" + pushd 'sdk/installer' >/dev/null + VBOX_INSTALL_PATH="$_installdir" python vboxapisetup.py install --root "$pkgdir" + popd >/dev/null + rm -r "${pkgdir}/${_installdir}/sdk" + mkdir -p "${pkgdir}/${_installdir}/sdk" + cp -a sdk/bindings "${pkgdir}/${_installdir}/sdk" + cp -a sdk/docs "${pkgdir}/${_installdir}" + install -D -m644 "${srcdir}/VBoxAuth-r${_rev}.h" "${pkgdir}/${_installdir}/sdk/bindings/auth/include/VBoxAuth.h" + install -D -m644 "${srcdir}/VBoxAuthPAM-r${_rev}.c" "${pkgdir}/${_installdir}/sdk/bindings/auth/VBoxAuthPAM.cpp" + install -D -m644 "${srcdir}/VBoxAuthSimple-r${_rev}.cpp" "${pkgdir}/${_installdir}/sdk/bindings/auth/VBoxAuthSimple.cpp" + + # install udev rules + printf '%s\n' ' -> Installing udev rules...' + cd "${pkgdir}/${_installdir}" + install -D -m0644 "${srcdir}/10-vboxdrv.rules" "${pkgdir}/usr/lib/udev/rules.d/10-vboxdrv.rules" + ## we need to copy and not symlink VBoxCreateUSBNode.sh in /usr/lib/udev to avoid udevd + ## to look /opt when /opt is not mounted. This can be done until VBoxCreateUSBNode.sh doesn't + ## need more stuff from /opt + cp -a VBoxCreateUSBNode.sh "${pkgdir}/usr/lib/udev/" + + printf '%s\n' ' -> Installing scripts...' + + # install VBoxFixUSB script + install -D -m0755 "${srcdir}/VBoxFixUSB" VBoxFixUSB + + # install vboxweb initscript + install -D -m0755 "${srcdir}/vboxweb.rc" "${pkgdir}/etc/rc.d/vboxweb" + install -D -m0644 "${srcdir}/vboxweb.conf" "${pkgdir}/etc/conf.d/vboxweb" + + printf '%s\n' ' -> Creating needed symlinks...' + + # symlink the launchers (second link can fail if fs is not case sensitive) + install -d -m0755 "${pkgdir}/usr/bin" + for _bin in VirtualBox VBox{Headless,Manage,SDL,SVC,Tunctl,NetAdpCtl,FixUSB} rdesktop-vrdp + do + ln -s "${_installdir}/${_bin}" "${pkgdir}/usr/bin/${_bin}" + ln -s "${_installdir}/${_bin}" "${pkgdir}/usr/bin/${_bin,,}" &>/dev/null || : + done + + # symlink the desktop icon and .desktop files + install -d -m0755 "${pkgdir}/usr/"{share/applications,share/pixmaps} + ln -s "${_installdir}/VBox.png" "${pkgdir}/usr/share/pixmaps/VBox.png" + ln -s "${_installdir}/icons/128x128/virtualbox.png" "${pkgdir}/usr/share/pixmaps/virtualbox.png" + ln -s "${_installdir}/virtualbox.desktop" "${pkgdir}/usr/share/applications/virtualbox.desktop" + + # symlink mime info + install -d -m0755 "${pkgdir}/usr/share/mime/packages" + ln -s "${_installdir}/virtualbox.xml" "${pkgdir}/usr/share/mime/packages/virtualbox.xml" + + # symlink doc + install -d -m0755 "${pkgdir}/usr/share/doc/${pkgname}" + ln -s "${_installdir}/VirtualBox.chm" "${pkgdir}/usr/share/doc/${pkgname}/virtualbox.chm" + + # symlink icons + pushd icons >/dev/null + for _dir in * + do + cd "$_dir" + install -d -m0755 "${pkgdir}/usr/share/icons/hicolor/${_dir}/"{apps,mimetypes} + for _icon in * + do + if [ "$_icon" = 'virtualbox.png' ] + then + ln -s "${_installdir}/icons/${_dir}/${_icon}" "${pkgdir}/usr/share/icons/hicolor/${_dir}/apps/${_icon}" + else + ln -s "${_installdir}/icons/${_dir}/${_icon}" "${pkgdir}/usr/share/icons/hicolor/${_dir}/mimetypes/${_icon}" + fi + done + cd - >/dev/null + done + popd >/dev/null + + # with the relase of VirtualBox 5.1.0, Oracle dropped DKMS support from their package + # we will restore DKMS with the use of these config files + printf '%s\n' ' -> Installing DKMS support...' + install -D -m0755 "${srcdir}/do_dkms" -t "${pkgdir}/${_installdir}/src/vboxhost" + ## update module version + cd "$srcdir" + cp -a dkms.conf "${pkgname}-${_pkgver}" + sed -i "s/PACKAGE_VERSION=/PACKAGE_VERSION=${_pkgver}/" "${pkgname}-${_pkgver}/dkms.conf" + install -D -m0644 "${pkgname}-${_pkgver}/dkms.conf" -t "${pkgdir}/${_installdir}/src/vboxhost" + + # module sources in /usr/src + printf '%s\n' ' -> Installing module sources...' + install -d -m0755 "${pkgdir}/usr/src" + mv "${pkgdir}/${_installdir}/src/vboxhost" "${pkgdir}/usr/src/vboxhost-${_pkgver}" + + # write the configuration file + printf '%s\n' ' -> Writing the configuration file...' + install -D -m0644 /dev/null "${pkgdir}/etc/vbox/vbox.cfg" + cat > "${pkgdir}/etc/vbox/vbox.cfg" <<EOF +# VirtualBox installation directory +INSTALL_DIR='${_installdir}' + +# VirtualBox version +INSTALL_VER='${_pkgver}' +INSTALL_REV='${_build}' +EOF + + # write modules-load.d configuration to ensure that modules are loaded at boot + printf '%s\n' " -> Writing 'modules-load.d' configuration..." + install -D -m644 /dev/null "${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + printf '%s\n' '# Load virtualbox kernel modules at boot ' >"${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + printf '%s\n\n' "# This file was installed by the ${pkgname} AUR package" >>"${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + printf '%s\n' 'vboxdrv' >>"${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + printf '%s\n' 'vboxpci' >>"${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + printf '%s\n' 'vboxnetadp' >>"${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + printf '%s\n' 'vboxnetflt' >>"${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" + + # fix permissions (change executables from 4711 to 4755) + printf '%s\n' ' -> Fixing permissions...' + chmod 4755 "${pkgdir}/${_installdir}"/{VBox{Headless,Net{AdpCtl,DHCP,NAT},SDL,VolInfo},VirtualBox} +} |