VirtualBox

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

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

Installer/linux: For RPM build, finish making the CHM docs optional, and also put all build files into the out directory. Finally no more rubbish in some random directories in the source code area.

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