File virtualbox.spec of Package virtualbox52

#
# spec file for package virtualbox
#
# Copyright (c) 2015 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

%define do_guest_x11 0
%define _vbox_instdir  %{_libexecdir}/virtualbox
%define _udevrulesdir %{_libexecdir}/udev/rules.d

Name:           virtualbox
Version:        5.2.44
Release:        19zh
Summary:        x86/x86_64 Emulator
License:        GPL-2.0+
Group:          System/Emulators/PC
Url:            http://www.virtualbox.org/
#
Source0:        https://download.virtualbox.org/virtualbox/%{version}/VirtualBox-%{version}.tar.bz2
Source2:        %{name}-60-vboxdrv.rules
Source3:        %{name}-60-vboxguest.rules
Source4:        %{name}-default.virtualbox
Source5:        virtualbox-permissions-d
Source9:        %{name}-wrapper.sh
Source10:       %{name}-LocalConfig.kmk
# init script to start virtual boxes during boot, to be configured via /etc/sysconfig/vbox bnc#582398
Source12:       %{name}-vboxes
Source13:       %{name}-sysconfig.vbox
Source98:       %{name}-rpmlintrc
#rework init scripts to fit suse needs
Patch1:         vbox-suse01-vboxdrv-scrpt.diff
Patch2:         vbox-suse02-vboxadd-scrpt.diff
#PATCH-FIX-OPENSUSE: Use system X libraries and do not build local things
Patch4:         vbox-suse03-sys-x-old.diff
Patch5:         vbox-suse03-sys-x-new.diff
#fix failed linking process during build - this patch is just quick workaround
Patch10:        vbox-suse04-gsoapssl-deps.diff
#disable update in vbox gui
Patch103:       vbox-suse06-disable-upd.diff
#use pie/fPIE for setuid binaries (bnc#743143)
Patch104:       vbox-suse07-fpie.diff
# Patch to build with gnu sed correctly
Patch107:       vbox-suse08-sed-params.diff
# Patch to use snprintf correcty and not overflow dst buffer
Patch108:       vbox-suse09-prntf-buff-overflow.diff
# Patch to fix QPainter* includes
Patch110:       vbox-upd01-fix-qpainter.diff
# Patch to fix Qt suid error
Patch111:       vbox-upd02-qt-suid.diff
# Patch to fix build script mistake resulting in runpath removed.
Patch112:       vbox-upd03-fix-runpath.diff
# Patch to fix modal dialogs' focus problem with newer KDE.
Patch113:       vbox-upd04-fix-qt-focus.diff
# Fix older Qt5 missing some stuff.
Patch114:       vbox-upd05-fix-old-qt.diff
# Backport of some later non-invasive fixes and updates.
Patch115:       vbox-upd06-misc-fixes.diff
# Fix frequent guest bsods on host kernel >~ 5.17
Patch116:       vbox-upd07-fix-fpu-crpt.diff
# Backport of compatability with later linux kernels.
Patch117:       vbox-upd08-no-vm_area.diff
# Fix frequent guest bsods on Intel gen 10+ and host kernel >= 5.8
Patch118:       vbox-upd09-splitlock-madness.diff
# Optional patch for host linux kernel (to avoid the no-vm_area patch)
Patch200:       krnl_5_15.diff

