#
# TODO:
+# - system ovmf, ipxe? (like system seabios)
# - 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
%bcond_without sdl # SDL support in Xen qemu
%bcond_without bluetooth # bluetooth support in Xen qemu
%bcond_without brlapi # brlapi support in Xen qemu
+%bcond_with golang # Go library
%bcond_without ocaml # Ocaml libraries for Xen tools
+%bcond_with python2 # CPython 2.x module instead of 3.x
%bcond_without efi # EFI hypervisor
%bcond_without hypervisor # Xen hypervisor build
%bcond_without stubdom # stubdom build
Summary: Xen - a virtual machine monitor
Summary(pl.UTF-8): Xen - monitor maszyny wirtualnej
Name: xen
-Version: 4.13.1
-Release: 0.1
+Version: 4.14.5
+Release: 1
License: GPL v2, interface parts on BSD-like
Group: Applications/System
# for available versions see https://www.xenproject.org/developers/teams/hypervisor.html
Source0: https://downloads.xenproject.org/release/xen/%{version}/%{name}-%{version}.tar.gz
-# Source0-md5: e26fe8f9ce39463734e6ede45c6e11b8
+# Source0-md5: 6e1fa9a902bc760bb00a5bdeef9389ae
# used by stubdoms
Source10: %{xen_extfiles_url}/lwip-1.3.0.tar.gz
# Source10-md5: 36cc57650cffda9a0269493be2a169bb
# Source17-md5: 7b72caf22b01464ee7d6165f2fd85f44
Source18: %{xen_extfiles_url}/tpm_emulator-%{tpm_emulator_version}.tar.gz
# Source18-md5: e26becb8a6a2b6695f6b3e8097593db8
-Source19: ftp://ftp.gmplib.org/pub/gmp-%{gmp_version}/gmp-%{gmp_version}.tar.bz2
+Source19: https://ftp.gnu.org/gnu/gmp/gmp-%{gmp_version}.tar.bz2
# Source19-md5: dd60683d7057917e34630b4a787932e8
Source35: xenconsoled.sysconfig
Source37: xenstored.sysconfig
Source59: vif-openvswitch
Source60: xen-init-list
Source61: xen-toolstack
+# shebang patch for python2-only scripts
Patch0: %{name}-python_scripts.patch
Patch1: %{name}-symbols.patch
Patch2: %{name}-link.patch
Patch13: sysmacros.patch
Patch14: gcc9.patch
Patch15: gcc10.patch
+Patch16: ocaml-4.12.patch
+Patch17: %{name}-golang-32bit.patch
URL: http://www.xen.org/products/xenhyp.html
BuildRequires: autoconf >= 2.67
%ifarch %{ix86} %{x8664}
%endif
# tpm_emulator uses cmake
BuildRequires: cmake >= 2.4
-BuildRequires: curl-devel
-BuildRequires: cyrus-sasl-devel >= 2
BuildRequires: e2fsprogs-devel
BuildRequires: fig2dev
-BuildRequires: gcc >= 6:4.1
+BuildRequires: gcc >= 6:4.8
%ifarch %{x8664}
BuildRequires: gcc-multilib-32 >= 6:4.1
%endif
BuildRequires: gettext-tools
-BuildRequires: gnutls-devel
-BuildRequires: keyutils-devel
-BuildRequires: latex2html >= 2008
+%{?with_golang:BuildRequires: golang >= 1.11}
BuildRequires: libaio-devel
-BuildRequires: libcap-devel
%ifarch %{arm} aarch64
BuildRequires: libfdt-devel >= 1.4.0
%endif
-BuildRequires: libjpeg-devel
BuildRequires: libnl-devel >= 3.2.8
-BuildRequires: libpng-devel
BuildRequires: libuuid-devel
BuildRequires: lzo-devel >= 2
BuildRequires: ncurses-devel
%if %{with ocaml}
-BuildRequires: ocaml >= 3.11.0
+BuildRequires: ocaml >= 4.02.0
BuildRequires: ocaml-findlib
%endif
-BuildRequires: nss-devel >= 3.12.8
-BuildRequires: openssl-devel
BuildRequires: pandoc
-BuildRequires: pciutils-devel
BuildRequires: perl-base
BuildRequires: perl-tools-pod
BuildRequires: pkgconfig
-BuildRequires: python-devel >= 2
+%if %{with python2}
+BuildRequires: python-devel >= 1:2.7
BuildRequires: python-markdown
+%else
+BuildRequires: python3-devel >= 1:3.2
+BuildRequires: python3-markdown
+%endif
BuildRequires: rpm-pythonprov
BuildRequires: rpmbuild(macros) >= 1.647
BuildRequires: seabios
-BuildRequires: texi2html
BuildRequires: texlive-dvips
BuildRequires: texlive-latex-psnfss
BuildRequires: texlive-xetex
%{?with_sdl:BuildRequires: SDL-devel >= 1.2.1}
%{?with_bluetooth:BuildRequires: bluez-libs-devel}
%{?with_brlapi:BuildRequires: brlapi-devel}
-BuildRequires: glib2-devel >= 1:2.12
+BuildRequires: gnutls-devel
+BuildRequires: pciutils-devel
BuildRequires: pixman-devel >= 0.21.8
BuildRequires: vde2-devel
# for xfsctl (<xfs/xfs.h>)
Requires: iptables
Requires: losetup
Requires: net-tools
+%if %{with python2}
Requires: python-%{name} = %{version}-%{release}
+%else
+Requires: python3-%{name} = %{version}-%{release}
+%endif
Requires: rc-scripts
Requires: sed
Requires: systemd-units >= 38
# for HVM
Suggests: qemu-system-x86
%endif
-Obsoletes: xen-doc
-Obsoletes: xen-udev
-Obsoletes: xen-xend
+Obsoletes: xen-doc < 3
+Obsoletes: xen-udev < 4.1.2-2
+Obsoletes: xen-xend < 4.5
ExclusiveArch: %{ix86} %{x8664} %{arm} aarch64
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%description -n python-xen-guest -l pl.UTF-8
Moduły Pythona dla maszyn wirtualnych dom0 i domU.
+%package -n python3-xen
+Summary: Xen Python 3 modules
+Summary(pl.UTF-8): Moduły Pythona 3 dla Xena
+Group: Libraries
+Requires: %{name}-libs = %{version}-%{release}
+Obsoletes: python-xen < %{version}-%{release}
+
+%description -n python3-xen
+Xen Python 3 modules.
+
+%description -n python3-xen -l pl.UTF-8
+Moduły Pythona 3 dla Xena.
+
+%package -n python3-xen-guest
+Summary: Xen Python 3 modules for virtual machines
+Summary(pl.UTF-8): Moduły Pythona 3 dla maszyn wirtualnych Xena
+Group: Libraries
+Requires: %{name}-libs-guest = %{version}-%{release}
+Obsoletes: python-xen-guest < %{version}-%{release}
+
+%description -n python3-xen-guest
+Xen Python 3 modules for both dom0 and domU virtual machines.
+
+%description -n python3-xen-guest -l pl.UTF-8
+Moduły Pythona 3 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)
%patch12 -p1
%patch13 -p1
%patch14 -p1
+%if %(echo %{cc_version} | cut -d. -f1) >= 10
+# -Wno-error=enum-conversion requires gcc 10
%patch15 -p1
+%endif
+%patch16 -p1
+%ifarch %{ix86} %{arm}
+%patch17 -p1
+%endif
# stubdom sources
ln -s %{SOURCE10} %{SOURCE11} %{SOURCE12} %{SOURCE13} %{SOURCE14} stubdom
ln -s %{SOURCE17} %{SOURCE18} %{SOURCE19} stubdom
ln -s %{SOURCE15} tools/firmware/etherboot/ipxe.tar.gz
+
+%if %{with python2}
+%{__sed} -i -e '1s,/usr/bin/env python$,%{__python},' \
+%else
+%{__sed} -i -e '1s,/usr/bin/env python$,%{__python3},' \
+%endif
+ tools/pygrub/src/pygrub \
+ tools/python/scripts/{convert-legacy-stream,verify-stream-v2} \
+ tools/xenmon/xenmon.py
+
# do not allow fetching anything via git
echo GIT=/bin/false >> Config.mk
%configure \
CPPFLAGS="%{rpmcppflags} -I/usr/include/ncurses" \
+ %{?with_python2:PYTHON=%{__python}} \
ac_cv_lib_gcrypt_gcry_md_hash_buffer=no \
ac_cv_lib_iconv_libiconv_open=no \
--disable-debug \
+ %{!?with_golang:--disable-golang} \
%{__enable_disable qemu_traditional qemu-traditional} \
--with-system-seabios=/usr/share/seabios/bios.bin \
%ifarch %{x8664}
install -d _doc
cp -p tools/pygrub/README _doc/README.pygrub
+%if %{with python2}
%py_comp $RPM_BUILD_ROOT%{py_sitedir}
%py_ocomp $RPM_BUILD_ROOT%{py_sitedir}
%py_postclean
+%else
+%py3_comp $RPM_BUILD_ROOT%{py3_sitedir}
+%py3_ocomp $RPM_BUILD_ROOT%{py3_sitedir}
+%endif
# remove unneeded files
%if %{with hypervisor}
%{__mv} xen/xen-syms $RPM_BUILD_ROOT/boot/%{name}-syms-%{version}
-%{__rm} $RPM_BUILD_ROOT/boot/xen-4.13.gz
+%{__rm} $RPM_BUILD_ROOT/boot/xen-4.14.gz
%{__rm} $RPM_BUILD_ROOT/boot/xen-4.gz
%endif
%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/xen
%attr(755,root,root) %{_bindir}/qemu-img-xen
%attr(755,root,root) %{_bindir}/qemu-nbd-xen
%endif
+%attr(755,root,root) %{_bindir}/vchan-socket-proxy
%attr(755,root,root) %{_bindir}/xen-cpuid
%attr(755,root,root) %{_bindir}/xenalyze
%attr(755,root,root) %{_bindir}/xencons
%attr(755,root,root) %{_sbindir}/xenbaked
%attr(755,root,root) %{_sbindir}/xenconsoled
%attr(755,root,root) %{_sbindir}/xencov
+%attr(755,root,root) %{_sbindir}/xenhypfs
%attr(755,root,root) %{_sbindir}/xenlockprof
%attr(755,root,root) %{_sbindir}/xenmon
%attr(755,root,root) %{_sbindir}/xenperf
%{_libexecdir}/%{name}/boot/xen-shim
%endif
%attr(744,root,root) %{_libexecdir}/%{name}/boot/hvmloader
+%{_mandir}/man1/xenhypfs.1*
%{_mandir}/man1/xentop.1*
%{_mandir}/man1/xentrace_format.1*
%{_mandir}/man1/xl.1*
%files libs
%defattr(644,root,root,755)
%attr(755,root,root) %{_libdir}/libxenfsimage.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxenfsimage.so.4.13
+%attr(755,root,root) %ghost %{_libdir}/libxenfsimage.so.4.14
%attr(755,root,root) %{_libdir}/libxencall.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libxencall.so.1
%attr(755,root,root) %{_libdir}/libxenctrl.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxenctrl.so.4.13
+%attr(755,root,root) %ghost %{_libdir}/libxenctrl.so.4.14
%attr(755,root,root) %{_libdir}/libxendevicemodel.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libxendevicemodel.so.1
%attr(755,root,root) %{_libdir}/libxenevtchn.so.*.*
%attr(755,root,root) %{_libdir}/libxengnttab.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libxengnttab.so.1
%attr(755,root,root) %{_libdir}/libxenguest.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxenguest.so.4.13
+%attr(755,root,root) %ghost %{_libdir}/libxenguest.so.4.14
+%attr(755,root,root) %{_libdir}/libxenhypfs.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenhypfs.so.1
%attr(755,root,root) %{_libdir}/libxenlight.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxenlight.so.4.13
+%attr(755,root,root) %ghost %{_libdir}/libxenlight.so.4.14
%attr(755,root,root) %{_libdir}/libxenstat.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxenstat.so.4.13
+%attr(755,root,root) %ghost %{_libdir}/libxenstat.so.4.14
%attr(755,root,root) %{_libdir}/libxentoolcore.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libxentoolcore.so.1
%attr(755,root,root) %{_libdir}/libxentoollog.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libxentoollog.so.1
%attr(755,root,root) %{_libdir}/libxenvchan.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxenvchan.so.4.13
+%attr(755,root,root) %ghost %{_libdir}/libxenvchan.so.4.14
%attr(755,root,root) %{_libdir}/libxlutil.so.*.*.*
-%attr(755,root,root) %ghost %{_libdir}/libxlutil.so.4.13
+%attr(755,root,root) %ghost %{_libdir}/libxlutil.so.4.14
%dir %{_libdir}/xenfsimage
%dir %{_libdir}/xenfsimage/ext2fs-lib
%dir %{_libdir}/xenfsimage/fat
%attr(755,root,root) %{_libdir}/libxenforeignmemory.so
%attr(755,root,root) %{_libdir}/libxengnttab.so
%attr(755,root,root) %{_libdir}/libxenguest.so
+%attr(755,root,root) %{_libdir}/libxenhypfs.so
%attr(755,root,root) %{_libdir}/libxenlight.so
%attr(755,root,root) %{_libdir}/libxenstat.so
%attr(755,root,root) %{_libdir}/libxenstore.so
%{_pkgconfigdir}/xenforeignmemory.pc
%{_pkgconfigdir}/xengnttab.pc
%{_pkgconfigdir}/xenguest.pc
+%{_pkgconfigdir}/xenhypfs.pc
%{_pkgconfigdir}/xenlight.pc
%{_pkgconfigdir}/xenstat.pc
%{_pkgconfigdir}/xenstore.pc
%{_libdir}/libxenforeignmemory.a
%{_libdir}/libxengnttab.a
%{_libdir}/libxenguest.a
+%{_libdir}/libxenhypfs.a
%{_libdir}/libxenlight.a
%{_libdir}/libxenvchan.a
%{_libdir}/libxenstat.a
%{_libdir}/libxentoollog.a
%{_libdir}/libxlutil.a
+# -n golang-xen
+# XXX: location?
+#%{_datadir}/gocode/src/golang.xenproject.org/xenlight
+
%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
-%dir %{_libdir}/ocaml/site-lib/xentoollog
-%attr(755,root,root) %{_libdir}/ocaml/site-lib/xentoollog/dllxentoollog_stubs.so
+%dir %{_libdir}/ocaml/xenbus
+%attr(755,root,root) %{_libdir}/ocaml/xenbus/dllxenbus_stubs.so
+%dir %{_libdir}/ocaml/xenctrl
+%attr(755,root,root) %{_libdir}/ocaml/xenctrl/dllxenctrl_stubs.so
+%dir %{_libdir}/ocaml/xeneventchn
+%attr(755,root,root) %{_libdir}/ocaml/xeneventchn/dllxeneventchn_stubs.so
+%dir %{_libdir}/ocaml/xenlight
+%attr(755,root,root) %{_libdir}/ocaml/xenlight/dllxenlight_stubs.so
+%dir %{_libdir}/ocaml/xenmmap
+%attr(755,root,root) %{_libdir}/ocaml/xenmmap/dllxenmmap_stubs.so
+%dir %{_libdir}/ocaml/xentoollog
+%attr(755,root,root) %{_libdir}/ocaml/xentoollog/dllxentoollog_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]*
-%{_libdir}/ocaml/site-lib/xentoollog/META
-%{_libdir}/ocaml/site-lib/xentoollog/libxentoollog_stubs.a
-%{_libdir}/ocaml/site-lib/xentoollog/xentoollog.a
-%{_libdir}/ocaml/site-lib/xentoollog/*.cm[aixo]*
-%endif
-
+%{_libdir}/ocaml/xenbus/META
+%{_libdir}/ocaml/xenbus/libxenbus_stubs.a
+%{_libdir}/ocaml/xenbus/xenbus.a
+%{_libdir}/ocaml/xenbus/*.cm[aixo]*
+%{_libdir}/ocaml/xenctrl/META
+%{_libdir}/ocaml/xenctrl/libxenctrl_stubs.a
+%{_libdir}/ocaml/xenctrl/xenctrl.a
+%{_libdir}/ocaml/xenctrl/xenctrl.cm[aix]*
+%{_libdir}/ocaml/xeneventchn/META
+%{_libdir}/ocaml/xeneventchn/libxeneventchn_stubs.a
+%{_libdir}/ocaml/xeneventchn/xeneventchn.a
+%{_libdir}/ocaml/xeneventchn/xeneventchn.cm[aix]*
+%{_libdir}/ocaml/xenmmap/META
+%{_libdir}/ocaml/xenmmap/libxenmmap_stubs.a
+%{_libdir}/ocaml/xenmmap/xenmmap.a
+%{_libdir}/ocaml/xenmmap/xenmmap.cm[aix]*
+%{_libdir}/ocaml/xenlight/META
+%{_libdir}/ocaml/xenlight/libxenlight_stubs.a
+%{_libdir}/ocaml/xenlight/xenlight.a
+%{_libdir}/ocaml/xenlight/xenlight.cm[aix]*
+%dir %{_libdir}/ocaml/xenstore
+%{_libdir}/ocaml/xenstore/META
+%{_libdir}/ocaml/xenstore/xenstore.a
+%{_libdir}/ocaml/xenstore/*.cm[aixo]*
+%{_libdir}/ocaml/xentoollog/META
+%{_libdir}/ocaml/xentoollog/libxentoollog_stubs.a
+%{_libdir}/ocaml/xentoollog/xentoollog.a
+%{_libdir}/ocaml/xentoollog/*.cm[aixo]*
+%endif
+
+%if %{with python2}
%files -n python-xen
%defattr(644,root,root,755)
%attr(755,root,root) %{py_sitedir}/xenfsimage.so
%dir %{py_sitedir}/xen
+%{py_sitedir}/xen/util.py[co]
%dir %{py_sitedir}/xen/lowlevel
%attr(755,root,root) %{py_sitedir}/xen/lowlevel/xc.so
%{py_sitedir}/xen/migration
%{py_sitedir}/grub
-%{py_sitedir}/pygrub-*.egg-info
-%{py_sitedir}/xen-*.egg-info
+%{py_sitedir}/pygrub-*-py*.egg-info
+%{py_sitedir}/xen-*-py*.egg-info
%files -n python-xen-guest
%defattr(644,root,root,755)
%dir %{py_sitedir}/xen
-%{py_sitedir}/xen/__init__.py*
+%{py_sitedir}/xen/__init__.py[co]
%dir %{py_sitedir}/xen/lowlevel
-%{py_sitedir}/xen/lowlevel/__init__.py*
+%{py_sitedir}/xen/lowlevel/__init__.py[co]
%attr(755,root,root) %{py_sitedir}/xen/lowlevel/xs.so
+%else
+
+%files -n python3-xen
+%defattr(644,root,root,755)
+%attr(755,root,root) %{py3_sitedir}/xenfsimage.cpython-*.so
+%dir %{py3_sitedir}/xen
+%dir %{py3_sitedir}/xen/__pycache__
+%{py3_sitedir}/xen/util.py
+%{py3_sitedir}/xen/__pycache__/util.cpython-*.py[co]
+%dir %{py3_sitedir}/xen/lowlevel
+%attr(755,root,root) %{py3_sitedir}/xen/lowlevel/xc.cpython-*.so
+%{py3_sitedir}/xen/migration
+%{py3_sitedir}/grub
+%{py3_sitedir}/pygrub-*-py*.egg-info
+%{py3_sitedir}/xen-*-py*.egg-info
+
+%files -n python3-xen-guest
+%defattr(644,root,root,755)
+%dir %{py3_sitedir}/xen
+%dir %{py3_sitedir}/xen/__pycache__
+%{py3_sitedir}/xen/__init__.py*
+%{py3_sitedir}/xen/__pycache__/__init__.cpython-*.py[co]
+%dir %{py3_sitedir}/xen/lowlevel
+%{py3_sitedir}/xen/lowlevel/__init__.py
+%{py3_sitedir}/xen/lowlevel/__pycache__
+%attr(755,root,root) %{py3_sitedir}/xen/lowlevel/xs.cpython-*.so
+%endif
+
%files -n bash-completion-%{name}
%defattr(644,root,root,755)
/etc/bash_completion.d/xl.sh