VirtualBox

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

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

FE/Qt: bugref:10127. Adding virtualboxvm.desktop to installer. First draft.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 13.1 KB
Line 
1# $Id: VirtualBox.tmpl.spec 91846 2021-10-19 18:01:00Z 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 virtualboxvm.desktop $RPM_BUILD_ROOT/usr/share/applications/virtualboxvm.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