BuildRequires:  LibVNCServer-devel
BuildRequires:  SDL-devel
BuildRequires:  acpica
BuildRequires:  alsa-devel
BuildRequires:  bin86
BuildRequires:  boost-devel
BuildRequires:  dev86
BuildRequires:  device-mapper-devel
BuildRequires:  dmidecode
BuildRequires:  e2fsprogs-devel
BuildRequires:  fdupes
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  glibc-devel-static
BuildRequires:  gsoap-devel
BuildRequires:  kbuild >= 0.1.9998svn2689
BuildRequires:  libcap-devel
BuildRequires:  libcurl-devel
BuildRequires:  libgsoap-devel
BuildRequires:  libidl-devel
BuildRequires:  libopenssl-devel
BuildRequires:  libQt5Core-devel
BuildRequires:  libQt5Gui-devel
BuildRequires:  libQt5Widgets-devel
BuildRequires:  libQt5OpenGL-devel
BuildRequires:  libqt5-qtx11extras-devel
BuildRequires:  libQt5PrintSupport-devel
BuildRequires:  libqt5-linguist
BuildRequires:  libvpx-devel
BuildRequires:  libopus-devel
BuildRequires:  libpng12-devel
BuildRequires:  libpng12-compat-devel
BuildRequires:  libxslt-devel
BuildRequires:  module-init-tools
BuildRequires:  pam-devel
BuildRequires:  pulseaudio-devel
BuildRequires:  python-devel
BuildRequires:  quilt
BuildRequires:  sed
BuildRequires:  update-desktop-files
BuildRequires:  which
BuildRequires:  xorg-x11
BuildRequires:  xorg-x11-server
BuildRequires:  xorg-x11-server-sdk
BuildRequires:  libXdamage-devel
BuildRequires:  libXcomposite-devel
BuildRequires:  libXext-devel
BuildRequires:  libXfixes-devel
BuildRequires:  libXcursor-devel
BuildRequires:  libXinerama-devel
BuildRequires:  libXrandr-devel
BuildRequires:  yasm
BuildRequires:  chrpath
BuildRequires:  zlib-devel-static
BuildRequires:  pkgconfig(fontsproto)
BuildRequires:  pkgconfig(randrproto)
BuildRequires:  pkgconfig(renderproto)
BuildRequires:  pkgconfig(resourceproto)
BuildRequires:  pkgconfig(scrnsaverproto)
BuildRequires:  pkgconfig(udev)
BuildRequires:  pkgconfig(x11)
BuildRequires:  pkgconfig(xau)
BuildRequires:  pkgconfig(xcomposite)
BuildRequires:  pkgconfig(xdmcp)
BuildRequires:  pkgconfig(xext)
BuildRequires:  pkgconfig(xextproto)
BuildRequires:  pkgconfig(xf86driproto)
BuildRequires:  pkgconfig(xfixes)
BuildRequires:  pkgconfig(xineramaproto)
BuildRequires:  pkgconfig(xproto)
Requires(post): sysvinit(syslog)
#Requires(post): /usr/sbin/setcap
Requires(post): libcap-progs
Requires(pre):  %fillup_prereq
Requires(pre):  permissions
Requires(pre):  pwdutils
Recommends:     %{name}-gui = %{version}
#rename from ose version:
Provides:       %{name}-ose = %{version}
Obsoletes:      %{name}-ose < %{version}
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
ExclusiveArch:  %ix86 x86_64
%if 0%{?suse_version} == 1315
ExcludeArch:    %ix86
%endif
%ifarch amd64 x86_64 ia32e em64t
BuildRequires:  gcc-32bit
BuildRequires:  gcc-c++-32bit
BuildRequires:  xorg-x11-libX11-devel-32bit
BuildRequires:  xorg-x11-libXext-devel-32bit
BuildRequires:  xorg-x11-libXmu-devel-32bit
BuildRequires:  xorg-x11-libXt-devel-32bit
%endif

%debug_package

%description
VirtualBox is an extremely feature rich, high performance product
for enterprise customers, it is also the only professional solution
that is freely available as Open Source Software under the terms of the
GNU Public License (GPL).
##########################################

%package qt
Summary:        GUI part for %{name}
Group:          System/Emulators/PC
Requires:       %{name} = %{version}
#Requires(post): /usr/sbin/setcap
Requires(post): libcap-progs
Requires(pre):  permissions
Provides:       %{name}-gui = %{version}
#this is needed during update to trigger installing qt subpackage
#http://en.opensuse.org/openSUSE:Upgrade_dependencies_explanation#Splitting_and_Merging
Provides:       %{name}-ose:%{_libexecdir}/virtualbox/VirtualBox.so
#rename from "ose" version:
Provides:       %{name}-ose-qt = %{version}
Obsoletes:      %{name}-ose-qt < %{version}

%description qt
This is a Qt-based GUI part for %{name}.
#########################################

