File xen.spec of Package xen

# norootforbuild
%define python_basename_xen   python2
%define python_basename_qemuu python2
%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_qemu_trad
%bcond_without xen_ovmf
%bcond_without xen_stubdom
%bcond_without xen_systemd
Requires(pre): %fillup_prereq
%if %{without xen_systemd}
Requires(pre): %insserv_prereq
%else
%systemd_requires
%endif
#
BuildRequires: xen-buildreq-qemu-xen
BuildRequires: xen-buildreq-tools-4.13
%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
%if %{with xen_qemu_trad}
BuildRequires: xen-buildreq-qemu-xen-trad
%endif

License:        GPL-2.0+
Group:          System/Kernel
Summary:        Xen Hypervisor
Source1000:     stubdom.tar.xz
##
Url:            https://www.xenproject.org/
%define xen_revision_full 708e83f0e7d1e32295fee58c71c1e972d4e61f56
%define xen_revision_short 708e83f0e7
%define xen_date_unix 1671437408
%define xen_date_commit 2022-12-19 09:10:08 +0100

%define qemu_xen_trad_revision_full d0d8ad39ecb51cd7497cd524484fe09f50876798
%define qemu_xen_trad_revision_short d0d8ad39
%define qemu_xen_trad_date_unix 1540394291
%define qemu_xen_trad_date_commit 2018-10-24 16:18:11 +0100

%define qemu_xen_revision_full 7269466a5b0c0e89b36dc9a7db0554ae404aa230
%define qemu_xen_revision_short 7269466a5b
%define qemu_xen_date_unix 1604676723
%define qemu_xen_date_commit 2020-11-06 15:32:03 +0000

%define keycodemapdb_revision_full 6b3d716e2b6472eb7189d3220552280ef3d832ce
%define keycodemapdb_revision_short 6b3d716
%define keycodemapdb_date_unix 1515765463
%define keycodemapdb_date_commit 2018-01-12 13:57:43 +0000

%define btestfloat3_revision_full 5a59dcec19327396a011a17fd924aed4fec416b3
%define btestfloat3_revision_short 5a59dce
%define btestfloat3_date_unix 1547748698
%define btestfloat3_date_commit 2019-01-17 13:11:38 -0500

%define seabios_revision_full a5cab58e9a3fb6e168aba919c5669bea406573b4
%define seabios_revision_short a5cab58e
%define seabios_date_unix 1552565513
%define seabios_date_commit 2019-03-14 13:11:53 +0100

%define minios_revision_full 0b4b7897e08b967a09bed2028a79fabff82342dd
%define minios_revision_short 0b4b789
%define minios_date_unix 1508496635
%define minios_date_commit 2017-10-20 11:50:35 +0100

%define ovmf_revision_full 20d2e5a125e34fc8501026613a71549b2a1a3e54
%define ovmf_revision_short 20d2e5a125
%define ovmf_date_unix 1559796702
%define ovmf_date_commit 2019-06-06 12:51:42 +0800

%define ipxe_revision_full 390bce9516ce3a4adf599762b6c965813332595e
%define ipxe_revision_short 390bce95
%define ipxe_date_unix 1710861239
%define ipxe_date_commit 2024-03-19 15:13:59 +0000

Patch1576631723: xen.0e7c69bd3c0b35a677d73843b39522787ccf5a3f.patch
Patch1592374121: xen.f1d376a825f4878eab0ef9cabe50ec4299968629.patch
Patch1603197568: xen.bb9afb7a465d3b7b438f2e11105409d24400f8f4.patch
Patch1608623954: xen.ee41b5c450032ae7f2531e18cd0a73bf5fb48803.patch
Patch1610625803: xen.84a37d24a9e962e9c2fa8eb4671ea60c0958157d.patch
Patch1620136734: xen.74a8d446f7dc1f18174f48597d7ebb04a634a120.patch
Patch1620138688: xen.27f32dbdb1b11d171f0fa4dfd3263b44e9f7c71c.patch
Patch1655281172: xen.80ad8db8a4d9bb24952f0aea788ce6f47566fa76.patch
Patch1682506316: xen.860fb990bd208f590b78d938ba874e867e1c2986.patch
Patch1682506359: xen.dde20f7dc182fdfeeb6c55648979326bb982ca8c.patch
Patch1525725200: xen.pvgrub-disable.patch
Patch1525725468: xen.build-compare-doc_html.patch
Patch1619186222: xen.launch-xenstore.patch
%if %suse_version > 1110
BuildRequires: python(abi) > 3.0
%endif
%define qemu_xen_trad_version d0d8ad39ecb51cd7497cd524484fe09f50876798
Patch1607958578: qemu_xen.bbd2d5a8120771ec59b86a80a1f51884e0a26e53.patch
%define qemu_xen_version 7269466a5b0c0e89b36dc9a7db0554ae404aa230
Patch1519206414: keycodemapdb.16e5b0787687d8904dad2c026107409eb9bfcb95.patch
%define keycodemapdb_version 6b3d716e2b6472eb7189d3220552280ef3d832ce
%define btestfloat3_version 5a59dcec19327396a011a17fd924aed4fec416b3
%define bsoftfloat3_version b64af41c3276f97f0e181920400ee056b9c88037
Patch1595431900: seabios.699a4e5d6919cc8eae5342443025ceb6909dc276.patch
Patch1621549128: seabios.6eff8085980dba0938cea0193b8a0fd3c6b0c4ca.patch
%define seabios_version a5cab58e9a3fb6e168aba919c5669bea406573b4
%define minios_version 0b4b7897e08b967a09bed2028a79fabff82342dd
Patch1648123474: ovmf.7b005f344e533cd913c3ca05b266f9872df886d1.patch
Patch1648123475: ovmf.85021f8cf22d1bd4114803c6c610dea5ef0059f1.patch
Patch1617269159: ovmf.Disable-brotli.patch
%define ovmf_version 20d2e5a125e34fc8501026613a71549b2a1a3e54
%define openssl_version 50eaac9f3337667259de725451f201e784599687
Patch1484818598: ipxe.stable-build-id.patch
%define ipxe_version 390bce9516ce3a4adf599762b6c965813332595e
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
Requires:       multipath-tools
Requires:       python
Requires:       python-curses
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}
Requires:       pkgconfig(uuid)

