VirtualBox

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

Last change on this file since 93740 was 93115, checked in by vboxsync, 3 years ago

scm --update-copyright-year

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