diff options
author | Daniel Bermond | 2020-09-05 11:57:17 +0000 |
---|---|---|
committer | Daniel Bermond | 2020-09-05 11:57:17 +0000 |
commit | 166ae9ec9fc762d8a6561ab9547170c643f35918 (patch) | |
tree | de9f50116c32a04ffdf90f7ce11dd790ecf16380 | |
parent | a92486e4ad8c06ded21573b245788db18e14e021 (diff) | |
download | aur-166ae9ec9fc762d8a6561ab9547170c643f35918.tar.gz |
Major rewrite
changes:
- added split packages for sdk and guest iso (this will significantly
reduce the size of the main virtualbox-bin package, while allowing
users to install only the needed additional components)
- added components: modules reload script, rdesktop-vrdp and web service
- fixed symlinks of VBox executables in /usr/bin (now they correctly
point to the 'VBox.sh' executable dispatcher)
- fixed install of virtualbox.svg scalable icon
- updated udev rules
- removed obsolete files
- removed rdesktop-vrdp packed sources
- removed unneeded version from the configuration file vbox.cfg
- removed unneeded makedepends, depends and optdepends to conform
with the DKMS package guidelines from the Arch Wiki
- cosmetic changes
-rw-r--r-- | .SRCINFO | 90 | ||||
-rw-r--r-- | 013-Makefile.patch | 2 | ||||
-rw-r--r-- | 10-vboxdrv.rules | 5 | ||||
-rw-r--r-- | 60-vboxdrv.rules | 8 | ||||
-rw-r--r-- | LICENSE.sdk | 13 | ||||
-rw-r--r-- | PKGBUILD | 285 | ||||
-rw-r--r-- | VBoxFixUSB | 16 | ||||
-rw-r--r-- | do_dkms | 67 | ||||
-rw-r--r-- | vboxreload | 37 | ||||
-rw-r--r-- | vboxweb.conf | 11 | ||||
-rw-r--r-- | vboxweb.rc | 86 | ||||
-rw-r--r-- | vboxweb.service | 11 | ||||
-rw-r--r-- | virtualbox-bin.install | 47 | ||||
-rw-r--r-- | virtualbox.sysusers | 1 |
14 files changed, 252 insertions, 427 deletions
@@ -1,16 +1,41 @@ pkgbase = virtualbox-bin - pkgdesc = Oracle VM VirtualBox Binary Edition (Oracle branded non-OSE version) + pkgdesc = Powerful x86 virtualization for enterprise as well as home use (Oracle branded non-OSE) pkgver = 6.1.12 - pkgrel = 1 + pkgrel = 2 url = https://www.virtualbox.org/ - install = virtualbox-bin.install arch = x86_64 license = GPL2 - makedepends = linux-headers + makedepends = python + noextract = VirtualBoxSDK-6.1.12-139181.zip + source = http://download.virtualbox.org/virtualbox/6.1.12/VirtualBox-6.1.12-139181-Linux_amd64.run + source = https://download.virtualbox.org/virtualbox/6.1.12/VirtualBoxSDK-6.1.12-139181.zip + source = VBoxAuth-r83509.h::https://www.virtualbox.org/svn/vbox/trunk/include/VBox/VBoxAuth.h?p=83509 + source = VBoxAuthPAM-r83509.c::https://www.virtualbox.org/svn/vbox/trunk/src/VBox/HostServices/auth/pam/VBoxAuthPAM.c?p=83509 + source = VBoxAuthSimple-r83509.cpp::https://www.virtualbox.org/svn/vbox/trunk/src/VBox/HostServices/auth/simple/VBoxAuthSimple.cpp?p=83509 + source = dkms.conf + source = vboxreload + source = 60-vboxdrv.rules + source = vboxweb.service + source = virtualbox.sysusers + source = LICENSE.sdk + source = 013-Makefile.patch + sha256sums = 0a99475b1eac8c9e343305ecad4a6b14d5db5cc2869be7b0803fbccc52dec675 + sha256sums = 7c2bca541d380236c504205497a6eb2a7fb33051b5f7ebfcbd1dcf8b68f0f22f + sha256sums = 61eab70173ec0c4959ec3b8bf9fa19cfac49bb223a0bb041fe12aa14742db15a + sha256sums = f54c38e2d112e0221daa1ddd563a260d18d7d510c485a7d27c317d379e06ff79 + sha256sums = 2ef58e7f24ed9114dbf29dfa77372b5e15962a2244315ffbfb592cdc10920ad8 + sha256sums = 63f1e9eabedec2170bd0589aaa2bf5025ff8f8ec1764cc4823cbe446e9ce1388 + sha256sums = 4001b5927348fe669a541e80526d4f9ea91b883805f102f7d571edbb482a9b9d + sha256sums = 9c5238183019f9ebc7d92a8582cad232f471eab9d3278786225abc1a1c7bf66e + sha256sums = e6e875ef186578b53106d7f6af48e426cdaf1b4e86834f01696b8ef1c685787f + sha256sums = 2101ebb58233bbfadf3aa74381f22f7e7e508559d2b46387114bc2d8e308554c + sha256sums = 09335d7d1075df02d29cec13119538134efdf43ea73a93b0f89d0d7d4b6625a1 + sha256sums = 8ec385a28455734a7ee6fc42083a977edf39b3ae22468b486842ab72904b287b + +pkgname = virtualbox-bin depends = device-mapper depends = dkms depends = fontconfig - depends = gcc depends = hicolor-icon-theme depends = libgl depends = libidl2 @@ -19,50 +44,35 @@ pkgbase = virtualbox-bin depends = libxmu depends = python depends = sdl - optdepends = virtualbox-ext-oracle: for Oracle extensions - optdepends = java-runtime: for webservice sdk java bindings - optdepends = linux-headers: build the module for Arch kernel - optdepends = linux-lts-headers: build the module for LTS Arch kernel + optdepends = virtualbox-bin-guest-iso: for guest additions CD image + optdepends = virtualbox-bin-sdk: for the software developer kit + optdepends = virtualbox-ext-oracle: for Oracle extensions pack provides = virtualbox=6.1.12 - provides = virtualbox-sdk - provides = VIRTUALBOX-HOST-MODULES provides = virtualbox-host-dkms - provides = virtualbox-guest-iso + provides = VIRTUALBOX-HOST-MODULES conflicts = virtualbox - conflicts = virtualbox-sdk conflicts = virtualbox-host-dkms conflicts = virtualbox-host-modules-arch replaces = virtualbox_bin replaces = virtualbox-sun - noextract = VirtualBoxSDK-6.1.12-139181.zip options = !strip options = !emptydirs backup = etc/vbox/vbox.cfg - backup = etc/conf.d/vboxweb - source = http://download.virtualbox.org/virtualbox/6.1.12/VirtualBox-6.1.12-139181-Linux_amd64.run - source = https://download.virtualbox.org/virtualbox/6.1.12/VirtualBoxSDK-6.1.12-139181.zip - source = VBoxAuth-r83509.h::https://www.virtualbox.org/svn/vbox/trunk/include/VBox/VBoxAuth.h?p=83509 - source = VBoxAuthPAM-r83509.c::https://www.virtualbox.org/svn/vbox/trunk/src/VBox/HostServices/auth/pam/VBoxAuthPAM.c?p=83509 - source = VBoxAuthSimple-r83509.cpp::https://www.virtualbox.org/svn/vbox/trunk/src/VBox/HostServices/auth/simple/VBoxAuthSimple.cpp?p=83509 - source = VBoxFixUSB - source = 10-vboxdrv.rules - source = vboxweb.rc - source = vboxweb.conf - source = do_dkms - source = dkms.conf - source = 013-Makefile.patch - sha256sums = 0a99475b1eac8c9e343305ecad4a6b14d5db5cc2869be7b0803fbccc52dec675 - sha256sums = 7c2bca541d380236c504205497a6eb2a7fb33051b5f7ebfcbd1dcf8b68f0f22f - sha256sums = 61eab70173ec0c4959ec3b8bf9fa19cfac49bb223a0bb041fe12aa14742db15a - sha256sums = f54c38e2d112e0221daa1ddd563a260d18d7d510c485a7d27c317d379e06ff79 - sha256sums = 2ef58e7f24ed9114dbf29dfa77372b5e15962a2244315ffbfb592cdc10920ad8 - sha256sums = 0aebe22abab402ea6b6573af637a99d8056a904920a52d84fb97729219219c23 - sha256sums = 69417a9e8855cab8e4878886abe138f559fd17ae487d4cd19c8a24974a8bbec2 - sha256sums = 656905de981ffa24f6f921c920538854a235225053f44baedacc07b46ca0cf56 - sha256sums = 12dbba3b59991f2b68cddeeeda20236aeff63e11b7e2d1b08d9d6a82225f6651 - sha256sums = cc1c0500ab07bc13563d99037f776bf64bdc90bb521e31e2e0b04e42ea5bb36a - sha256sums = 63f1e9eabedec2170bd0589aaa2bf5025ff8f8ec1764cc4823cbe446e9ce1388 - sha256sums = 268e794de9d66a2751006b2ca3810fc6a05da4af2ffa8b58c56c94b292f1f424 -pkgname = virtualbox-bin +pkgname = virtualbox-bin-guest-iso + pkgdesc = VirtualBox guest additions ISO image for use with virtualbox-bin package + arch = any + provides = virtualbox-guest-iso + +pkgname = virtualbox-bin-sdk + pkgdesc = VirtualBox software developer kit for use with virtualbox-bin package + arch = any + license = LGPL2.1 + license = GPL2 + license = BSD + license = custom + depends = python + optdepends = java-runtime: for webservice java bindings + provides = virtualbox-sdk + conflicts = virtualbox-sdk diff --git a/013-Makefile.patch b/013-Makefile.patch index 351f2f36a3fd..556350253afe 100644 --- a/013-Makefile.patch +++ b/013-Makefile.patch @@ -1,5 +1,3 @@ -diff --git a/src/vboxhost/Makefile b/src/vboxhost/Makefile -index 18466b48..7c7de4e5 100644 --- a/src/vboxhost/Makefile +++ b/src/vboxhost/Makefile @@ -23,25 +23,25 @@ diff --git a/10-vboxdrv.rules b/10-vboxdrv.rules deleted file mode 100644 index 12b7ab57afc6..000000000000 --- a/10-vboxdrv.rules +++ /dev/null @@ -1,5 +0,0 @@ -KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600" -SUBSYSTEM=="usb_device", ACTION=="add", RUN="VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" -SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN="VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass}" -SUBSYSTEM=="usb_device", ACTION=="remove", RUN="VBoxCreateUSBNode.sh --remove $major $minor" -SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN="VBoxCreateUSBNode.sh --remove $major $minor" diff --git a/60-vboxdrv.rules b/60-vboxdrv.rules new file mode 100644 index 000000000000..95d515b06bc5 --- /dev/null +++ b/60-vboxdrv.rules @@ -0,0 +1,8 @@ +KERNEL=="vboxdrv", NAME="vboxdrv", OWNER="root", GROUP="root", MODE="0600" +KERNEL=="vboxdrvu", NAME="vboxdrvu", OWNER="root", GROUP="root", MODE="0666" +KERNEL=="vboxnetctl", NAME="vboxnetctl", OWNER="root", GROUP="root", MODE="0600" + +SUBSYSTEM=="usb_device", ACTION=="add", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers" +SUBSYSTEM=="usb", ACTION=="add", ENV{DEVTYPE}=="usb_device", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh $major $minor $attr{bDeviceClass} vboxusers" +SUBSYSTEM=="usb_device", ACTION=="remove", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor" +SUBSYSTEM=="usb", ACTION=="remove", ENV{DEVTYPE}=="usb_device", RUN+="/usr/share/virtualbox/VBoxCreateUSBNode.sh --remove $major $minor" diff --git a/LICENSE.sdk b/LICENSE.sdk new file mode 100644 index 000000000000..8dcb4c295697 --- /dev/null +++ b/LICENSE.sdk @@ -0,0 +1,13 @@ +License information + +The sample code files shipped with the SDK are generally licensed liberally +to make it easy for anyone to use this code for their own application code. + +The Java files under /opt/VirtualBox/sdk/bindings/webservice/java/jax-ws/ +(library files for the object-oriented web service) are, by contrast, +licensed under the GNU Lesser General Public License (LGPL) V2.1. +See /opt/VirtualBox/sdk/bindings/webservice/java/jax-ws/COPYING.LIB for +the full text of the LGPL 2.1. + +When in doubt, please refer to the individual source code files shipped +with this SDK. @@ -4,40 +4,29 @@ # Contributor: khomutsky <bogdan@khomutsky.com> # Contributor: M0Rf30 -pkgname=virtualbox-bin +pkgbase=virtualbox-bin +pkgname=('virtualbox-bin' 'virtualbox-bin-guest-iso' 'virtualbox-bin-sdk') pkgver=6.1.12 _build=139181 _rev=83509 -pkgrel=1 -pkgdesc='Oracle VM VirtualBox Binary Edition (Oracle branded non-OSE version)' +pkgrel=2 +pkgdesc='Powerful x86 virtualization for enterprise as well as home use (Oracle branded non-OSE)' arch=('x86_64') url='https://www.virtualbox.org/' license=('GPL2') -depends=('device-mapper' 'dkms' 'fontconfig' 'gcc' 'hicolor-icon-theme' 'libgl' - 'libidl2' 'libxcursor' 'libxinerama' 'libxmu' 'python' 'sdl') -makedepends=('linux-headers') -optdepends=('virtualbox-ext-oracle: for Oracle extensions' - 'java-runtime: for webservice sdk java bindings' - 'linux-headers: build the module for Arch kernel' - 'linux-lts-headers: build the module for LTS Arch kernel') -provides=("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" +makedepends=('python') +_rdeskver=1.8.4 source=("http://download.virtualbox.org/virtualbox/${pkgver}/VirtualBox-${pkgver}-${_build}-Linux_amd64.run" "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' + 'vboxreload' + '60-vboxdrv.rules' + 'vboxweb.service' + 'virtualbox.sysusers' + 'LICENSE.sdk' '013-Makefile.patch') noextract=("VirtualBoxSDK-${pkgver}-${_build}.zip") sha256sums=('0a99475b1eac8c9e343305ecad4a6b14d5db5cc2869be7b0803fbccc52dec675' @@ -45,172 +34,162 @@ sha256sums=('0a99475b1eac8c9e343305ecad4a6b14d5db5cc2869be7b0803fbccc52dec675' '61eab70173ec0c4959ec3b8bf9fa19cfac49bb223a0bb041fe12aa14742db15a' 'f54c38e2d112e0221daa1ddd563a260d18d7d510c485a7d27c317d379e06ff79' '2ef58e7f24ed9114dbf29dfa77372b5e15962a2244315ffbfb592cdc10920ad8' - '0aebe22abab402ea6b6573af637a99d8056a904920a52d84fb97729219219c23' - '69417a9e8855cab8e4878886abe138f559fd17ae487d4cd19c8a24974a8bbec2' - '656905de981ffa24f6f921c920538854a235225053f44baedacc07b46ca0cf56' - '12dbba3b59991f2b68cddeeeda20236aeff63e11b7e2d1b08d9d6a82225f6651' - 'cc1c0500ab07bc13563d99037f776bf64bdc90bb521e31e2e0b04e42ea5bb36a' '63f1e9eabedec2170bd0589aaa2bf5025ff8f8ec1764cc4823cbe446e9ce1388' - '268e794de9d66a2751006b2ca3810fc6a05da4af2ffa8b58c56c94b292f1f424') + '4001b5927348fe669a541e80526d4f9ea91b883805f102f7d571edbb482a9b9d' + '9c5238183019f9ebc7d92a8582cad232f471eab9d3278786225abc1a1c7bf66e' + 'e6e875ef186578b53106d7f6af48e426cdaf1b4e86834f01696b8ef1c685787f' + '2101ebb58233bbfadf3aa74381f22f7e7e508559d2b46387114bc2d8e308554c' + '09335d7d1075df02d29cec13119538134efdf43ea73a93b0f89d0d7d4b6625a1' + '8ec385a28455734a7ee6fc42083a977edf39b3ae22468b486842ab72904b287b') prepare() { - mkdir -p "${pkgname}-${pkgver}/VirtualBox-extracted" + local _extractdir="${pkgname}-${pkgver}/VirtualBox-extracted" - # extract the main source file - yes 2>/dev/null | sh "VirtualBox-${pkgver}-${_build}-Linux_amd64.run" \ - --target "${pkgname}-${pkgver}" --nox11 --noexec &> /dev/null - tar -jxf "${pkgname}-${pkgver}/VirtualBox.tar.bz2" -C "${pkgname}-${pkgver}/VirtualBox-extracted" - - # extract sdk + # extract files + mkdir -p "$_extractdir" + sh "VirtualBox-${pkgver}-${_build}-Linux_amd64.run" --noexec --nox11 --target "${pkgname}-${pkgver}" + bsdtar -xf "${pkgname}-${pkgver}/VirtualBox.tar.bz2" -C "$_extractdir" bsdtar -xf "VirtualBoxSDK-${pkgver}-${_build}.zip" -C "${pkgname}-${pkgver}" + bsdtar -xf "${_extractdir}/rdesktop-vrdp.tar.gz" -C "${pkgname}-${pkgver}" --include='*.1' + + # dkms configuration + install -D -m644 dkms.conf -t "${_extractdir}/src/vboxhost" + sed -i "s/^\(PACKAGE_VERSION\)=.*/\1=${pkgver}/" "${_extractdir}/src/vboxhost/dkms.conf" # fix dkms build - patch -d "${pkgname}-${pkgver}/VirtualBox-extracted" -Np1 -i "${srcdir}/013-Makefile.patch" + patch -d "$_extractdir" -Np1 -i "${srcdir}/013-Makefile.patch" } build() { - local _installdir='opt/VirtualBox' - cd "${pkgname}-${pkgver}/sdk/installer" - VBOX_INSTALL_PATH="/${_installdir}" python vboxapisetup.py build + VBOX_INSTALL_PATH='/opt/VirtualBox' python vboxapisetup.py build } -package() { +package_virtualbox-bin() { + depends=('device-mapper' 'dkms' 'fontconfig' 'hicolor-icon-theme' 'libgl' + 'libidl2' 'libxcursor' 'libxinerama' 'libxmu' 'python' 'sdl') + optdepends=('virtualbox-bin-guest-iso: for guest additions CD image' + 'virtualbox-bin-sdk: for the software developer kit' + 'virtualbox-ext-oracle: for Oracle extensions pack') + provides=("virtualbox=${pkgver}" 'virtualbox-host-dkms' 'VIRTUALBOX-HOST-MODULES') + conflicts=('virtualbox' 'virtualbox-host-dkms' 'virtualbox-host-modules-arch') + replaces=('virtualbox_bin' 'virtualbox-sun') + backup=('etc/vbox/vbox.cfg') + options=('!strip' '!emptydirs') + local _installdir='opt/VirtualBox' # install bundled files - printf '%s\n' ' -> Installing bundled files...' - install -d "${pkgdir}/opt" + mkdir -p "${pkgdir}/opt" cp -pr "${pkgname}-${pkgver}/VirtualBox-extracted" "${pkgdir}/${_installdir}" - # hardened build: mark binaries suid root, and make sure the - # directory is only writable by the user - printf '%s\n' ' -> Fixing permissions...' - cd "${pkgdir}/${_installdir}" - chmod 4755 VirtualBoxVM VBox{Headless,Net{AdpCtl,DHCP,NAT},SDL,VolInfo} + # mark binaries suid root, and make sure the directory is only writable by the user + chmod 4755 "${pkgdir}/${_installdir}"/{VirtualBoxVM,VBox{Headless,Net{AdpCtl,DHCP,NAT},SDL,VolInfo}} 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" --skip-build --optimize='1' - 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" + # remove guest iso, rdesktop-vrdp packed sources and bundled sdk files + rm -r "${pkgdir}/${_installdir}"/{additions/VBoxGuestAdditions.iso,rdesktop-vrdp.tar.gz,sdk} + + # module sources + mkdir -p "${pkgdir}/usr/src" + mv "${pkgdir}/${_installdir}/src/vboxhost" "${pkgdir}/usr/src/vboxhost-${pkgver}_non_OSE" + + # module reloading shortcut (with a symlink with default helper) + install -D -m755 vboxreload -t "${pkgdir}/usr/bin" + ln -s vboxreload "${pkgdir}/usr/bin/rcvboxdrv" + + # udev 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 -D -m644 60-vboxdrv.rules -t "${pkgdir}/usr/lib/udev/rules.d" + install -D -m755 "${pkgdir}/${_installdir}/VBoxCreateUSBNode.sh" -t "${pkgdir}/usr/lib/udev" + install -D -m755 "${pkgdir}/${_installdir}/VBoxCreateUSBNode.sh" -t "${pkgdir}/usr/share/virtualbox" - # install VBoxFixUSB script - install -D -m0755 "${srcdir}/VBoxFixUSB" VBoxFixUSB + # configuration file + printf '%s\n' "INSTALL_DIR=/${_installdir}" | install -D -m644 /dev/stdin "${pkgdir}/etc/vbox/vbox.cfg" - # 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" + # modules-load.d configuration + printf 'vboxdrv\nvboxnetadp\nvboxnetflt\n' | + install -D -m644 /dev/stdin "${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" - printf '%s\n' ' -> Creating needed symlinks...' + # systemd + install -D -m644 vboxweb.service -t "${pkgdir}/usr/lib/systemd/system" + install -D -m644 virtualbox.sysusers "${pkgdir}/usr/lib/sysusers.d/virtualbox.conf" - # symlinks for working around unsupported $ORIGIN/.. in VBoxC.so - local _lib - for _lib in VBox{RT,XPCOM}.so - do - ln -s "../${_lib}" "components/${_lib}" - done + # man page for rdesktop-vrdp + install -D -m644 "${pkgname}-${pkgver}/rdesktop-${_rdeskver}-vrdp/doc/rdesktop.1" -t "${pkgdir}/usr/share/man/man1" - # symlink the launchers - local _bin - install -d -m0755 "${pkgdir}/usr/bin" - for _bin in VirtualBox{,VM} VBox{Headless,Manage,SDL,SVC,Tunctl,NetAdpCtl,FixUSB} + # symlinks + local _dir + local _file + mkdir -p "${pkgdir}/usr/share"/{applications,{doc,licenses}/"$pkgname",mime/packages,pixmaps} + for _file in vboxwebsrv VirtualBox{,VM} VBox{Manage,SDL,VRDP,Headless,Autostart,BalloonCtrl,BugReport,DTrace} do - ln -s "../../${_installdir}/${_bin}" "${pkgdir}/usr/bin/${_bin}" - ln -s "../../${_installdir}/${_bin}" "${pkgdir}/usr/bin/${_bin,,}" + ln -s "../../${_installdir}/VBox.sh" "${pkgdir}/usr/bin/${_file}" + [ "$_file" != 'vboxwebsrv' ] && ln -s "../../${_installdir}/VBox.sh" "${pkgdir}/usr/bin/${_file,,}" done + ln -s "../../${_installdir}/VBoxTunctl" "${pkgdir}/usr/bin/VBoxTunctl" ln -s "../../${_installdir}/rdesktop-vrdp" "${pkgdir}/usr/bin/rdesktop-vrdp" - - # 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}/VBoxSysInfo.sh" "${pkgdir}/usr/share/virtualbox/VBoxSysInfo.sh" + ln -s "../../../usr/src/vboxhost-${pkgver}_non_OSE" "${pkgdir}/${_installdir}/src/vboxhost" + ln -s "../../../${_installdir}/VBox.png" "${pkgdir}/usr/share/pixmaps/VBox.png" + ln -s "../../../${_installdir}/virtualbox.desktop" "${pkgdir}/usr/share/applications/virtualbox.desktop" 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 - local _dir - local _icon - pushd icons >/dev/null - for _dir in * + ln -s "../../../../${_installdir}/UserManual.pdf" "${pkgdir}/usr/share/doc/${pkgname}/UserManual.pdf" + ln -s "../../../../${_installdir}/VirtualBox.chm" "${pkgdir}/usr/share/doc/${pkgname}/VirtualBox.chm" + ln -s "../../../../${_installdir}/LICENSE" "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + ## hicolor icons + while read -r -d '' _file 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 + if printf '%s' "$_file" | grep -Eq '/virtualbox\.(png|svg)$' + then + _dir="${_file%/*}/apps" + else + _dir="${_file%/*}/mimetypes" + fi + mkdir -p "${pkgdir}/usr/share/icons/hicolor/${_dir}" + ln -s "../../../../../../${_installdir}/icons/${_dir%/*}/${_file##*/}" \ + "${pkgdir}/usr/share/icons/hicolor/${_dir}/${_file##*/}" + done < <(find "${pkgdir}/${_installdir}/icons" -type f -print0 | sed -z "s|${pkgdir}/${_installdir}/icons/||") + ## workaround for unsupported $ORIGIN/.. in VBoxC.so + for _file in VBox{RT,XPCOM}.so + do + ln -s "../${_file}" "${pkgdir}/${_installdir}/components/${_file}" 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\)=/\1=${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}_non_OSE" +package_virtualbox-bin-guest-iso() { + pkgdesc='VirtualBox guest additions ISO image for use with virtualbox-bin package' + arch=('any') + provides=('virtualbox-guest-iso') - # 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}' + install -t "${pkgdir}/opt/VirtualBox/additions" \ + -D -m644 "${pkgbase}-${pkgver}/VirtualBox-extracted/additions/VBoxGuestAdditions.iso" +} -# 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" - cat > "${pkgdir}/usr/lib/modules-load.d/${pkgname}.conf" << __EOF__ -# Load virtualbox kernel modules at boot -# This file was installed by the ${pkgname} AUR package -vboxdrv -vboxnetadp -vboxnetflt -__EOF__ +package_virtualbox-bin-sdk() { + pkgdesc='VirtualBox software developer kit for use with virtualbox-bin package' + arch=('any') + license=('LGPL2.1' 'GPL2' 'BSD' 'custom') + depends=('python') + optdepends=('java-runtime: for webservice java bindings') + provides=('virtualbox-sdk') + conflicts=('virtualbox-sdk') + + local _dir + local _installdir='opt/VirtualBox' + + mkdir -p "${pkgdir}/${_installdir}/sdk" + while read -r -d '' _dir + do + cp -pr "$_dir" "${pkgdir}/${_installdir}/sdk" + done < <(find "${pkgbase}-${pkgver}/sdk" -mindepth 1 -maxdepth 1 -type d ! -name 'installer' -print0) + install -D -m644 "VBoxAuth-r${_rev}.h" "${pkgdir}/${_installdir}/sdk/bindings/auth/include/VBoxAuth.h" + install -D -m644 "VBoxAuthPAM-r${_rev}.c" "${pkgdir}/${_installdir}/sdk/bindings/auth/VBoxAuthPAM.cpp" + install -D -m644 "VBoxAuthSimple-r${_rev}.cpp" "${pkgdir}/${_installdir}/sdk/bindings/auth/VBoxAuthSimple.cpp" + install -D -m644 LICENSE.sdk "${pkgdir}/usr/share/licenses/${pkgname}/LICENSE" + + cd "${pkgbase}-${pkgver}/sdk/installer" + VBOX_INSTALL_PATH="/${_installdir}" python vboxapisetup.py install --root "$pkgdir" --skip-build --optimize='1' } diff --git a/VBoxFixUSB b/VBoxFixUSB deleted file mode 100644 index f4c1ebe6f015..000000000000 --- a/VBoxFixUSB +++ /dev/null @@ -1,16 +0,0 @@ -#!/bin/bash -# 2012: Seblu was here - -. /etc/vbox/vbox.cfg - -# Build our device tree -for i in /sys/bus/usb/devices/*; do - if test -r "$i/dev"; then - dev="`cat "$i/dev" 2> /dev/null`" - major="`expr "$dev" : '\(.*\):' 2> /dev/null`" - minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null`" - class="`cat $i/bDeviceClass 2> /dev/null`" - sh "$INSTALL_DIR/VBoxCreateUSBNode.sh" "$major" "$minor" "$class" 2>/dev/null - fi -done -# vim:set ts=2 sw=2 ft=sh et: diff --git a/do_dkms b/do_dkms deleted file mode 100644 index cc9c7d676051..000000000000 --- a/do_dkms +++ /dev/null @@ -1,67 +0,0 @@ -#!/bin/sh - -# -# Script to register/build/unregister a kernel module with DKMS. -# -# Copyright (C) 2010-2015 Oracle Corporation -# -# 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 (GPL) 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. -# - -ACTION= -if [ "$1" = "install" ]; then - ACTION="install" - MODULE="$2" - VERSION="$3" -elif [ "$1" = "uninstall" ]; then - shift - ACTION="uninstall" - OLDMODULES="$*" - break -fi - -DKMS=`which dkms 2>/dev/null` -if [ -n "$DKMS" ] -then - if [ "$ACTION" = "uninstall" ]; then - - echo "Uninstalling modules from DKMS" - for m in $OLDMODULES - do - $DKMS status -m $m | while read line - # first, remove _any_ old module - do - if echo "$line" | grep -q added > /dev/null || - echo "$line" | grep -q built > /dev/null || - echo "$line" | grep -q installed > /dev/null; then - # either 'vboxvideo, <version>: added' - # or 'vboxvideo, <version>, ...: installed' - version=`echo "$line" | sed "s/$m,\([^,]*\)[,:].*/\1/;t;d"` - echo " removing old DKMS module $m version $version" - $DKMS remove -m $m -v $version --all - fi - done - done - exit 0 - - elif [ "$ACTION" = "install" ]; then - - echo "Attempting to install using DKMS" - if $DKMS add -m $MODULE -v $VERSION && - $DKMS build -m $MODULE -v $VERSION && - $DKMS install -m $MODULE -v $VERSION --force - then - exit 0 - fi - echo "Failed to install using DKMS, attempting to install without" - - fi -fi - -exit 1 diff --git a/vboxreload b/vboxreload new file mode 100644 index 000000000000..d21aa627fc4f --- /dev/null +++ b/vboxreload @@ -0,0 +1,37 @@ +#!/bin/bash + +# vboxreload: shortcut to reload virtualbox host modules +# +# Copyright © 2016 Sébastien Luttringer +# +# This program 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; either version 2 +# of the License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + +(( UID > 0 )) && { echo 'You must be root' >&2; exit 1; } + +modules=(vboxnetadp vboxnetflt vboxdrv) + +echo -n 'Unloading modules: ' +for _m in "${modules[@]}"; do + lsmod|grep -q "$_m" && rmmod "$_m" && echo -n "$_m " +done +echo + +echo -n 'Loading modules: ' +for _m in "${modules[@]}"; do + modprobe "$_m" && echo -n "$_m " +done +echo + +# vim:set ts=2 sw=2 ai et: diff --git a/vboxweb.conf b/vboxweb.conf deleted file mode 100644 index 49d82d828ead..000000000000 --- a/vboxweb.conf +++ /dev/null @@ -1,11 +0,0 @@ -# WebService Mandatory Variables -#VBOXWEB_USER= - -# WebService Variables -#VBOXWEB_LOGFILE= -#$VBOXWEB_HOST= -#$VBOXWEB_PORT= -#$VBOXWEB_TIMEOUT= -#$VBOXWEB_CHECK_INTERVAL= -#$VBOXWEB_THREADS= -#$VBOXWEB_KEEPALIVE= diff --git a/vboxweb.rc b/vboxweb.rc deleted file mode 100644 index 97273e3c7391..000000000000 --- a/vboxweb.rc +++ /dev/null @@ -1,86 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions -. /etc/vbox/vbox.cfg -. /etc/conf.d/vboxweb - -BINARY="$INSTALL_DIR/vboxwebsrv" - -start() { - stat_busy "Starting VirtualBox Web Service"; - if ! pidof -o %PPID $BINARY >/dev/null; then - [[ "$VBOXWEB_USER" ]] || stat_die - lsmod | grep -q "vboxdrv[^_-]" || stat_die - PARAMS="--background" - [[ "$VBOXWEB_HOST" ]] && PARAMS+=" -H $VBOXWEB_HOST" - [[ "$VBOXWEB_PORT" ]] && PARAMS+=" -p $VBOXWEB_PORT" - [[ "$VBOXWEB_TIMEOUT" ]] && PARAMS+=" -t $VBOXWEB_TIMEOUT" - [[ "$VBOXWEB_CHECK_INTERVAL" ]] && PARAMS+=" -i $VBOXWEB_CHECK_INTERVAL" - [[ "$VBOXWEB_THREADS" ]] && PARAMS+=" -T $VBOXWEB_THREADS" - [[ "$VBOXWEB_KEEPALIVE" ]] && PARAMS+=" -k $VBOXWEB_KEEPALIVE" - [[ "$VBOXWEB_LOGFILE" ]] && 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 - if pidof -o %PPID $BINARY >/dev/null; then - add_daemon vboxweb - stat_done - else - stat_die - fi - else - stat_die - fi -} - -stop() { - stat_busy "Stopping VirtualBox Web Service" - PID=$(pidof -o %PPID $BINARY) - [[ $PID ]] && kill $PID &>/dev/null - if ! pidof -o %PPID $BINARY >/dev/null; then - rm_daemon vboxweb - stat_done - else - stat_die - fi -} - -restart() { - stop && start -} - -status() { - stat_busy "Checking for VirtualBox Web Service" - if pidof -o %PPID $BINARY >/dev/null; 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: diff --git a/vboxweb.service b/vboxweb.service new file mode 100644 index 000000000000..303381597a40 --- /dev/null +++ b/vboxweb.service @@ -0,0 +1,11 @@ +[Unit] +Description=VirtualBox Web Service +After=network.target + +[Service] +Type=forking +PIDFile=/run/vboxweb.pid +ExecStart=/usr/bin/vboxwebsrv --pidfile /run/vboxweb.pid --background + +[Install] +WantedBy=multi-user.target diff --git a/virtualbox-bin.install b/virtualbox-bin.install deleted file mode 100644 index d64b47cbf0d7..000000000000 --- a/virtualbox-bin.install +++ /dev/null @@ -1,47 +0,0 @@ -# arg 1: the new package version -post_install() { - # Add vboxusers group, GID 108 is reserved (http://wiki.archlinux.org/index.php/UID_and_GID_list), - getent group vboxusers &> /dev/null || groupadd -f -g 108 vboxusers - - # Load new udev rule for module vboxdrv - udevadm control --reload-rules - - # Show warnings - cat <<EOF - -==> Remember to add allowed users to the vboxusers group: -==> # gpasswd -a USERNAME vboxusers -EOF -} - -# arg 1: the new package version -# arg 2: the old package version -pre_upgrade() { - # Remove any stuff remaining from the module compilation - rm -Rf "/opt/VirtualBox" -} - -# arg 1: the new package version -# arg 2: the old package version -post_upgrade() { - post_install "$1" - (($(vercmp $2 '4.1.14-2') < 0 )) && cat <<EOF || true - -==> **Warning** -==> This version drop vboxdrv initscript. -==> Please change to dkms instead of vboxdrv in DAEMONS in rc.conf. -==> -EOF -} - -# arg 1: the old package version -post_remove() { - # Remove any stuff remaining from the module compilation - rm -Rf "/opt/VirtualBox" - - # Remove any run files - rm -Rf "/var/run/VirtualBox" - - # remove vboxusers group - groupdel vboxusers &>/dev/null || true -} diff --git a/virtualbox.sysusers b/virtualbox.sysusers new file mode 100644 index 000000000000..4d4caeb27936 --- /dev/null +++ b/virtualbox.sysusers @@ -0,0 +1 @@ +g vboxusers 108 - |