+#
# 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.UTF-8): Xen - monitor maszyny wirtualnej
Name: xen
-%define _major 3.0.4
-%define _minor 1
-Version: %{_major}_%{_minor}
-Release: 0.5
+Version: 4.1.2
+Release: 0.1
License: GPL
Group: Applications/System
-Source0: http://bits.xensource.com/oss-xen/release/%{_major}-%{_minor}/src.tgz/%{name}-%{version}-src.tgz
-# Source0-md5: e85e16ad3dc354338e3ac4a8951f9649
-Source1: %{name}-xend.init
-Source2: %{name}-xendomains.init
+Source0: http://bits.xensource.com/oss-xen/release/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: 73561faf3c1b5e36ec5c089b5db848ad
+# 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
-Patch5: %{name}-blktap-no-aio-epoll.patch
+Patch1: %{name}-symbols.patch
+Patch2: %{name}-curses.patch
+Patch3: %{name}-gcc.patch
+Patch4: %{name}-xz.patch
URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html
+BuildRequires: SDL-devel
+BuildRequires: acpica
+%{?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: 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: bcc}
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: 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
Summary: Header files for xen
Summary(pl.UTF-8): Pliki nagłówkowe xena
Group: Development/Libraries
-Requires: %{name}-libs = %{epoch}:%{version}-%{release}
+Requires: %{name}-libs = %{version}-%{release}
%description devel
Header files for xen.
Summary: Static xen libraries
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.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
+%patch2 -p1
+#%%patch3 -p1
%patch4 -p1
-%patch5 -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/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/etc/xen/examples
-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/chkconfig --add xend
+/sbin/chkconfig --add xen-watchdog
+/sbin/chkconfig --add xencommons
/sbin/chkconfig --add xendomains
%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
%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) %{_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 libs
%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
%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/*