+#
+# TODO:
+# - most of the qemu config options aren't detected (curses, NPTL, vde, fdt)
+# - package the ocaml stuff
+#
+# Conditional build:
+%bcond_without hvm # build with hvm (full virtualization) support
+
+%define xen_extfiles_url http://xenbits.xensource.com/xen-extfiles
Summary: Xen - a virtual machine monitor
-Summary(pl): Xen - monitor maszyny wirtualnej
+Summary(pl.UTF-8): Xen - monitor maszyny wirtualnej
Name: xen
-Version: 2
-Release: 20041205
-Group: Development/Libraries
+Version: 4.1.2
+Release: 0.2
License: GPL
-Source0: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/downloads/%{name}-unstable-src.tgz
-URL: http://sourceforge.net/projects/xen/
+Group: Applications/System
+Source0: http://bits.xensource.com/oss-xen/release/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: 73561faf3c1b5e36ec5c089b5db848ad
+Source1: %{name}-xend.init
+Source2: %{name}-xendomains.init
+# used by stubdoms
+Source10: %{xen_extfiles_url}/lwip-1.3.0.tar.gz
+# Source10-md5: 36cc57650cffda9a0269493be2a169bb
+Source11: %{xen_extfiles_url}/newlib-1.16.0.tar.gz
+# Source11-md5: bf8f1f9e3ca83d732c00a79a6ef29bc4
+Source12: %{xen_extfiles_url}/zlib-1.2.3.tar.gz
+# Source12-md5: debc62758716a169df9f62e6ab2bc634
+Source13: %{xen_extfiles_url}/pciutils-2.2.9.tar.bz2
+# Source13-md5: cec05e7785497c5e19da2f114b934ffd
+Source14: %{xen_extfiles_url}/grub-0.97.tar.gz
+# Source14-md5: cd3f3eb54446be6003156158d51f4884
+Source15: %{xen_extfiles_url}/ipxe-git-v1.0.0.tar.gz
+# Source15-md5: fb7df96781d337899066d82059346885
+Patch0: %{name}-python_scripts.patch
+Patch1: %{name}-symbols.patch
+Patch2: %{name}-curses.patch
+Patch3: %{name}-gcc.patch
+URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html
+BuildRequires: SDL-devel
+%{?with_hvm:BuildRequires: bcc}
BuildRequires: curl-devel
+BuildRequires: e2fsprogs-devel
+BuildRequires: gcc >= 5:3.4
+BuildRequires: gettext-devel
+BuildRequires: latex2html
+BuildRequires: libidn-devel
+BuildRequires: ncurses-devel
+BuildRequires: pciutils-devel
+BuildRequires: pkgconfig
BuildRequires: python-devel
-BuildRequires: python-Twisted
-BuildRequires: bridge-utils
+BuildRequires: rpm-pythonprov
+BuildRequires: rpmbuild(macros) >= 1.268
+#BuildRequires: texlive-dvips
+#BuildRequires: texlive-latex-data
+BuildRequires: texlive-latex-psnfss
+BuildRequires: transfig
+BuildRequires: which
+BuildRequires: zlib-devel
+Requires(post,preun): /sbin/chkconfig
+Requires: %{name}-libs = %{version}-%{release}
+Requires: ZopeInterface
+Requires: bridge-utils
+Requires: coreutils
+Requires: diffutils
+Requires: gawk
+Requires: iptables
+Requires: kernel(xen0)
+Requires: losetup
+Requires: net-tools
+Requires: python-%{name} = %{version}-%{release}
+Requires: rc-scripts
+Requires: sed
+Requires: util-linux
+Requires: which
+Obsoletes: xen-doc
+ExclusiveArch: %{ix86} %{x8664}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _localstatedir /var/lib
+# some PPC/SPARC boot image in ELF format
+%define _noautostrip .*%{_datadir}/xen/qemu/openbios-.*
%description
This package contains the Xen hypervisor and Xen tools, needed to run
be surprised if this RPM eats your data, drinks your coffee or makes
fun of you in front of your friends.
-%description -l pl
-Ten pakiet zawiera nadzorcê oraz narzêdzia Xen, potrzebne do
+%description -l pl.UTF-8
+Ten pakiet zawiera nadzorcę oraz narzędzia Xen, potrzebne do
uruchamiania wirtualnych maszyn w systemach x86, wraz z pakietami
-kernel-xen*. Informacje jak u¿ywaæ Xena mo¿na znale¼æ na stronach
+kernel-xen*. Informacje jak używać Xena można znaleźć na stronach
projektu.
-Wirtualizacja mo¿e byæ u¿ywana do uruchamiania wielu wersji lub wielu
-dystrybucji Linuksa na jednym systemie lub do testowaania nie
-zaufanych aplikacji w odizolowanym ¶rodowisku. Nale¿y zauwa¿yæ, ¿e
-technologia Xen jest ci±gle rozwijana, a ten RPM by³ s³abo testowany.
-Nie nale¿y byæ zdziwionym, je¶li ten pakiet zje dane, wypije ca³±
-kawê czy bêdzie siê wy¶miewa³ w obecno¶ci przyjació³.
+Wirtualizacja może być używana do uruchamiania wielu wersji lub wielu
+dystrybucji Linuksa na jednym systemie lub do testowania nie zaufanych
+aplikacji w odizolowanym środowisku. Należy zauważyć, że technologia
+Xen jest ciągle rozwijana, a ten RPM był słabo testowany. Nie należy
+być zdziwionym, jeśli ten pakiet zje dane, wypije całą kawę czy będzie
+się wyśmiewał w obecności przyjaciół.
+
+%package libs
+Summary: xen libraries
+Summary(pl.UTF-8): Biblioteki xena
+Group: Libraries
+
+%description libs
+xen libraries.
+
+%description libs -l pl.UTF-8
+Biblioteki xena.
+
+%package devel
+Summary: Header files for xen
+Summary(pl.UTF-8): Pliki nagłówkowe xena
+Group: Development/Libraries
+Requires: %{name}-libs = %{version}-%{release}
+
+%description devel
+Header files for xen.
+
+%description devel -l pl.UTF-8
+Pliki nagłówkowe xena.
+
+%package static
+Summary: Static xen libraries
+Summary(pl.UTF-8): Statyczne biblioteki xena
+Group: Development/Libraries
+Requires: %{name}-devel = %{version}-%{release}
+
+%description static
+Static xen libraries.
+
+%description static -l pl.UTF-8
+Statyczne biblioteki xena.
+
+%package udev
+Summary: xen udev scripts
+Summary(pl.UTF-8): Skrypty udev dla xena
+Group: Applications/System
+
+%description udev
+xen udev scripts.
+
+%description udev -l pl.UTF-8
+Skrypty udev dla xena.
+
+%package xend
+Summary: xend daemon
+Summary(pl.UTF-8): Demon xend
+Group: Daemons
+
+%description xend
+xend daemon.
+
+%description xend -l pl.UTF-8
+Demon xend.
+
+%package -n python-xen
+Summary: xen Python modules
+Summary(pl.UTF-8): Moduły Pythona dla xena
+Group: Libraries
+Conflicts: xen < 3.2.1-0.3
+
+%description -n python-xen
+xen Python modules.
+
+%description -n python-xen -l pl.UTF-8
+Moduły Pythona dla xena.
+
+%package -n bash-completion-%{name}
+Summary: bash-completion for xen
+Group: Applications/Shells
+Requires: %{name} = %{version}-%{release}
+Requires: bash-completion
+
+%description -n bash-completion-%{name}
+This package provides bash-completion for xen.
%prep
-%setup -q -n xen-unstable
+%setup -q
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+#%%patch3 -p1
+
+%{__rm} -v tools/check/*.orig
+
+# stubdom sources
+ln -s %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} stubdom
+ln -s %{PATCH23} stubdom/grub.patches/99grub-ext4-support.patch
+ln -s %{SOURCE15} tools/firmware/etherboot/ipxe.tar.gz
%build
-CFLAGS="%{rpmcflags}" \
-%{__make} xen tools docs
+CFLAGS="%{rpmcflags} -I/usr/include/ncurses" \
+CXXFLAGS="%{rpmcflags} -I/usr/include/ncurses" \
+%{__make} -j1 xen tools \
+ CC="%{__cc}" \
+ CXX="%{__cxx}"
%install
rm -rf $RPM_BUILD_ROOT
+install -d $RPM_BUILD_ROOT/etc/xen/examples
-%{__make} install-xen install-tools install-docs \
- prefix=$RPM_BUILD_ROOT
+%{__make} install-xen install-tools install-stubdom install-docs \
+ CC="%{__cc}" \
+ CXX="%{__cxx}" \
+ DESTDIR=$RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT%{_mandir}
-mv -f $RPM_BUILD_ROOT%{_prefix}/man/* $RPM_BUILD_ROOT%{_mandir}
+mv $RPM_BUILD_ROOT/etc/xen/{xmexample*,examples}
-rm -f $RPM_BUILD_ROOT%{_includedir}/%{name}/COPYING
+cp -p tools/blktap/README{,.blktap}
+cp -p tools/xenmon/README{,.xenmon}
+
+%py_comp $RPM_BUILD_ROOT%{py_sitedir}
+%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
+
+%py_postclean
+
+# remove unneeded files
+%{__rm} $RPM_BUILD_ROOT/boot/xen-4.1.gz
+%{__rm} $RPM_BUILD_ROOT/boot/xen-4.gz
+%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/xen
+%{__rm} $RPM_BUILD_ROOT%{_includedir}/%{name}/COPYING
%clean
rm -rf $RPM_BUILD_ROOT
+%post
+/sbin/chkconfig --add xen-watchdog
+/sbin/chkconfig --add xencommons
+/sbin/chkconfig --add xendomains
+
+%preun
+if [ "$1" = "0" ]; then
+ %service xendomains stop
+ /sbin/chkconfig --del xendomains
+
+ %service xencommons stop
+ /sbin/chkconfig --del xencommons
+
+ %service xen-watchdog stop
+ /sbin/chkconfig --del xen-watchdog
+fi
+
+%post xend
+/sbin/chkconfig --add xend
+
+%preun xend
+if [ "$1" = "0" ]; then
+ %service xend stop
+ /sbin/chkconfig --del xend
+fi
+
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
%files
%defattr(644,root,root,755)
-%doc COPYING ChangeLog README docs
-/boot/%{name}-syms
+%doc COPYING README* docs/misc/*
+%doc docs/html/*
+%doc tools/blktap/README.blktap tools/xenmon/README.xenmon
+%doc tools/ioemu-dir/*.html
+/boot/%{name}-syms-%{version}
+/boot/%{name}-%{version}.gz
/boot/%{name}.gz
-%attr(755,root,root) %{_sbindir}/netfix
+%attr(754,root,root) /etc/rc.d/init.d/xen-watchdog
+%attr(754,root,root) /etc/rc.d/init.d/xencommons
+%attr(754,root,root) /etc/rc.d/init.d/xendomains
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/*
+%dir %{_sysconfdir}/xen
+%dir %{_sysconfdir}/xen/auto
+%dir %{_sysconfdir}/xen/examples
+%dir %{_sysconfdir}/xen/scripts
+%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/scripts/*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/examples/*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/README*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/cpupool
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/xl.conf
+%attr(755,root,root) %{_bindir}/*
+%attr(755,root,root) %{_sbindir}/[bfgikloqtv]*
+%attr(755,root,root) %{_sbindir}/xen??*
+%attr(755,root,root) %{_sbindir}/xl
+%attr(755,root,root) %{_sbindir}/xsview
+%dir %{_libdir}/%{name}
+%dir %{_libdir}/%{name}/bin
+%attr(744,root,root) %{_libdir}/%{name}/bin/*
+%if "%{_lib}" != "lib"
+%dir %{_prefix}/lib/%{name}
+%endif
+%dir %{_prefix}/lib/%{name}/boot
+%{?with_hvm:%attr(744,root,root) %{_prefix}/lib/%{name}/boot/hvmloader}
+%{_datadir}/xen
+%{_mandir}/man?/*
+%{_sharedstatedir}/xen
+%{_sharedstatedir}/xenstored
+%dir /var/run/xenstored
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/lib*.so.*
+%dir %{_libdir}/fs
+%dir %{_libdir}/fs/ext2fs-lib
+%dir %{_libdir}/fs/fat
+%dir %{_libdir}/fs/iso9660
+%dir %{_libdir}/fs/reiserfs
+%dir %{_libdir}/fs/ufs
+%dir %{_libdir}/fs/zfs
+%attr(755,root,root) %{_libdir}/fs/*/*.so
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/lib*.so
+%{_includedir}/*
+
+%files static
+%defattr(644,root,root,755)
+%{_libdir}/lib*.a
+
+%files udev
+%defattr(644,root,root,755)
+%config(noreplace) %verify(not md5 mtime size) /etc/udev/*
+
+%files xend
+%defattr(644,root,root,755)
+%attr(754,root,root) %{_sysconfdir}/rc.d/init.d/xend
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/xm*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/xend*
%attr(755,root,root) %{_sbindir}/xend
-%attr(755,root,root) %{_sbindir}/xensv
-%attr(755,root,root) %{_sbindir}/xfrd
%attr(755,root,root) %{_sbindir}/xm
-%attr(755,root,root) %{_sbindir}/xenperf
-%attr(755,root,root) %{_bindir}/xenperf
-%attr(755,root,root) %{_bindir}/miniterm
-%attr(755,root,root) %{_bindir}/xencons
-%attr(755,root,root) %{_bindir}/xentrace
-%attr(755,root,root) %{_bindir}/xentrace_format
-%attr(755,root,root) %{_libdir}/libxc.so.*
-%attr(755,root,root) %{_libdir}/libxutil.so.*
-
-# -devel ?
-%attr(755,root,root) %{_libdir}/libxc.so
-%attr(755,root,root) %{_libdir}/libxutil.so
-%{_libdir}/libxutil.a
-%{_includedir}/*.h
-%dir %{_includedir}/%{name}
-%{_includedir}/%{name}/*.h
-# XXX: missing dir(s)!
-%{_includedir}/%{name}/*/*.h
-
-%dir %{py_sitedir}/%{name}
-%{py_sitedir}/%{name}/*.pyc
-%{py_sitedir}/%{name}/*.py
-# XXX: missing dir(s)!
-%{py_sitedir}/%{name}/*/*.pyc
-%{py_sitedir}/%{name}/*/*.py
-# XXX: missing dir(s)!
-%{py_sitedir}/%{name}/*/*/*.pyc
-%{py_sitedir}/%{name}/*/*/*.py
-%dir %{py_sitedir}/%{name}/lowlevel
-%{py_sitedir}/%{name}/lowlevel/*.so
-%{_mandir}/man?/*.?*
-%dir %{_localstatedir}/%{name}
-%dir %{_localstatedir}/%{name}/sv
-%dir %{_localstatedir}/%{name}/sv/inc
-%{_localstatedir}/%{name}/sv/inc/*.css
-%{_localstatedir}/%{name}/sv/inc/*.js
-%dir %{_localstatedir}/%{name}/sv/images
-%{_localstatedir}/%{name}/sv/images/*.png
-%{_localstatedir}/%{name}/sv/images/*.jpg
-%{_localstatedir}/%{name}/sv/*.rpy
-%attr(754,root,root) /etc/rc.d/init.d/xend
-%attr(754,root,root) /etc/rc.d/init.d/xendomains
-%dir %{_sysconfdir}/%{name}
-%dir %{_sysconfdir}/%{name}/scripts
-%{_sysconfdir}/%{name}/scripts/block-enbd
-%{_sysconfdir}/%{name}/scripts/block-file
-%{_sysconfdir}/%{name}/scripts/network
-%{_sysconfdir}/%{name}/scripts/vif-bridge
-%{_sysconfdir}/%{name}/xend-config.sxp
-%{_sysconfdir}/%{name}/xmexample1
-%{_sysconfdir}/%{name}/xmexample2
+%dir %attr(700,root,root) /var/run/xend
+
+%files -n python-xen
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py_sitedir}/fsimage.so
+%{py_sitedir}/grub
+%dir %{py_sitedir}/xen
+%dir %{py_sitedir}/xen/lowlevel
+%{py_sitedir}/xen/lowlevel/*.py*
+%attr(755,root,root) %{py_sitedir}/xen/lowlevel/*.so
+%{py_sitedir}/xen/remus
+%{py_sitedir}/xen/sv
+%{py_sitedir}/xen/util
+%{py_sitedir}/xen/web
+%{py_sitedir}/xen/xend
+%{py_sitedir}/xen/xm
+%{py_sitedir}/xen/xsview
+%{py_sitedir}/xen/*.py*
+%if "%{py_ver}" > "2.4"
+%{py_sitedir}/*.egg-info
+%endif
+
+%files -n bash-completion-%{name}
+%defattr(644,root,root,755)
+/etc/bash_completion.d/*