+#
# TODO:
-# - pldized init scripts
-# - script for rc-boot
+# - check if other tools/libs are not usable in domU, move them to -guest
+# packages if so
+# - pass bconds to qemu configure script (tricky, as the script is called from
+# Xen Makefiles)
+# - fix %doc - some files are installed in docdir both by make install and %d,
+# other are installed once
+# - now the build dependencies are insane (because of what qemu can use)
+# we should make them optional or get rid of them all properly
#
-# Conditional build:
-%bcond_with pae # build with PAE (HIGHMEM64G) support
#
+# Conditional build:
+%bcond_without opengl # disable OpenGL support in Xen qemu
+%bcond_without sdl # disable SDL support in Xen qemu
+%bcond_without bluetooth # disable bluetooth support in Xen qemu
+%bcond_without brlapi # disable brlapi support in Xen qemu
+%bcond_without ocaml # build Ocaml libraries for Xen tools
+%bcond_without efi # build the EFI hypervisor
+
+%ifnarch %{x8664}
+%undefine with_efi
+%endif
+
+# from Config.mk:
+%define seabios_version 1.6.3.2
+
+%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
-License: GPL
+Version: 4.2.0
+Release: 2
+License: GPL v2, interface parts on BSD-like
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: f4f217969afc38f09251039966d91a87
+# 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: http://xenbits.xen.org/xen-extfiles/ipxe-git-9a93db3f0947484e30e753bbd61a10b17336e20e.tar.gz
+# Source15-md5: 7496268cebf47d5c9ccb0696e3b26065
+# http://xenbits.xen.org/git-http/seabios.git/
+# git archive --prefix=tools/firmware/seabios/ --format=tar rel-%{seabios_version} | xz > seabios-%{seabios_version}.tar.xz
+Source16: seabios-%{seabios_version}.tar.xz
+# Source16-md5: 145e07ff5618a3999f94f2e830d06b05
+Source30: proc-xen.mount
+Source31: var-lib-xenstored.mount
+Source32: blktapctrl.service
+Source33: blktapctrl.sysconfig
+Source34: xenconsoled.service
+Source35: xenconsoled.sysconfig
+Source36: xenstored.service
+Source37: xenstored.sysconfig
+Source38: xenstored.tmpfiles
+Source39: xend.service
+Source40: xend.tmpfiles
+Source41: xen-watchdog.service
+Source42: xen-dom0-modules-load.conf
+# sysvinit scripts
+Source50: xend.init
+Source51: xenconsoled.init
+Source52: xenstored.init
+Source53: xen-watchdog.init
+Source54: xendomains.init
+Source55: xen.logrotate
+Source56: xen.tmpfiles
Patch0: %{name}-python_scripts.patch
-Patch1: %{name}-bash_scripts.patch
-#Patch2: %{name}-bridge_setup.patch
-Patch3: %{name}-reisermodule.patch
-Patch4: %{name}-gcc.patch
-URL: http://www.cl.cam.ac.uk/Research/SRG/netos/xen/index.html
-BuildRequires: xorg-lib-libX11-devel
+Patch1: %{name}-symbols.patch
+Patch2: %{name}-curses.patch
+Patch3: pygrubfix.patch
+Patch4: xend.catchbt.patch
+Patch5: xend-pci-loop.patch
+Patch6: xen-dumpdir.patch
+# Warning: this disables ingress filtering implemented in xen scripts!
+Patch7: xen-net-disable-iptables-on-bridge.patch
+Patch8: xen-configure-xend.patch
+Patch9: xen-initscript.patch
+Patch10: xen-quemu-softloat-c99.patch
+Patch11: xen-qemu.patch
+Patch12: xen-scripts-locking.patch
+URL: http://www.xen.org/products/xenhyp.html
+%{?with_opengl:BuildRequires: OpenGL-devel}
+%{?with_sdl:BuildRequires: SDL-devel >= 1.2.1}
+%ifarch %{ix86} %{x8664}
+BuildRequires: acpica
+BuildRequires: bcc
+%endif
+%{?with_bluetooth:BuildRequires: bluez-libs-devel}
+%{?with_brlapi:BuildRequires: brlapi-devel}
+%{?with_efi:BuildRequires: binutils >= 3:2.23.51.0.3-2}
+BuildRequires: bzip2-devel
+BuildRequires: ceph-devel
BuildRequires: curl-devel
-BuildRequires: latex2html
-BuildRequires: libidn-devel
+BuildRequires: cyrus-sasl-devel >= 2
+BuildRequires: e2fsprogs-devel
+BuildRequires: gcc >= 5:3.4
+BuildRequires: gettext-devel
+BuildRequires: glib2-devel >= 1:2.12
+BuildRequires: gnutls-devel
+BuildRequires: latex2html >= 2008
+BuildRequires: libaio-devel
+BuildRequires: libiscsi-devel
+BuildRequires: libjpeg-devel
+BuildRequires: libpng-devel
+BuildRequires: libuuid-devel
+BuildRequires: lzo-devel >= 2
BuildRequires: ncurses-devel
-BuildRequires: python-TwistedCore
-BuildRequires: python-TwistedWeb
+%if %{with ocaml}
+BuildRequires: ocaml >= 3.04-7
+BuildRequires: ocaml-findlib
+%endif
+BuildRequires: nss-devel >= 3.12.8
+BuildRequires: openssl-devel
+BuildRequires: pciutils-devel
+BuildRequires: perl-base
+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: transfig
+BuildRequires: rpmbuild(macros) >= 1.647
+BuildRequires: spice-protocol >= 0.6.0
+BuildRequires: spice-server-devel >= 0.6.0
+BuildRequires: texi2html
+BuildRequires: texlive-dvips
+BuildRequires: texlive-latex-psnfss
+BuildRequires: texlive-xetex
+BuildRequires: usbredir-devel
+BuildRequires: vde2-devel
BuildRequires: which
+# for xfsctl (<xfs/xfs.h>)
+BuildRequires: xfsprogs-devel
+BuildRequires: xorg-lib-libX11-devel
+BuildRequires: xorg-lib-libXext-devel
+BuildRequires: xz-devel
+BuildRequires: yajl-devel
BuildRequires: zlib-devel
-Requires(post): /sbin/ldconfig
+# FIXME: see qemu configure comments on top of spec
+%{!?with_opengl:BuildConflicts: OpenGL-devel}
+%{!?with_sdl:BuildConflicts: SDL-devel}
+%{!?with_sdl:BuildConflicts: SDL-devel}
+%{!?with_bluetooth:BuildConflicts: bluez-libs-devel}
+%{!?with_brlapi:BuildConflicts: brlapi-devel}
Requires(post,preun): /sbin/chkconfig
+Requires(post,preun,postun): systemd-units >= 38
+Requires: %{name}-libs = %{version}-%{release}
Requires: ZopeInterface
Requires: bridge-utils
-Requires: kernel(xen0) = %{_major}
+Requires: coreutils
+Requires: diffutils
+Requires: gawk
+Requires: iptables
Requires: losetup
-Requires: python-TwistedWeb
+Requires: net-tools
+Requires: python-%{name} = %{version}-%{release}
Requires: rc-scripts
+Requires: sed
+Requires: systemd-units >= 38
+Requires: util-linux
+Requires: which
+Requires: %{name}-guest = %{version}-%{release}
Obsoletes: xen-doc
-ExclusiveArch: %{ix86}
+Obsoletes: xen-udev
+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 images in ELF format
+%define _noautostrip .*%{_datadir}/\\(xen/qemu\\|qemu-xen\\)/\\(openbios-.*\\|palcode-clipper\\)
%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 guest
+Summary: Xen tools for virtual machines
+Summary(pl.UTF-8): Narzędzia Xen dla maszyn virtualnych
+Group: Applications/System
+Requires: %{name}-libs-guest = %{version}-%{release}
+
+%description guest
+Xen utilities for both dom0 and domU virtual domains.
+
+%description guest -l pl.UTF-8
+Narzędzia Xena dla maszyn wirtualnych dom0 i domU.
+
+%package libs
+Summary: Xen libraries
+Summary(pl.UTF-8): Biblioteki Xena
+Group: Libraries
+Requires: %{name}-libs-guest = %{version}-%{release}
+
+%description libs
+Xen libraries.
+
+%description libs -l pl.UTF-8
+Biblioteki Xena.
+
+%package libs-guest
+Summary: Xen libraries for virtual machines
+Summary(pl.UTF-8): Biblioteki Xena dla maszyn wirtualnych
+Group: Libraries
+
+%description libs-guest
+Xen libraries for both dom0 and domU virtual machines.
+
+%description libs-guest -l pl.UTF-8
+Biblioteki Xena dla maszyn wirtualnych dom0 i domU.
%package devel
-Summary: Header files for xen
-Summary(pl): Pliki nag³ówkowe xena
+Summary: Header files for Xen
+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.
+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: 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.
+Static Xen libraries.
+
+%description static -l pl.UTF-8
+Statyczne biblioteki Xena.
+
+%package xend
+Summary: xend daemon
+Summary(pl.UTF-8): Demon xend
+Group: Daemons
+Requires(post,preun,postun): systemd-units >= 38
+Requires: systemd-units >= 38
+
+%description xend
+xend daemon.
+
+%description xend -l pl.UTF-8
+Demon xend.
+
+%package -n ocaml-xen
+Summary: OCaml bindings for Xen
+Summary(pl.UTF-8): Wiązania OCamla dla Xena
+License: LGPL v2.1 with linking exception
+Group: Libraries
+Requires: %{name}-libs = %{version}-%{release}
+%if %{with ocaml}
+%requires_eq ocaml-runtime
+%endif
-%description static -l pl
-Statyczne biblioteki xena.
+%description -n ocaml-xen
+OCaml bindings for Xen.
+
+%description -n ocaml-xen -l pl.UTF-8
+Wiązania OCamla dla Xena.
+
+%package -n ocaml-xen-devel
+Summary: OCaml bindings for Xen - development files
+Summary(pl.UTF-8): Wiązania OCamla dla Xena - pliki programistyczne
+License: LGPL v2.1 with linking exception
+Group: Development/Libraries
+Requires: ocaml-xen = %{version}-%{release}
+%if %{with ocaml}
+%requires_eq ocaml
+%endif
+
+%description -n ocaml-xen-devel
+OCaml bindings for Xen - development files.
+
+%description -n ocaml-xen-devel -l pl.UTF-8
+Wiązania OCamla dla Xena - pliki programistyczne.
+
+%package -n python-xen
+Summary: Xen Python modules
+Summary(pl.UTF-8): Moduły Pythona dla Xena
+Group: Libraries
+Requires: %{name}-libs = %{version}-%{release}
+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 python-xen-guest
+Summary: Xen Python modules for virtual machines
+Summary(pl.UTF-8): Moduły Pythona dla maszyn wirtualnych Xena
+Group: Libraries
+Requires: %{name}-libs-guest = %{version}-%{release}
+Conflicts: xen < 3.2.1-0.3
+
+%description -n python-xen-guest
+Xen Python modules for both dom0 and domU virtual machines.
+
+%description -n python-xen-guest -l pl.UTF-8
+Moduły Pythona dla maszyn wirtualnych dom0 i domU.
+
+%package -n bash-completion-%{name}
+Summary: bash-completion for Xen (xl)
+Summary(pl.UTF-8): Bashowe dopełnianie poleceń dla Xena (xl)
+Group: Applications/Shells
+Requires: %{name} = %{version}-%{release}
+Requires: bash-completion
+
+%description -n bash-completion-%{name}
+This package provides bash-completion for Xen (xl).
+
+%description -n bash-completion-%{name} -l pl.UTF-8
+Ten pakiet zapewnia bashowe dopełnianie poleceń dla Xena (xl).
+
+%package efi
+Summary: Xen hypervisor binary for EFI
+Summary(pl.UTF-8): Hipernadzorca Xen dla EFI
+Group: Applications/System
+Requires: %{name}-libs-guest = %{version}-%{release}
+
+%description efi
+Xen hypervisor EFI binary, which can be booted directly from (U)EFI
+firmware without help from any additional bootloader.
+
+%description efi -l pl.UTF-8
+Nadzorca Xen w postaci, która może być uruchomiona wprost z firmware
+(U)EFI, bez potrzeby oddzielnego bootloadera.
%prep
-%setup -q -n %{name}-%{version}-src
+%setup -q -a 16
%patch0 -p1
%patch1 -p1
-#%patch2 -p1
-#%patch3 -p1
+%patch2 -p1
+%patch3 -p1
%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+
+# stubdom sources
+ln -s %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} stubdom
+ln -s %{SOURCE15} tools/firmware/etherboot/ipxe.tar.gz
+
+# do not allow fetching anything via git
+echo GIT=/bin/false >> Config.mk
-find . -iregex .*.orig -exec rm {} \;
-
-chmod -R u+w .
+%build
+export CFLAGS="%{rpmcflags} -I/usr/include/ncurses"
+export CXXFLAGS="%{rpmcflags} -I/usr/include/ncurses"
+
+# NOTE:
+# - there is a quoting bug (in tools/driver/Makefile) that causes
+# openssl is used instead of gcrypt; that's OK, openssl is obligatory
+# anyway (see configure), gcrypt is optional
+# - prevent libiconv from being detected (not needed with glibc)
+cd tools
+%configure \
+ CPPFLAGS="%{rpmcppflags} -I/usr/include/ncurses" \
+ ac_cv_lib_iconv_libiconv_open=no \
+ --disable-debug
+cd ..
+
+%{__make} dist-xen dist-tools dist-docs \
+ %{!?with_ocaml:OCAML_TOOLS=n} \
+ prefix=%{_prefix} \
+ CC="%{__cc}" \
+ CXX="%{__cxx}" \
+ V=1
+unset CFLAGS
+unset CXXFLAGS
-%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 dist-stubdom \
+ %{!?with_ocaml:OCAML_TOOLS=n} \
CC="%{__cc}" \
- CXX="%{__cxx}"
+ CXX="%{__cxx}" \
+ V=1
%install
rm -rf $RPM_BUILD_ROOT
-install -d $RPM_BUILD_ROOT/var/run/{xen-hotplug,xend,xenstored}
+install -d $RPM_BUILD_ROOT/etc/{xen/examples,modules-load.d,logrotate.d} \
+ $RPM_BUILD_ROOT{%{systemdtmpfilesdir},%{systemdunitdir},/var/log/xen/console}
-%{__make} install-xen install-tools install-docs \
- %{?with_pae:XEN_TARGET_X86_PAE=y} \
+%{__make} -j1 install-xen install-tools install-stubdom install-docs \
+ %{!?with_ocaml:OCAML_TOOLS=n} \
+ prefix=%{_prefix} \
DESTDIR=$RPM_BUILD_ROOT \
- XEN_PYTHON_NATIVE_INSTALL=1
+ HOTPLUGS=install-udev
-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
+%if "%{_lib}" == "lib64"
+ln -s %{_prefix}/lib/%{name}/bin/qemu-dm $RPM_BUILD_ROOT%{_libdir}/%{name}/bin/qemu-dm
+%endif
-install -d $RPM_BUILD_ROOT%{_localstatedir}/lib/%{name}/xend-db/{domain,vnet}
-install -d $RPM_BUILD_ROOT%{_sharedstatedir}/xen/save
+install %{SOURCE30} $RPM_BUILD_ROOT%{systemdunitdir}/proc-xen.mount
+install %{SOURCE31} $RPM_BUILD_ROOT%{systemdunitdir}/var-lib-xenstored.mount
+install %{SOURCE32} $RPM_BUILD_ROOT%{systemdunitdir}/blktapctrl.service
+install %{SOURCE33} $RPM_BUILD_ROOT/etc/sysconfig/blktapctrl
+install %{SOURCE34} $RPM_BUILD_ROOT%{systemdunitdir}/xenconsoled.service
+install %{SOURCE35} $RPM_BUILD_ROOT/etc/sysconfig/xenconsoled
+install %{SOURCE36} $RPM_BUILD_ROOT%{systemdunitdir}/xenstored.service
+install %{SOURCE37} $RPM_BUILD_ROOT/etc/sysconfig/xenstored
+install %{SOURCE38} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/xenstored.conf
+install %{SOURCE39} $RPM_BUILD_ROOT%{systemdunitdir}/xend.service
+install %{SOURCE40} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/xend.conf
+install %{SOURCE41} $RPM_BUILD_ROOT%{systemdunitdir}/xen-watchdog.service
+install %{SOURCE42} $RPM_BUILD_ROOT/etc/modules-load.d/xen-dom0.conf
+# sysvinit scripts
+%{__rm} $RPM_BUILD_ROOT/etc/rc.d/init.d/*
+install %{SOURCE50} $RPM_BUILD_ROOT/etc/rc.d/init.d/xend
+install %{SOURCE51} $RPM_BUILD_ROOT/etc/rc.d/init.d/xenconsoled
+install %{SOURCE52} $RPM_BUILD_ROOT/etc/rc.d/init.d/xenstored
+install %{SOURCE53} $RPM_BUILD_ROOT/etc/rc.d/init.d/xen-watchdog
+install %{SOURCE54} $RPM_BUILD_ROOT/etc/rc.d/init.d/xendomains
+install %{SOURCE55} $RPM_BUILD_ROOT/etc/logrotate.d/xen
+install %{SOURCE56} $RPM_BUILD_ROOT%{systemdtmpfilesdir}/xen.conf
+
+mv $RPM_BUILD_ROOT/etc/xen/{x{m,l}example*,examples}
+
+# for %%doc
+install -d _doc
+for tool in blktap blktap2 pygrub xenmon ; do
+ cp -p tools/$tool/README _doc/README.$tool
+done
+cp -al tools/qemu-xen/docs _doc/qemu-xen
+
+%py_comp $RPM_BUILD_ROOT%{py_sitedir}
+%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
+
+%py_postclean
+
+%{__rm} $RPM_BUILD_ROOT%{_mandir}/man1/qemu.1
+mv $RPM_BUILD_ROOT%{_mandir}/man1/qemu-img{,-xen}.1
+mv $RPM_BUILD_ROOT%{_mandir}/man8/qemu-nbd{,-xen}.8
+# seems not needed, the path is wrong anyway
+%{__rm} $RPM_BUILD_ROOT%{_prefix}/etc/qemu/target-x86_64.conf
+
+# remove unneeded files
+%{__rm} $RPM_BUILD_ROOT/boot/xen-4.2.gz
+%{__rm} $RPM_BUILD_ROOT/boot/xen-4.gz
+%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/xen
+%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/qemu
+%{__rm} $RPM_BUILD_ROOT%{_includedir}/%{name}/COPYING
-rm -f $RPM_BUILD_ROOT%{_includedir}/%{name}/COPYING
+%clean
+rm -rf $RPM_BUILD_ROOT
-%{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}
+%post
+/sbin/chkconfig --add xen-watchdog
+/sbin/chkconfig --add xenconsoled
+/sbin/chkconfig --add xenstored
+/sbin/chkconfig --add xendomains
+%systemd_post xen-watchdog.service xenconsoled.service xenstored.service
+%preun
+if [ "$1" = "0" ]; then
+ %service xendomains stop
+ /sbin/chkconfig --del xendomains
-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
+ %service xenconsoled stop
+ /sbin/chkconfig --del xenconsoled
-cp -a dist/install/etc/udev $RPM_BUILD_ROOT%{_sysconfdir}
+ %service xenstored stop
+ /sbin/chkconfig --del xenstored
-%clean
-rm -rf $RPM_BUILD_ROOT
+ %service xen-watchdog stop
+ /sbin/chkconfig --del xen-watchdog
+fi
+%systemd_preun xen-watchdog.service xenconsoled.service xenstored.service
-%post
-/sbin/ldconfig
-/sbin/chkconfig --add xend
-/sbin/chkconfig --add xendomains
+%postun
+%systemd_reload
-%postun -p /sbin/ldconfig
+%post xend
+/sbin/chkconfig --add xend
+%systemd_post xend.service
-%preun
+%preun xend
if [ "$1" = "0" ]; then
%service xend stop
/sbin/chkconfig --del xend
-
- %service xendomains stop
- /sbin/chkconfig --del xendomains
fi
+%systemd_preun xend.service
+
+%postun xend
+%systemd_reload
+
+%post libs -p /sbin/ldconfig
+%postun libs -p /sbin/ldconfig
+
+%post libs-guest -p /sbin/ldconfig
+%postun libs-guest -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/qemu-xen-dir/*.html
+%doc _doc/*
+/boot/%{name}-syms-%{version}
+/boot/%{name}-%{version}.gz
/boot/%{name}.gz
-%attr(754,root,root) /etc/rc.d/init.d/*
-%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/*
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/xenconsoled
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/xenstored
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/xendomains
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/xencommons
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/logrotate.d/xen
+%attr(754,root,root) /etc/rc.d/init.d/xen-watchdog
+%attr(754,root,root) /etc/rc.d/init.d/xenconsoled
+%attr(754,root,root) /etc/rc.d/init.d/xenstored
+%attr(754,root,root) /etc/rc.d/init.d/xendomains
+%config(noreplace) %verify(not md5 mtime size) /etc/modules-load.d/xen-dom0.conf
+%{systemdunitdir}/proc-xen.mount
+%{systemdunitdir}/var-lib-xenstored.mount
+%{systemdunitdir}/xen-watchdog.service
+%{systemdunitdir}/xenconsoled.service
+%{systemdunitdir}/xenstored.service
%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(755,root,root) %{_bindir}/*
-%attr(755,root,root) %{_sbindir}/*
-%attr(755,root,root) %{_libdir}/lib*.so.*
+%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
+%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/xen-backend.rules
+%attr(755,root,root) %{_bindir}/pygrub
+%attr(755,root,root) %{_bindir}/qemu-img-xen
+%attr(755,root,root) %{_bindir}/qemu-nbd-xen
+%attr(755,root,root) %{_bindir}/remus
+%attr(755,root,root) %{_bindir}/xencons
+%attr(755,root,root) %{_bindir}/xentrace*
+%attr(755,root,root) %{_sbindir}/blktapctrl
+%attr(755,root,root) %{_sbindir}/flask-*
+%attr(755,root,root) %{_sbindir}/gdbsx
+%attr(755,root,root) %{_sbindir}/gtrace*
+%attr(755,root,root) %{_sbindir}/img2qcow
+%attr(755,root,root) %{_sbindir}/kdd
+%attr(755,root,root) %{_sbindir}/lock-util
+%attr(755,root,root) %{_sbindir}/qcow-create
+%attr(755,root,root) %{_sbindir}/qcow2raw
+%attr(755,root,root) %{_sbindir}/tap-ctl
+%attr(755,root,root) %{_sbindir}/tapdisk*
+%attr(755,root,root) %{_sbindir}/td-util
+%attr(755,root,root) %{_sbindir}/vhd-*
+%attr(755,root,root) %{_sbindir}/xen-*
+%attr(755,root,root) %{_sbindir}/xenbaked
+%attr(755,root,root) %{_sbindir}/xenconsoled
+%attr(755,root,root) %{_sbindir}/xenlockprof
+%attr(755,root,root) %{_sbindir}/xenmon.py
+%attr(755,root,root) %{_sbindir}/xenperf
+%attr(755,root,root) %{_sbindir}/xenpm
+%attr(755,root,root) %{_sbindir}/xenpmd
+%attr(755,root,root) %{_sbindir}/xenstored
+%attr(755,root,root) %{_sbindir}/xentop
+%attr(755,root,root) %{_sbindir}/xentrace_setmask
+%attr(755,root,root) %{_sbindir}/xenwatchdogd
+%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/*
-%dir %{_libdir}/%{name}/boot
-%attr(744,root,root) %{_libdir}/%{name}/boot/hvmloader
+%if "%{_lib}" != "lib"
+%dir %{_prefix}/lib/%{name}
+%dir %{_prefix}/lib/%{name}/bin
+%attr(755,root,root) %{_prefix}/lib/%{name}/bin/qemu-dm
+%attr(755,root,root) %{_prefix}/lib/%{name}/bin/stubdom-dm
+%attr(755,root,root) %{_prefix}/lib/%{name}/bin/stubdompath.sh
+%endif
+%dir %{_prefix}/lib/%{name}/boot
+%{_prefix}/lib/%{name}/boot/ioemu-stubdom.gz
+%{_prefix}/lib/%{name}/boot/pv-grub-x86_32.gz
+%ifarch %{x8664}
+%{_prefix}/lib/%{name}/boot/pv-grub-x86_64.gz
+%endif
+%{_prefix}/lib/%{name}/boot/xenstore-stubdom.gz
+%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?/*
+%{_mandir}/man1/qemu-img-xen.1*
+%{_mandir}/man1/xentop.1*
+%{_mandir}/man1/xentrace_format.1*
+%{_mandir}/man1/xl.1*
+%{_mandir}/man1/xm.1*
+%{_mandir}/man5/xend-config.sxp.5*
+%{_mandir}/man5/xl.cfg.5*
+%{_mandir}/man5/xl.conf.5*
+%{_mandir}/man5/xlcpupool.cfg.5*
+%{_mandir}/man5/xmdomain.cfg.5*
+%{_mandir}/man8/qemu-nbd-xen.8*
+%{_mandir}/man8/xentrace.8*
%{_sharedstatedir}/xen
%{_sharedstatedir}/xenstored
-%dir /var/run/xen-hotplug
-%dir %attr(700,root,root) /var/run/xend
%dir /var/run/xenstored
+%{systemdtmpfilesdir}/xenstored.conf
+%{systemdtmpfilesdir}/xen.conf
+%dir %attr(0700,root,root) /var/log/xen
+%dir %attr(0700,root,root) /var/log/xen/console
+%{_datadir}/qemu-xen
-%files devel
+%files guest
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libdir}/lib*.so
+%attr(755,root,root) %{_bindir}/xen-detect
+%attr(755,root,root) %{_bindir}/xenstore*
+
+%files libs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libblktap.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libblktap.so.3.0
+%attr(755,root,root) %{_libdir}/libblktapctl.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libblktapctl.so.1.0
+%attr(755,root,root) %{_libdir}/libfsimage.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libfsimage.so.1.0
+%attr(755,root,root) %{_libdir}/libvhd.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libvhd.so.1.0
+%attr(755,root,root) %{_libdir}/libxenctrl.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenctrl.so.4.2
+%attr(755,root,root) %{_libdir}/libxenguest.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenguest.so.4.2
+%attr(755,root,root) %{_libdir}/libxenlight.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenlight.so.2.0
+%attr(755,root,root) %{_libdir}/libxenstat.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenstat.so.0
+%attr(755,root,root) %{_libdir}/libxenvchan.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenvchan.so.1.0
+%attr(755,root,root) %{_libdir}/libxlutil.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxlutil.so.1.0
%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
-%attr(755,root,root) %{_libdir}/fs/*/*.so
-%{_includedir}/*
+%dir %{_libdir}/fs/xfs
+%dir %{_libdir}/fs/zfs
+%attr(755,root,root) %{_libdir}/fs/*/fsimage.so
+
+%files libs-guest
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libxenstore.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenstore.so.3.0
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libblktap.so
+%attr(755,root,root) %{_libdir}/libblktapctl.so
+%attr(755,root,root) %{_libdir}/libfsimage.so
+%attr(755,root,root) %{_libdir}/libvhd.so
+%attr(755,root,root) %{_libdir}/libxenctrl.so
+%attr(755,root,root) %{_libdir}/libxenguest.so
+%attr(755,root,root) %{_libdir}/libxenlight.so
+%attr(755,root,root) %{_libdir}/libxenstat.so
+%attr(755,root,root) %{_libdir}/libxenstore.so
+%attr(755,root,root) %{_libdir}/libxenvchan.so
+%attr(755,root,root) %{_libdir}/libxlutil.so
+%{_includedir}/_libxl_list.h
+%{_includedir}/_libxl_types.h
+%{_includedir}/_libxl_types_json.h
+%{_includedir}/blktaplib.h
+%{_includedir}/fsimage*.h
+%{_includedir}/libxenvchan.h
+%{_includedir}/libxl*.h
+%{_includedir}/xen*.h
+%{_includedir}/xs*.h
+%{_includedir}/xen
+%{_includedir}/xenstore-compat
%files static
%defattr(644,root,root,755)
-%{_libdir}/lib*.a
+%{_libdir}/libblktap.a
+%{_libdir}/libblktapctl.a
+%{_libdir}/libvhd.a
+%{_libdir}/libxenctrl.a
+%{_libdir}/libxenguest.a
+%{_libdir}/libxenlight.a
+%{_libdir}/libxenvchan.a
+%{_libdir}/libxenstat.a
+%{_libdir}/libxenstore.a
+%{_libdir}/libxlutil.a
+
+%files xend
+%defattr(644,root,root,755)
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) /etc/sysconfig/blktapctrl
+%{systemdunitdir}/blktapctrl.service
+%{systemdunitdir}/xend.service
+%attr(754,root,root) %{_sysconfdir}/rc.d/init.d/xend
+%config(noreplace) %verify(not md5 mtime size) /etc/udev/rules.d/xend.rules
+%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
+%{systemdtmpfilesdir}/xend.conf
+
+%if %{with ocaml}
+%files -n ocaml-xen
+%defattr(644,root,root,755)
+%doc tools/ocaml/LICENSE
+%attr(755,root,root) %{_sbindir}/oxenstored
+%attr(640,root,root) %config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/xen/oxenstored.conf
+%dir %{_libdir}/ocaml/site-lib/xenbus
+%attr(755,root,root) %{_libdir}/ocaml/site-lib/xenbus/dllxenbus_stubs.so
+%dir %{_libdir}/ocaml/site-lib/xenctrl
+%attr(755,root,root) %{_libdir}/ocaml/site-lib/xenctrl/dllxenctrl_stubs.so
+%dir %{_libdir}/ocaml/site-lib/xeneventchn
+%attr(755,root,root) %{_libdir}/ocaml/site-lib/xeneventchn/dllxeneventchn_stubs.so
+%dir %{_libdir}/ocaml/site-lib/xenlight
+%attr(755,root,root) %{_libdir}/ocaml/site-lib/xenlight/dllxenlight_stubs.so
+%dir %{_libdir}/ocaml/site-lib/xenmmap
+%attr(755,root,root) %{_libdir}/ocaml/site-lib/xenmmap/dllxenmmap_stubs.so
+
+%files -n ocaml-xen-devel
+%defattr(644,root,root,755)
+%{_libdir}/ocaml/site-lib/xenbus/META
+%{_libdir}/ocaml/site-lib/xenbus/libxenbus_stubs.a
+%{_libdir}/ocaml/site-lib/xenbus/xenbus.a
+%{_libdir}/ocaml/site-lib/xenbus/*.cm[aixo]*
+%{_libdir}/ocaml/site-lib/xenctrl/META
+%{_libdir}/ocaml/site-lib/xenctrl/libxenctrl_stubs.a
+%{_libdir}/ocaml/site-lib/xenctrl/xenctrl.a
+%{_libdir}/ocaml/site-lib/xenctrl/xenctrl.cm[aix]*
+%{_libdir}/ocaml/site-lib/xeneventchn/META
+%{_libdir}/ocaml/site-lib/xeneventchn/libxeneventchn_stubs.a
+%{_libdir}/ocaml/site-lib/xeneventchn/xeneventchn.a
+%{_libdir}/ocaml/site-lib/xeneventchn/xeneventchn.cm[aix]*
+%{_libdir}/ocaml/site-lib/xenmmap/META
+%{_libdir}/ocaml/site-lib/xenmmap/libxenmmap_stubs.a
+%{_libdir}/ocaml/site-lib/xenmmap/xenmmap.a
+%{_libdir}/ocaml/site-lib/xenmmap/xenmmap.cm[aix]*
+%{_libdir}/ocaml/site-lib/xenlight/META
+%{_libdir}/ocaml/site-lib/xenlight/libxenlight_stubs.a
+%{_libdir}/ocaml/site-lib/xenlight/xenlight.a
+%{_libdir}/ocaml/site-lib/xenlight/xenlight.cm[aix]*
+%dir %{_libdir}/ocaml/site-lib/xenstore
+%{_libdir}/ocaml/site-lib/xenstore/META
+%{_libdir}/ocaml/site-lib/xenstore/xenstore.a
+%{_libdir}/ocaml/site-lib/xenstore/*.cm[aixo]*
+%endif
+
+%files -n python-xen
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py_sitedir}/fsimage.so
+%{py_sitedir}/grub
+%attr(755,root,root) %{py_sitedir}/xen/lowlevel/checkpoint.so
+%attr(755,root,root) %{py_sitedir}/xen/lowlevel/flask.so
+%attr(755,root,root) %{py_sitedir}/xen/lowlevel/netlink.so
+%attr(755,root,root) %{py_sitedir}/xen/lowlevel/ptsname.so
+%attr(755,root,root) %{py_sitedir}/xen/lowlevel/xc.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
+%if "%{py_ver}" > "2.4"
+%{py_sitedir}/pygrub-0.3-py*.egg-info
+%{py_sitedir}/xen-3.0-py*.egg-info
+%endif
+
+%files -n python-xen-guest
+%defattr(644,root,root,755)
+%dir %{py_sitedir}/xen
+%{py_sitedir}/xen/__init__.py*
+%dir %{py_sitedir}/xen/lowlevel
+%{py_sitedir}/xen/lowlevel/__init__.py*
+%attr(755,root,root) %{py_sitedir}/xen/lowlevel/xs.so
+
+%files -n bash-completion-%{name}
+%defattr(644,root,root,755)
+/etc/bash_completion.d/xl.sh
+
+%if %{with efi}
+%files efi
+%defattr(644,root,root,755)
+%dir %{_libdir}/efi
+%{_libdir}/efi/*.efi
+%endif