+#
# TODO:
-# - pldized init scripts
-# - script for rc-boot
+# - most of the qemu config options aren't detected (curses, NPTL, vde, fdt)
+# - package the ocaml stuff
#
# Conditional build:
-%bcond_with pae # build with PAE (HIGHMEM64G) support
-%bcond_with hvm # build with hvm (full virtualization) support
-#
+%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
-%define _major 3.0.4
-%define _minor 1
-Version: %{_major}_%{_minor}
-Release: 0.4
+Version: 4.1.2
+Release: 0.2
License: GPL
Group: Applications/System
-Source0: http://bits.xensource.com/oss-xen/release/%{_major}-%{_minor}/src.tgz/%{name}-%{version}-src.tgz
-# Source0-md5: e85e16ad3dc354338e3ac4a8951f9649
+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}-bash_scripts.patch
-#Patch2: %{name}-bridge_setup.patch
-Patch3: %{name}-reisermodule.patch
-Patch4: %{name}-gcc.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: xorg-lib-libX11-devel
+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: python-TwistedCore
-BuildRequires: python-TwistedWeb
+BuildRequires: pciutils-devel
+BuildRequires: pkgconfig
BuildRequires: python-devel
BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 1.268
-BuildRequires: tetex-dvips
-BuildRequires: tetex-format-latex
-BuildRequires: tetex-latex-psnfss
+#BuildRequires: texlive-dvips
+#BuildRequires: texlive-latex-data
+BuildRequires: texlive-latex-psnfss
BuildRequires: transfig
BuildRequires: which
BuildRequires: zlib-devel
-%{?with_hvm:BuildRequires: bin86}
-%{?with_hvm:BuildRequires: bcc}
-Requires(post): /sbin/ldconfig
Requires(post,preun): /sbin/chkconfig
+Requires: %{name}-libs = %{version}-%{release}
Requires: ZopeInterface
Requires: bridge-utils
-Requires: kernel(xen0) = %{_major}
+Requires: coreutils
+Requires: diffutils
+Requires: gawk
+Requires: iptables
+Requires: kernel(xen0)
Requires: losetup
-Requires: python-TwistedWeb
+Requires: net-tools
+Requires: python-%{name} = %{version}-%{release}
Requires: rc-scripts
+Requires: sed
+Requires: util-linux
+Requires: which
Obsoletes: xen-doc
-ExclusiveArch: %{ix86}
+ExclusiveArch: %{ix86} %{x8664}
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
-%define _version %(echo %{version} |tr _ -)
-
-%ifnarch i686 athlon pentium3 pentium4
-%undefine with_pae
-%endif
+# 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
+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ó³.
+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): Pliki nag³ówkowe xena
+Summary(pl.UTF-8): Pliki nagłówkowe xena
Group: Development/Libraries
-Requires: %{name} = %{epoch}:%{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
%description devel
Header files for xen.
-%description devel -l pl
-Pliki nag³ówkowe xena.
+%description devel -l pl.UTF-8
+Pliki nagłówkowe xena.
%package static
Summary: Static xen libraries
-Summary(pl): Statyczne biblioteki xena
+Summary(pl.UTF-8): Statyczne biblioteki xena
Group: Development/Libraries
-Requires: %{name}-devel = %{epoch}:%{version}-%{release}
+Requires: %{name}-devel = %{version}-%{release}
%description static
Static xen libraries.
-%description static -l pl
+%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 %{name}-%{version}-src
+%setup -q
%patch0 -p1
%patch1 -p1
-#%patch2 -p1
-#%patch3 -p1
-%patch4 -p1
+%patch2 -p1
+#%%patch3 -p1
-find . -iregex .*.orig -exec rm {} \;
-
-chmod -R u+w .
+%{__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} -I/usr/include/ncurses" \
CXXFLAGS="%{rpmcflags} -I/usr/include/ncurses" \
-%{__make} xen tools docs \
- %{?with_pae:XEN_TARGET_X86_PAE=y} \
+%{__make} -j1 xen tools \
CC="%{__cc}" \
CXX="%{__cxx}"
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/var/run/{xen-hotplug,xend,xenstored}
-
-%{__make} install-xen install-tools install-docs \
- %{?with_pae:XEN_TARGET_X86_PAE=y} \
- DESTDIR=$RPM_BUILD_ROOT \
- XEN_PYTHON_NATIVE_INSTALL=1
+install -d $RPM_BUILD_ROOT/etc/xen/examples
-install -d $RPM_BUILD_ROOT/etc/rc.d/init.d
-install %{SOURCE1} $RPM_BUILD_ROOT/etc/rc.d/init.d/xend
-install %{SOURCE2} $RPM_BUILD_ROOT/etc/rc.d/init.d/xendomains
-
-install -d $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/xend-db/{domain,vnet}
-install -d $RPM_BUILD_ROOT%{_sharedstatedir}/xen/save
+%{__make} install-xen install-tools install-stubdom install-docs \
+ CC="%{__cc}" \
+ CXX="%{__cxx}" \
+ DESTDIR=$RPM_BUILD_ROOT
-rm -f $RPM_BUILD_ROOT%{_includedir}/%{name}/COPYING
+mv $RPM_BUILD_ROOT/etc/xen/{xmexample*,examples}
-%{py_comp} $RPM_BUILD_ROOT%{py_sitedir}
-%{py_ocomp} $RPM_BUILD_ROOT%{py_sitedir}
-%{py_comp} $RPM_BUILD_ROOT%{py_sitescriptdir}
-%{py_ocomp} $RPM_BUILD_ROOT%{py_sitescriptdir}
+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}
-find $RPM_BUILD_ROOT%{py_sitedir} -name '*.py' -exec rm "{}" ";"
-#find $RPM_BUILD_ROOT%{py_sitescriptdir} -name '*.py' -exec rm "{}" ";"
-rm -rf $RPM_BUILD_ROOT%{_docdir}/xen
-rm -rf $RPM_BUILD_ROOT/etc/init.d
+%py_postclean
-cp -a dist/install/etc/udev $RPM_BUILD_ROOT%{_sysconfdir}
+# 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/ldconfig
-/sbin/chkconfig --add xend
+/sbin/chkconfig --add xen-watchdog
+/sbin/chkconfig --add xencommons
/sbin/chkconfig --add xendomains
-%postun -p /sbin/ldconfig
-
%preun
if [ "$1" = "0" ]; then
- %service xend stop
- /sbin/chkconfig --del xend
-
%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 README docs/misc/*
+%doc COPYING README* docs/misc/*
%doc docs/html/*
-/boot/%{name}-syms-%{_version}
-/boot/%{name}-%{_version}.gz
+%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(754,root,root) /etc/rc.d/init.d/*
+%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/*
-%config(noreplace) %verify(not md5 mtime size) /etc/udev/*
-#%attr(755,root,root) /etc/hotplug/*
%dir %{_sysconfdir}/xen
-%attr(755,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/qemu-ifup
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/*.*
-#%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/b*
-%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/xmexample[12]
%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}/*
-%attr(755,root,root) %{_libdir}/lib*.so.*
+%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 %{with hvm}
-%dir %{_libdir}/%{name}/boot
-%attr(744,root,root) %{_libdir}/%{name}/boot/hvmloader
+%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
-%{py_sitedir}/fsimage.so
-%{py_sitedir}/grub
-%dir %{py_sitedir}/%{name}
-%dir %{py_sitedir}/%{name}/lowlevel
-%{py_sitedir}/%{name}/lowlevel/*.py*
-%attr(755,root,root) %{py_sitedir}/%{name}/lowlevel/*.so
-%{py_sitedir}/%{name}/sv
-%{py_sitedir}/%{name}/util
-%{py_sitedir}/%{name}/web
-%{py_sitedir}/%{name}/xend
-%{py_sitedir}/%{name}/xm
-%{py_sitedir}/%{name}/*.py*
-#%{py_sitescriptdir}/*
%{_mandir}/man?/*
%{_sharedstatedir}/xen
%{_sharedstatedir}/xenstored
-%dir /var/run/xen-hotplug
-%dir %attr(700,root,root) /var/run/xend
%dir /var/run/xenstored
-%files devel
+%files libs
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/lib*.so
+%attr(755,root,root) %{_libdir}/lib*.so.*
%dir %{_libdir}/fs
-%dir %{_libdir}/fs/ext2fs
+%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}/xm
+%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/*