[skip-ci] virtualbox: fix setuid issue

This commit is contained in:
Chaoting Liu 2019-01-04 14:20:42 +01:00
parent 36eaf2dd6c
commit fc6baddc00

View File

@ -11,22 +11,22 @@ pkgname=('virtualbox'
'virtualbox-ext-vnc'
'virtualbox-ext-oracle')
pkgver=6.0.0
pkgrel=1
pkgrel=2
_vboxsf_commit='9451f61e6787e95aa51e42b6381db6b059bc49da'
arch=('x86_64')
url='https://www.virtualbox.org'
license=('GPL')
url='https://virtualbox.org'
license=('GPL' 'custom')
makedepends=('alsa-lib'
'bin86'
'cdrkit'
'curl'
'dev86'
'device-mapper'
'git'
'glu'
'gsoap'
'iasl'
'openjdk'
'opus'
'libidl2'
'libpulse'
'libstdc++5'
@ -42,6 +42,7 @@ makedepends=('alsa-lib'
'libxtst'
'linux-headers'
'mesa'
'opus'
'python3'
'qt5-base'
'qt5-x11extras'
@ -121,28 +122,23 @@ prepare() {
local filename
for filename in "${source[@]}"; do
if [[ "$filename" =~ \.patch$ ]]; then
msg2 "Applying patch $filename"
patch -p1 -N -i "$srcdir/$filename"
msg2 "Applying patch ${filename##*/}"
patch -p1 -N -i "$srcdir/${filename##*/}"
fi
done
msg2 'Applying local config'
cp "$srcdir/LocalConfig.kmk" .
msg2 'Use our CFLAGS'
echo "VBOX_GCC_OPT=$CXXFLAGS" >> LocalConfig.kmk
# workaround, to be removed https://www.virtualbox.de/ticket/17036
echo "VBOX_WITH_EXTPACK_VBOXDTRACE=" >> LocalConfig.kmk
msg2 'Remove gcc version censorship'
sed -i 's/^check_gcc$/#check_gcc/' configure
msg2 'Use our CFLAGS'
echo "VBOX_GCC_OPT=$CXXFLAGS" >> LocalConfig.kmk
msg2 'Use system GL headers'
echo 'VBOX_USE_SYSTEM_GL_HEADERS=true' >> LocalConfig.kmk
msg2 'Remove gcc version censorship'
sed -i 's/^check_gcc$/#check_gcc/' configure
cd $srcdir
msg2 'Get our batch agreement hash of PUEL of Oracle Extension Pack'
[[ -d shrunk ]] || mkdir shrunk
@ -178,63 +174,64 @@ package_virtualbox() {
'libvpx' 'libxml2' 'procps-ng' 'shared-mime-info' 'zlib'
'libxcursor' 'libxinerama' 'libx11' 'libxext' 'libxmu' 'libxt'
'VIRTUALBOX-HOST-MODULES')
optdepends=('qt5-x11extras: GUI support'
'vde2: Virtual Distributed Ethernet support'
optdepends=('vde2: Virtual Distributed Ethernet support'
'qt5-x11extras: GUI support'
'virtualbox-guest-iso: Guest Additions CD image'
'virtualbox-ext-vnc: VNC server support'
'virtualbox-sdk: Developer kit'
'net-tools: Host-only or bridged networking support')
'virtualbox-sdk: Developer kit')
backup=('etc/vbox/vbox.cfg')
replaces=('virtualbox-ose')
conflicts=('virtualbox-ose')
install=virtualbox.install
source "VirtualBox-$pkgver/env.sh"
cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
# binaries
install -dm755 "$pkgdir/usr/bin"
install -m755 VBox.sh "$pkgdir/usr/bin/VBox"
install -dm0755 "$pkgdir/usr/bin"
install -m0755 VBox.sh "$pkgdir/usr/bin/VBox"
for i in VBoxHeadless VBoxManage VBoxSDL VirtualBox vboxwebsrv VBoxBalloonCtrl; do
ln -sf VBox "$pkgdir/usr/bin/$i"
ln -sf VBox "$pkgdir/usr/bin/${i,,}"
done
install -m755 VBoxTunctl "$pkgdir/usr/bin"
install -m755 rdesktop-vrdp "$pkgdir/usr/bin"
install -m0755 VBoxTunctl "$pkgdir/usr/bin"
install -m0755 rdesktop-vrdp "$pkgdir/usr/bin"
# libraries
install -dm755 "$pkgdir/usr/lib/virtualbox"
install -m755 *.so "$pkgdir/usr/lib/virtualbox"
install -m644 *.rc *.r0 VBoxEFI*.fd "$pkgdir/usr/lib/virtualbox"
install -dm0755 "$pkgdir/usr/lib/virtualbox"
install -m0755 *.so "$pkgdir/usr/lib/virtualbox"
install -m0644 *.rc *.r0 VBoxEFI*.fd "$pkgdir/usr/lib/virtualbox"
## setuid root binaries
install -m4755 VBoxSDL VirtualBox VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl VBoxNetNAT -t "$pkgdir/usr/lib/virtualbox"
install -m4755 VBoxSDL VirtualBoxVM VBoxHeadless VBoxNetDHCP VBoxNetAdpCtl VBoxNetNAT -t "$pkgdir/usr/lib/virtualbox"
## other binaries
install -m755 VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL VBoxBalloonCtrl vboxwebsrv webtest -t "$pkgdir/usr/lib/virtualbox"
install -m0755 VirtualBox VBoxManage VBoxSVC VBoxExtPackHelperApp VBoxXPCOMIPCD VBoxTestOGL VBoxBalloonCtrl vboxwebsrv webtest -t "$pkgdir/usr/lib/virtualbox"
# components
install -dm755 "$pkgdir/usr/lib/virtualbox/components"
install -m755 components/* -t "$pkgdir/usr/lib/virtualbox/components"
install -dm0755 "$pkgdir/usr/lib/virtualbox/components"
install -m0755 components/* -t "$pkgdir/usr/lib/virtualbox/components"
# extensions packs
## as virtualbox install itself stuff in this directory, move it to /var and
## trick it with a symlink
## FIXME: trick is disabled for now
#install -dm755 "$pkgdir/var/lib/virtualbox/extensions"
#install -dm755 "$pkgdir/usr/share/virtualbox/extensions"
#install -dm0755 "$pkgdir/var/lib/virtualbox/extensions"
#install -dm0755 "$pkgdir/usr/share/virtualbox/extensions"
#ln -s ../../../var/lib/virtualbox/extensions "$pkgdir/usr/lib/virtualbox/ExtensionPacks"
install -dm755 "$pkgdir/usr/lib/virtualbox/ExtensionPacks"
install -dm0755 "$pkgdir/usr/lib/virtualbox/ExtensionPacks"
# languages
install -dm755 "$pkgdir/usr/share/virtualbox/nls"
install -m755 nls/*.qm -t "$pkgdir/usr/share/virtualbox/nls"
install -dm0755 "$pkgdir/usr/share/virtualbox/nls"
install -m0755 nls/*.qm -t "$pkgdir/usr/share/virtualbox/nls"
# rdesktop keymaps
install -dm755 "$pkgdir/usr/share/virtualbox/rdesktop-vrdp-keymaps"
install -m644 rdesktop-vrdp-keymaps/* "$pkgdir/usr/share/virtualbox/rdesktop-vrdp-keymaps"
install -dm0755 "$pkgdir/usr/share/virtualbox/rdesktop-vrdp-keymaps"
install -m0644 rdesktop-vrdp-keymaps/* "$pkgdir/usr/share/virtualbox/rdesktop-vrdp-keymaps"
# useless scripts
install -m755 VBoxCreateUSBNode.sh VBoxSysInfo.sh -t "$pkgdir/usr/share/virtualbox"
install -m0755 VBoxCreateUSBNode.sh VBoxSysInfo.sh -t "$pkgdir/usr/share/virtualbox"
# icons
install -Dm644 VBox.png "$pkgdir/usr/share/pixmaps/VBox.png"
install -Dm0644 VBox.png "$pkgdir/usr/share/pixmaps/VBox.png"
pushd icons >/dev/null
for i in *; do
@ -244,26 +241,26 @@ package_virtualbox() {
popd >/dev/null
#desktop
install -Dm644 virtualbox.desktop "$pkgdir/usr/share/applications/virtualbox.desktop"
install -Dm644 virtualbox.xml "$pkgdir/usr/share/mime/packages/virtualbox.xml"
install -Dm0644 virtualbox.desktop "$pkgdir/usr/share/applications/virtualbox.desktop"
install -Dm0644 virtualbox.xml "$pkgdir/usr/share/mime/packages/virtualbox.xml"
#install configuration
install -dm755 "$pkgdir/etc/vbox"
install -dm0755 "$pkgdir/etc/vbox"
echo 'INSTALL_DIR=/usr/lib/virtualbox' > "$pkgdir/etc/vbox/vbox.cfg"
# back to srcdir
cd "$srcdir"
#licence
install -Dm644 VirtualBox-$pkgver/COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm0644 VirtualBox-$pkgver/COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
# install systemd stuff
install -Dm644 60-vboxdrv.rules "$pkgdir/usr/lib/udev/rules.d/60-vboxdrv.rules"
install -Dm644 vboxweb.service "$pkgdir/usr/lib/systemd/system/vboxweb.service"
install -Dm644 virtualbox.sysusers "$pkgdir/usr/lib/sysusers.d/virtualbox.conf"
install -Dm0644 60-vboxdrv.rules "$pkgdir/usr/lib/udev/rules.d/60-vboxdrv.rules"
install -Dm0644 vboxweb.service "$pkgdir/usr/lib/systemd/system/vboxweb.service"
install -Dm0644 virtualbox.sysusers "$pkgdir/usr/lib/sysusers.d/virtualbox.conf"
# install module reloading shortcut (with a symlink with default helper)
install -Dm755 vboxreload "$pkgdir/usr/bin"
install -Dm0755 vboxreload "$pkgdir/usr/bin"
ln -s vboxreload "$pkgdir/usr/bin/rcvboxdrv"
}
@ -271,75 +268,78 @@ package_virtualbox-sdk() {
pkgdesc='VirtualBox Software Developer Kit (SDK)'
depends=('python3')
install -dm755 "$pkgdir/usr/lib/virtualbox"
install -dm0755 "$pkgdir/usr/lib/virtualbox"
source "VirtualBox-$pkgver/env.sh"
cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
install -Dm755 vboxshell.py "$pkgdir/usr/lib/virtualbox/vboxshell.py"
install -Dm0755 vboxshell.py "$pkgdir/usr/lib/virtualbox/vboxshell.py"
# python sdk
pushd sdk/installer
VBOX_INSTALL_PATH="/usr/lib/virtualbox" python3 vboxapisetup.py install --root "$pkgdir"
VBOX_INSTALL_PATH="/usr/lib/virtualbox" python vboxapisetup.py install --root "$pkgdir"
popd
rm -rf sdk/installer
cp -r sdk "$pkgdir/usr/lib/virtualbox"
rm -r "$pkgdir/usr/lib/virtualbox/sdk/installer"
# licence
install -Dm644 "$srcdir/VirtualBox-$pkgver/COPYING" \
install -Dm0644 "$srcdir/VirtualBox-$pkgver/COPYING" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
package_virtualbox-host-dkms() {
pkgdesc='VirtualBox Host kernel modules sources'
depends=('dkms' 'gcc' 'make')
replaces=('virtualbox-host-modules'
'virtualbox-host-modules-lts')
provides=('VIRTUALBOX-HOST-MODULES')
optdepends=('linux-headers: build modules against Chakra kernel'
'linux-lts-headers: build modules against LTS kernel')
install=virtualbox-host-dkms.install
install -dm755 "$pkgdir/usr/src"
install -dm0755 "$pkgdir/usr/src"
source "VirtualBox-$pkgver/env.sh"
cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin"
cp -r src "$pkgdir/usr/src/vboxhost-${pkgver}_OSE"
# licence
install -Dm644 "$srcdir/VirtualBox-$pkgver/COPYING" \
install -Dm0644 "$srcdir/VirtualBox-$pkgver/COPYING" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
# module loading
local _p="$pkgdir/usr/lib/modules-load.d/$pkgname.conf"
install -Dm644 /dev/null "$_p"
install -Dm0644 /dev/null "$_p"
printf "vboxdrv\nvboxpci\nvboxnetadp\nvboxnetflt\n" > "$_p"
# starting vbox 5.1, dkms.conf file was dropped
local _p="$pkgdir/usr/src/vboxhost-${pkgver}_OSE/dkms.conf"
install -Dm644 "$srcdir/$pkgname.conf" "$_p"
install -Dm0644 "$srcdir/$pkgname.conf" "$_p"
sed -i "s,@VERSION@,$pkgver," "$_p"
install -dm 755 "$pkgdir/var/lib/dkms/vboxhost/$pkgver"
install -dm0755 "$pkgdir/var/lib/dkms/vboxhost/$pkgver"
ln -s "/usr/src/vboxhost-${pkgver}_OSE/" "$pkgdir/var/lib/dkms/vboxhost/$pkgver/source"
sed -i -e "s/vboxver=.*/vboxver=${pkgver}/" "${startdir}/virtualbox-host-dkms.install"
}
package_virtualbox-guest-dkms() {
pkgdesc='VirtualBox Guest kernel modules sources'
depends=('dkms' 'gcc' 'make')
replaces=('virtualbox-guest-modules'
'virtualbox-guest-modules-lts')
provides=('VIRTUALBOX-GUEST-MODULES')
optdepends=('linux-headers: build modules against Chakra kernel'
'linux-lts-headers: build modules against LTS kernel')
install=virtualbox-guest-dkms.install
install -dm755 "$pkgdir/usr/src"
install -dm0755 "$pkgdir/usr/src"
source "VirtualBox-$pkgver/env.sh"
cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
cp -r src "$pkgdir/usr/src/vboxguest-${pkgver}_OSE"
# licence
install -Dm644 "$srcdir/VirtualBox-$pkgver/COPYING" \
install -Dm0644 "$srcdir/VirtualBox-$pkgver/COPYING" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
# module loading
local _p="$pkgdir/usr/lib/modules-load.d/$pkgname.conf"
install -Dm644 /dev/null "$_p"
install -Dm0644 /dev/null "$_p"
printf "vboxguest\nvboxsf\nvboxvideo\n" > "$_p"
# starting vbox 5.1, dkms.conf file was dropped
local _p="$pkgdir/usr/src/vboxguest-${pkgver}_OSE/dkms.conf"
install -Dm644 "$srcdir/$pkgname.conf" "$_p"
install -Dm0644 "$srcdir/$pkgname.conf" "$_p"
sed -i "s,@VERSION@,$pkgver," "$_p"
# vboxsf module for Linux 4.16 and later
@ -356,30 +356,30 @@ package_virtualbox-guest-utils() {
pkgdesc='VirtualBox Guest userspace utilities'
depends=('glibc' 'pam' 'libx11' 'libxcomposite'
'libxdamage' 'libxext' 'libxfixes' 'libxmu' 'libxt' 'xorg-xrandr'
'VIRTUALBOX-GUEST-MODULES' 'X-ABI-VIDEODRV_VERSION=24.0')
replaces=('virtualbox-guest-additions')
conflicts=('virtualbox-guest-additions' 'virtualbox-guest-utils-nox')
'VIRTUALBOX-GUEST-MODULES')
conflicts=('virtualbox-guest-utils-nox')
install=virtualbox-guest-utils.install
source "VirtualBox-$pkgver/env.sh"
pushd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
install -d "$pkgdir/usr/bin"
install -m755 VBoxClient VBoxControl VBoxService mount.vboxsf "$pkgdir/usr/bin"
install -m755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
install -m0755 VBoxClient VBoxControl VBoxService "$srcdir/mount.vboxsf" "$pkgdir/usr/bin"
install -Dm0755 mount.vboxsf "$pkgdir/usr/lib/virtualbox/mount.vboxsf"
install -m0755 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/98vboxadd-xclient \
"$pkgdir"/usr/bin/VBoxClient-all
install -m644 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/vboxclient.desktop \
install -m0644 -D "$srcdir"/VirtualBox-$pkgver/src/VBox/Additions/x11/Installer/vboxclient.desktop \
"$pkgdir"/etc/xdg/autostart/vboxclient.desktop
install -d "$pkgdir/usr/lib/xorg/modules/dri"
install -m755 VBoxOGL*.so "$pkgdir/usr/lib"
install -m0755 VBoxOGL*.so "$pkgdir/usr/lib"
ln -s /usr/lib/VBoxOGL.so "$pkgdir/usr/lib/xorg/modules/dri/vboxvideo_dri.so"
install -m755 -D pam_vbox.so "$pkgdir/usr/lib/security/pam_vbox.so"
install -m0755 -D pam_vbox.so "$pkgdir/usr/lib/security/pam_vbox.so"
popd
# systemd stuff
install -Dm644 60-vboxguest.rules "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules"
install -Dm644 vboxservice.service "$pkgdir/usr/lib/systemd/system/vboxservice.service"
install -Dm644 virtualbox-guest-utils.sysusers "$pkgdir/usr/lib/sysusers.d/virtualbox-guest-utils.conf"
install -Dm0644 60-vboxguest.rules "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules"
install -Dm0644 vboxservice.service "$pkgdir/usr/lib/systemd/system/vboxservice.service"
install -Dm0644 virtualbox-guest-utils.sysusers "$pkgdir/usr/lib/sysusers.d/virtualbox-guest-utils.conf"
# licence
install -Dm644 VirtualBox-$pkgver/COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
install -Dm0644 VirtualBox-$pkgver/COPYING "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
package_virtualbox-guest-utils-nox() {
@ -391,15 +391,16 @@ package_virtualbox-guest-utils-nox() {
source "VirtualBox-$pkgver/env.sh"
pushd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/bin/additions"
install -d "$pkgdir/usr/bin"
install -m755 VBoxControl VBoxService mount.vboxsf "$pkgdir/usr/bin"
install -m755 -D pam_vbox.so "$pkgdir/usr/lib/security/pam_vbox.so"
install -m0755 VBoxControl VBoxService "$srcdir/mount.vboxsf" "$pkgdir/usr/bin"
install -Dm0755 mount.vboxsf "$pkgdir/usr/lib/virtualbox/mount.vboxsf"
install -m0755 -D pam_vbox.so "$pkgdir/usr/lib/security/pam_vbox.so"
popd
# systemd stuff
install -Dm644 60-vboxguest.rules "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules"
install -Dm644 vboxservice-nox.service "$pkgdir/usr/lib/systemd/system/vboxservice.service"
install -Dm644 virtualbox-guest-utils.sysusers "$pkgdir/usr/lib/sysusers.d/virtualbox-guest-utils.conf"
install -Dm0644 60-vboxguest.rules "$pkgdir/usr/lib/udev/rules.d/60-vboxguest.rules"
install -Dm0644 vboxservice-nox.service "$pkgdir/usr/lib/systemd/system/vboxservice.service"
install -Dm0644 virtualbox-guest-utils.sysusers "$pkgdir/usr/lib/sysusers.d/virtualbox-guest-utils.conf"
# licence
install -Dm644 "$srcdir/VirtualBox-$pkgver/COPYING" \
install -Dm0644 "$srcdir/VirtualBox-$pkgver/COPYING" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
@ -421,9 +422,9 @@ package_virtualbox-ext-vnc() {
source "VirtualBox-$pkgver/env.sh"
cd "VirtualBox-$pkgver/out/linux.$BUILD_PLATFORM_ARCH/release/packages"
install -Dm644 VNC-*.vbox-extpack "$pkgdir/usr/share/virtualbox/extensions/VNC-${pkgver}.vbox-extpack"
install -Dm0644 VNC-*.vbox-extpack "$pkgdir/usr/share/virtualbox/extensions/VNC-${pkgver}.vbox-extpack"
# licence
install -Dm644 "$srcdir/VirtualBox-$pkgver/COPYING" \
install -Dm0644 "$srcdir/VirtualBox-$pkgver/COPYING" \
"$pkgdir/usr/share/licenses/$pkgname/LICENSE"
}
@ -434,7 +435,9 @@ package_virtualbox-ext-oracle() {
depends=("virtualbox")
options=('emptydirs')
install=${pkgname}.install
install -dm755 ${pkgdir}/usr/share/virtualbox/extensions
install -Dm0644 ${srcdir}/shrunk/ExtPack-license.txt "${pkgdir}/usr/share/licenses/${pkgname}/PUEL"
}
# vim:set ts=4 sw=4 et: