VirtualBox

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

Last change on this file since 91749 was 90369, checked in by vboxsync, 3 years ago

Installer/linux/rpm/VirtualBox.tmpl.spec: Fix deletion of chrpath when using system Qt.

  • 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 90369 2021-07-28 13:34:39Z vboxsync $
2## @file
3# Spec file for creating VirtualBox rpm packages
4#
5
6#
7# Copyright (C) 2006-2020 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 nls $RPM_BUILD_ROOT/usr/share/virtualbox
105cp -a src $RPM_BUILD_ROOT/usr/share/virtualbox
106mv VBox.sh $RPM_BUILD_ROOT/usr/bin/VBox
107mv VBoxSysInfo.sh $RPM_BUILD_ROOT/usr/share/virtualbox
108cp icons/128x128/virtualbox.png $RPM_BUILD_ROOT/usr/share/pixmaps/virtualbox.png
109cd icons
110 for i in *; do
111 if [ -f $i/virtualbox.* ]; then
112 install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
113 mv $i/virtualbox.* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/apps
114 fi
115 install -d $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes
116 mv $i/* $RPM_BUILD_ROOT/usr/share/icons/hicolor/$i/mimetypes || true
117 rmdir $i
118 done
119cd -
120rmdir icons
121mv virtualbox.xml $RPM_BUILD_ROOT/usr/share/mime/packages
122mv VBoxTunctl $RPM_BUILD_ROOT/usr/bin
123%if %{?is_ose:0}%{!?is_ose:1}
124%if "%BUILDREL%" == "el7"
125# For el7 we use gcc from devtoolset-4, which is not suitable for kernel work.
126# See the PATH trickery in src/VBox/Installer/linux/rpm/rules.
127old_path="$PATH"
128PATH=${PATH#/opt/rh/devtoolset-4/root/usr/bin:}
129%endif
130for d in /lib/modules/*; do
131 if [ -L $d/build ]; then
132 rm -f /tmp/vboxdrv-Module.symvers
133 ./src/vboxhost/build_in_tmp \
134 --save-module-symvers /tmp/vboxdrv-Module.symvers \
135 --module-source `pwd`/src/vboxhost/vboxdrv \
136 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
137 %INSTMOD%
138 ./src/vboxhost/build_in_tmp \
139 --use-module-symvers /tmp/vboxdrv-Module.symvers \
140 --module-source `pwd`/src/vboxhost/vboxnetflt \
141 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
142 %INSTMOD%
143 ./src/vboxhost/build_in_tmp \
144 --use-module-symvers /tmp/vboxdrv-Module.symvers \
145 --module-source `pwd`/src/vboxhost/vboxnetadp \
146 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
147 %INSTMOD%
148 if [ -e `pwd`/src/vboxhost/vboxpci ]; then
149 ./src/vboxhost/build_in_tmp \
150 --use-module-symvers /tmp/vboxdrv-Module.symvers \
151 --module-source `pwd`/src/vboxhost/vboxpci \
152 KBUILD_VERBOSE= KERN_VER=$(basename $d) INSTALL_MODULE_PATH=$RPM_BUILD_ROOT -j4 \
153 %INSTMOD%
154 fi
155 fi
156done
157%if "%BUILDREL%" == "el7"
158# For el7 restore PATH, see above.
159PATH="$old_path"
160unset old_path
161%endif
162rm -r src
163%endif
164%if %{?is_ose:0}%{!?is_ose:1}
165 for i in rdesktop-vrdp.tar.gz rdesktop-vrdp-keymaps; do
166 mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
167 # Very little needed tool causing python compatibility trouble. Do not ship.
168 rm -f $RPM_BUILD_ROOT/usr/share/virtualbox/rdesktop-vrdp-keymaps/convert-map
169 mv rdesktop-vrdp $RPM_BUILD_ROOT/usr/bin
170%endif
171for i in additions/VBoxGuestAdditions.iso; do
172 mv $i $RPM_BUILD_ROOT/usr/share/virtualbox; done
173ln -s VBox $RPM_BUILD_ROOT/usr/bin/VirtualBox
174ln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualbox
175ln -s VBox $RPM_BUILD_ROOT/usr/bin/VirtualBoxVM
176ln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualboxvm
177ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxManage
178ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxmanage
179test -f VBoxSDL && ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxSDL
180test -f VBoxSDL && ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxsdl
181ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxVRDP
182ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxHeadless
183ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxheadless
184ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxDTrace
185ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxAudioTest
186ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxdtrace
187ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxaudiotest
188ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBugReport
189ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxbugreport
190ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBalloonCtrl
191ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxballoonctrl
192ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxAutostart
193ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxautostart
194test -f vboxwebsrv && ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxwebsrv
195ln -s /usr/lib/virtualbox/vbox-img $RPM_BUILD_ROOT/usr/bin/vbox-img
196ln -s /usr/lib/virtualbox/vboximg-mount $RPM_BUILD_ROOT/usr/bin/vboximg-mount
197ln -s /usr/share/virtualbox/src/vboxhost $RPM_BUILD_ROOT/usr/src/vboxhost-%VER%
198mv virtualbox.desktop $RPM_BUILD_ROOT/usr/share/applications/virtualbox.desktop
199mv VBox.png $RPM_BUILD_ROOT/usr/share/pixmaps/VBox.png
200%{!?is_ose: mv LICENSE $RPM_BUILD_ROOT%{VBOXDOCDIR}}
201mv UserManual*.pdf $RPM_BUILD_ROOT%{VBOXDOCDIR}
202%{?with_qhelp: mv VirtualBox*.qch VirtualBox*.qhc $RPM_BUILD_ROOT%{VBOXDOCDIR}}
203install -m 755 -d $RPM_BUILD_ROOT/usr/lib/debug/usr/lib/virtualbox
204%if %{?rpm_suse:1}%{!?rpm_suse:0}
205rm *.debug
206%else
207mv *.debug $RPM_BUILD_ROOT/usr/lib/debug/usr/lib/virtualbox
208%endif
209mv * $RPM_BUILD_ROOT/usr/lib/virtualbox
210if [ -f $RPM_BUILD_ROOT/usr/lib/virtualbox/libQt5CoreVBox.so.5 ]; then
211 $RPM_BUILD_ROOT/usr/lib/virtualbox/chrpath --keepgoing --replace /usr/lib/virtualbox \
212 $RPM_BUILD_ROOT/usr/lib/virtualbox/*.so.5 \
213 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/platforms/*.so \
214 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/platformthemes/*.so \
215 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/sqldrivers/*.so \
216 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/styles/*.so \
217 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/xcbglintegrations/*.so || true
218 echo "[Paths]" > $RPM_BUILD_ROOT/usr/lib/virtualbox/qt.conf
219 echo "Plugins = /usr/lib/virtualbox/plugins" >> $RPM_BUILD_ROOT/usr/lib/virtualbox/qt.conf
220fi
221rm -f $RPM_BUILD_ROOT/usr/lib/virtualbox/chrpath
222ln -s ../VBoxVMM.so $RPM_BUILD_ROOT/usr/lib/virtualbox/components/VBoxVMM.so
223for i in VBoxHeadless VBoxNetDHCP VBoxNetNAT VBoxNetAdpCtl; do
224 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
225if test -e $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBoxVM; then
226 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBoxVM
227else
228 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBox
229fi
230if [ -f $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxVolInfo ]; then
231 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxVolInfo
232fi
233test -f $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxSDL && \
234 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxSDL
235%if %{?with_python:1}%{!?with_python:0}
236if [ -x /usr/bin/pathfix.py ]; then
237 /usr/bin/pathfix.py -pni "%{__python3} %{py3_shbang_opts}" $RPM_BUILD_ROOT/usr/lib/virtualbox/vboxshell.py
238fi
239%endif
240
241
242%pre
243# defaults
244[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
245
246# check for old installation
247if [ -r /etc/vbox/vbox.cfg ]; then
248 . /etc/vbox/vbox.cfg
249 if [ "x$INSTALL_DIR" != "x" -a -d "$INSTALL_DIR" ]; then
250 echo "An old installation of VirtualBox was found. To install this package the"
251 echo "old package has to be removed first. Have a look at /etc/vbox/vbox.cfg to"
252 echo "determine the installation directory of the previous installation. After"
253 echo "uninstalling the old package remove the file /etc/vbox/vbox.cfg."
254 exit 1
255 fi
256fi
257
258# check for active VMs of the installed (old) package
259# Execute the installed packages pre-uninstaller if present.
260/usr/lib/virtualbox/prerm-common.sh 2>/dev/null
261# Stop services from older versions without pre-uninstaller.
262/etc/init.d/vboxballoonctrl-service stop 2>/dev/null
263/etc/init.d/vboxautostart-service stop 2>/dev/null
264/etc/init.d/vboxweb-service stop 2>/dev/null
265VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
266if [ -n "$VBOXSVC_PID" ]; then
267 # ask the daemon to terminate immediately
268 kill -USR1 $VBOXSVC_PID
269 sleep 1
270 if pidof VBoxSVC > /dev/null 2>&1; then
271 echo "A copy of VirtualBox is currently running. Please close it and try again."
272 echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
273 echo "the VBoxSVC daemon) to finish running."
274 exit 1
275 fi
276fi
277
278
279%post
280LOG="/var/log/vbox-install.log"
281
282# defaults
283[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
284
285# remove old cruft
286if [ -f /etc/init.d/vboxdrv.sh ]; then
287 echo "Found old version of /etc/init.d/vboxdrv.sh, removing."
288 rm /etc/init.d/vboxdrv.sh
289fi
290if [ -f /etc/vbox/vbox.cfg ]; then
291 echo "Found old version of /etc/vbox/vbox.cfg, removing."
292 rm /etc/vbox/vbox.cfg
293fi
294rm -f /etc/vbox/module_not_compiled
295
296# create users groups (disable with INSTALL_NO_GROUP=1 in /etc/default/virtualbox)
297if [ "$INSTALL_NO_GROUP" != "1" ]; then
298 echo
299 echo "Creating group 'vboxusers'. VM users must be member of that group!"
300 echo
301 groupadd -r -f vboxusers 2> /dev/null
302fi
303
304%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
305/sbin/ldconfig
306%update_menus
307%endif
308update-mime-database /usr/share/mime &> /dev/null || :
309update-desktop-database -q > /dev/null 2>&1 || :
310touch --no-create /usr/share/icons/hicolor
311gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
312
313# Disable module compilation with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox
314if test "${INSTALL_NO_VBOXDRV}" = 1; then
315 POSTINST_START=--nostart
316else
317 POSTINST_START=
318fi
319# Install and start the new service scripts.
320/usr/lib/virtualbox/prerm-common.sh || true
321/usr/lib/virtualbox/postinst-common.sh ${POSTINST_START} > /dev/null || true
322
323
324%preun
325# Called before the package is removed, or during upgrade after (not before)
326# the new version's "post" scriptlet.
327# $1==0: remove the last version of the package
328# $1>=1: upgrade
329if [ "$1" = 0 ]; then
330 /usr/lib/virtualbox/prerm-common.sh || exit 1
331 rm -f /etc/udev/rules.d/60-vboxdrv.rules
332 rm -f /etc/vbox/license_agreed
333 rm -f /etc/vbox/module_not_compiled
334fi
335
336%postun
337%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
338/sbin/ldconfig
339%{clean_desktop_database}
340%clean_menus
341%endif
342update-mime-database /usr/share/mime &> /dev/null || :
343update-desktop-database -q > /dev/null 2>&1 || :
344touch --no-create /usr/share/icons/hicolor
345gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
346rm -rf /usr/lib/virtualbox/ExtensionPacks
347
348
349%clean
350rm -rf $RPM_BUILD_ROOT
351
352
353%files
354%defattr(-,root,root)
355%doc %{VBOXDOCDIR}/*
356%if %{?with_python:1}%{!?with_python:0}
357%{vbox_python_sitelib}/*
358%endif
359/etc/vbox
360/usr/bin/*
361/usr/src/vbox*
362/usr/lib/virtualbox
363/usr/share/applications/*
364/usr/share/icons/hicolor/*/apps/*
365/usr/share/icons/hicolor/*/mimetypes/*
366/usr/share/mime/packages/*
367/usr/share/pixmaps/*
368/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