# # TODO: # - Find how to compile with PLD CFLAGS/CXXFLAGS/LDFLAGS. # - How to package video and mouse drivers for Guest OS ? # (There are binaries for multiple versions of X11) # - Package SDK. # # Conditional build: %bcond_without dist_kernel # without distribution kernel %bcond_without kernel # don't build kernel module %bcond_without userspace # don't build userspace package %define _rel 1 Summary: VirtualBox - x86 hardware virtualizer Summary(pl.UTF-8): VirtualBox - wirtualizator sprzętu x86 Name: VirtualBox Version: 1.5.0 Release: %{_rel} License: GPL v2 Group: Applications/Emulators Source0: http://www.virtualbox.org/download/%{version}/%{name}-%{version}_OSE.tar.bz2 # Source0-md5: 56c074900260c109ed735c08e726fe81 Source1: virtualbox.init Source2: http://www.virtualbox.org/download/UserManual.pdf # Source2-md5: 2e5458bd5b4b9acd18cc86866e8a7284 Source3: %{name}.desktop Source4: %{name}.sh Patch0: %{name}-configure.patch Patch1: %{name}-qt-paths.patch Patch2: %{name}-shared-libstdc++.patch URL: http://www.virtualbox.org/ BuildRequires: SDL-devel BuildRequires: bash BuildRequires: bcc BuildRequires: bin86 BuildRequires: gcc >= 5:3.2.3 BuildRequires: iasl %{?with_dist_kernel:BuildRequires: kernel%{_alt_kernel}-module-build >= 3:2.6.7} BuildRequires: libIDL-devel BuildRequires: libuuid-devel BuildRequires: libxslt-progs BuildRequires: qt-devel >= 6:3.3.6 BuildRequires: qt-linguist BuildRequires: rpmbuild(macros) >= 1.329 BuildRequires: xalan-c-devel >= 1.10.0 #BuildRequires: xcursor-devel BuildRequires: xerces-c-devel >= 2.6.0 BuildRequires: xorg-lib-libXcursor-devel BuildRequires: zlib-devel >= 1.2.1 Requires(postun): /usr/sbin/groupdel Requires(pre): /usr/bin/getgid Requires(pre): /usr/sbin/groupadd Suggests: gxmessage Provides: group(vbox) ExclusiveArch: %{ix86} %{x8664} BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n) %ifarch %{x8664} %define _outdir amd64 %else %define _outdir x86 %endif %description InnoTek VirtualBox is a general-purpose full virtualizer for x86 hardware. Targeted at server, desktop and embedded use, it is now the only professional-quality virtualization solution that is also Open Source Software. Some of the features of VirtualBox are: Modularity: VirtualBox has an extremely modular design with well-defined internal programming interfaces and a client/server design. This makes it easy to control it from several interfaces at once: for example, you can start a virtual machine in a typical virtual machine GUI and then control that machine from the command line. VirtualBox also comes with a full Software Development Kit: even though it is Open Source Software, you don't have to hack the source to write a new interface for VirtualBox. Virtual machine descriptions in XML: the configuration settings of virtual machines are stored entirely in XML and are independent of the local machines. Virtual machine definitions can therefore easily be ported to other computers. %description -l pl.UTF-8 InnoTek VirtualBox jest emulatorem sprzętu x86. Kierowany do zastosowań serwerowych, desktopowych oraz wbudowanych jest obecnie jedynym wysokiej jakości rozwiązaniem wirtualizacyjnym dostępnym również jako Otwarte Oprogramowanie. Przykładowe cechy VirtualBoksa: Modularność: VirtualBox jest wysoce zmodularyzowanym produktem z dobrze zaprojektowanym wewnętrznym interfejsem programowym typu klient/serwer. Dzięki temu można łatwo kontrolować go za pomocą różnych interfejsów. Można na przykład uruchomić maszynę wirtualną z poziomu interfejsu graficznego, a później kontrolować ją z linii poleceń. VirtualBox dostarcza również pełny pakiet deweloperski, co pozwala stworzyć dowolny inny interfejs zarządzania maszyną wirtualną. Opisy maszyn wirtualnych w XML-u: konfiguracje poszczególnych maszyn wirtualnych są w całości przechowywane w XML-u i są niezależne od lokalnej maszyny. Dzięki temu można szybko i łatwo przenieść konfigurację maszyny wirtualnej na inny komputer. %package -n kernel%{_alt_kernel}-misc-vboxadd Summary: Linux kernel module for VirtualBox Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa Release: %{_rel}@%{_kernel_ver_str} Group: Base/Kernel Requires(post,postun): /sbin/depmod Requires: dev >= 2.9.0-7 %if %{with dist_kernel} %requires_releq_kernel Requires(postun): %releq_kernel %endif Provides: kernel(vboxadd) = %{version}-%{_rel} %description -n kernel%{_alt_kernel}-misc-vboxadd Linux kernel module vboxadd for VirtualBox. %description -n kernel%{_alt_kernel}-misc-vboxadd -l pl.UTF-8 Moduł jądra Linuksa vboxadd dla VirtualBoksa. %package -n kernel%{_alt_kernel}-misc-vboxdrv Summary: Linux kernel module for VirtualBox Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa Release: %{_rel}@%{_kernel_ver_str} Group: Base/Kernel Requires(post,postun): /sbin/depmod Requires: dev >= 2.9.0-7 %if %{with dist_kernel} %requires_releq_kernel Requires(postun): %releq_kernel %endif Provides: kernel(vboxdrv) = %{version}-%{_rel} %description -n kernel%{_alt_kernel}-misc-vboxdrv Linux kernel module vboxdrv for VirtualBox. %description -n kernel%{_alt_kernel}-misc-vboxdrv -l pl.UTF-8 Moduł jądra Linuksa vboxdrv dla VirtualBoksa. %package -n kernel%{_alt_kernel}-misc-vboxvfs Summary: Linux kernel module for VirtualBox Summary(pl.UTF-8): Moduł jądra Linuksa dla VirtualBoksa Release: %{_rel}@%{_kernel_ver_str} Group: Base/Kernel Requires(post,postun): /sbin/depmod Requires: dev >= 2.9.0-7 %if %{with dist_kernel} %requires_releq_kernel Requires(postun): %releq_kernel %endif Provides: kernel(vboxvfs) = %{version}-%{_rel} %description -n kernel%{_alt_kernel}-misc-vboxvfs Linux kernel module vboxvfs for VirtualBox. %description -n kernel%{_alt_kernel}-misc-vboxvfs -l pl.UTF-8 Moduł jądra Linuksa vboxvfs dla VirtualBoksa. %prep %setup -q -n %{name}-%{version}_OSE %patch0 -p0 %patch1 -p0 %patch2 -p1 install %{SOURCE2} . %build KDIR="%{_builddir}/%{buildsubdir}/kernel" mkdir -p $KDIR cp -Ra %{_kernelsrcdir}/include $KDIR %ifarch %{x8664} ln -sf $KDIR/include/asm-x86_64 $KDIR/include/asm %else ln -sf $KDIR/include/asm-i386 $KDIR/include/asm %endif %if %{with dist_kernel} [ ! -f $KDIR/include/linux/autoconf.h ] && \ ln -sf $KDIR/include/linux/autoconf-dist.h $KDIR/include/linux/autoconf.h %else [ ! -f $KDIR/include/linux/autoconf.h ] && \ ln -sf $KDIR/include/linux/autoconf-nondist.h $KDIR/include/linux/autoconf.h %endif ./configure \ --with-gcc="%{__cc}" \ --with-g++="%{__cxx}" \ --with-linux="$KDIR" %if %{with userspace} . ./env.sh && kmk -j1 %endif %if %{with kernel} rm -rf PLD-MODULE-BUILD && mkdir PLD-MODULE-BUILD && cd PLD-MODULE-BUILD ../src/VBox/HostDrivers/Support/linux/export_modules modules.tar.gz && \ tar -zxf modules.tar.gz && rm -f modules.tar.gz ../src/VBox/Additions/linux/export_modules modules.tar.gz tar -zxf modules.tar.gz && rm -f modules.tar.gz %build_kernel_modules -m vboxadd -C vboxadd %build_kernel_modules -m vboxdrv -C vboxdrv %build_kernel_modules -m vboxvfs -C vboxvfs cd .. %endif %install rm -rf $RPM_BUILD_ROOT %if %{with userspace} install -d \ $RPM_BUILD_ROOT{%{_bindir},%{_pixmapsdir},%{_desktopdir}} \ $RPM_BUILD_ROOT%{_libdir}/VirtualBox \ $RPM_BUILD_ROOT/etc/rc.d/init.d for f in {VBox{BFE,Manage,SDL,SVC,XPCOMIPCD},VirtualBox}; do install out/linux.%{_outdir}/release/bin/$f $RPM_BUILD_ROOT%{_libdir}/VirtualBox/$f install %{SOURCE4} $RPM_BUILD_ROOT%{_bindir}/$f done install out/linux.%{_outdir}/release/bin/VBox*.so \ $RPM_BUILD_ROOT%{_libdir}/VirtualBox install out/linux.%{_outdir}/release/bin/{VBox{DD,DD2}{GC.gc,R0.r0},VMM{GC.gc,R0.r0},*.xpt} \ $RPM_BUILD_ROOT%{_libdir}/VirtualBox cp -a out/linux.%{_outdir}/release/bin/components $RPM_BUILD_ROOT%{_libdir}/VirtualBox install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/virtualbox install out/linux.%{_outdir}/release/bin/VBox.png $RPM_BUILD_ROOT%{_pixmapsdir}/VBox.png install %{SOURCE3} $RPM_BUILD_ROOT%{_desktopdir}/%{name}.desktop %endif %if %{with kernel} cd PLD-MODULE-BUILD for MODULE in *; do [ ! -d $MODULE ] && continue; cd $MODULE %install_kernel_modules -m $MODULE -d misc cd .. done cd .. %endif %clean rm -rf $RPM_BUILD_ROOT %pre %groupadd -g 221 -r -f vbox %post /sbin/chkconfig --add virtualbox %service virtualbox restart "VBoxSVC daemon" if [ "$1" = 1 ]; then %banner -e %{name} <<'EOF' Remember to add users which will use VirtualBox to vbox group or they won't be able to write to /dev/vboxdrv. EOF #' fi %preun if [ "$1" = "0" ]; then %service virtualbox stop /sbin/chkconfig --del virtualbox fi %postun if [ "$1" = "0" ]; then %groupremove vbox fi %post -n kernel%{_alt_kernel}-misc-vboxadd %depmod %{_kernel_ver} %postun -n kernel%{_alt_kernel}-misc-vboxadd %depmod %{_kernel_ver} %post -n kernel%{_alt_kernel}-misc-vboxdrv %depmod %{_kernel_ver} %postun -n kernel%{_alt_kernel}-misc-vboxdrv %depmod %{_kernel_ver} %post -n kernel%{_alt_kernel}-misc-vboxvfs %depmod %{_kernel_ver} %postun -n kernel%{_alt_kernel}-misc-vboxvfs %depmod %{_kernel_ver} %if %{with userspace} %files %defattr(644,root,root,755) %doc UserManual.pdf %attr(755,root,root) %{_bindir}/VBox* %attr(755,root,root) %{_bindir}/VirtualBox %dir %{_libdir}/VirtualBox %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSVC %attr(755,root,root) %{_libdir}/VirtualBox/VBoxBFE %attr(755,root,root) %{_libdir}/VirtualBox/VBoxManage %attr(755,root,root) %{_libdir}/VirtualBox/VBoxSDL %attr(755,root,root) %{_libdir}/VirtualBox/VBoxXPCOMIPCD %attr(755,root,root) %{_libdir}/VirtualBox/VirtualBox %{_libdir}/VirtualBox/*.gc %{_libdir}/VirtualBox/*.r0 %attr(755,root,root) %{_libdir}/VirtualBox/VBox*.so %{_libdir}/VirtualBox/*.xpt %dir %{_libdir}/VirtualBox/components %{_libdir}/VirtualBox/components/* %attr(754,root,root) /etc/rc.d/init.d/virtualbox %{_pixmapsdir}/VBox.png %{_desktopdir}/%{name}.desktop %endif %if %{with kernel} %files -n kernel%{_alt_kernel}-misc-vboxadd %defattr(644,root,root,755) /lib/modules/%{_kernel_ver}/misc/vboxadd.ko* %files -n kernel%{_alt_kernel}-misc-vboxdrv %defattr(644,root,root,755) /lib/modules/%{_kernel_ver}/misc/vboxdrv.ko* %files -n kernel%{_alt_kernel}-misc-vboxvfs %defattr(644,root,root,755) /lib/modules/%{_kernel_ver}/misc/vboxvfs.ko* %endif