%if 0%{?do_guest_x11}
%package guest-x11
Summary:        VirtualBox X11 drivers for mouse and video
Group:          System/X11/Servers/XF86_4
Requires:       %{name}-guest-kmp = %{version}
Supplements:    modalias(xorg-x11-server:pci:v000080EEd0000BEEFsv*sd*bc*sc*i*)
#rename from xorg-x11-driver-virtualbox-ose:
Provides:       xorg-x11-driver-virtualbox-ose = %{version}
Obsoletes:      xorg-x11-driver-virtualbox-ose < %{version}

%description guest-x11
VirtualBox
This package contains X11 guest utilities and X11 guest mouse and video drivers
###########################################
%endif

%package guest-tools
Summary:        VirtualBox guest tools
Group:          System/Emulators/PC
Requires:       %{name}-guest-kmp = %{version}
Requires:       insserv-compat
Supplements:    modalias(pci:v000080EEd0000BEEFsv*sd*bc*sc*i*)
#rename from "ose" version:
Provides:       %{name}-ose-guest-tools = %{version}
Obsoletes:      %{name}-ose-guest-tools < %{version}

%description guest-tools
VirtualBox guest addition tools.
###########################################

%package -n python-%{name}
Summary:        Python bindings for %{name}
Group:          Development/Libraries/Python
Requires:       %{name} = %{version}
#rename from "ose" version:
Provides:       python-%{name}-ose = %{version}
Obsoletes:      python-%{name}-ose < %{version}

%description -n python-%{name}
Python XPCOM bindings to %{name}. Used e.g. by vboxgtk package.
###########################################

%package devel
Summary:        Devel files for %{name}
Group:          Development/Libraries/Other
Requires:       %{name} = %{version}
Requires:       python-%{name} = %{version}
#rename from "ose" version:
Provides:       %{name}-ose-devel = %{version}
Obsoletes:      %{name}-ose-devel < %{version}

%description devel
Development file for %{name}
###########################################

%package host-source
Summary:        Source files for %{name} kernel modules
Group:          Development/Sources
Requires:       %{name} = %{version}
Requires:       gcc
Requires:       make
BuildArch:      noarch

%description host-source
Source files for %{name} kernel modules
These can be built for custom kernels using
cd %{_prefix}/src/kernel-modules/virtualbox ; make ; make install
###########################################

%package guest-desktop-icons
Summary:        Icons for guest desktop files
Group:          System/Emulators/PC
Requires:       %{name} = %{version}
Recommends:     %{name}-gui = %{version}
BuildArch:      noarch

%description guest-desktop-icons
This package contains icons for guest desktop files that were created on the desktop.
###########################################

%prep
%setup -q -n VirtualBox-%{version}
%patch1 -p1
%patch2 -p1

%if 0%{?suse_version} < 1500
%else
%patch5 -p1
%endif

%patch10 -p1
%patch103 -p1
%patch104 -p1
%patch107 -p1
%patch108 -p1
%patch110 -p1
%patch111 -p1
%patch112 -p1

%if 0%{?suse_version} < 1500
%patch114 -p1
%else
%patch113 -p1
%endif

%patch115 -p1
%patch116 -p1
%patch117 -p1
%patch118 -p1
#copy kbuild config
cp %{SOURCE10} LocalConfig.kmk
#
##########################
####workaround kmk_sed --v
#instead of kmk_sed use /usr/bin/sed because of bug http://svn.netlabs.org/kbuild/ticket/112,
#but we have to create wrapper which will handle --append and --outpout options which are not provided by /usr/bin/sed
cat >> kmk_sed <<EOF
#!/bin/bash
while [ "\$#" != "0" ]; do
	pass=\${pass}" \$1"
	[ "\$1" == "-e" ] && shift && pass=\${pass}" '\$1'"
	shift
done
eval "sed \$(echo "\$pass" | sed -e "s/--output=/>/g;s/--append=/>/g;s/--output/>/g;s/--append/>>/g");"
EOF
chmod +x ./kmk_sed
echo "SED = $RPM_BUILD_DIR/VirtualBox-%{version}/kmk_sed"  >> LocalConfig.kmk
####workaround kmk_sed --^
##########################
#