%description devel

%prep
rm -rf %_builddir/%name-%version
mv %_sourcedir/%name-%version %_builddir/%name-%version
%setup -c -T -D
pushd '.'
%patch -P 1576631723 -p1
%patch -P 1592374121 -p1
%patch -P 1603197568 -p1
%patch -P 1608623954 -p1
%patch -P 1610625803 -p1
%patch -P 1620136734 -p1
%patch -P 1620138688 -p1
%patch -P 1655281172 -p1
%patch -P 1682506316 -p1
%patch -P 1682506359 -p1
%patch -P 1525725200 -p1
%patch -P 1525725468 -p1
%patch -P 1619186222 -p1
popd

rm -rf './tools/qemu-xen-traditional-dir-remote'
mkdir -vp './tools'
mv -v '%_sourcedir/qemu_xen_trad-%qemu_xen_trad_version' './tools/qemu-xen-traditional-dir-remote'

rm -rf './tools/qemu-xen-dir-remote'
mkdir -vp './tools'
mv -v '%_sourcedir/qemu_xen-%qemu_xen_version' './tools/qemu-xen-dir-remote'
pushd './tools/qemu-xen-dir-remote'
%patch -P 1607958578 -p1
popd

rm -rf './tools/qemu-xen-dir-remote/ui/keycodemapdb'
mkdir -vp './tools/qemu-xen-dir-remote/ui'
mv -v '%_sourcedir/keycodemapdb-%keycodemapdb_version' './tools/qemu-xen-dir-remote/ui/keycodemapdb'
pushd './tools/qemu-xen-dir-remote/ui/keycodemapdb'
%patch -P 1519206414 -p1
popd

rm -rf './tools/qemu-xen-dir-remote/tests/fp/berkeley-testfloat-3'
mkdir -vp './tools/qemu-xen-dir-remote/tests/fp'
mv -v '%_sourcedir/btestfloat3-%btestfloat3_version' './tools/qemu-xen-dir-remote/tests/fp/berkeley-testfloat-3'

rm -rf './tools/qemu-xen-dir-remote/tests/fp/berkeley-softfloat-3'
mkdir -vp './tools/qemu-xen-dir-remote/tests/fp'
mv -v '%_sourcedir/bsoftfloat3-%bsoftfloat3_version' './tools/qemu-xen-dir-remote/tests/fp/berkeley-softfloat-3'

rm -rf './tools/firmware/seabios-dir-remote'
mkdir -vp './tools/firmware'
mv -v '%_sourcedir/seabios-%seabios_version' './tools/firmware/seabios-dir-remote'
pushd './tools/firmware/seabios-dir-remote'
%patch -P 1595431900 -p1
%patch -P 1621549128 -p1
popd

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 1648123474 -p1
%patch -P 1648123475 -p1
%patch -P 1617269159 -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'
pushd './tools/firmware/etherboot/ipxe'
%patch -P 1484818598 -p1
popd

if pushd subprojects/packagefiles 2>/dev/null
then
  for prj in *
  do
    if pushd "${prj}" > /dev/null
    then
      for f in *
      do
        test -f "${f}" || continue
        ln -vt "../../${prj}/" *
        break
      done
      popd > /dev/null
    fi
  done
  popd > /dev/null
fi

%build
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/p*
%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
%if %{with xen_systemd}
%config %{_unitdir}/*
%else
%if %{?with_rc_d}0
%config /etc/rc.d
%endif
%config %{_initddir}/*
%endif
%dir %{_defaultdocdir}/%{name}
%{_defaultdocdir}/%{name}/misc
%dir %{_libdir}/python*/site-packages/xen
%dir %{_libdir}/python*/site-packages/grub
%if %{with xen_qemu_trad}
%ifarch  %ix86 x86_64
%{_datadir}/xen
%endif
%endif
%{_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
openSUSE Build Service is sponsored by