forked from pool/virtualbox
badf2901f4
This is a maintenance release. The following items were fixed and/or added: GUI: the USB filter settings dialog should allow to specify the USB revision in hexadecimal format (bug #15400) GUI: fixed crash on certain hosts when pressing certain key combinations (Windows hosts only; bug #15719) GUI: fixed issue with updating the available-geometry on host-screen work-area resize GUI: don't crash / hang on certain environments if accessibility support is enabled GUI: fixed various issues in Unscaled HiDPI Output mode (bug #15707) GUI: extend the VM Input menu with Print Screen-related actions GUI: improved handling of inserting the Guest Additions ISO image by trying all available optical drives rather than only the first one and by not asking the user if he wants to force unmounting (which doesn't work in most cases anyway) API: default to RTC using UTC for Solaris 11 guests Settings: be less restrictive when reading a VM configuration containing a host-only adapter without an interface name Storage: fixed resizing VDI images resulting in an unbootable image under certain circumstances (bug #15983) NAT: fixed several 5.1.8 regressions on Mac OS X and Windows hosts (bug #16084) Audio: fixed a few 5.1.x regressions by using the audio code from 5.0.x until the audio overhaul is completed VBoxManage: fixed documentation of the storagectl command (bug #15971) Build system: another fix for building VirtualBox on systems which default to Python 3 Windows hosts: hardening fix for Windows 10 build 14971 (bug #16202) Windows Additions: properly start the VirtualBox guest services even if the guest user name contains special characters (bug #15982) Solaris Additions: fixed preemptible mouse notification callback being executed under a spinlock for Solaris guests Linux hosts / guests: Linux 4.9 fixes (bugs #16155 and #16064) Linux Additions: fixed Linux kernel module override rule (thanks Mark Furneaux) OBS-URL: https://build.opensuse.org/package/show/Virtualization/virtualbox?expand=0&rev=293
864 lines
32 KiB
RPMSpec
864 lines
32 KiB
RPMSpec
#
|
|
# 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.1.10
|
|
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
|
|
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
|
|
# Fix change in kernel API for ttm_bo_move_memcpy()
|
|
Patch112: modify_for_4_8_bo_move.patch
|
|
# Remove all mention of _smp_mflags
|
|
Patch113: vbox_remove_smp_mflags.patch
|
|
# Fix build error on kernel 4.9
|
|
Patch114: vbox_fix_4.9_api_changes.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.9998svn2808
|
|
BuildRequires: kernel-syms
|
|
BuildRequires: libcap-devel
|
|
BuildRequires: libcurl-devel
|
|
BuildRequires: libidl-devel
|
|
BuildRequires: libopenssl-devel
|
|
BuildRequires: libqt5-linguist
|
|
BuildRequires: libqt5-qtbase-devel
|
|
BuildRequires: libqt5-qtx11extras-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(libpng)
|
|
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(xcursor)
|
|
BuildRequires: pkgconfig(xdmcp)
|
|
BuildRequires: pkgconfig(xext)
|
|
BuildRequires: pkgconfig(xextproto)
|
|
BuildRequires: pkgconfig(xf86driproto)
|
|
BuildRequires: pkgconfig(xfixes)
|
|
BuildRequires: pkgconfig(xinerama)
|
|
BuildRequires: pkgconfig(xineramaproto)
|
|
BuildRequires: pkgconfig(xmu)
|
|
BuildRequires: pkgconfig(xproto)
|
|
BuildRequires: pkgconfig(xrandr)
|
|
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)
|
|
ExclusiveArch: %ix86 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 -p1
|
|
%patch2 -p1
|
|
%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
|
|
%patch112 -p1
|
|
%patch113 -p1
|
|
%patch114 -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 <<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
|
|
# NOT an autoconf configure macro
|
|
./configure \
|
|
--ose \
|
|
--enable-vnc \
|
|
--enable-vde \
|
|
--disable-kmods \
|
|
--with-linux="/usr" \
|
|
--disable-java \
|
|
--disable-docs \
|
|
--enable-webservice \
|
|
--with-mkisofs=/bin/true \
|
|
--with-makeself=/bin/true
|
|
|
|
# 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"
|
|
# To keep memory requirements within bounds, limit make to 2 jobs
|
|
%{_bindir}/kmk -j2 \
|
|
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,vboxpci
|
|
# 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 -j2 -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 -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 -m 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 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
|
|
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
|
|
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}%{_vbox_instdir}/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
|
|
%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
|
|
%{_vbox_instdir}/VBoxCreateUSBNode.sh
|
|
#%verify(not mode) %attr(4750,root,vboxusers) %{_vbox_instdir}/VBoxNetNAT
|
|
%verify(not mode) %attr(4750,root,vboxusers) %{_vbox_instdir}/VBoxNetDHCP
|
|
%verify(not mode) %attr(4750,root,vboxusers) %{_vbox_instdir}/VBoxNetAdpCtl
|
|
%verify(not mode) %attr(4750,root,vboxusers) %{_vbox_instdir}/VBoxHeadless
|
|
%verify(not mode) %attr(4750,root,vboxusers) %{_vbox_instdir}/VBoxSDL
|
|
|
|
%files qt
|
|
%defattr(-, root, root)
|
|
%attr(0755,root,vboxusers) %{_vbox_instdir}/VBoxPermissionMessage
|
|
%verify(not mode) %attr(4750,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
|