%build
#ensure we dont ever use them
rm -rf src/libs/{libpng-*,libxml2-*,libxslt-*,zlib-*,boost-*}

#	--disable-kmods		don't build Linux kernel modules -  but use SUSE specific way see few lines under
#	--nofatal		try to avoid build fail caused by missing makeself package
# NOT an autoconf configure macro
./configure \
    --disable-hardening \
    --ose \
    --enable-vnc \
    --enable-vde \
    --disable-kmods \
    --with-linux="/usr" \
    --disable-java \
    --disable-docs \
    --nofatal \

# configure actually warns we should source env.sh (which seems like it could influence the build...)
source ./env.sh

#
#  	VBOX_PATH_PACKAGE_DOCS set propper path for link to pdf in .desktop file
# 	VBOX_WITH_REGISTRATION_REQUEST= VBOX_WITH_UPDATE_REQUEST= just disable some functionality in gui
echo "build basic parts"
%{_bindir}/kmk %{?_smp_mflags} \
    VBOX_GCC_WERR= \
    KBUILD_VERBOSE=2 \
#    VBOX_USE_SYSTEM_XORG_HEADERS=1 \
#    VBOX_USE_SYSTEM_GL_HEADERS=1 \
    VBOX_WITH_REGISTRATION_REQUEST= VBOX_WITH_UPDATE_REQUEST= \
    VBOX_WITH_RUNPATH=/usr/lib/virtualbox \
    TOOL_YASM_AS=yasm \
#    VBOX_BUILD_PUBLISHER=_SUSE \
    TOOL_GCC3_CFLAGS="%{optflags}" TOOL_GCC3_CXXFLAGS="%{optflags}" \
    VBOX_GCC_OPT="%{optflags}"

%install
#################################
echo "create directory structure"
#################################
install -d -m 755 %{buildroot}/sbin
install -d -m 755 %{buildroot}%{_bindir}
install -d -m 755 %{buildroot}%{_sbindir}
install -d -m 755 %{buildroot}%{_datadir}/virtualbox/nls
install -d -m 755 %{buildroot}%{_datadir}/pixmaps
install -d -m 755 %{buildroot}%{_datadir}/applications
install -d -m 755 %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
install -d -m 755 %{buildroot}%{_vbox_instdir}/components
install -d -m 755 %{buildroot}%{_libdir}/dri
install -d -m 755 %{buildroot}%{_libdir}/xorg/modules/drivers
install -d -m 755 %{buildroot}%{_libdir}/xorg/modules/input
install -d -m 755 %{buildroot}%{_sysconfdir}/default
install -d -m 755 %{buildroot}%{_sysconfdir}/init.d
install -d -m 755 %{buildroot}%{_sysconfdir}/vbox
install -d -m 755 %{buildroot}%{_udevrulesdir}
install -d -m 755 %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d

###########################################
echo "entering guest-tools install section"
###########################################
install -m 755 out/linux.*/release/bin/additions/VBoxControl %{buildroot}%{_bindir}/VBoxControl
install -m 755 out/linux.*/release/bin/additions/VBoxService %{buildroot}%{_sbindir}/VBoxService
install -m 755 out/linux.*/release/bin/additions/mount.vboxsf %{buildroot}/sbin/mount.vboxsf
install -m 744 src/VBox/Additions/linux/installer/vboxadd.sh %{buildroot}%{_sysconfdir}/init.d/vboxadd
install -m 744 src/VBox/Additions/linux/installer/vboxadd-service.sh %{buildroot}%{_sysconfdir}/init.d/vboxadd-service
ln -s %{_sysconfdir}/init.d/vboxadd %{buildroot}%{_sbindir}/rcvboxadd
ln -s %{_sysconfdir}/init.d/vboxadd-service %{buildroot}%{_sbindir}/rcvboxadd-service
# udev rule for guest (virtualbox-guest-tools)
install -m 644 %{SOURCE3}			%{buildroot}%{_udevrulesdir}/60-vboxguest.rules
# /media is used for auto-mounting of shared folders
%if 0%{?suse_version} > 1310
install -d 755 %{buildroot}/media
%endif
#
##############################################################
echo "entering guest-x11 install section"
##############################################################
%if 0%{?do_guest_x11}
pushd out/linux.*/release/bin/additions/
#VBoxClient daemon (support for clipboard,autoresize,seamless windows)
install -m 755 VBoxClient	%{buildroot}%{_bindir}
# xorg drivers for video
popd
# VBoxOGL* libs for guest-x11 subpackage
install -m 644 out/linux.*/release/bin/additions/VBoxOGL*.so \
						%{buildroot}%{_libdir}
