# TODO
# - java bindings
# - Package SDK.
-# - Package utils (and write initscripts ?) for Guest OS.
# - Check License of VBoxGuestAdditions_*.iso, it's probably not GPL v2.
# If so check if it is distributable.
-# - resolve mess with subpackages?
-# - addtions: iso (containing additions/*.iso)
-# - guest: to be installed to guests (deps on x11 drivers)
+# - guest x11 additions: currently incomplete/untested
# - enable VDE networking: --enable-vde
+# - initscripts for webservice
+# - install systemd vboxservice.service
#
# Conditional build:
%bcond_without doc # don't build the documentation
%bcond_without dist_kernel # without distribution kernel
%bcond_without kernel # don't build kernel module
%bcond_without userspace # don't build userspace package
-%bcond_with webservice # webservice (soap) support
+%bcond_with webservice # webservice (SOAP) support
+%bcond_without lightdm # lightdm greeter
%bcond_without verbose
%bcond_with force_userspace # force userspace build (useful if alt_kernel is set)
%define _enable_debug_packages 0
%endif
-%define rel 11
+%define rel 6
%define pname VirtualBox
Summary: VirtualBox - x86 hardware virtualizer
Summary(pl.UTF-8): VirtualBox - wirtualizator sprzętu x86
Name: %{pname}%{_alt_kernel}
-Version: 4.2.6
+Version: 4.2.16
Release: %{rel}
License: GPL v2
Group: Applications/Emulators
Source0: http://download.virtualbox.org/virtualbox/%{version}/%{pname}-%{version}.tar.bz2
-# Source0-md5: d680aeb3b4379b8281527aeb012b2df5
+# Source0-md5: c4a36e2099a317f4715cd3861cdae238
Source1: http://download.virtualbox.org/virtualbox/%{version}/VBoxGuestAdditions_%{version}.iso
-# Source1-md5: 53fc6c0e400e1e40d1896d35ba46a945
+# Source1-md5: 6074747feb9ae8b6eec365616347eef3
+Source2: vboxservice.init
Source3: %{pname}-vboxdrv.init
Source4: %{pname}-vboxguest.init
Source5: %{pname}-vboxnetflt.init
Patch3: %{pname}-dri.patch
Patch4: %{pname}-disable_build_NetBiosBin.patch
Patch5: xserver-1.12.patch
+Patch7: lightdm-greeter-glib-includes.patch
+Patch8: lightdm-greeter-g++-link.patch
# ubuntu patches
Patch10: 16-no-update.patch
Patch11: 18-system-xorg.patch
%{?with_doc:BuildRequires: docbook-dtd44-xml}
BuildRequires: gcc >= 5:3.2.3
%{?with_webservice:BuildRequires: gsoap-devel}
+BuildRequires: issue
BuildRequires: kBuild >= 0.1.9998-2
BuildRequires: libIDL-devel
BuildRequires: libcap-static
BuildRequires: libxml2-devel >= 2.6.26
BuildRequires: libxslt-devel >= 1.1.17
BuildRequires: libxslt-progs >= 1.1.17
+%{?with_lightdm:BuildRequires: lightdm-libs-qt-devel}
BuildRequires: makeself
BuildRequires: mkisofs
BuildRequires: pam-devel
BuildRequires: python-modules
BuildRequires: qt4-build >= 4.2.0
BuildRequires: qt4-linguist
-BuildRequires: rpmbuild(macros) >= 1.627
+BuildRequires: rpmbuild(macros) >= 1.664
BuildRequires: sed >= 4.0
%if %{with doc}
BuildRequires: texlive-fonts-bitstream
Requires(pre): /usr/sbin/groupadd
Requires: QtCore >= 4.7.0
Requires: desktop-file-utils
+Requires: fontconfig
+Requires: fonts-Type1-urw
Requires: libvncserver >= 0.9.9
+Requires: udev-core
Suggests: gxmessage
Provides: group(vbox)
+Obsoletes: VirtualBox-udev < 4.2.10-5
ExclusiveArch: %{ix86} %{x8664}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%endif
%define vbox_platform linux.%{vbox_arch}
%define outdir out/%{vbox_platform}/release/bin
-%define _sbindir /sbin
+%define objdir out/%{vbox_platform}/release/obj
# workaround buggy 'file' results:
#
# which lead to 'Stripping ... ELF shared libraries... (...)/nls/qt_ro.qm: File format not recognized'
%define _noautostrip .*%{_libdir}/%{name}/.*
+%define vbox_kernel_post(d:) \
+if [ -x /etc/rc.d/init.d/%{-d*} ]; then \
+ %{expand:%service %%{-d*} restart %%*} \
+else \
+ /sbin/rmmod %{-d*} || : \
+ /sbin/modprobe -s %{-d*} || : \
+fi \
+%{nil}
+
%description
Oracle VirtualBox is a general-purpose full virtualizer for x86
hardware. Targeted at server, desktop and embedded use, it is now the
%description doc
This package contains VirtualBox User Manual.
-%package udev
-Summary: udev rules for VirtualBox kernel modules
-Summary(pl.UTF-8): Reguły udev dla modułów jądra Linuksa dla VirtualBoksa
-Group: Base/Kernel
-Requires: udev-core
-
-%description udev
-udev rules for VirtualBox kernel modules.
-
-You should install this package in your Host OS and in Guest OS.
-
-%description udev -l pl.UTF-8
-Reguły udev dla modułów jądra Linuksa dla VirtualBoksa.
-
%package additions
Summary: VirtualBox Guest Additions
Group: Base
You should install this package in your Host OS.
%package guest
-Summary: VirtualBox Guest Additions
+Summary: VirtualBox Guest tools
Group: Base
-Requires: xorg-driver-input-vboxmouse = %{version}-%{release}
-Requires: xorg-driver-video-vboxvideo = %{version}-%{release}
-Suggests: kernel%{_alt_kernel}-misc-vboxsf = %{version}-%{rel}@%{_kernel_ver_str}
-Suggests: kernel%{_alt_kernel}-misc-vboxvideo = %{version}-%{rel}@%{_kernel_ver_str}
+Requires(post,preun): /sbin/chkconfig
+Requires: rc-scripts
+Suggests: kernel(vboxguest)
+Suggests: kernel(vboxsf)
+Suggests: pam-pam_vbox
%description guest
Tools that utilize kernel modules for supporting integration with the
-Host, including file sharing and tracking of mouse pointer movement
-and X.org X11 video and mouse driver.
+Host, including file sharing.
-You should install this package in your Guest OS.
+You should install this package in your Guest OS for base VirtualBox
+communication
+
+%package guest-x11
+Summary: VirtualBox Guest Additions
+Group: Base
+Requires: %{name}-guest = %{version}-%{release}
+Requires: xorg-driver-video-vboxvideo = %{version}-%{release}
+Suggests: kernel(vboxvideo)
+Obsoletes: xorg-driver-input-vboxmouse < %{version}-%{release}
+
+%description guest-x11
+Tools for X11 session that utilize kernel modules for supporting
+integration with the Host, like tracking of mouse pointer movement and
+X.org X11 video and mouse drivers
+
+You should install this package in your Guest OS for X11 session.
+
+%package webservice
+Summary: VirtualBox Web Service
+Group: Applications/Emulators
+Requires: %{name} = %{version}-%{release}
+
+%description webservice
+This package contains VirtualBox web service API daemon. It allows to
+control virtual machines via web interface.
+
+%package -n lightdm-greeter-vbox
+Summary: VirtualBox greeter for lightdm
+Group: Themes
+# NOTE: '#' in url is lost because rpm treats it as comment, even hacking with
+# macros doesn't help as rpmbuild takes final result to parse
+URL: http://www.virtualbox.org/manual/ch09.html#autologon_unix_lightdm
+Requires: kernel%{_alt_kernel}-misc-vboxguest
+Requires: lightdm >= 1.0.1
+Provides: lightdm-greeter
+
+%description -n lightdm-greeter-vbox
+VirtualBox greeter for LightDM.
%package -n pam-pam_vbox
Summary: PAM module to perform automated guest logons
PAM module (Pluggable Authentication Module) which can be used to
perform automated guest logons.
-%package -n xorg-driver-input-vboxmouse
-Summary: X.org mouse driver for VirtualBox guest OS
-Summary(pl.UTF-8): Sterownik myszy dla systemu gościa w VirtualBoksie
-Group: X11/Applications
-Requires: xorg-xserver-server >= 1.0.99.901
-Requires: xorg-xserver-server(xinput-abi) <= 18.0
-Requires: xorg-xserver-server(xinput-abi) >= 4.0
-
-%description -n xorg-driver-input-vboxmouse
-X.org mouse driver for VirtualBox guest OS.
-
-%description -n xorg-driver-input-vboxmouse -l pl.UTF-8
-Sterownik myszy dla systemu gościa w VirtualBoksie.
-
%package -n xorg-driver-video-vboxvideo
Summary: X.org video driver for VirtualBox guest OS
Summary(pl.UTF-8): Sterownik grafiki dla systemu gościa w VirtualBoksie
Requires: Mesa-dri-driver-swrast
Requires: xorg-xserver-libdri >= 1.7.4
Requires: xorg-xserver-server >= 1.0.99.901
-Requires: xorg-xserver-server(videodrv-abi) <= 13.1
+Requires: xorg-xserver-server(videodrv-abi) <= 14.1
Requires: xorg-xserver-server(videodrv-abi) >= 2.0
%description -n xorg-driver-video-vboxvideo
Moduł jądra Linuksa dla VirtualBoksa - dostęp do plików systemu
głównego z poziomu systemu gościa.
-%package -n kernel%{_alt_kernel}-misc-vboxvideo
+%package -n kernel%{_alt_kernel}-video-vboxvideo
Summary: DRM support for VirtualBox
Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa
Release: %{rel}@%{_kernel_ver_str}
%endif
Provides: kernel(vboxvideo) = %{version}-%{rel}
-%description -n kernel%{_alt_kernel}-misc-vboxvideo
+%description -n kernel%{_alt_kernel}-video-vboxvideo
DRM support for VirtualBox.
You should install this package in your Guest OS.
-%description -n kernel%{_alt_kernel}-misc-vboxvideo -l pl.UTF-8
+%description -n kernel%{_alt_kernel}-video-vboxvideo -l pl.UTF-8
Moduł jądra Linuksa dla VirtualBoksa - sterownik obsługi DRM.
%prep
%patch3 -p1
%patch4 -p1
%patch5 -p1
+%patch7 -p1
+%patch8 -p1
%{__sed} -i -e 's,@VBOX_DOC_PATH@,%{_docdir}/%{name}-%{version},' \
-e 's/Categories=.*/Categories=Utility;Emulator;/' src/VBox/Installer/common/virtualbox.desktop.in
# using system kBuild package
%{__rm} -r kBuild
+cat <<'EOF'>> LocalConfig.kmk
+%{?with_verbose:KBUILD_VERBOSE=3}
+USERNAME=%(id -un)
+__VBOX_BUILD_PUBLISHER=_PLD
+VBOX_VERSION_STRING=$(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)_PLD
+XSERVER_VERSION=%(rpm -q --queryformat '%{V}\n' xorg-xserver-server-devel | awk -F. '{ print $1 $2 }' 2>/dev/null || echo ERROR)
+VBOX_USE_SYSTEM_XORG_HEADERS=1
+%if %{with lightdm}
+VBOX_WITH_LIGHTDM_GREETER=1
+VBOX_WITH_LIGHTDM_GREETER_PACKING=1
+%endif
+TOOL_GCC3_CFLAGS=%{rpmcflags}
+TOOL_GCC3_CXXFLAGS=%{rpmcxxflags}
+VBOX_GCC_OPT=%{rpmcxxflags}
+VBOX_WITH_TESTCASES=
+EOF
+
%build
%if %{with userspace}
-echo "VBOX_WITH_TESTCASES := " > LocalConfig.kmk
./configure \
--with-gcc="%{__cc}" \
--with-g++="%{__cxx}" \
%{nil}
XSERVER_VERSION=$(rpm -q --queryformat '%{VERSION}\n' xorg-xserver-server-devel | awk -F. ' { print $1 $2 } ' 2> /dev/null || echo ERROR)
-kmk %{?_smp_mflags} \
- %{?with_verbose:KBUILD_VERBOSE=3} \
- USER=%(id -un) \
- VBOX_VERSION_STRING='$(VBOX_VERSION_MAJOR).$(VBOX_VERSION_MINOR).$(VBOX_VERSION_BUILD)'_PLD \
- XSERVER_VERSION="$XSERVER_VERSION" \
- TOOL_GCC3_CFLAGS="%{rpmcflags}" \
- TOOL_GCC3_CXXFLAGS="%{rpmcxxflags}" \
- VBOX_GCC_OPT="%{rpmcxxflags}" \
- %{nil}
+kmk %{?_smp_mflags}
%endif
%if %{with kernel}
rm -rf $RPM_BUILD_ROOT
%if %{with userspace}
-install -d $RPM_BUILD_ROOT{%{_bindir},%{_sbindir},%{_libdir}/%{pname}/ExtensionPacks} \
+install -d $RPM_BUILD_ROOT{%{_bindir},/sbin,%{_sbindir},%{_libdir}/%{pname}/ExtensionPacks} \
$RPM_BUILD_ROOT{%{_pixmapsdir},%{_desktopdir}} \
- $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,dri,input}
+ $RPM_BUILD_ROOT%{_libdir}/xorg/modules/{drivers,dri,input} \
+ $RPM_BUILD_ROOT{/lib/udev,/etc/udev/rules.d}
# test if we can hardlink -- %{_builddir} and $RPM_BUILD_ROOT on same partition
if cp -al VBox.png $RPM_BUILD_ROOT/Vbox.png 2>/dev/null; then
l=l
- rm -f $RPM_BUILD_ROOT/VBox.png
+ %{__rm} -f $RPM_BUILD_ROOT/VBox.png
fi
cp -a$l %{outdir}/* $RPM_BUILD_ROOT%{_libdir}/%{pname}
install -d $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions
cp -a$l %{SOURCE1} $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions/VBoxGuestAdditions.iso
-install -p %{SOURCE10} $RPM_BUILD_ROOT%{_sbindir}/mount.vdi
+install -p %{SOURCE10} $RPM_BUILD_ROOT/sbin/mount.vdi
install -p VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_libdir}/%{pname}
for f in {VBox{BFE,Headless,Manage,SDL,SVC,Tunctl,XPCOMIPCD},VirtualBox}; do
ln -s %{_libdir}/%{pname}/VirtualBox-wrapper.sh $RPM_BUILD_ROOT%{_bindir}/$f
done
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/VBox.png,%{_pixmapsdir}/virtualbox.png}
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname},%{_desktopdir}}/virtualbox.desktop
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/VBox.png,%{_pixmapsdir}/virtualbox.png}
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname},%{_desktopdir}}/virtualbox.desktop
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/vboxmouse_drv.so,%{_libdir}/xorg/modules/input/vboxmouse_drv.so}
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions/vboxvideo_drv.so,%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so}
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions/VBoxOGL.so,%{_libdir}/xorg/modules/dri/vboxvideo_dri.so}
-# xorg other driver versions
-rm -vf $RPM_BUILD_ROOT%{_libdir}/%{pname}/vboxmouse_drv*.{o,so}
-rm -vf $RPM_BUILD_ROOT%{_libdir}/%{pname}/vboxvideo_drv*.{o,so}
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions/vboxvideo_drv_system.so,%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so}
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions/VBoxOGL.so,%{_libdir}/xorg/modules/dri/vboxvideo_dri.so}
# XXX: where else to install them that vboxvideo_dri.so finds them? patch with rpath?
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLarrayspu.so
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLcrutil.so
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLerrorspu.so
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLfeedbackspu.so
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLpackspu.so
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLpassthroughspu.so
-
-install -d $RPM_BUILD_ROOT/etc/udev/rules.d
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLarrayspu.so
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLcrutil.so
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLerrorspu.so
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLfeedbackspu.so
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLpackspu.so
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_libdir}}/VBoxOGLpassthroughspu.so
+
cp -a %{SOURCE11} $RPM_BUILD_ROOT/etc/udev/rules.d/virtualbox.rules
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname},/lib/udev}/VBoxCreateUSBNode.sh
install -d $RPM_BUILD_ROOT/%{_lib}/security
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,/%{_lib}/security}/pam_vbox.so
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,/%{_lib}/security}/pam_vbox.so
# cleanup unpackaged
-rm -r $RPM_BUILD_ROOT%{_libdir}/%{pname}/{src,sdk,testcase}
-rm -r $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions/src
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/vboxkeyboard.tar.bz2
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/tst*
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/ExtensionPacks/VNC/ExtPack-license.*
+%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/%{pname}/{src,sdk,testcase}
+%{__rm} -r $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions/src
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/vboxkeyboard.tar.bz2
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/tst*
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/ExtensionPacks/VNC/ExtPack-license.*
# Guest Only Tools
install -d $RPM_BUILD_ROOT/etc/{X11/xinit/xinitrc.d,xdg/autostart}
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_bindir}}/VBoxService
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_bindir}}/VBoxClient
-mv $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_bindir}}/VBoxControl
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_bindir}}/VBoxService
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_bindir}}/VBoxClient
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_bindir}}/VBoxControl
install -p -D src/VBox/Additions/x11/Installer/98vboxadd-xclient \
$RPM_BUILD_ROOT/etc/X11/xinit/xinitrc.d/98vboxadd-xclient.sh
cp -p src/VBox/Additions/x11/Installer/vboxclient.desktop \
$RPM_BUILD_ROOT/etc/xdg/autostart/vboxclient.desktop
+%if %{with lightdm}
+install -d $RPM_BUILD_ROOT%{_datadir}/xgreeters
+%{__mv} $RPM_BUILD_ROOT{%{_libdir}/%{pname}/additions,%{_sbindir}}/vbox-greeter
+cp -p %{objdir}/Additions/Installer/linux/share/VBoxGuestAdditions/vbox-greeter.desktop $RPM_BUILD_ROOT%{_datadir}/xgreeters
+%endif
+
# unknown - checkme
%if 1
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/SUPInstall
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/SUPLoggerCtl
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/SUPUninstall
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/VBox.sh
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/vboxshell.py
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/xpidl
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions/runasroot.sh
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/load.sh
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/loadall.sh
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/CPUMInternal.d
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/cpumctx.d
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/vbox-arch-types.d
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/vbox-types.d
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/vm.d
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/x86.d
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/testcase/%{vbox_arch}/vbox-vm-struct-test.d
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/helpers/generate_service_file
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/VBoxHeadlessXOrg.sh
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/generated.sh
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/init_template.sh
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/install_service
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/SUPInstall
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/SUPLoggerCtl
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/SUPUninstall
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/VBox.sh
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/vboxshell.py
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/xpidl
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions/runasroot.sh
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/load.sh
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/loadall.sh
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/CPUMInternal.d
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/cpumctx.d
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/vbox-arch-types.d
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/vbox-types.d
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/vm.d
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/lib/%{vbox_arch}/x86.d
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/dtrace/testcase/%{vbox_arch}/vbox-vm-struct-test.d
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/helpers/generate_service_file
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/VBoxHeadlessXOrg.sh
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/generated.sh
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/init_template.sh
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/scripts/install_service
%endif
# packaged by kernel part
-rm $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions/mount.vboxsf
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/%{pname}/additions/mount.vboxsf
%endif
%if %{with kernel}
-install -d $RPM_BUILD_ROOT{/etc/{rc.d/init.d,modules-load.d},%{_sbindir},%{systemdunitdir}}
+install -d $RPM_BUILD_ROOT{/etc/{rc.d/init.d,modules-load.d},/sbin,%{systemdunitdir}}
+install -p %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxservice
install -p %{SOURCE3} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxdrv
install -p %{SOURCE4} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxguest
install -p %{SOURCE5} $RPM_BUILD_ROOT/etc/rc.d/init.d/vboxnetflt
%install_kernel_modules -m PLD-MODULE-BUILD/GuestDrivers/vboxsf/vboxsf -d misc
%install_kernel_modules -m PLD-MODULE-BUILD/GuestDrivers/vboxvideo/vboxvideo -d misc
-install -p mount.vboxsf $RPM_BUILD_ROOT%{_sbindir}/mount.vboxsf
+install -p mount.vboxsf $RPM_BUILD_ROOT/sbin/mount.vboxsf
# Tell systemd to load modules
cp -p %{SOURCE12} $RPM_BUILD_ROOT/etc/modules-load.d/vboxdrv.conf
%post
%update_desktop_database
+for i in /sys/bus/usb/devices/*; do
+ if [ -r "$i/dev" ]; then
+ dev="`cat "$i/dev" 2>/dev/null || true`"
+ major="`expr "$dev" : '\(.*\):' 2> /dev/null || true`"
+ minor="`expr "$dev" : '.*:\(.*\)' 2> /dev/null || true`"
+ class="`cat $i/bDeviceClass 2> /dev/null || true`"
+ /lib/udev/VBoxCreateUSBNode.sh "$major" "$minor" "$class" vbox 2>/dev/null
+ fi
+done
cat << 'EOF'
You must install vboxdrv kernel module for this software to work:
On Guest Linux system you might want to install:
kernel-misc-vboxguest-%{version}-%{rel}@%{_kernel_ver_str}
kernel-misc-vboxsf-%{version}-%{rel}@%{_kernel_ver_str}
- kernel-misc-vboxvideo-%{version}-%{rel}@%{_kernel_ver_str}
+ kernel-video-vboxvideo-%{version}-%{rel}@%{_kernel_ver_str}
EOF
%groupremove vbox
fi
-%post -n kernel%{_alt_kernel}-misc-vboxguest
-%depmod %{_kernel_ver}
-/sbin/chkconfig --add vboxguest
-%service vboxguest restart "VirtualBox Guest additions driver"
-%systemd_reload
-
-%postun -n kernel%{_alt_kernel}-misc-vboxguest
-%depmod %{_kernel_ver}
+%post guest
+/sbin/chkconfig --add vboxservice
+%service vboxservice restart
-%preun -n kernel%{_alt_kernel}-misc-vboxguest
+%preun guest
if [ "$1" = "0" ]; then
- %service vboxguest stop
- /sbin/chkconfig --del vboxguest
+ /sbin/chkconfig --del vboxservice
+ %service vboxservice -q stop
fi
-%post -n kernel%{_alt_kernel}-misc-vboxdrv
-%depmod %{_kernel_ver}
-/sbin/chkconfig --add vboxdrv
-%service vboxdrv restart "VirtualBox Support Driver"
-%systemd_reload
+%pre -n lightdm-greeter-vbox
+%addusertogroup xdm vbox
-%postun -n kernel%{_alt_kernel}-misc-vboxdrv
+%post -n kernel%{_alt_kernel}-misc-vboxdrv
%depmod %{_kernel_ver}
+%vbox_kernel_post -d vboxdrv VirtualBox Support Driver
%preun -n kernel%{_alt_kernel}-misc-vboxdrv
if [ "$1" = "0" ]; then
%service vboxdrv stop
- /sbin/chkconfig --del vboxdrv
fi
-%post -n kernel%{_alt_kernel}-misc-vboxnetadp
+%postun -n kernel%{_alt_kernel}-misc-vboxdrv
%depmod %{_kernel_ver}
-/sbin/chkconfig --add vboxnetadp
-%service vboxnetadp restart "VirtualBox Network HostOnly driver"
-%systemd_reload
-%postun -n kernel%{_alt_kernel}-misc-vboxnetadp
+%post -n kernel%{_alt_kernel}-misc-vboxnetadp
%depmod %{_kernel_ver}
+%vbox_kernel_post -d vboxnetadp VirtualBox Network HostOnly driver
%preun -n kernel%{_alt_kernel}-misc-vboxnetadp
if [ "$1" = "0" ]; then
%service vboxnetadp stop
- /sbin/chkconfig --del vboxnetadp
fi
-%post -n kernel%{_alt_kernel}-misc-vboxnetflt
+%postun -n kernel%{_alt_kernel}-misc-vboxnetadp
%depmod %{_kernel_ver}
-/sbin/chkconfig --add vboxnetflt
-%service vboxnetflt restart "VirtualBox Network Filter driver"
-%systemd_reload
-%postun -n kernel%{_alt_kernel}-misc-vboxnetflt
+%post -n kernel%{_alt_kernel}-misc-vboxnetflt
%depmod %{_kernel_ver}
+%vbox_kernel_post -d vboxnetflt VirtualBox Network Filter driver
%preun -n kernel%{_alt_kernel}-misc-vboxnetflt
if [ "$1" = "0" ]; then
%service vboxnetflt stop
- /sbin/chkconfig --del vboxnetflt
fi
-%post -n kernel%{_alt_kernel}-misc-vboxpci
+%postun -n kernel%{_alt_kernel}-misc-vboxnetflt
%depmod %{_kernel_ver}
-/sbin/chkconfig --add vboxpci
-%service vboxnetflt restart "VirtualBox PCI passthrough driver"
-%systemd_reload
-%postun -n kernel%{_alt_kernel}-misc-vboxpci
+%post -n kernel%{_alt_kernel}-misc-vboxpci
%depmod %{_kernel_ver}
+%vbox_kernel_post -d vboxpci VirtualBox PCI passthrough driver
%preun -n kernel%{_alt_kernel}-misc-vboxpci
if [ "$1" = "0" ]; then
%service vboxpci stop
- /sbin/chkconfig --del vboxpci
fi
-%post -n kernel%{_alt_kernel}-misc-vboxsf
+%postun -n kernel%{_alt_kernel}-misc-vboxpci
%depmod %{_kernel_ver}
-/sbin/chkconfig --add vboxsf
-%service vboxsf restart "VirtualBox Host file system access (Shared Folders)"
-%systemd_reload
-%postun -n kernel%{_alt_kernel}-misc-vboxsf
+%post -n kernel%{_alt_kernel}-misc-vboxguest
+%depmod %{_kernel_ver}
+%vbox_kernel_post -d vboxguest VirtualBox Guest additions driver
+
+%preun -n kernel%{_alt_kernel}-misc-vboxguest
+if [ "$1" = "0" ]; then
+ %service vboxguest stop
+fi
+
+%postun -n kernel%{_alt_kernel}-misc-vboxguest
%depmod %{_kernel_ver}
+%post -n kernel%{_alt_kernel}-misc-vboxsf
+%depmod %{_kernel_ver}
+%vbox_kernel_post -d vboxsf VirtualBox Host file system access (Shared Folders)
+
%preun -n kernel%{_alt_kernel}-misc-vboxsf
if [ "$1" = "0" ]; then
%service vboxsf stop
- /sbin/chkconfig --del vboxsf
fi
-%post -n kernel%{_alt_kernel}-misc-vboxvideo
+%postun -n kernel%{_alt_kernel}-misc-vboxsf
+%depmod %{_kernel_ver}
+
+%post -n kernel%{_alt_kernel}-video-vboxvideo
%depmod %{_kernel_ver}
-%postun -n kernel%{_alt_kernel}-misc-vboxvideo
+%postun -n kernel%{_alt_kernel}-video-vboxvideo
%depmod %{_kernel_ver}
+%post kernel-init-host
+/sbin/chkconfig --add vboxdrv
+/sbin/chkconfig --add vboxnetadp
+/sbin/chkconfig --add vboxnetflt
+/sbin/chkconfig --add vboxpci
+%systemd_reload
+
+%preun kernel-init-host
+if [ "$1" = "0" ]; then
+ /sbin/chkconfig --del vboxdrv
+ /sbin/chkconfig --del vboxnetadp
+ /sbin/chkconfig --del vboxnetflt
+ /sbin/chkconfig --del vboxpci
+fi
+
+%postun kernel-init-host
+%systemd_reload
+
+%post kernel-init-guest
+/sbin/chkconfig --add vboxguest
+/sbin/chkconfig --add vboxsf
+%systemd_reload
+
+%preun kernel-init-guest
+if [ "$1" = "0" ]; then
+ /sbin/chkconfig --del vboxguest
+ /sbin/chkconfig --del vboxsf
+fi
+
+%postun kernel-init-guest
+%systemd_reload
+
%if %{with userspace}
%files
%defattr(644,root,root,755)
%attr(755,root,root) %{_bindir}/VBoxTunctl
%attr(755,root,root) %{_bindir}/VBoxXPCOMIPCD
%attr(755,root,root) %{_bindir}/VirtualBox
-%attr(755,root,root) %{_sbindir}/mount.vdi
+%attr(755,root,root) /sbin/mount.vdi
%attr(755,root,root) %{_libdir}/%{pname}/DBGCPlugInDiggers.so
%attr(755,root,root) %{_libdir}/%{pname}/VBoxAuth.so
%attr(755,root,root) %{_libdir}/%{pname}/VBoxAuthSimple.so
%attr(755,root,root) %{_libdir}/%{pname}/VBoxAutostart
%attr(755,root,root) %{_libdir}/%{pname}/VBoxBFE
%attr(755,root,root) %{_libdir}/%{pname}/VBoxBalloonCtrl
-%attr(755,root,root) %{_libdir}/%{pname}/VBoxCreateUSBNode.sh
%attr(755,root,root) %{_libdir}/%{pname}/VBoxDbg.so
%attr(755,root,root) %{_libdir}/%{pname}/VBoxDD2.so
%attr(755,root,root) %{_libdir}/%{pname}/VBoxDD.so
%{_libdir}/%{pname}/icons
%{_libdir}/%{pname}/virtualbox.xml
+%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
+%attr(755,root,root) /lib/udev/VBoxCreateUSBNode.sh
+
%files additions
%defattr(644,root,root,755)
%{_libdir}/%{pname}/additions/VBoxGuestAdditions.iso
%files guest
%defattr(644,root,root,755)
+%attr(755,root,root) /sbin/mount.vboxsf
+%attr(754,root,root) /etc/rc.d/init.d/vboxservice
+%attr(755,root,root) %{_bindir}/VBoxControl
+%attr(755,root,root) %{_bindir}/VBoxService
+
+%files guest-x11
+%defattr(644,root,root,755)
# NOTE: unfinished, should contain .desktop files for starting up mouse
# integration and other desktop services
# NOTE: the filelist is incomplete too
%attr(755,root,root) %{_bindir}/VBoxClient
-%attr(755,root,root) %{_bindir}/VBoxControl
-%attr(755,root,root) %{_bindir}/VBoxService
/etc/X11/xinit/xinitrc.d/98vboxadd-xclient.sh
/etc/xdg/autostart/vboxclient.desktop
%attr(755,root,root) %{_libdir}/%{pname}/additions/vboxadd
%attr(755,root,root) %{_libdir}/%{pname}/additions/vboxadd-service
%attr(755,root,root) %{_libdir}/%{pname}/additions/vboxadd-x11
-# XXX these files belong to xorg-driver-video-vboxvideo
-# but probably 18-system-xorg.patch patch is broken?
-%attr(755,root,root) %{_libdir}/%{pname}/additions/vboxvideo_drv_111.so
-%attr(755,root,root) %{_libdir}/%{pname}/additions/vboxvideo_drv_112.so
+
+%if %{with webservice}
+%files webservice
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/%{pname}/vboxwebsrv
+%attr(755,root,root) %{_libdir}/%{pname}/webtest
+%endif
+
+%if %{with lightdm}
+%files -n lightdm-greeter-vbox
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_sbindir}/vbox-greeter
+%{_datadir}/xgreeters/vbox-greeter.desktop
+%endif
%files -n pam-pam_vbox
%defattr(644,root,root,755)
%lang(fr) %doc %{outdir}/UserManual_fr_FR.pdf
%endif
-%files udev
-%defattr(644,root,root,755)
-%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/virtualbox.rules
-
-%files -n xorg-driver-input-vboxmouse
-%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/xorg/modules/input/vboxmouse_drv.so
-
%files -n xorg-driver-video-vboxvideo
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/xorg/modules/drivers/vboxvideo_drv.so
%files -n kernel%{_alt_kernel}-misc-vboxsf
%defattr(644,root,root,755)
%config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/vboxsf.conf
-%attr(755,root,root) %{_sbindir}/mount.vboxsf
/lib/modules/%{_kernel_ver}/misc/vboxsf.ko*
-%files -n kernel%{_alt_kernel}-misc-vboxvideo
+%files -n kernel%{_alt_kernel}-video-vboxvideo
%defattr(644,root,root,755)
/lib/modules/%{_kernel_ver}/misc/vboxvideo.ko*
%endif