File xen.spec of Package xen

# norootforbuild
%define python_basename_xen   python3
%define python_basename_qemuu python3
%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_with    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-staging
%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 067f18c3a72d8f0acccab831083b8518f0832d81
%define xen_revision_short 067f18c3a7
%define xen_date_unix 1693229271
%define xen_date_commit 2023-08-28 15:27:51 +0200

%define qemu_xen_trad_revision_full 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764
%define qemu_xen_trad_revision_short 3d273dd0
%define qemu_xen_trad_date_unix 1597762479
%define qemu_xen_trad_date_commit 2020-08-18 15:54:39 +0100

%define qemu_xen_revision_full 0df9387c8983e1b1e72d8c574356f572342c03e6
%define qemu_xen_revision_short 0df9387c89
%define qemu_xen_date_unix 1692179033
%define qemu_xen_date_commit 2023-08-16 10:43:53 +0100

%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 btestfloat3_revision_full 40619cbb3bf32872df8c53cc457039229428a263
%define btestfloat3_revision_short 40619cb
%define btestfloat3_date_unix 1676629741
%define btestfloat3_date_commit 2023-02-17 10:29:01 +0000

%define seabios_revision_full ea1b7a0733906b8425d948ae94fba63c32b1d425
%define seabios_revision_short ea1b7a07
%define seabios_date_unix 1675300479
%define seabios_date_commit 2023-02-01 20:14:39 -0500

%define minios_revision_full 5bcb28aaeba1c2506a82fab0cdad0201cd9b54b3
%define minios_revision_short 5bcb28a
%define minios_date_unix 1656924758
%define minios_date_commit 2022-07-04 09:52:38 +0100

%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 1d1cf74a5e58811822bee4b3da3cff7282fcdfca
%define ipxe_revision_short 1d1cf74a
%define ipxe_date_unix 1680215923
%define ipxe_date_commit 2023-03-30 23:38:43 +0100

Patch1603460399: xen.sr-save-show_transfer_rate.patch
Patch1619186222: xen.launch-xenstore.patch
%if %suse_version > 1110
BuildRequires: python(abi) > 3.0
%endif
%define qemu_xen_trad_version 3d273dd05e51e5a1ffba3d98c7437ee84e8f8764
%define qemu_xen_version 0df9387c8983e1b1e72d8c574356f572342c03e6
%define keycodemapdb_version f5772a62ec52591ff6870b7e8ef32482371f22c6
%define btestfloat3_version 40619cbb3bf32872df8c53cc457039229428a263
%define bsoftfloat3_version b64af41c3276f97f0e181920400ee056b9c88037
%define meson_version 3a9b285a55b91b53b2acda987192274352ecb5be
%define seabios_version ea1b7a0733906b8425d948ae94fba63c32b1d425
%define minios_version 5bcb28aaeba1c2506a82fab0cdad0201cd9b54b3
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 1d1cf74a5e58811822bee4b3da3cff7282fcdfca
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
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 '.'
%patch1603460399 -p1
%patch1619186222 -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'

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'

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/qemu-xen-dir-remote/meson'
mkdir -vp './tools/qemu-xen-dir-remote'
mv -v '%_sourcedir/meson-%meson_version' './tools/qemu-xen-dir-remote/meson'

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'
%patch1617269159 -p1
%patch1687260117 -p1
%patch1687262739 -p1
%patch1687263779 -p1
%patch1687284143 -p1
%patch1687286330 -p1
%patch1687289375 -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'

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
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/p*
/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
%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