# make link for dri lib
ln -s %{_libdir}/VBoxOGL.so			%{buildroot}%{_libdir}/dri/vboxvideo_dri.so
# install init script which start VBoxClient daemon (support for clipboard,autoresize,seamless windows)
install -m 755 src/VBox/Additions/x11/Installer/98vboxadd-xclient %{buildroot}%{_sysconfdir}/X11/xinit/xinitrc.d/vboxadd-xclient.sh
%endif
##############################################
echo "entering virtualbox(-qt) install section"
##############################################
pushd out/linux.*/release/bin
install -m 755 VBoxManage 			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxHeadless 			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxSDL 				%{buildroot}%{_vbox_instdir}
install -m 755 VBoxTunctl 			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxNetNAT			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxAutostart			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxVolInfo			%{buildroot}%{_vbox_instdir}
install -m 755 vboxshell.py			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxBalloonCtrl			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxDTrace			%{buildroot}%{_vbox_instdir}
# create links to vbox tools in PATH - they could be usefull for controlling vbox from command line
ln -s %{_vbox_instdir}/VBoxManage		%{buildroot}%{_bindir}/VBoxManage
ln -s %{_vbox_instdir}/VBoxHeadless 		%{buildroot}%{_bindir}/VBoxHeadless
ln -s %{_vbox_instdir}/VBoxSDL			%{buildroot}%{_bindir}/VBoxSDL
ln -s %{_vbox_instdir}/VBoxTunctl		%{buildroot}%{_bindir}/VBoxTunctl
install -m 755 VBoxSVC 				%{buildroot}%{_vbox_instdir}
install -m 755 VBoxXPCOMIPCD 			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxExtPackHelperApp		%{buildroot}%{_vbox_instdir}
install -m 755 VBoxTestOGL			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxNetDHCP			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxNetAdpCtl			%{buildroot}%{_vbox_instdir}
install -m 755 VirtualBox			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxEFI*.fd			%{buildroot}%{_vbox_instdir}
install -m 755 VBoxSysInfo.sh			%{buildroot}%{_vbox_instdir}
install -m 644 *.so		 		%{buildroot}%{_vbox_instdir}
install -m 644 *.rc 				%{buildroot}%{_vbox_instdir}
install -m 644 *.r0 				%{buildroot}%{_vbox_instdir}
install -m 644 components/*			%{buildroot}%{_vbox_instdir}/components/
# install languages
install -m 644 nls/*				%{buildroot}%{_datadir}/virtualbox/nls/
# install kmp src
mkdir -p %{buildroot}%{_usrsrc}/kernel-modules
cp -a src %{buildroot}%{_usrsrc}/kernel-modules/virtualbox
popd

# install desktop file
install -m 644 out/linux.*/release/bin/virtualbox.desktop %{buildroot}%{_datadir}/applications/%{name}.desktop
%suse_update_desktop_file			%{buildroot}%{_datadir}/applications/%{name}.desktop 'System Emulator'

# create a menu entry
install -m 644 out/linux.*/release/bin/VBox.png %{buildroot}%{_datadir}/pixmaps/virtualbox.png
# install udev rule for host (virtualbox)
install -m 644 %{SOURCE2}			%{buildroot}%{_udevrulesdir}/60-vboxdrv.rules
# install config with session shutdown defs
install -m 644 %{SOURCE4}			%{buildroot}%{_sysconfdir}/default/virtualbox
#install wrapper script
install -m 644 %{SOURCE9}			%{buildroot}%{_bindir}/VirtualBox

