# # spec file for package virtualbox # # Copyright (c) 2016 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 _vbox_instdir %{_libexecdir}/virtualbox %define _udevrulesdir %{_libexecdir}/udev/rules.d Name: virtualbox Version: 5.0.18 Release: 0 Summary: VirtualBox is an Emulator License: GPL-2.0+ Group: System/Emulators/PC Url: http://www.virtualbox.org/ # # so you don't need to repack virtualbox by hand, just add new release of VirtualBox-x.x.x.tar.bz2 and line below with # script virtualbox-patch-source.sh will do the job :) # WARNING: This is not a comment, but the real command to repack souce #%(bash %{_sourcedir}/virtualbox-patch-source.sh VirtualBox-%{version}.tar.bz2) Source0: VirtualBox-%{version}-patched.tar.bz2 Source1: UserManual.pdf Source2: %{name}-60-vboxdrv.rules Source3: %{name}-60-vboxguest.rules Source4: %{name}-default.virtualbox Source5: %{name}-host-kmp-files Source6: %{name}-guest-kmp-files Source7: %{name}-host-preamble Source8: %{name}-guest-preamble 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 Source99: %{name}-patch-source.sh #rework init scripts to fit suse needs Patch1: vbox-vboxdrv-init-script.diff Patch2: vbox-vboxadd-init-script.diff Patch3: vbox-vboxweb-init-script.diff #PATCH-FIX-OPENSUSE: Use system X libraries and do not build local things Patch4: virtualbox-system-x.patch #fix build : "Error 4001 - String must be entirely alphanumeric" #with renaming we probably break some macosx functionality however ths is just quick fix #file :http://www.virtualbox.org/browser/trunk/src/VBox/Devices/PC/vbox.ds #see thread : http://lists.freebsd.org/pipermail/freebsd-acpi/2010-October/006795.html Patch6: vbox-smc-napa.diff #fix build of Python and dev package on openSUSE 11.3 Patch8: vbox-python-detection.diff #deprecated old-style C++ service proxies and objects,we have to use soapcpp2 -z1 flag Patch9: vbox-deprec-gsoap-service-proxies.diff #fix failed linking process during build - this patch is just quick workaround Patch10: vbox-gsoapssl-deps.diff #PATCH-FIX-OPENSUSE implement messagebox (VBoxPermissionMessage app), which is displayed, when user #try to start VirtualBox and is not memeber of vboxusers group Patch99: vbox-permissions_warning.diff #PATCH-FIX-OPENSUSE Do not include build dates on binaries, makes build-compare happier Patch100: vbox-no-build-dates.diff Patch101: vbox-default-os-type.diff #disable update in vbox gui Patch103: vbox-disable-updates.diff #use pie/fPIE for setuid binaries (bnc#743143) Patch104: vbox-fpie.diff #smap issues on Haswell or Broadwell (boo#931461) Patch105: smap.diff # Patch to build with Factory gcc5 Patch106: gcc5-real-support.patch # Patch to build with gnu sed correctly Patch107: virtualbox-sed-params.patch # Patch to use snprintf correcty and not overflow dst buffer Patch108: virtualbox-snpritnf-buffer-overflow.patch # Patch to add code to explain USB Passthru Patch109: vbox-usb-warning.diff # Prevent Guest Additions from creating wrong SONAME Patch111: vbox_prevent_wrong_SONAME.patch # 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: java-devel >= 1.6.0 BuildRequires: kbuild >= 0.1.9998svn2689 BuildRequires: kernel-syms BuildRequires: libcap-devel BuildRequires: libcurl-devel #BuildRequires: libgsoap-devel BuildRequires: libidl-devel BuildRequires: libopenssl-devel BuildRequires: libqt4-devel BuildRequires: libvpx-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: yasm 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: %{name}-host-kmp = %{version} Requires(post): sysvinit(syslog) 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 %(sed -e '/^Provides: multiversion(kernel)/d' %{_libexecdir}/rpm/kernel-module-subpackage > %{_builddir}/virtualbox-kmp-template) # Temporarily disable i586 until build problem is solved #ExclusiveArch: %ix86 x86_64 #%if 0%{?suse_version} == 1315 #ExcludeArch: %ix86 #%endif ExclusiveArch: x86_64 %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 %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: Qt GUI part for %{name} Group: System/Emulators/PC Requires: %{name} = %{version} 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 Qt GUI part for %{name}. ######################################### %package websrv Summary: WebService GUI part for %{name} Group: System/Emulators/PC Requires: %{name} = %{version} Provides: %{name}-gui = %{version} %description websrv websrv GUI part for %{name}. ######################################### %package host-KMP Summary: Host kernel module for VirtualBox Group: System/Emulators/PC %kernel_module_package -t %{_builddir}/virtualbox-kmp-template -p %{SOURCE7} -n %{name}-host -f %{SOURCE5} -x kdump um xen xenpae pv %description host-KMP This package contains the kernel-module for VirtualBox. ########################################## %package guest-KMP Summary: Guest kernel modules for VirtualBox Group: System/Emulators/PC %kernel_module_package -t %{_builddir}/virtualbox-kmp-template -p %{SOURCE8} -n %{name}-guest -f %{SOURCE6} -x kdump um xen xenpae pv %description guest-KMP This package contains the kernel-module for VirtualBox. ########################################## %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 ########################################### %package guest-tools Summary: VirtualBox guest tools Group: System/Emulators/PC Requires: %{name}-guest-kmp = %{version} 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 %patch2 %patch3 -p1 %patch4 -p1 %patch6 -p1 %patch8 -p1 %patch9 -p1 %patch10 -p1 %patch99 -p1 %patch100 %patch101 -p1 %patch103 -p1 %patch104 -p1 %patch105 -p1 %patch106 -p1 %patch107 -p1 %patch108 -p1 %patch109 -p1 %patch111 -p1 #copy user manual cp %{SOURCE1} UserManual.pdf #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 </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 \ --ose \ --enable-vnc \ --enable-vde \ --disable-kmods \ --with-linux="/usr" \ --disable-java \ --disable-docs \ --nofatal \ --enable-webservice # 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_WITH_REGISTRATION_REQUEST= VBOX_WITH_UPDATE_REQUEST= \ TOOL_YASM_AS=yasm \ VBOX_BUILD_PUBLISHER=_SUSE \ TOOL_GCC3_CFLAGS="%{optflags}" TOOL_GCC3_CXXFLAGS="%{optflags}" \ VBOX_GCC_OPT="%{optflags}" # # build kernel modules for guest and host (check novel-kmp package as example) # host modules : vboxdrv,vboxnetflt,vboxnetadp # guest modules : vboxguest,vboxsf,vboxvideo echo "build kernel modules" for vbox_module in out/linux.*/release/bin/src/vbox{drv,netflt,netadp,pci} \ out/linux.*/release/bin/additions/src/vbox{guest,sf,video}; do #get the module name from path module_name=$(basename "$vbox_module") # go through the all flavors (desktop,default ...) for flavor in %{flavors_to_build}; do # delete old build dir for sure rm -rf modules_build_dir/${module_name}_${flavor} # create build directory for specific flavor mkdir -p modules_build_dir/$flavor # copy sources which will be used to build vbox module in last step cp -r $vbox_module/ modules_build_dir/$flavor/ # copy vboxdrv (for host) module symbols which are used by vboxnetflt and vboxnetadp km's: if [ "$module_name" = "vboxnetflt" -o \ "$module_name" = "vboxnetadp" -o \ "$module_name" = "vboxpci" ] ; then cp $PWD/modules_build_dir/$flavor/vboxdrv/Module.symvers \ $PWD/modules_build_dir/$flavor/$module_name fi # copy vboxguest (for guest) module symbols which are used by vboxsf km: if [ "$module_name" = "vboxsf" ]; then cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \ $PWD/modules_build_dir/$flavor/$module_name fi # copy vboxguest (for guest) module symbols which are used by vboxvideo km: if [ "$module_name" = "vboxvideo" ]; then cp $PWD/modules_build_dir/$flavor/vboxguest/Module.symvers \ $PWD/modules_build_dir/$flavor/$module_name fi # build the module for the specific flavor make %{?_smp_mflags} -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules \ M=$PWD/modules_build_dir/$flavor/$module_name done done %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 virtualbox-kmp-guest and virtualbox-kmp-host install section" #################################################################################### export INSTALL_MOD_PATH=%{buildroot} export INSTALL_MOD_DIR=misc #to install modules we use here similar steps like in build phase, go trought the all modules : for module_name in vbox{drv,netflt,pci,netadp,guest,sf,video} do #and trought the all flavors for flavor in %{flavors_to_build}; do #to install modules use Makefile from %{_prefix}/src/linux-obj/%_target_cpu/$flavor and builds from $PWD/modules_build_dir/$flavor/$module_name make %{?_smp_mflags} -C %{_prefix}/src/linux-obj/%{_target_cpu}/$flavor modules_install M=$PWD/modules_build_dir/$flavor/$module_name done done ########################################### 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" ############################################################## pushd out/linux.*/release/bin/additions/ #VBoxClient daemon (support for clipboard,autoresize,seamless windows) install -m 755 VBoxClient %{buildroot}%{_bindir} # xorg drivers for video install -m 755 vboxvideo_drv_system.so %{buildroot}%{_libdir}/xorg/modules/drivers/vboxvideo_drv.so 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 ############################################## echo "entering virtualbox(-qt) install section" ############################################## # copy the main files to %{_vbox_instdir} 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 webtest %{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 VBoxPermissionMessage %{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 # TODO: some of this stuff breaks the fillup macros below? sed -i "s|%{NOLSB}%|yes|g;s|%{DEBIAN}%||g;s|%{PACKAGE}%|virtualbox|g" \ src/VBox/Installer/linux/vboxdrv.sh.in install -m 744 src/VBox/Installer/linux/vboxdrv.sh.in %{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 install -d -m 755 %{buildroot}%{_var}/adm/fillup-templates install -m 640 %{SOURCE13} %{buildroot}%{_var}/adm/fillup-templates/sysconfig.vbox # 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-websrv install section" ###################################################### pushd out/linux.*/release/bin install -m 755 vboxwebsrv %{buildroot}%{_vbox_instdir} install -m 755 webtest %{buildroot}%{_vbox_instdir} popd sed -i "s|%{NOLSB}%|yes|g;s|%{DEBIAN}%||g;s|%{PACKAGE}%|virtualbox|g" src/VBox/Installer/linux/vboxweb-service.sh install -m 744 src/VBox/Installer/linux/vboxweb-service.sh %{buildroot}%{_sysconfdir}/init.d/vboxweb-service ln -s %{_sysconfdir}/init.d/vboxweb-service %{buildroot}%{_sbindir}/rcvboxweb-service # ###################################################### 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 #skip the fill up part and enable vboxdrv by default %fillup_and_insserv -f -y vboxdrv #setup our sysconfig file /etc/sysconfig/vbox %fillup_only -an vbox %set_permissions %{_vbox_instdir}/VBoxNetDHCP %set_permissions %{_vbox_instdir}/VBoxNetAdpCtl %set_permissions %{_vbox_instdir}/VBoxHeadless %set_permissions %{_vbox_instdir}/VBoxSDL %post qt %set_permissions %{_vbox_instdir}/VirtualBox %verifyscript %verify_permissions -e %{_vbox_instdir}/VBoxNetDHCP %verify_permissions -e %{_vbox_instdir}/VBoxNetAdpCtl %verify_permissions -e %{_vbox_instdir}/VBoxHeadless %verify_permissions -e %{_vbox_instdir}/VBoxSDL %verifyscript qt %verify_permissions -e %{_vbox_instdir}/VirtualBox %post guest-tools %fillup_and_insserv -f -y vboxadd %fillup_and_insserv -f -y vboxadd-service %post websrv %fillup_and_insserv -f -y vboxweb-service ####################################################### # scriptlets preun ####################################################### %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 %restart_on_update vboxdrv %insserv_cleanup %postun guest-tools %restart_on_update vboxadd %restart_on_update vboxadd-service %insserv_cleanup %postun websrv %restart_on_update vboxweb-service %insserv_cleanup # ####################################################### %files %defattr(-, root, root) %doc UserManual.pdf %{_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 %{_var}/adm/fillup-templates/sysconfig.vbox %{_sbindir}/rcvboxes %{_sbindir}/rcvboxdrv %{_udevrulesdir}/../VBoxCreateUSBNode.sh %verify(not mode) %attr(4711,root,vboxusers) %{_vbox_instdir}/VBoxNetDHCP %verify(not mode) %attr(4711,root,vboxusers) %{_vbox_instdir}/VBoxNetAdpCtl %verify(not mode) %attr(4711,root,vboxusers) %{_vbox_instdir}/VBoxHeadless %verify(not mode) %attr(4711,root,vboxusers) %{_vbox_instdir}/VBoxSDL %files qt %defattr(-, root, root) %attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxPermissionMessage %verify(not mode) %attr(4711,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 %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 %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}/VBoxPython2_7.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 websrv %defattr(-,root, root) %{_vbox_instdir}/vboxwebsrv %{_vbox_instdir}/webtest %{_sysconfdir}/init.d/vboxweb-service %{_sbindir}/rcvboxweb-service %files guest-desktop-icons %defattr(-,root, root) %dir %{_datadir}/pixmaps/virtalbox %{_datadir}/pixmaps/virtalbox/*.png %changelog