VirtualBox

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

Last change on this file since 76408 was 74979, checked in by vboxsync, 6 years ago

Installers/linux: adjust for split GUI binaries and bump from 5.2 to 6.0.

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