# modify and install the vboxdrv init script
install -m 744 src/VBox/Installer/linux/vboxdrv.sh %{buildroot}%{_sysconfdir}/init.d/vboxdrv
ln -s %{_sysconfdir}/init.d/vboxdrv %{buildroot}%{_sbindir}/rcvboxdrv
# Init script to start virtual boxes during boot
install -m 755 %{SOURCE12} %{buildroot}%{_sysconfdir}/init.d/vboxes
ln -s %{_sysconfdir}/init.d/vboxes %{buildroot}%{_sbindir}/rcvboxes
# sysconfig file intended for vboxes script
mkdir %{buildroot}%{_fillupdir}
install -m 644 %{SOURCE13} %{buildroot}%{_fillupdir}/sysconfig.virtualbox

# config file for vboxdrv script and vboxweb
install -d -m 755 %{buildroot}%{_sysconfdir}/vbox
echo -e "#settings for vboxwebsrn\nVBOXWEB_USER=root" > %{buildroot}%{_sysconfdir}/vbox/vbox.cfg
# install udev helper script for creating usb devices
install -m 0755 -D src/VBox/Installer/linux/VBoxCreateUSBNode.sh %{buildroot}%{_udevrulesdir}/../VBoxCreateUSBNode.sh
######################################################
echo "entrering python-virtualbox install section"
######################################################
pushd out/linux.*/release/bin/sdk/installer
VBOX_INSTALL_PATH=%{_vbox_instdir} python vboxapisetup.py install --prefix=%{_prefix} --root=%{buildroot} --record-rpm=%{_tmppath}/SITE_FILES
popd
install -d -m 755 %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
cp -r out/linux.*/release/bin/sdk/bindings/xpcom/python %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
%py_compile %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom/python

######################################################
echo "entering virtualbox-devel install section"
######################################################
cp -r out/linux.*/release/bin/sdk/bindings/auth %{buildroot}%{_vbox_instdir}/sdk/bindings

pushd out/linux.*/release/bin/sdk/bindings/xpcom
cp -r include %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
cp -r idl %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
cp -r samples %{buildroot}%{_vbox_instdir}/sdk/bindings/xpcom
popd

cp out/linux.*/release/bin/sdk/bindings/VirtualBox.xidl %{buildroot}%{_vbox_instdir}/sdk/bindings

######################################################
echo "entering virtualbox-guest-desktop-icons install section"
######################################################
install -d -m 755	%{buildroot}%{_datadir}/pixmaps/virtalbox

pushd src/VBox/Frontends/VirtualBox/images
for icon in os_*.png; do
  install -m 644 "$icon" %{buildroot}%{_datadir}/pixmaps/virtalbox/"$icon";
done
popd

#
######################################################
# run fdupes
######################################################
#run fdupes because we lost link for virtualbox/components directory
%fdupes %{buildroot}/%{_vbox_instdir}
#also some translation files are duplicated
%fdupes %{buildroot}/%{_datadir}/virtualbox/nls
#also some icon files are duplicated
%fdupes %{buildroot}/%{_datadir}/pixmaps/virtalbox

#
#
######################################################
# scriptlets - pre
######################################################

%pre
getent group vboxusers >/dev/null || groupadd -r vboxusers

%pre guest-tools
# Add groups for seamless mode and shared folders:
getent group vboxguest >/dev/null || groupadd -r vboxguest
getent group vboxsf >/dev/null || groupadd -r vboxsf

#######################################################
# scriptlets - post
#######################################################

%post
/sbin/ldconfig
/usr/sbin/setcap cap_net_admin,cap_net_raw+ep /usr/lib/virtualbox/VBoxHeadless
/usr/sbin/setcap cap_net_admin,cap_net_raw+ep /usr/lib/virtualbox/VBoxNetDHCP
/usr/sbin/setcap cap_net_admin,cap_net_raw+ep /usr/lib/virtualbox/VBoxNetAdpCtl
/usr/sbin/setcap cap_net_admin,cap_net_raw+ep /usr/lib/virtualbox/VBoxNetNAT
/usr/sbin/setcap cap_net_admin,cap_net_raw+ep /usr/lib/virtualbox/VBoxSDL

