VirtualBox

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

最後變更 在這個檔案從84617是 84617,由 vboxsync 提交於 5 年 前

Installer/linux/rpm: more fixes to the #! rewriting. Was done before the file was moved into place.

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

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