VirtualBox

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

Last change on this file since 61488 was 61488, checked in by vboxsync, 9 years ago

deb/rpm: more fixes for chrpath

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