File xen.spec of Package xen
# norootforbuild
%define python_basename_xen python3
%define python_basename_qemuu python3.11
%define _lto_cflags %nil
%if ! %{defined _fillupdir}
%define _fillupdir /var/adm/fillup-templates
%endif
Name: xen
Version: 0
Release: 0
ExclusiveArch: %ix86 x86_64 %arm aarch64
#
%define with_hypervisor 0
#
%define xen_install_suffix %nil
%ifarch x86_64
%define xen_install_suffix .gz
%endif
#
%ifarch x86_64
%define with_hypervisor 1
%else
%endif
#
%bcond_without fdupes
%bcond_without xen_docs
%bcond_without xen_ovmf
%bcond_with xen_stubdom
%bcond_without xen_systemd
Requires(pre): %fillup_prereq
%systemd_requires
#
BuildRequires: xen-buildreq-qemu-xen
BuildRequires: xen-buildreq-tools-staging
BuildRequires: python(abi) = 3.11
%if %{with xen_docs}
BuildRequires: xen-buildreq-docs
%endif
%if %{with xen_ovmf}
BuildRequires: xen-buildreq-ovmf
%endif
%if %{with xen_stubdom}
BuildRequires: xen-buildreq-stubdom
%endif
License: GPL-2.0+
Group: System/Kernel
Summary: Xen Hypervisor
Source1000: stubdom.tar.xz
##
Url: https://www.xenproject.org/
%define xen_revision_full 437f07b2b52b32929c74c2e19a52437ce7e5b88f
%define xen_revision_short 437f07b2b5
%define xen_date_unix 1756752861
%define xen_date_commit 2025-09-01 19:54:21 +0100
%define qemu_xen_revision_full e064f42c80be6f6ff8c12dcb2a663bdf70f965f6
%define qemu_xen_revision_short e064f42c80
%define qemu_xen_date_unix 1745484677
%define qemu_xen_date_commit 2025-04-24 10:51:17 +0200
%define btestfloat3_revision_full e7af9751d9f9fd3b47911f51a5cfd08af256a9ab
%define btestfloat3_revision_short e7af975
%define btestfloat3_date_unix 1689946593
%define btestfloat3_date_commit 2023-07-21 15:36:33 +0200
%define keycodemapdb_revision_full f5772a62ec52591ff6870b7e8ef32482371f22c6
%define keycodemapdb_revision_short f5772a6
%define keycodemapdb_date_unix 1677604609
%define keycodemapdb_date_commit 2023-02-28 18:16:49 +0100
%define seabios_revision_full a6ed6b701f0a57db0569ab98b0661c12a6ec3ff8
%define seabios_revision_short a6ed6b70
%define seabios_date_unix 1699879799
%define seabios_date_commit 2023-11-13 13:49:59 +0100
%define minios_revision_full 6732fd42d8eb8d0af9f5eb54aca17f4c250213a8
%define minios_revision_short 6732fd4
%define minios_date_unix 1753780985
%define minios_date_commit 2025-07-29 11:23:05 +0200
%define ovmf_revision_full ba91d0292e593df8528b66f99c1b0b14fadc8e16
%define ovmf_revision_short ba91d0292e
%define ovmf_date_unix 1684933194
%define ovmf_date_commit 2023-05-24 12:59:54 +0000
%define ipxe_revision_full 4262328c13a3ec085eac7c6c58fbed27d2466a0d
%define ipxe_revision_short 4262328c
%define ipxe_date_unix 1750952038
%define ipxe_date_commit 2025-06-26 16:33:58 +0100
Patch1603460399: xen.sr-save-show_transfer_rate.patch
%if %suse_version > 1110
BuildRequires: python(abi) > 3.0
%endif
%define qemu_xen_version e064f42c80be6f6ff8c12dcb2a663bdf70f965f6
%define bsoftfloat3_version b64af41c3276f97f0e181920400ee056b9c88037
%define btestfloat3_version e7af9751d9f9fd3b47911f51a5cfd08af256a9ab
%define keycodemapdb_version f5772a62ec52591ff6870b7e8ef32482371f22c6
%define seabios_version a6ed6b701f0a57db0569ab98b0661c12a6ec3ff8
%define minios_version 6732fd42d8eb8d0af9f5eb54aca17f4c250213a8
Patch1737362431: ovmf.e063f8b8a53861043b9872cc35b08a3dc03b0942.patch
Patch1617269159: ovmf.Disable-brotli.patch
Patch1687260117: ovmf.OVMF_PYTHON_COMMAND.patch
Patch1687262739: ovmf.MemoryStateToGhcbOp.patch
Patch1687263779: ovmf.ShellCommandRunDisconnect.patch
Patch1687284143: ovmf.SetOrClearSharedBit.patch
Patch1687286330: ovmf.AmdSevDxeEntryPoint.patch
Patch1687289375: ovmf.CoreOpenProtocol.patch
%define ovmf_version ba91d0292e593df8528b66f99c1b0b14fadc8e16
%define openssl_version 830bf8e1e4749ad65c51b6a1d0d769ae689404ba
%define ipxe_version 4262328c13a3ec085eac7c6c58fbed27d2466a0d
BuildRoot: %_tmppath/%name-%version-build
%description
Xen is a virtual machine monitor for x86 that supports execution of
multiple guest operating systems with unprecedented levels of
performance and resource isolation.
This package contains the Xen Hypervisor. (tm)
%package libs
Summary: Xen Virtualization: Libraries
Group: System/Kernel
%if 0%{with_hypervisor}
Requires: %name = %version-%release
%endif
%description libs
%package tools
Summary: Xen Virtualization: Control tools for domain 0
Group: System/Kernel
Requires: %name-libs = %version-%release
Requires: iproute2
Provides: xen-doc-html = %version-%release
Obsoletes: xen-doc-html
%description tools
%ifarch %ix86 x86_64
%package tools-domU
Summary: Xen Virtualization: Control tools for domain U
Group: System/Kernel
Requires: %name-libs = %version-%release
Conflicts: %name-tools
%description tools-domU
%endif
%package devel
Summary: Xen Virtualization: Headers and libraries for development
Group: System/Kernel
Requires: %name-libs = %version-%release
%description devel
%prep
rm -rf %_builddir/%name-%version
mv %_sourcedir/%name-%version %_builddir/%name-%version
%setup -c -T -D
pushd '.'
%patch -P 1603460399 -p1
popd
rm -rf './tools/qemu-xen-dir-remote'
mkdir -vp './tools'
mv -v '%_sourcedir/qemu_xen-%qemu_xen_version' './tools/qemu-xen-dir-remote'
rm -rf './tools/qemu-xen-dir-remote/subprojects/berkeley-softfloat-3'
mkdir -vp './tools/qemu-xen-dir-remote/subprojects'
mv -v '%_sourcedir/bsoftfloat3-%bsoftfloat3_version' './tools/qemu-xen-dir-remote/subprojects/berkeley-softfloat-3'
rm -rf './tools/qemu-xen-dir-remote/subprojects/berkeley-testfloat-3'
mkdir -vp './tools/qemu-xen-dir-remote/subprojects'
mv -v '%_sourcedir/btestfloat3-%btestfloat3_version' './tools/qemu-xen-dir-remote/subprojects/berkeley-testfloat-3'
rm -rf './tools/qemu-xen-dir-remote/subprojects/keycodemapdb'
mkdir -vp './tools/qemu-xen-dir-remote/subprojects'
mv -v '%_sourcedir/keycodemapdb-%keycodemapdb_version' './tools/qemu-xen-dir-remote/subprojects/keycodemapdb'
rm -rf './tools/firmware/seabios-dir-remote'
mkdir -vp './tools/firmware'
mv -v '%_sourcedir/seabios-%seabios_version' './tools/firmware/seabios-dir-remote'
rm -rf './extras/mini-os-remote'
mkdir -vp './extras'
mv -v '%_sourcedir/minios-%minios_version' './extras/mini-os-remote'
rm -rf './tools/firmware/ovmf-dir-remote'
mkdir -vp './tools/firmware'
mv -v '%_sourcedir/ovmf-%ovmf_version' './tools/firmware/ovmf-dir-remote'
pushd './tools/firmware/ovmf-dir-remote'
%patch -P 1737362431 -p1
%patch -P 1617269159 -p1
%patch -P 1687260117 -p1
%patch -P 1687262739 -p1
%patch -P 1687263779 -p1
%patch -P 1687284143 -p1
%patch -P 1687286330 -p1
%patch -P 1687289375 -p1
popd
rm -rf './tools/firmware/ovmf-dir-remote/CryptoPkg/Library/OpensslLib/openssl'
mkdir -vp './tools/firmware/ovmf-dir-remote/CryptoPkg/Library/OpensslLib'
mv -v '%_sourcedir/openssl-%openssl_version' './tools/firmware/ovmf-dir-remote/CryptoPkg/Library/OpensslLib/openssl'
rm -rf './tools/firmware/etherboot/ipxe'
mkdir -vp './tools/firmware/etherboot'
mv -v '%_sourcedir/ipxe-%ipxe_version' './tools/firmware/etherboot/ipxe'
find . -path '*/subprojects/packagefiles' | while read
do
if pushd "${REPLY}" 2>/dev/null
then
for prj in *
do
if pushd "${prj}" > /dev/null
then
for f in *
do
test -f "${f}" || continue
test -d "../../${prj}/" || continue
ln -vft "../../${prj}/" *
break
done
popd > /dev/null
fi
done
popd > /dev/null
fi
done
%build
pushd './tools/firmware/ovmf-dir-remote'
mkdir -vp MdePkg/Library/MipiSysTLib/mipisyst/library/include
popd
python_basename_xen='%{python_basename_xen}'
python_basename_qemuu='%{python_basename_qemuu}'
%include %_datadir/xen-buildreq/build.txt
%install
%include %_datadir/xen-buildreq/install.txt
%clean
: %buildroot preserved
%if 0%{with_hypervisor}
%files -f xen.files.txt
%defattr(-,root,root)
/boot/*
%endif
%files libs
%defattr(-,root,root)
%_libdir/xenfsimage/
%_libdir/*.so.*
%files tools -f xen-tools.python.files.txt
%defattr(-,root,root)
%if %{with xen_docs}
%{_defaultdocdir}/%name/html
%endif
/usr/bin/xen[!-]*
/usr/bin/vchan-socket-proxy
%ifarch %ix86 x86_64
/usr/bin/xen-cpuid
%endif
/usr/sbin/*
%_libexecdir/xen
%if %{with xen_docs}
%_mandir/man*/*.gz
%endif
%_fillupdir/*
%dir /var/lib/xen
%dir %attr(700,root,root) /var/lib/xen/images
%dir %attr(700,root,root) /var/lib/xen/save
%dir %attr(700,root,root) /var/lib/xen/dump
%ifarch %ix86 x86_64
%dir %attr(700,root,root) /var/lib/xen/xenpaging
%endif
%dir /var/lib/xenstored
%dir %attr(700,root,root) /etc/xen
%config /etc/xen/*
%dir /var/log/xen
%config %_unitdir/*
%config %_systemd_util_dir/system-sleep
%dir %{_defaultdocdir}/%name
%{_defaultdocdir}/%name/misc
%dir %_libdir/python*/site-packages/xen
%dir %_libdir/python*/site-packages/grub
%_datadir/bash-completion
%_datadir/qemu-xen
%_libdir/python*/site-packages/*.so
%ifarch %ix86 x86_64
%files tools-domU
%defattr(-,root,root)
/usr/bin/xen-detect
%endif
%files devel
%defattr(-,root,root)
%_libdir/*.a
%_libdir/*.so
/usr/include/*
%_libdir/pkgconfig/*
%include %_datadir/xen-buildreq/scriptlets.txt