%post qt
/usr/sbin/setcap cap_net_admin,cap_net_raw+ep /usr/lib/virtualbox/VirtualBox

%post guest-tools
# % # fillup_and_insserv -f -y vboxadd
# % # fillup_and_insserv -f -y vboxadd-service

%preun
# ##stop_on_removal vboxdrv
exit 0

%preun guest-tools
# % # stop_on_removal vboxadd-service
# % # stop_on_removal vboxadd
exit 0

##preun websrv
# ##stop_on_removal vboxweb-service
#exit 0

#######################################################
# scriptlets postun
#######################################################

%postun
/sbin/ldconfig

%postun guest-tools
# % # restart_on_update vboxadd
# % # restart_on_update vboxadd-service
# % # insserv_cleanup

#######################################################

%files
%defattr(-, root, root)
%{_bindir}/VBoxManage
%{_bindir}/VBoxHeadless
%{_bindir}/VBoxSDL
%{_bindir}/VBoxTunctl
%dir %{_vbox_instdir}
%{_vbox_instdir}/VBoxAutostart
%{_vbox_instdir}/VBoxBalloonCtrl
%{_vbox_instdir}/VBoxDTrace
%{_vbox_instdir}/VBoxNetNAT
%{_vbox_instdir}/VBoxVolInfo
%{_vbox_instdir}/vboxshell.py
%{_vbox_instdir}/VBoxSysInfo.sh
%{_vbox_instdir}/VBoxDD2.so
%{_vbox_instdir}/VBoxDD.so
%{_vbox_instdir}/VBoxDDU.so
%{_vbox_instdir}/VBoxGuestControlSvc.so
%{_vbox_instdir}/VBoxGuestPropSvc.so
#%#{_vbox_instdir}/VBoxHeadless.so
%{_vbox_instdir}/VBoxKeyboard.so
#%#{_vbox_instdir}/VBoxNetDHCP.so
#%#{_vbox_instdir}/VBoxNetNAT.so
#%#{_vbox_instdir}/VBoxOGLhostcrutil.so
#%#{_vbox_instdir}/VBoxOGLhosterrorspu.so
#%#{_vbox_instdir}/VBoxOGLrenderspu.so
%{_vbox_instdir}/VBoxREM*.so
%{_vbox_instdir}/VBoxRT.so
#%#{_vbox_instdir}/VBoxSDL.so
%{_vbox_instdir}/VBoxSharedClipboard.so
%{_vbox_instdir}/VBoxSharedCrOpenGL.so
%{_vbox_instdir}/VBoxSharedFolders.so
%{_vbox_instdir}/VBoxVMM.so
%{_vbox_instdir}/VBoxXPCOMC.so
%{_vbox_instdir}/VBoxXPCOM.so
#%#{_vbox_instdir}/VBoxDD2RC.rc
%{_vbox_instdir}/VBoxDDRC.rc
%{_vbox_instdir}/VMMRC.rc
%{_vbox_instdir}/VBox*.r0
%{_vbox_instdir}/VMMR0.r0
%{_vbox_instdir}/VBoxEFI*.fd
%{_vbox_instdir}/VBoxManage
%{_vbox_instdir}/VBoxSVC
%{_vbox_instdir}/VBoxTunctl
%{_vbox_instdir}/VBoxXPCOMIPCD
%{_vbox_instdir}/VBoxExtPackHelperApp
%{_vbox_instdir}/DbgPlugInDiggers.so
%{_vbox_instdir}/VBoxAuth.so
%{_vbox_instdir}/VBoxAuthSimple.so
%{_vbox_instdir}/VBoxDbg.so
%{_vbox_instdir}/VBoxDragAndDropSvc.so
#%#{_vbox_instdir}/VBoxVMMPreload.so
#todo:double check - if this file should be assigned to the host side
%{_vbox_instdir}/VBoxHostChannel.so
%dir %{_vbox_instdir}/components
%{_vbox_instdir}/components/*.so
%{_vbox_instdir}/components/*.xpt
%dir %{_datadir}/virtualbox
%config %{_sysconfdir}/default/virtualbox
%{_udevrulesdir}/60-vboxdrv.rules
%config %{_sysconfdir}/init.d/vboxdrv
%dir %{_sysconfdir}/vbox
%config %{_sysconfdir}/vbox/vbox.cfg
%{_sysconfdir}/init.d/vboxes
%{_fillupdir}/sysconfig.virtualbox
%{_sbindir}/rcvboxes
%{_sbindir}/rcvboxdrv
%{_udevrulesdir}/../VBoxCreateUSBNode.sh
%attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxNetDHCP
%attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxNetNAT
%attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxNetAdpCtl
%attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxHeadless
%attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxSDL

%files qt
%defattr(-, root, root)
#%#attr(0755,root,vboxusers) %#{_vbox_instdir}/VBoxPermissionMessage
%attr(0755,root,vboxusers) %{_vbox_instdir}/VirtualBox
#wrapper script is in bindir
%attr(0755,root,root) %{_bindir}/VirtualBox
#ldd shows libQt* dependency
%{_vbox_instdir}/VBoxTestOGL
#qm's translations
%{_datadir}/virtualbox/nls
#%#{_vbox_instdir}/VirtualBox.so
%{_datadir}/pixmaps/virtualbox.png
%{_datadir}/applications/%{name}.desktop

%if 0%{?do_guest_x11}
%files guest-x11
%defattr(-, root, root)
%dir %{_libdir}/xorg/modules/drivers
%dir %{_libdir}/xorg/modules/input
%dir %{_libdir}/dri/
%{_bindir}/VBoxClient
%{_libdir}/VBoxOGL*.so
#%#{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
%{_libdir}/dri/vboxvideo_dri.so
%{_sysconfdir}/X11/xinit/xinitrc.d/vboxadd-xclient.sh
%endif

%files guest-tools
%defattr(-, root, root)
%{_bindir}/VBoxControl
%{_sbindir}/VBoxService
/sbin/mount.vboxsf
%{_udevrulesdir}/60-vboxguest.rules
%config %{_sysconfdir}/init.d/vboxadd
%config %{_sysconfdir}/init.d/vboxadd-service
%{_sbindir}/rcvboxadd
%{_sbindir}/rcvboxadd-service
%if 0%{?suse_version} > 1310
%dir /media
%endif

%files -n python-%{name} -f %{_tmppath}/SITE_FILES
%defattr(-, root, root)
%dir %{_vbox_instdir}/sdk
%dir %{_vbox_instdir}/sdk/bindings
%dir %{_vbox_instdir}/sdk/bindings/xpcom
%{_vbox_instdir}/sdk/bindings/xpcom/python
%attr(0755, root, root) %{_vbox_instdir}/VBoxPython*.so

%files devel
%defattr(-,root, root)
%dir %{_vbox_instdir}/sdk
%dir %{_vbox_instdir}/sdk/bindings
%dir %{_vbox_instdir}/sdk/bindings/xpcom
%{_vbox_instdir}/sdk/bindings/VirtualBox.xidl
%{_vbox_instdir}/sdk/bindings/xpcom/idl
%{_vbox_instdir}/sdk/bindings/xpcom/include
%{_vbox_instdir}/sdk/bindings/xpcom/samples
%{_vbox_instdir}/sdk/bindings/auth

%files host-source
%defattr(-,root, root)
%dir %{_usrsrc}/kernel-modules
%{_usrsrc}/kernel-modules/virtualbox

%files guest-desktop-icons
%defattr(-,root, root)
%dir %{_datadir}/pixmaps/virtalbox
%{_datadir}/pixmaps/virtalbox/*.png

%changelog
* Tue Mar 21 2023 zhubr.2@gmail.com
- Update to 5.2.44 and various fixes.
* Tue Oct 20 2015 Larry.Finger@lwfinger.net
- Version bump to 5.0.8 (released 2015-10-20 by Oracle)
openSUSE Build Service is sponsored by