[openSUSE][RPM] spec: allow building without spice #55

Merged
dfaggioli merged 1 commits from factory-nospice into factory 2024-02-16 14:43:37 +01:00
2 changed files with 159 additions and 135 deletions

View File

@@ -46,6 +46,9 @@
%bcond_with xdp
%endif
# Make it possible to build without spice (for SLE/Leap Micro)
%bcond_without spice
# We do not have the stuff needed to compile rutabaga support.
# If/when we want to do it, we can check how it's done here:
# https://src.fedoraproject.org/rpms/qemu/c/deeb9357cb751df21c566fd8408936cfb034d43b?branch=rawhide

View File

@@ -89,6 +89,7 @@ Source1: common.inc
Source303: README.PACKAGING
Source1000: qemu-rpmlintrc
BuildRoot: %{_tmppath}/%{name}-%{version}-build
## Packages we REQUIRE during build
%if %{build_x86_firmware}
%ifnarch %ix86 x86_64
# We must cross-compile on non-x86*
@@ -123,23 +124,34 @@ BuildRequires: pkgconfig(libpmem)
%ifnarch %arm s390x
BuildRequires: libnuma-devel
%endif
%if 0%{with canokey}
BuildRequires: canokey-qemu-devel
%endif
%if 0%{?with_daxctl}
BuildRequires: pkgconfig(libndctl)
%endif
%if %{kvm_available}
BuildRequires: pkgconfig(udev)
%endif
%if 0%{?with_rbd}
BuildRequires: librbd-devel
%endif
%if 0%{with xdp}
BuildRequires: libxdp-devel
%endif
%if 0%{with canokey}
BuildRequires: canokey-qemu-devel
%if 0%{with spice}
BuildRequires: pkgconfig(spice-protocol) >= 0.12.3
BuildRequires: pkgconfig(spice-server) >= 0.12.5
%endif
%if 0%{?with_uring}
BuildRequires: pkgconfig(liburing) >= %liburing_min_version
%endif
%if %{kvm_available}
BuildRequires: pkgconfig(udev)
%if 0%{with xdp}
BuildRequires: libxdp-devel
%endif
%if 0%{?suse_version} >= 1600
BuildRequires: python3-base >= 3.8
BuildRequires: python3-Sphinx
%else
BuildRequires: python311-base
BuildRequires: python311-Sphinx
%endif
BuildRequires: Mesa-devel
BuildRequires: bison
@@ -188,29 +200,80 @@ BuildRequires: pkgconfig(libusb-1.0) >= 1.0.13
BuildRequires: pkgconfig(libzstd)
BuildRequires: pkgconfig(lzo2)
BuildRequires: pkgconfig(ncurses)
BuildRequires: pkgconfig(openssl) >= 1.0.0
BuildRequires: pkgconfig(pixman-1) >= 0.21.8
BuildRequires: pkgconfig(slirp) >= 4.2.0
BuildRequires: pkgconfig(spice-protocol) >= 0.12.3
BuildRequires: pkgconfig(spice-server) >= 0.12.5
BuildRequires: pkgconfig(systemd)
BuildRequires: pkgconfig(vdeplug)
BuildRequires: pkgconfig(virglrenderer) >= 0.4.1
BuildRequires: pkgconfig(vte-2.91)
BuildRequires: pkgconfig(xkbcommon)
BuildRequires: pkgconfig(zlib)
%if 0%{?suse_version} >= 1600
BuildRequires: python3-base >= 3.8
BuildRequires: python3-Sphinx
%else
BuildRequires: python311-base
BuildRequires: python311-Sphinx
%endif
BuildRequires: rdma-core-devel
BuildRequires: snappy-devel
BuildRequires: update-desktop-files
BuildRequires: usbredir-devel >= 0.6
BuildRequires: xfsprogs-devel
%{?systemd_ordering}
## Packages we will REQUIRE
%if %{kvm_available}
Requires(post): acl
Requires(post): udev
%endif
Requires(post): coreutils
Requires: group(kvm)
Requires: group(qemu)
Requires: user(qemu)
# Due to change in where some documentation files are, if qemu-guest-agent
# is installed, we need to make sure we update it to our version.
Requires: (qemu-guest-agent = %{version} if qemu-guest-agent)
## Packages we will RECOMMEND
%ifarch s390x
Recommends: qemu-hw-s390x-virtio-gpu-ccw
%else
Recommends: qemu-hw-display-qxl
Recommends: qemu-hw-display-virtio-gpu
Recommends: qemu-hw-display-virtio-gpu-pci
Recommends: qemu-hw-display-virtio-vga
Recommends: qemu-hw-usb-host
Recommends: qemu-hw-usb-redirect
Recommends: qemu-hw-usb-smartcard
%if 0%{with spice}
Recommends: qemu-ui-spice-app
%endif
# End of "ifarch s390x"
%endif
%if %{kvm_available}
Recommends: kvm_stat
%endif
Recommends: qemu-block-curl
Recommends: qemu-block-nfs
Recommends: qemu-ksm = %{version}
Recommends: qemu-tools
Recommends: qemu-ui-curses
## Packages we will SUGGEST
%if 0%{?with_rbd}
Suggests: qemu-block-rbd
%endif
Suggests: qemu-accel-qtest
Suggests: qemu-block-dmg
Suggests: qemu-block-gluster
Suggests: qemu-block-iscsi
Suggests: qemu-block-ssh
Suggests: qemu-chardev-baum
Suggests: qemu-extra
Suggests: qemu-lang
Suggests: qemu-microvm
Suggests: qemu-skiboot
Suggests: qemu-vhost-user-gpu
Suggests: qemu-ui-gtk
Suggests: qemu-doc
## Pacakges we OBSOLETE
Obsoletes: qemu-sgabios <= 8
Obsoletes: qemu-audio-oss < %{version}
Obsoletes: qemu-audio-sdl < %{version}
Obsoletes: qemu-ui-sdl < %{version}
## What we do with the main emulator depends on the architecture we're on
%if %{kvm_available}
%ifarch %ix86 x86_64
Requires: qemu-x86
@@ -238,56 +301,8 @@ Requires: qemu-extra
%else
Suggests: qemu-extra
%endif
Requires(post): acl
Requires(post): udev
Recommends: kvm_stat
# End of "if kvm_available"
%endif
Requires: group(kvm)
Requires: group(qemu)
Requires: user(qemu)
Requires(post): coreutils
%ifarch s390x
Recommends: qemu-hw-s390x-virtio-gpu-ccw
%else
# Due to change in where some documentation files are, if qemu-guest-agent
# is installed, we need to make sure we update it to our version.
Requires: (qemu-guest-agent = %{version} if qemu-guest-agent)
Recommends: qemu-hw-display-qxl
Recommends: qemu-hw-display-virtio-gpu
Recommends: qemu-hw-display-virtio-gpu-pci
Recommends: qemu-hw-display-virtio-vga
Recommends: qemu-hw-usb-host
Recommends: qemu-hw-usb-redirect
Recommends: qemu-hw-usb-smartcard
Recommends: qemu-ui-spice-app
# End of "ifarch s390x"
%endif
Recommends: qemu-block-curl
Recommends: qemu-block-nfs
Recommends: qemu-ksm = %{version}
Recommends: qemu-tools
Recommends: qemu-ui-curses
%if 0%{?with_rbd}
Suggests: qemu-block-rbd
%endif
Suggests: qemu-accel-qtest
Suggests: qemu-block-dmg
Suggests: qemu-block-gluster
Suggests: qemu-block-iscsi
Suggests: qemu-block-ssh
Suggests: qemu-chardev-baum
Suggests: qemu-extra
Suggests: qemu-lang
Suggests: qemu-microvm
Suggests: qemu-skiboot
Suggests: qemu-vhost-user-gpu
Suggests: qemu-ui-gtk
Suggests: qemu-doc
Obsoletes: qemu-sgabios <= 8
Obsoletes: qemu-audio-oss < %{version}
Obsoletes: qemu-audio-sdl < %{version}
Obsoletes: qemu-ui-sdl < %{version}
%description
%{generic_qemu_description}
@@ -747,8 +762,10 @@ EXTRA_CFLAGS="$(echo %{optflags} | sed -E 's/-[A-Z]?_FORTIFY_SOURCE[=]?[0-9]*//g
--enable-slirp-smbd \
--enable-smartcard \
--enable-snappy \
%if 0%{with spice}
--enable-spice \
--enable-spice-protocol \
%endif
--enable-system \
--enable-tcg \
--enable-tools \
@@ -1031,6 +1048,7 @@ make -O V=1 VERBOSE=1 -j1 check-qtest
# enable this at a later point
#make -O V=1 VERBOSE=1 -j1 check-report.junit.xml
%if 0%{with spice}
%package spice
Summary: Modules and packages for SPICE
Group: System/Emulators/PC
@@ -1049,6 +1067,80 @@ necessary for having SPICE working for your VMs.
%files spice
%package audio-spice
Summary: Spice based audio support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description audio-spice
This package contains a module for Spice based audio support for QEMU.
%files audio-spice
%dir %_libdir/%name
%_libdir/%name/audio-spice.so
%package chardev-spice
Summary: Spice vmc and port chardev support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description chardev-spice
This package contains a module for Spice chardev support for QEMU.
%files chardev-spice
%dir %_datadir/%name
%dir %_libdir/%name
%_libdir/%name/chardev-spice.so
%package ui-spice-app
Summary: Spice UI support for QEMU
Group: System/Emulators/PC
Requires: qemu-chardev-spice
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description ui-spice-app
This package contains a module for doing Spice based UI for QEMU.
%files ui-spice-app
%dir %_libdir/%name
%_libdir/%name/ui-spice-app.so
%package ui-spice-core
Summary: Core Spice support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-opengl
# This next Requires is only since virt-manager expects audio support
Requires: qemu-audio-spice
%{qemu_module_conflicts}
%description ui-spice-core
This package contains a module with core Spice support for QEMU.
%files ui-spice-core
%dir %_datadir/%name
%dir %_libdir/%name
%_libdir/%name/ui-spice-core.so
%package hw-display-qxl
Summary: QXL display support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description hw-display-qxl
This package contains a module for QXL display support for QEMU.
%files hw-display-qxl
%dir %_datadir/%name
%dir %_libdir/%name
%_libdir/%name/hw-display-qxl.so
# End of "with spice"
%endif
%package headless
Summary: Minimum set of packages for having a functional QEMU
Group: System/Emulators/PC
@@ -1278,19 +1370,6 @@ This package contains a module for JACK based audio support for QEMU.
%dir %_libdir/%name
%_libdir/%name/audio-jack.so
%package audio-spice
Summary: Spice based audio support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description audio-spice
This package contains a module for Spice based audio support for QEMU.
%files audio-spice
%dir %_libdir/%name
%_libdir/%name/audio-spice.so
%package audio-oss
Summary: OSS based audio support for QEMU
Group: System/Emulators/PC
@@ -1407,34 +1486,6 @@ This package contains a module for baum braille chardev support for QEMU.
%dir %_libdir/%name
%_libdir/%name/chardev-baum.so
%package chardev-spice
Summary: Spice vmc and port chardev support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description chardev-spice
This package contains a module for Spice chardev support for QEMU.
%files chardev-spice
%dir %_datadir/%name
%dir %_libdir/%name
%_libdir/%name/chardev-spice.so
%package hw-display-qxl
Summary: QXL display support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description hw-display-qxl
This package contains a module for QXL display support for QEMU.
%files hw-display-qxl
%dir %_datadir/%name
%dir %_libdir/%name
%_libdir/%name/hw-display-qxl.so
%package hw-display-virtio-gpu
Summary: Virtio GPU display support for QEMU
Group: System/Emulators/PC
@@ -1583,36 +1634,6 @@ This package contains a module for doing OpenGL based UI for QEMU.
%_libdir/%name/ui-egl-headless.so
%_libdir/%name/ui-opengl.so
%package ui-spice-app
Summary: Spice UI support for QEMU
Group: System/Emulators/PC
Requires: qemu-chardev-spice
Requires: qemu-ui-spice-core
%{qemu_module_conflicts}
%description ui-spice-app
This package contains a module for doing Spice based UI for QEMU.
%files ui-spice-app
%dir %_libdir/%name
%_libdir/%name/ui-spice-app.so
%package ui-spice-core
Summary: Core Spice support for QEMU
Group: System/Emulators/PC
Requires: qemu-ui-opengl
# This next Requires is only since virt-manager expects audio support
Requires: qemu-audio-spice
%{qemu_module_conflicts}
%description ui-spice-core
This package contains a module with core Spice support for QEMU.
%files ui-spice-core
%dir %_datadir/%name
%dir %_libdir/%name
%_libdir/%name/ui-spice-core.so
%package vhost-user-gpu
Summary: Vhost user mode virtio-gpu 2D/3D rendering backend for QEMU
Group: System/Emulators/PC