VirtualBox

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

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

Installers/Linux: add VirtualBoxVM symbolic links for RPM and Deb packages too.
bugref:9347: VirtualBox suggests VirtualBoxVM but this does not exist.
Now VirtualBoxVM can be accessed in the path from the command line for
distribution package builds too.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Author Date Id Revision
File size: 11.6 KB
Line 
1# $Id: VirtualBox.tmpl.spec 76758 2019-01-10 16:27:30Z vboxsync $
2## @file
3# Spec file for creating VirtualBox rpm packages
4#
5
6#
7# Copyright (C) 2006-2019 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/VirtualBoxVM
145ln -s VBox $RPM_BUILD_ROOT/usr/bin/virtualboxvm
146ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxManage
147ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxmanage
148test -f VBoxSDL && ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxSDL
149test -f VBoxSDL && ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxsdl
150ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxVRDP
151ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxHeadless
152ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxheadless
153ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxDTrace
154ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxdtrace
155ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBugReport
156ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxbugreport
157ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxBalloonCtrl
158ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxballoonctrl
159ln -s VBox $RPM_BUILD_ROOT/usr/bin/VBoxAutostart
160ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxautostart
161ln -s VBox $RPM_BUILD_ROOT/usr/bin/vboxwebsrv
162ln -s /usr/lib/virtualbox/vbox-img $RPM_BUILD_ROOT/usr/bin/vbox-img
163ln -s /usr/share/virtualbox/src/vboxhost $RPM_BUILD_ROOT/usr/src/vboxhost-%VER%
164mv virtualbox.desktop $RPM_BUILD_ROOT/usr/share/applications/virtualbox.desktop
165mv VBox.png $RPM_BUILD_ROOT/usr/share/pixmaps/VBox.png
166%{!?is_ose: mv LICENSE $RPM_BUILD_ROOT%{VBOXDOCDIR}}
167mv UserManual*.pdf $RPM_BUILD_ROOT%{VBOXDOCDIR}
168%{!?is_ose: mv VirtualBox*.chm $RPM_BUILD_ROOT%{VBOXDOCDIR}}
169install -m 755 -d $RPM_BUILD_ROOT/usr/lib/debug/usr/lib/virtualbox
170%if %{?rpm_suse:1}%{!?rpm_suse:0}
171rm *.debug
172%else
173mv *.debug $RPM_BUILD_ROOT/usr/lib/debug/usr/lib/virtualbox
174%endif
175mv * $RPM_BUILD_ROOT/usr/lib/virtualbox
176if [ -f $RPM_BUILD_ROOT/usr/lib/virtualbox/libQt5CoreVBox.so.5 ]; then
177 $RPM_BUILD_ROOT/usr/lib/virtualbox/chrpath --keepgoing --replace /usr/lib/virtualbox \
178 $RPM_BUILD_ROOT/usr/lib/virtualbox/*.so.5 \
179 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/platforms/*.so \
180 $RPM_BUILD_ROOT/usr/lib/virtualbox/plugins/xcbglintegrations/*.so || true
181 echo "[Paths]" > $RPM_BUILD_ROOT/usr/lib/virtualbox/qt.conf
182 echo "Plugins = /usr/lib/virtualbox/plugins" >> $RPM_BUILD_ROOT/usr/lib/virtualbox/qt.conf
183 rm $RPM_BUILD_ROOT/usr/lib/virtualbox/chrpath
184fi
185if [ -d $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy ]; then
186 mv $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy/* $RPM_BUILD_ROOT/usr/lib/virtualbox
187 rmdir $RPM_BUILD_ROOT/usr/lib/virtualbox/legacy
188fi
189ln -s ../VBoxVMM.so $RPM_BUILD_ROOT/usr/lib/virtualbox/components/VBoxVMM.so
190for i in VBoxHeadless VBoxNetDHCP VBoxNetNAT VBoxNetAdpCtl; do
191 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/$i; done
192if test -e $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBoxVM; then
193 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBoxVM
194else
195 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VirtualBox
196fi
197if [ -f $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxVolInfo ]; then
198 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxVolInfo
199fi
200test -f $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxSDL && \
201 chmod 4511 $RPM_BUILD_ROOT/usr/lib/virtualbox/VBoxSDL
202
203
204%pre
205# defaults
206[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
207
208# check for old installation
209if [ -r /etc/vbox/vbox.cfg ]; then
210 . /etc/vbox/vbox.cfg
211 if [ "x$INSTALL_DIR" != "x" -a -d "$INSTALL_DIR" ]; then
212 echo "An old installation of VirtualBox was found. To install this package the"
213 echo "old package has to be removed first. Have a look at /etc/vbox/vbox.cfg to"
214 echo "determine the installation directory of the previous installation. After"
215 echo "uninstalling the old package remove the file /etc/vbox/vbox.cfg."
216 exit 1
217 fi
218fi
219
220# check for active VMs of the installed (old) package
221# Execute the installed packages pre-uninstaller if present.
222/usr/lib/virtualbox/prerm-common.sh 2>/dev/null
223# Stop services from older versions without pre-uninstaller.
224/etc/init.d/vboxballoonctrl-service stop 2>/dev/null
225/etc/init.d/vboxautostart-service stop 2>/dev/null
226/etc/init.d/vboxweb-service stop 2>/dev/null
227VBOXSVC_PID=`pidof VBoxSVC 2>/dev/null || true`
228if [ -n "$VBOXSVC_PID" ]; then
229 # ask the daemon to terminate immediately
230 kill -USR1 $VBOXSVC_PID
231 sleep 1
232 if pidof VBoxSVC > /dev/null 2>&1; then
233 echo "A copy of VirtualBox is currently running. Please close it and try again."
234 echo "Please note that it can take up to ten seconds for VirtualBox (in particular"
235 echo "the VBoxSVC daemon) to finish running."
236 exit 1
237 fi
238fi
239
240
241%post
242LOG="/var/log/vbox-install.log"
243
244# defaults
245[ -r /etc/default/virtualbox ] && . /etc/default/virtualbox
246
247# remove old cruft
248if [ -f /etc/init.d/vboxdrv.sh ]; then
249 echo "Found old version of /etc/init.d/vboxdrv.sh, removing."
250 rm /etc/init.d/vboxdrv.sh
251fi
252if [ -f /etc/vbox/vbox.cfg ]; then
253 echo "Found old version of /etc/vbox/vbox.cfg, removing."
254 rm /etc/vbox/vbox.cfg
255fi
256rm -f /etc/vbox/module_not_compiled
257
258# create users groups (disable with INSTALL_NO_GROUP=1 in /etc/default/virtualbox)
259if [ "$INSTALL_NO_GROUP" != "1" ]; then
260 echo
261 echo "Creating group 'vboxusers'. VM users must be member of that group!"
262 echo
263 groupadd -r -f vboxusers 2> /dev/null
264fi
265
266%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
267/sbin/ldconfig
268%update_menus
269%endif
270update-mime-database /usr/share/mime &> /dev/null || :
271update-desktop-database -q > /dev/null 2>&1 || :
272touch --no-create /usr/share/icons/hicolor
273gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
274
275# Disable module compilation with INSTALL_NO_VBOXDRV=1 in /etc/default/virtualbox
276if test "${INSTALL_NO_VBOXDRV}" = 1; then
277 POSTINST_START=--nostart
278else
279 POSTINST_START=
280fi
281# Install and start the new service scripts.
282/usr/lib/virtualbox/prerm-common.sh || true
283/usr/lib/virtualbox/postinst-common.sh ${POSTINST_START} > /dev/null || true
284
285
286%preun
287# Called before the package is removed, or during upgrade after (not before)
288# the new version's "post" scriptlet.
289# $1==0: remove the last version of the package
290# $1>=1: upgrade
291if [ "$1" = 0 ]; then
292 /usr/lib/virtualbox/prerm-common.sh || exit 1
293 rm -f /etc/udev/rules.d/60-vboxdrv.rules
294 rm -f /etc/vbox/license_agreed
295 rm -f /etc/vbox/module_not_compiled
296fi
297
298%postun
299%if %{?rpm_mdv:1}%{!?rpm_mdv:0}
300/sbin/ldconfig
301%{clean_desktop_database}
302%clean_menus
303%endif
304update-mime-database /usr/share/mime &> /dev/null || :
305update-desktop-database -q > /dev/null 2>&1 || :
306touch --no-create /usr/share/icons/hicolor
307gtk-update-icon-cache -q /usr/share/icons/hicolor 2> /dev/null || :
308rm -rf /usr/lib/virtualbox/ExtensionPacks
309
310
311%clean
312rm -rf $RPM_BUILD_ROOT
313
314
315%files
316%defattr(-,root,root)
317%doc %{VBOXDOCDIR}/*
318%if %{?with_python:1}%{!?with_python:0}
319%{?rpm_suse: %{py_sitedir}/*}
320%{!?rpm_suse: %{python_sitelib}/*}
321%endif
322/etc/vbox
323/usr/bin/*
324/usr/src/vbox*
325/usr/lib/virtualbox
326/usr/share/applications/*
327/usr/share/icons/hicolor/*/apps/*
328/usr/share/icons/hicolor/*/mimetypes/*
329/usr/share/mime/packages/*
330/usr/share/pixmaps/*
331/usr/share/virtualbox
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette