%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_without pv_grub # pv-grub (deprecated)
+%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
%bcond_without xsm # XSM security module (by default, Flask)
+%bcond_without systemd # systemd
%ifnarch %{x8664} %{arm}
%undefine with_hypervisor
Summary: Xen - a virtual machine monitor
Summary(pl.UTF-8): Xen - monitor maszyny wirtualnej
Name: xen
-Version: 4.13.4
+Version: 4.17.2
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
+# for available versions see https://xenproject.org/xen-project-archives/
Source0: https://downloads.xenproject.org/release/xen/%{version}/%{name}-%{version}.tar.gz
-# Source0-md5: 2ea8d0237b48b05af915131d7280b890
-# used by stubdoms
+# Source0-md5: f344056c4566ac1627db46ea92588c3a
+# used by stubdoms; Source10-19 versions set in stubdom/configure.ac
Source10: %{xen_extfiles_url}/lwip-1.3.0.tar.gz
# Source10-md5: 36cc57650cffda9a0269493be2a169bb
Source11: %{xen_extfiles_url}/newlib-1.16.0.tar.gz
# Source13-md5: cec05e7785497c5e19da2f114b934ffd
Source14: %{xen_extfiles_url}/grub-0.97.tar.gz
# Source14-md5: cd3f3eb54446be6003156158d51f4884
-Source15: %{xen_extfiles_url}/ipxe-git-1dd56dbd11082fb622c2ed21cfaced4f47d798a6.tar.gz
-# Source15-md5: b3ab0488a989a089207302111d12e1a0
Source17: %{xen_extfiles_url}/polarssl-%{polarssl_version}-gpl.tgz
# Source17-md5: 7b72caf22b01464ee7d6165f2fd85f44
Source18: %{xen_extfiles_url}/tpm_emulator-%{tpm_emulator_version}.tar.gz
# Source18-md5: e26becb8a6a2b6695f6b3e8097593db8
Source19: https://ftp.gnu.org/gnu/gmp/gmp-%{gmp_version}.tar.bz2
# Source19-md5: dd60683d7057917e34630b4a787932e8
+# ipxe tag set in tools/firmware/etherboot/Makefile
+Source20: %{xen_extfiles_url}/ipxe-git-3c040ad387099483102708bb1839110bc788cefb.tar.gz
+# Source20-md5: 23ba00d5e2c5b4343d12665af73e1cb5
Source35: xenconsoled.sysconfig
Source37: xenstored.sysconfig
Source38: xenstored.tmpfiles
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
Patch8: %{name}-no_fetcher.patch
Patch9: %{name}-no_Werror.patch
Patch10: %{name}-stubdom-build.patch
-Patch11: link.patch
Patch12: %{name}-systemd.patch
-Patch13: sysmacros.patch
Patch14: gcc9.patch
Patch15: gcc10.patch
-Patch16: ocaml-4.12.patch
+Patch17: %{name}-golang-32bit.patch
+Patch18: %{name}-gcc12.patch
+Patch19: gcc13.patch
+Patch20: python-fixes.patch
URL: http://www.xen.org/products/xenhyp.html
BuildRequires: autoconf >= 2.67
%ifarch %{ix86} %{x8664}
BuildRequires: cmake >= 2.4
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
+%{?with_golang:BuildRequires: golang >= 1.11.1}
BuildRequires: libaio-devel
%ifarch %{arm} aarch64
BuildRequires: libfdt-devel >= 1.4.0
BuildRequires: lzo-devel >= 2
BuildRequires: ncurses-devel
%if %{with ocaml}
-BuildRequires: ocaml >= 4.02.0
+BuildRequires: ocaml >= 1:4.02.0
BuildRequires: ocaml-findlib
%endif
BuildRequires: pandoc
BuildRequires: perl-base
BuildRequires: perl-tools-pod
BuildRequires: pkgconfig
-BuildRequires: python-devel >= 1:2.6
+%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
+%{?with_systemd:BuildRequires: systemd-devel >= 1:209}
BuildRequires: texlive-dvips
BuildRequires: texlive-latex-psnfss
BuildRequires: texlive-xetex
BuildRequires: xz-devel
BuildRequires: yajl-devel
BuildRequires: zlib-devel
+BuildRequires: zstd-devel
%if %{with qemu_traditional}
%{?with_opengl:BuildRequires: OpenGL-devel}
%{?with_sdl:BuildRequires: SDL-devel >= 1.2.1}
Requires(post,preun): /sbin/chkconfig
Requires(post,preun,postun): systemd-units >= 38
Requires: %{name}-libs = %{version}-%{release}
-Requires: ZopeInterface
Requires: bridge-utils
Requires: coreutils
Requires: diffutils
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
%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)
%patch8 -p1
%patch9 -p1
%patch10 -p1
-%patch11 -p1
%patch12 -p1
-%patch13 -p1
%patch14 -p1
%if %(echo %{cc_version} | cut -d. -f1) >= 10
# -Wno-error=enum-conversion requires gcc 10
%patch15 -p1
+%if %(echo %{cc_version} | cut -d. -f1) < 12
+# -Wno-error=dangling-pointer requires gcc 12
+%{__sed} -i -e 's/ -Wno-error=dangling-pointer//' tools/firmware/etherboot/Config
+%endif
%endif
-%patch16 -p1
+%ifarch %{ix86} %{arm}
+%patch17 -p1
+%endif
+%patch18 -p1
+%patch19 -p1
+%patch20 -p1
# 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
+ln -s %{SOURCE20} 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},; 1s,/usr/bin/python2$,%{__python3},' \
+%endif
+ tools/misc/xencov_split \
+ tools/misc/xenpvnetboot \
+ tools/pygrub/src/pygrub \
+ tools/python/scripts/{convert-legacy-stream,verify-stream-v2} \
+ tools/xenmon/xenmon.py \
+ tools/xentrace/xentrace_format
# 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} \
+ %{?with_pv_grub:--enable-pv-grub} \
%{__enable_disable qemu_traditional qemu-traditional} \
--with-system-seabios=/usr/share/seabios/bios.bin \
%ifarch %{x8664}
%else
--with-system-qemu=/usr/bin/qemu-system-i386 \
%endif
+%if %{with systemd}
--with-systemd=%{systemdunitdir}
-
+%else
+ --disable-systemd
+%endif
export EXTRA_CFLAGS_XEN_TOOLS="%{rpmcflags} -I/usr/include/ncurses"
export EXTRA_CFLAGS_QEMU_TRADITIONAL="%{rpmcflags} -I/usr/include/ncurses"
export EXTRA_CFLAGS_QEMU_XEN="%{rpmcflags} -I/usr/include/ncurses"
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.17.gz
%{__rm} $RPM_BUILD_ROOT/boot/xen-4.gz
%endif
%{__rm} -r $RPM_BUILD_ROOT%{_docdir}/xen
%attr(754,root,root) /etc/rc.d/init.d/xenstored
%attr(754,root,root) /etc/rc.d/init.d/xendomains
%attr(754,root,root) /etc/rc.d/init.d/xen-qemu-dom0-disk-backend
+%if %{with systemd}
%{_prefix}/lib/modules-load.d/xen.conf
%{systemdunitdir}/proc-xen.mount
-%{systemdunitdir}/var-lib-xenstored.mount
%{systemdunitdir}/xen-init-dom0.service
%{systemdunitdir}/xen-watchdog.service
%{systemdunitdir}/xenconsoled.service
%{systemdunitdir}/xendriverdomain.service
%{systemdunitdir}/xendomains.service
%{systemdunitdir}/xen-qemu-dom0-disk-backend.service
+%endif
%dir %{_sysconfdir}/xen
%dir %{_sysconfdir}/xen/auto
%dir %{_sysconfdir}/xen/examples
%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) %{_bindir}/xencov_split
%attr(755,root,root) %{_bindir}/xentrace_format
%if %{with xsm}
%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
%if %{with qemu_traditional}
%{_libexecdir}/%{name}/boot/ioemu-stubdom.gz
%endif
+%if %{with pv_grub}
%ifarch %{ix86} %{x8664}
%{_libexecdir}/%{name}/boot/pv-grub-x86_32.gz
%endif
%ifarch %{x8664}
%{_libexecdir}/%{name}/boot/pv-grub-x86_64.gz
%endif
+%endif
%{_libexecdir}/%{name}/boot/vtpm-stubdom.gz
%{_libexecdir}/%{name}/boot/vtpmmgr-stubdom.gz
%{_libexecdir}/%{name}/boot/xenstore-stubdom.gz
+%{_libexecdir}/%{name}/boot/xenstorepvh-stubdom.gz
%endif
%{_libexecdir}/%{name}/boot/ipxe.bin
%ifarch %{x8664}
%{_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*
%{_mandir}/man5/xl.conf.5*
%{_mandir}/man5/xl-disk-configuration.5*
%{_mandir}/man5/xl-network-configuration.5*
+%{_mandir}/man5/xl-pci-configuration.5*
%{_mandir}/man5/xlcpupool.cfg.5*
%{_mandir}/man7/xen-pci-device-reservations.7*
%{_mandir}/man7/xen-pv-channel.7*
%{_mandir}/man7/xl-numa-placement.7*
%{_mandir}/man8/xentrace.8*
%{_sharedstatedir}/xen
-%{_sharedstatedir}/xenstored
%dir /var/run/xenstored
%{systemdtmpfilesdir}/xen.conf
%{systemdtmpfilesdir}/xenstored.conf
%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.17
%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.17
%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.17
+%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.17
%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.17
%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.17
%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.17
%dir %{_libdir}/xenfsimage
%dir %{_libdir}/xenfsimage/ext2fs-lib
%dir %{_libdir}/xenfsimage/fat
%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
+%attr(755,root,root) %{_libdir}/libxenstore.so.*.*
+%attr(755,root,root) %ghost %{_libdir}/libxenstore.so.4
%files devel
%defattr(644,root,root,755)
%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
%attr(755,root,root) %{_libdir}/libxentoollog.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}/libxenvchan.h
%{_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)
%{_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
+/etc/bash_completion.d/xl
%if %{with efi}
%files efi