VirtualBox

source: vbox/trunk/src/VBox/Installer/linux/rpm/VirtualBox.tmpl.spec@ 82441

Last change on this file since 82441 was 82441, checked in by vboxsync, 5 years ago

Config: disable PCI passthrough
debian: big resync with files in src/VBox/Installer/Linux/debian, this must have been broken for years
doc: mention dropping of PCI passthrough
src/VBox/Installer/linux: adapt to handle no longer present vboxpci.ko (without completely ripping it out)

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 12.2 KB
Line 
1# $Id: VirtualBox.tmpl.spec 82441 2019-12-05 23:16:02Z vboxsync $
2## @file
3# Spec file for creating VirtualBox rpm packages
4#
5
6#
7# Copyright (C) 2006-2019 Oracle Corporation
8#
9# This file is part of VirtualBox Open Source Edition (OSE), as
10# available from http://www.virtualbox.org. This file is free software;
11# you can redistribute it and/or modify it under the terms of the GNU
12# General Public License (GPL) as published by the Free Software
13# Foundation, in version 2 as it comes in the "COPYING" file of the
14# VirtualBox OSE distribution. VirtualBox OSE is distributed in the
15# hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
16#
17
18%define %SPEC% 1
19%define %OSE% 1
20%define %PYTHON% 1
21%define VBOXDOCDIR %{_defaultdocdir}/%NAME%
22%global __requires_exclude_from ^/usr/lib/virtualbox/VBoxPython.*$
23%{!?python_sitelib: %define python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")}
24
25Summary: Oracle VM VirtualBox
26Name: %NAME%
27Version: %BUILDVER%_%BUILDREL%
28Release: 1
29URL: http://www.virtualbox.org/
30Source: VirtualBox.tar
31License: GPLv2
32Group: Applications/System
33Vendor: Oracle Corporation
34BuildRoot: %BUILDROOT%
35Requires: %INITSCRIPTS% %LIBASOUND% %NETTOOLS%
36
37%if %{?rpm_suse:1}%{!?rpm_suse:0}
38%debug_package
39%endif
40
41%MACROSPYTHON%
42%if %{?__python3:1}%{!?__python3:0}
43%define vbox_python %{__python3}
44%define vbox_python_sitelib %{python3_sitelib}
45%else
46%define vbox_python %{__python}
47%{?rpm_suse: %define vbox_python_sitelib %{py_sitedir}}
48%{!?rpm_suse: %define vbox_python_sitelib %{python_sitelib}}
49%endif
50
51# our Qt5 libs are built on EL5 with ld 2.17 which does not provide --link-id=
52%undefine _missing_build_ids_terminate_build
53
54# Remove source code from debuginfo package, needed for Fedora 27 and later
55# as we build the binaries before creating the RPMs.
56%if 0%{?fedora} >= 27
57%undefine _debugsource_packages
58%undefine _debuginfo_subpackages
59%endif
60%if 0%{?rhel} >= 8
61%undefine _debugsource_packages
62%undefine _debuginfo_subpackages
63%endif
64
65%description
66VirtualBox is a powerful PC virtualization solution allowing
67you to run a wide range of PC operating systems on your Linux
68system. This includes Windows, Linux, FreeBSD, DOS, OpenBSD
69and others. VirtualBox comes with a broad feature set and
70excellent performance, making it the premier virtualization
71software solution on the market.
72
73
74%prep
75%setup -q
76DESTDIR=""
77unset DESTDIR
78
79
80%build
81
82
83%install
84# Mandriva: prevent replacing 'echo' by 'gprintf'
85export DONT_GPRINTIFY=1
86rm -rf $RPM_BUILD_ROOT
87install -m 755 -d $RPM_BUILD_ROOT/sbin
88install -m 755 -d $RPM_BUILD_ROOT%{_initrddir}
89install -m 755 -d $RPM_BUILD_ROOT/lib/modules
90install -m 755 -d $RPM_BUILD_ROOT/etc/vbox
91install -m 755 -d $RPM_BUILD_ROOT/usr/bin
92install -m 755 -d $RPM_BUILD_ROOT/usr/src
93install -m 755 -d $RPM_BUILD_ROOT/usr/share/applications
94install -m 755 -d $RPM_BUILD_ROOT/usr/share/pixmaps
95install -m 755 -d $RPM_BUILD_ROOT/usr/share/icons/hicolor
96install -m 755 -d $RPM_BUILD_ROOT%{VBOXDOCDIR}
97install -m 755 -d $RPM_BUILD_ROOT/usr/lib/virtualbox
98install -m 755 -d $RPM_BUILD_ROOT/usr/share/virtualbox
99install -m 755 -d $RPM_BUILD_ROOT/usr/share/mime/packages
100%if %{?with_python:1}%{!?with_python:0}
101(export VBOX_INSTALL_PATH=/usr/lib/virtualbox && \
102 cd ./sdk/installer && \
103 %{vbox_python} ./vboxapisetup.py install --prefix %{_prefix} --root $RPM_BUILD_ROOT)
104%endif
105rm -rf sdk/installer
106mv nls $RPM_BUILD_ROOT/usr/share/virtualbox
107cp -a src $RPM_BUILD_ROOT/usr/share/virtualbox
108mv VBox.sh $RPM_BUILD_ROOT/usr/bin/VBox
109mv VBoxSysInfo.sh $RPM_BUILD_ROOT/usr/share/virtualbox
110cp icons/128x128/virtualbox.png $RPM_BUILD_ROOT/usr/share/pixmaps/virtualbox.png
111cd icons
112 for i in *; do
113 if [ -f $i/virtualbox.* ]; then
114 install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
115 mv $i/virtualbox.* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
116 fi
117 install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes
118 mv $i/* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes || true
119 rmdir $i
120 done
121cd -
122rmdir icons
123mv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
124mv VBoxTunctl $RPM_BUILD_ROOT/usr/bin
125%if %{?is_ose:0}%{!?is_ose:1}
126for d in /lib/modules/*; do
127 if [ -L $d/build ]; then
128 rm -f /tmp/vboxdrv-Module.symvers
129 ./src/vboxhost/build_in_tmp \
130 --save-module-symvers /tmp/vboxdrv-Module.symvers \
131 --module-source `pwd`/src/vboxhost/vboxdrv \
132 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
133 %INSTMOD%
134 ./src/vboxhost/build_in_tmp \
135 --use-module-symvers /tmp/vboxdrv-Module.symvers \
136 --module-source `pwd`/src/vboxhost/vboxnetflt \
137 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
138 %INSTMOD%
139 ./src/vboxhost/build_in_tmp \
140 --use-module-symvers /tmp/vboxdrv-Module.symvers \
141 --module-source `pwd`/src/vboxhost/vboxnetadp \
142 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
143 %INSTMOD%
144 if [ -e `pwd`/src/vboxhost/vboxpci ]; then
145 ./src/vboxhost/build_in_tmp \
146 --use-module-symvers /tmp/vboxdrv-Module.symvers \
147 --module-source `pwd`/src/vboxhost/vboxpci \
148 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
149 %INSTMOD%
150 fi
151 fi
152done
153rm -r src
154%endif
155%if %{?is_ose:0}%{!?is_ose:1}
156 for i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps; do
157 mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
158 mv rdesktop-vrdp $RPM_BUILD_ROOT/usr/bin
159%endif
160for i in additions/VBoxGuestAdditions.iso; do
161 mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
162ln -s VBox $RPM_BUILD_ROOT/usr/bin/VirtualBox
163ln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualbox
164ln -s VBox $RPM_BUILD_ROOT/usr/bin/VirtualBoxVM
165ln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualboxvm
166ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxManage
167ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxmanage
168test -f VBoxSDL && ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxSDL
169test -f VBoxSDL && ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxsdl
170ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxVRDP
171ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxHeadless
172ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxheadless
173ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxDTrace
174ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxdtrace
175ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBugReport
176ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxbugreport
177ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBalloonCtrl
178ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxballoonctrl
179ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxAutostart
180ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxautostart
181ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxwebsrv
182ln -s /usr/lib/virtualbox/vbox-img $RPM_BUILD_ROOT/usr/bin/vbox-img
183ln -s /usr/lib/virtualbox/vboximg-mount $RPM_BUILD_ROOT/usr/bin/vboximg-mount
184ln -s /usr/share/virtualbox/src/vboxhost $RPM_BUILD_ROOT/usr/src/vboxhost-%VER%
185mv virtualbox.desktop $RPM_BUILD_ROOT/usr/share/applications/virtualbox.desktop
186mv VBox.png $RPM_BUILD_ROOT/usr/share/pixmaps/VBox.png
187%{!?is_ose: mv LICENSE $RPM_BUILD_ROOT%{VBOXDOCDIR}}
188mv UserManual*.pdf $RPM_BUILD_ROOT%{VBOXDOCDIR}
189%{!?is_ose: mv VirtualBox*.chm $RPM_BUILD_ROOT%{VBOXDOCDIR}}
190install -m 755 -d $RPM_BUILD_ROOT/usr/lib/debug/usr/lib/virtualbox
191%if %{?rpm_suse:1}%{!?rpm_suse:0}
192rm *.debug
193%else
194mv *.debug $RPM_BUILD_ROOT/usr/lib/debug/usr/lib/virtualbox
195%endif
196mv * $RPM_BUILD_ROOT/usr/lib/virtualbox
197if [ -f $RPM_BUILD_ROOT/usr/lib/virtualbox/libQt5CoreVBox.so.5 ]; then
198 $RPM_BUILD_ROOT/usr/lib/virtualbox/chrpath --keepgoing --replace /usr/lib/virtualbox \
199 $RPM_BUILD_ROOT/usr/lib/virtualbox/*.so.5 \
200 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/platforms/*.so \
201 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/xcbglintegrations/*.so || true
202 echo "[Paths]" > $RPM_BUILD_ROOT/usr/lib/virtualbox/qt.conf
203 echo "Plugins = /usr/lib/virtualbox/plugins" >> $RPM_BUILD_ROOT/usr/lib/virtualbox/qt.conf
204 rm $RPM_BUILD_ROOT/usr/lib/virtualbox/chrpath
205fi
206if [ -d $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy ]; then
207 mv $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy/* $RPM_BUILD_ROOT/usr/lib/virtualbox
208 rmdir $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy
209fi
210ln -s ../VBoxVMM.so $RPM_BUILD_ROOT/usr/lib/virtualbox/components/VBoxVMM.so
211for i in VBoxHeadless VBoxNetDHCP VBoxNetNAT VBoxNetAdpCtl; do
212 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
213if test -e $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBoxVM; then
214 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBoxVM
215else
216 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBox
217fi
218if [ -f $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxVolInfo ]; then
219 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxVolInfo
220fi
221test -f $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxSDL && \
222 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxSDL
223
224
225%pre
226# defaults
227[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
228
229# check for old installation
230if [ -r /etc/vbox/vbox.cfg ]; then
231 . /etc/vbox/vbox.cfg
232 if [ "x$INSTALL_DIR" != "x" -a -d "$INSTALL_DIR" ]; then
233 echo "An old installation of VirtualBox was found. To install this package the"
234 echo "old package has to be removed first. Have a look at /etc/vbox/vbox.cfg to"
235 echo "determine the installation directory of the previous installation. After"
236 echo "uninstalling the old package remove the file /etc/vbox/vbox.cfg."
237 exit 1
238 fi
239fi
240
241# check for active VMs of the installed (old) package
242# Execute the installed packages pre-uninstaller if present.
243/usr/lib/virtualbox/prerm-common.sh 2>/dev/null
244# Stop services from older versions without pre-uninstaller.
245/etc/init.d/vboxballoonctrl-service stop 2>/dev/null
246/etc/init.d/vboxautostart-service stop 2>/dev/null
247/etc/init.d/vboxweb-service stop 2>/dev/null
248VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
249if [ -n "$VBOXSVC_PID" ]; then
250 # ask the daemon to terminate immediately
251 kill -USR1 $VBOXSVC_PID
252 sleep 1
253 if pidof VBoxSVC > /dev/null 2>&1; then
254 echo "A copy of VirtualBox is currently running. Please close it and try again."
255 echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
256 echo "the VBoxSVC daemon) to finish running."
257 exit 1
258 fi
259fi
260
261
262%post
263LOG="/var/log/vbox-install.log"
264
265# defaults
266[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
267
268# remove old cruft
269if [ -f /etc/init.d/vboxdrv.sh ]; then
270 echo "Found old version of /etc/init.d/vboxdrv.sh, removing."
271 rm /etc/init.d/vboxdrv.sh
272fi
273if [ -f /etc/vbox/vbox.cfg ]; then
274 echo "Found old version of /etc/vbox/vbox.cfg, removing."
275 rm /etc/vbox/vbox.cfg
276fi
277rm -f /etc/vbox/module_not_compiled
278
279# create users groups (disable with INSTALL_NO_GROUP=1 in /etc/default/virtualbox)
280if [ "$INSTALL_NO_GROUP" != "1" ]; then
281 echo
282 echo "Creating group 'vboxusers'. VM users must be member of that group!"
283 echo
284 groupadd -r -f vboxusers 2> /dev/null
285fi
286
287%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
288/sbin/ldconfig
289%update_menus
290%endif
291update-mime-database /usr/share/mime &> /dev/null || :
292update-desktop-database -q > /dev/null 2>&1 || :
293touch --no-create /usr/share/icons/hicolor
294gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
295
296# Disable module compilation with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox
297if test "${INSTALL_NO_VBOXDRV}" = 1; then
298 POSTINST_START=--nostart
299else
300 POSTINST_START=
301fi
302# Install and start the new service scripts.
303/usr/lib/virtualbox/prerm-common.sh || true
304/usr/lib/virtualbox/postinst-common.sh ${POSTINST_START} > /dev/null || true
305
306
307%preun
308# Called before the package is removed, or during upgrade after (not before)
309# the new version's "post" scriptlet.
310# $1==0: remove the last version of the package
311# $1>=1: upgrade
312if [ "$1" = 0 ]; then
313 /usr/lib/virtualbox/prerm-common.sh || exit 1
314 rm -f /etc/udev/rules.d/60-vboxdrv.rules
315 rm -f /etc/vbox/license_agreed
316 rm -f /etc/vbox/module_not_compiled
317fi
318
319%postun
320%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
321/sbin/ldconfig
322%{clean_desktop_database}
323%clean_menus
324%endif
325update-mime-database /usr/share/mime &> /dev/null || :
326update-desktop-database -q > /dev/null 2>&1 || :
327touch --no-create /usr/share/icons/hicolor
328gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
329rm -rf /usr/lib/virtualbox/ExtensionPacks
330
331
332%clean
333rm -rf $RPM_BUILD_ROOT
334
335
336%files
337%defattr(-,root,root)
338%doc %{VBOXDOCDIR}/*
339%if %{?with_python:1}%{!?with_python:0}
340%{vbox_python_sitelib}/*
341%endif
342/etc/vbox
343/usr/bin/*
344/usr/src/vbox*
345/usr/lib/virtualbox
346/usr/share/applications/*
347/usr/share/icons/hicolor/*/apps/*
348/usr/share/icons/hicolor/*/mimetypes/*
349/usr/share/mime/packages/*
350/usr/share/pixmaps/*
351/usr/share/virtualbox
Note: See TracBrowser for help on using the repository browser.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette