[libvirt PATCH 00/11] ci: Build RPMs on MinGW

Test pipeline: https://gitlab.com/abologna/libvirt/-/pipelines/1059447352 The openSUSE Leap 15 job failed, but that's caused by an unrelated packaging issue: $ pkg-config --cflags libtirpc -I/usr/include/tirpc $ rpm -ql libtirpc-devel | grep usr/include /usr/include/netconfig.h /usr/include/rpc /usr/include/rpc/auth.h /usr/include/rpc/auth_des.h ... /usr/include/rpc/types.h /usr/include/rpc/xdr.h /usr/include/rpcsvc /usr/include/rpcsvc/crypt.h /usr/include/rpcsvc/crypt.x The CI updates towards the end depend on the following unmerged libvirt-ci changes: https://gitlab.com/libvirt/libvirt-ci/-/merge_requests/440 Andrea Bolognani (11): rpm: Disable expensive tests for MinGW builds rpm: Explicitly enable NLS support rpm: Rename module-init-tools -> kmod rpm: Explain a couple of BuildRequires rpm: Add libxml2 BuildRequires for xmllint rpm: Shuffle BuildRequires around rpm: Split call to mingw_debug_package rpm: Introduce with_mingw32/with_mingw64 rpm: Introduce with_native ci: Refresh generated files ci: Build RPMs on MinGW .gitlab-ci.yml | 11 +- ci/buildenv/fedora-38-cross-mingw32.sh | 1 + ci/buildenv/fedora-38-cross-mingw64.sh | 1 + ci/buildenv/fedora-rawhide-cross-mingw32.sh | 1 + ci/buildenv/fedora-rawhide-cross-mingw64.sh | 1 + .../fedora-38-cross-mingw32.Dockerfile | 1 + .../fedora-38-cross-mingw64.Dockerfile | 1 + .../fedora-rawhide-cross-mingw32.Dockerfile | 1 + .../fedora-rawhide-cross-mingw64.Dockerfile | 1 + ci/jobs.sh | 19 +- libvirt.spec.in | 470 ++++++++++-------- 11 files changed, 296 insertions(+), 212 deletions(-) -- 2.41.0

Tests are disabled so this combination never made any sense, but with recent changes it has turned into a build failure. Fixes: 8ce0decc372051d616018f57ae268e2f03082eec Reported-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index 262c59eb5b..342a88024a 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -1349,7 +1349,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) -Ddriver_vmware=disabled \ -Ddriver_vz=disabled \ -Ddtrace=disabled \ - -Dexpensive_tests=enabled \ + -Dexpensive_tests=disabled \ -Dfirewalld=disabled \ -Dfirewalld_zone=disabled \ -Dfuse=disabled \ -- 2.41.0

On Thu, Nov 02, 2023 at 11:37:23PM +0100, Andrea Bolognani wrote:
Tests are disabled so this combination never made any sense, but with recent changes it has turned into a build failure.
Fixes: 8ce0decc372051d616018f57ae268e2f03082eec Reported-by: Cole Robinson <crobinso@redhat.com> Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

We want it both for native builds and MinGW ones. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index 342a88024a..f21f76b256 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -1283,6 +1283,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) -Dcapng=enabled \ %{?arg_fuse} \ %{?arg_netcf} \ + -Dnls=enabled \ -Dselinux=enabled \ %{?arg_selinux_mount} \ -Dapparmor=disabled \ @@ -1363,7 +1364,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) -Dlibssh=disabled \ -Dlogin_shell=disabled \ -Dnetcf=disabled \ - -Dnls=disabled \ + -Dnls=enabled \ -Dnss=disabled \ -Dnumactl=disabled \ -Dnumad=disabled \ -- 2.41.0

On Thu, Nov 02, 2023 at 11:37:24PM +0100, Andrea Bolognani wrote:
We want it both for native builds and MinGW ones.
Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

The old package name is only kept around for compatibility reasons. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index f21f76b256..d16d622153 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -315,7 +315,7 @@ BuildRequires: libnl3-devel BuildRequires: libselinux-devel BuildRequires: iptables BuildRequires: ebtables -BuildRequires: module-init-tools +BuildRequires: kmod BuildRequires: cyrus-sasl-devel BuildRequires: polkit >= 0.112 # For mount/umount in FS driver -- 2.41.0

On Thu, Nov 02, 2023 at 11:37:25PM +0100, Andrea Bolognani wrote:
The old package name is only kept around for compatibility reasons.
Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libvirt.spec.in b/libvirt.spec.in index d16d622153..8248e2ca80 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -292,6 +292,7 @@ BuildRequires: xen-devel %endif BuildRequires: glib2-devel >= 2.56 BuildRequires: libxml2-devel +# For xsltproc BuildRequires: libxslt BuildRequires: readline-devel BuildRequires: bash-completion >= 2.0 @@ -315,6 +316,7 @@ BuildRequires: libnl3-devel BuildRequires: libselinux-devel BuildRequires: iptables BuildRequires: ebtables +# For modprobe BuildRequires: kmod BuildRequires: cyrus-sasl-devel BuildRequires: polkit >= 0.112 -- 2.41.0

On Thu, Nov 02, 2023 at 11:37:26PM +0100, Andrea Bolognani wrote:
Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 ++ 1 file changed, 2 insertions(+)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

It's already been dragged in by the -devel package, but since we use the command line tool directly as part of our build process it's more correct to explicitly depend on the runtime package. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libvirt.spec.in b/libvirt.spec.in index 8248e2ca80..0b33a9a5e4 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -287,6 +287,8 @@ BuildRequires: ninja-build BuildRequires: git BuildRequires: perl-interpreter BuildRequires: python3 +# For xmllint +BuildRequires: libxml2 %if %{with_libxl} BuildRequires: xen-devel %endif -- 2.41.0

On Thu, Nov 02, 2023 at 11:37:27PM +0100, Andrea Bolognani wrote:
It's already been dragged in by the -devel package, but since we use the command line tool directly as part of our build process it's more correct to explicitly depend on the runtime package.
Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 2 ++ 1 file changed, 2 insertions(+)
Reviewed-by: Daniel P. Berrangé <berrange@redhat.com> With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

Move all dependencies that are needed both for native builds and for MinGW ones near the top of the list. This will make future patches nicer. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index 0b33a9a5e4..dc67ffabcc 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -281,7 +281,6 @@ Requires: libvirt-libs = %{version}-%{release} # All build-time requirements. Run-time requirements are # listed against each sub-RPM BuildRequires: python3-docutils -BuildRequires: gcc BuildRequires: meson >= 0.56.0 BuildRequires: ninja-build BuildRequires: git @@ -289,16 +288,21 @@ BuildRequires: perl-interpreter BuildRequires: python3 # For xmllint BuildRequires: libxml2 +# For xsltproc +BuildRequires: libxslt +BuildRequires: gettext +BuildRequires: systemd-rpm-macros +BuildRequires: rpcgen +# Fedora build root suckage +BuildRequires: gawk +BuildRequires: gcc %if %{with_libxl} BuildRequires: xen-devel %endif BuildRequires: glib2-devel >= 2.56 BuildRequires: libxml2-devel -# For xsltproc -BuildRequires: libxslt BuildRequires: readline-devel BuildRequires: bash-completion >= 2.0 -BuildRequires: gettext BuildRequires: libtasn1-devel BuildRequires: gnutls-devel BuildRequires: libattr-devel @@ -307,7 +311,6 @@ BuildRequires: libblkid-devel >= 2.17 # for augparse, optionally used in testing BuildRequires: augeas BuildRequires: systemd-devel >= 185 -BuildRequires: systemd-rpm-macros BuildRequires: libpciaccess-devel >= 0.10.9 BuildRequires: yajl-devel %if %{with_sanlock} @@ -384,8 +387,6 @@ BuildRequires: systemtap-sdt-devel BuildRequires: util-linux # For showmount in FS driver (netfs discovery) BuildRequires: nfs-utils -# Fedora build root suckage -BuildRequires: gawk # For storage wiping with different algorithms BuildRequires: scrub %if %{with_numad} @@ -397,7 +398,6 @@ BuildRequires: wireshark-devel %if %{with_libssh} BuildRequires: libssh-devel >= 0.8.1 %endif -BuildRequires: rpcgen BuildRequires: libtirpc-devel # Needed for the firewalld_reload macro %if %{with_firewalld_zone} -- 2.41.0

This is functionally equivalent and will make future patches nicer. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index dc67ffabcc..6a999860f5 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -1080,7 +1080,8 @@ BuildArch: noarch %description -n mingw64-libvirt MinGW Windows libvirt virtualization library. -%{?mingw_debug_package} +%{?mingw32_debug_package} +%{?mingw64_debug_package} %endif %prep -- 2.41.0

These replace the existing with_mingw but offer additional granularity. The existing _without_mingw knob retains its behavior of disabling all MinGW builds at once for convenience, while the newly introduced _without_mingw32/_without_mingw64 knobs make it possible to disable only one of them. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 49 ++++++++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 13 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index 6a999860f5..75fd0a2771 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -203,9 +203,19 @@ %define qemu_moddir %{_libdir}/qemu %define qemu_datadir %{_datadir}/qemu -%define with_mingw 0 +%define with_mingw32 0 +%define with_mingw64 0 + %if 0%{?fedora} - %define with_mingw 0%{!?_without_mingw:1} + %if 0%{!?_without_mingw:1} + %define with_mingw32 0%{!?_without_mingw32:1} + %define with_mingw64 0%{!?_without_mingw64:1} + %endif + + # These tell the other mingw macros whether to perform or + # skip the 32-bit and 64-bit specific steps respectively + %define mingw_build_win32 %{with_mingw32} + %define mingw_build_win64 %{with_mingw64} %endif # RHEL releases provide stable tool chains and so it is safe to turn @@ -404,7 +414,7 @@ BuildRequires: libtirpc-devel BuildRequires: firewalld-filesystem %endif -%if %{with_mingw} +%if %{with_mingw32} BuildRequires: mingw32-filesystem BuildRequires: mingw32-gcc BuildRequires: mingw32-binutils @@ -418,6 +428,8 @@ BuildRequires: mingw32-portablexdr BuildRequires: mingw32-dlfcn BuildRequires: mingw32-libssh2 BuildRequires: mingw32-curl +%endif +%if %{with_mingw64} BuildRequires: mingw64-filesystem BuildRequires: mingw64-gcc BuildRequires: mingw64-binutils @@ -1063,7 +1075,7 @@ Requires: libvirt-daemon-driver-network = %{version}-%{release} %description nss Libvirt plugin for NSS for translating domain names into IP addresses. -%if %{with_mingw} +%if %{with_mingw32} %package -n mingw32-libvirt Summary: %{summary} Obsoletes: mingw32-libvirt-static < 7.0.0 @@ -1072,6 +1084,10 @@ BuildArch: noarch %description -n mingw32-libvirt MinGW Windows libvirt virtualization library. +%{?mingw32_debug_package} +%endif + +%if %{with_mingw64} %package -n mingw64-libvirt Summary: %{summary} Obsoletes: mingw64-libvirt-static < 7.0.0 @@ -1080,7 +1096,6 @@ BuildArch: noarch %description -n mingw64-libvirt MinGW Windows libvirt virtualization library. -%{?mingw32_debug_package} %{?mingw64_debug_package} %endif @@ -1326,7 +1341,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) %meson_build -%if %{with_mingw} +%if %{with_mingw32} || %{with_mingw64} %mingw_meson \ --auto-features=enabled \ -Ddriver_remote=enabled \ @@ -1472,21 +1487,27 @@ mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \ %endif %endif -%if %{with_mingw} +%if %{with_mingw32} || %{with_mingw64} %mingw_ninja_install +%endif +%if %{with_mingw32} rm -rf $RPM_BUILD_ROOT%{mingw32_sysconfdir}/libvirt/nwfilter -rm -rf $RPM_BUILD_ROOT%{mingw64_sysconfdir}/libvirt/nwfilter rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/doc/* -rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/doc/* rm -rf $RPM_BUILD_ROOT%{mingw32_datadir}/gtk-doc/* -rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc/* - rm -rf $RPM_BUILD_ROOT%{mingw32_libexecdir}/libvirt_iohelper.exe -rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt_iohelper.exe rm -rf $RPM_BUILD_ROOT%{mingw32_libexecdir}/libvirt-guests.sh +%endif + +%if %{with_mingw64} +rm -rf $RPM_BUILD_ROOT%{mingw64_sysconfdir}/libvirt/nwfilter +rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/doc/* +rm -rf $RPM_BUILD_ROOT%{mingw64_datadir}/gtk-doc/* +rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt_iohelper.exe rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt-guests.sh +%endif +%if %{with_mingw32} || %{with_mingw64} %mingw_debug_install_post %mingw_find_lang %{name} @@ -2388,7 +2409,7 @@ exit 0 %{_datadir}/libvirt/api/libvirt-qemu-api.xml %{_datadir}/libvirt/api/libvirt-lxc-api.xml -%if %{with_mingw} +%if %{with_mingw32} %files -n mingw32-libvirt -f mingw32-libvirt.lang %dir %{mingw32_sysconfdir}/libvirt/ %config(noreplace) %{mingw32_sysconfdir}/libvirt/libvirt.conf @@ -2445,7 +2466,9 @@ exit 0 %{mingw32_mandir}/man1/virt-pki-query-dn.1* %{mingw32_mandir}/man1/virt-pki-validate.1* %{mingw32_mandir}/man7/virkey*.7* +%endif +%if %{with_mingw64} %files -n mingw64-libvirt -f mingw64-libvirt.lang %dir %{mingw64_sysconfdir}/libvirt/ %config(noreplace) %{mingw64_sysconfdir}/libvirt/libvirt.conf -- 2.41.0

The new _without_native knob makes it possible to skip the native build completely and build for MinGW only. Best viewed with 'git show -w'. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- libvirt.spec.in | 395 +++++++++++++++++++++++++----------------------- 1 file changed, 210 insertions(+), 185 deletions(-) diff --git a/libvirt.spec.in b/libvirt.spec.in index 75fd0a2771..9626de4662 100644 --- a/libvirt.spec.in +++ b/libvirt.spec.in @@ -203,6 +203,9 @@ %define qemu_moddir %{_libdir}/qemu %define qemu_datadir %{_datadir}/qemu +# Native / MinGW builds +%define with_native 0%{!?_without_native:1} + %define with_mingw32 0 %define with_mingw64 0 @@ -218,6 +221,13 @@ %define mingw_build_win64 %{with_mingw64} %endif +%if !%{with_native} + # Building the debugsource package apparently only works if the + # native build is enabled. debuginfo packages don't have this + # problem and setting this doesn't disable them + %global debug_package %{nil} +%endif + # RHEL releases provide stable tool chains and so it is safe to turn # compiler warning into errors without being worried about frequent # changes in reported warnings @@ -305,10 +315,11 @@ BuildRequires: systemd-rpm-macros BuildRequires: rpcgen # Fedora build root suckage BuildRequires: gawk +%if %{with_native} BuildRequires: gcc -%if %{with_libxl} + %if %{with_libxl} BuildRequires: xen-devel -%endif + %endif BuildRequires: glib2-devel >= 2.56 BuildRequires: libxml2-devel BuildRequires: readline-devel @@ -323,9 +334,9 @@ BuildRequires: augeas BuildRequires: systemd-devel >= 185 BuildRequires: libpciaccess-devel >= 0.10.9 BuildRequires: yajl-devel -%if %{with_sanlock} + %if %{with_sanlock} BuildRequires: sanlock-devel >= 2.4 -%endif + %endif BuildRequires: libpcap-devel >= 1.5.0 BuildRequires: libnl3-devel BuildRequires: libselinux-devel @@ -337,59 +348,59 @@ BuildRequires: cyrus-sasl-devel BuildRequires: polkit >= 0.112 # For mount/umount in FS driver BuildRequires: util-linux -%if %{with_qemu} + %if %{with_qemu} # For managing ACLs BuildRequires: libacl-devel # From QEMU RPMs, used by virstoragetest BuildRequires: /usr/bin/qemu-img -%endif + %endif # nbdkit support requires libnbd -%if %{with_nbdkit} + %if %{with_nbdkit} BuildRequires: libnbd-devel -%endif + %endif # For LVM drivers BuildRequires: lvm2 # For pool type=iscsi BuildRequires: iscsi-initiator-utils -%if %{with_storage_iscsi_direct} + %if %{with_storage_iscsi_direct} # For pool type=iscsi-direct BuildRequires: libiscsi-devel -%endif + %endif # For disk driver BuildRequires: parted-devel # For Multipath support BuildRequires: device-mapper-devel -%if %{with_storage_rbd} + %if %{with_storage_rbd} BuildRequires: librados-devel BuildRequires: librbd-devel -%endif -%if %{with_storage_gluster} + %endif + %if %{with_storage_gluster} BuildRequires: glusterfs-api-devel >= 3.4.1 BuildRequires: glusterfs-devel >= 3.4.1 -%endif -%if %{with_numactl} + %endif + %if %{with_numactl} # For QEMU/LXC numa info BuildRequires: numactl-devel -%endif + %endif BuildRequires: libcap-ng-devel >= 0.5.0 -%if %{with_fuse} + %if %{with_fuse} BuildRequires: fuse-devel >= 2.8.6 -%endif -%if %{with_libssh2} + %endif + %if %{with_libssh2} BuildRequires: libssh2-devel >= 1.3.0 -%endif -%if %{with_netcf} + %endif + %if %{with_netcf} BuildRequires: netcf-devel >= 0.2.2 -%endif -%if 0%{?fedora} || 0%{?rhel} >= 9 + %endif + %if 0%{?fedora} || 0%{?rhel} >= 9 BuildRequires: passt -%endif -%if %{with_esx} + %endif + %if %{with_esx} BuildRequires: libcurl-devel -%endif -%if %{with_hyperv} + %endif + %if %{with_hyperv} BuildRequires: libwsman-devel >= 2.6.3 -%endif + %endif BuildRequires: audit-libs-devel # we need /usr/sbin/dtrace BuildRequires: systemtap-sdt-devel @@ -399,19 +410,20 @@ BuildRequires: util-linux BuildRequires: nfs-utils # For storage wiping with different algorithms BuildRequires: scrub -%if %{with_numad} + %if %{with_numad} BuildRequires: numad -%endif -%if %{with_wireshark} + %endif + %if %{with_wireshark} BuildRequires: wireshark-devel -%endif -%if %{with_libssh} + %endif + %if %{with_libssh} BuildRequires: libssh-devel >= 0.8.1 -%endif + %endif BuildRequires: libtirpc-devel + %if %{with_firewalld_zone} # Needed for the firewalld_reload macro -%if %{with_firewalld_zone} BuildRequires: firewalld-filesystem + %endif %endif %if %{with_mingw32} @@ -450,6 +462,7 @@ Libvirt is a C toolkit to interact with the virtualization capabilities of recent versions of Linux (and other OSes). The main package includes the libvirtd server exporting the virtualization support. +%if %{with_native} %package docs Summary: API reference and website documentation @@ -489,10 +502,10 @@ Requires: iproute # for /sbin/tc Requires: iproute-tc Requires: polkit >= 0.112 -%if %{with_dmidecode} + %if %{with_dmidecode} # For virConnectGetSysinfo Requires: dmidecode -%endif + %endif # For service management Requires(posttrans): /usr/bin/systemctl Requires(preun): /usr/bin/systemctl @@ -501,11 +514,11 @@ Requires: dbus # For uid creation during pre Requires(pre): shadow-utils # Needed by /usr/libexec/libvirt-guests.sh script. -%if 0%{?fedora} + %if 0%{?fedora} Requires: gettext-runtime -%else + %else Requires: gettext -%endif + %endif # Ensure smooth upgrades Obsoletes: libvirt-admin < 7.3.0 @@ -613,9 +626,9 @@ capabilities. Summary: Interface driver plugin for the libvirtd daemon Requires: libvirt-daemon-common = %{version}-%{release} Requires: libvirt-libs = %{version}-%{release} -%if %{with_netcf} + %if %{with_netcf} Requires: netcf-libs >= 0.2.2 -%endif + %endif %description daemon-driver-interface The interface driver plugin for the libvirtd daemon, providing @@ -637,13 +650,13 @@ Requires: libvirt-libs = %{version}-%{release} Requires: nfs-utils # For mkfs Requires: util-linux -%if %{with_qemu} + %if %{with_qemu} # From QEMU RPMs Requires: /usr/bin/qemu-img -%endif -%if !%{with_storage_rbd} + %endif + %if !%{with_storage_rbd} Obsoletes: libvirt-daemon-driver-storage-rbd < 5.2.0 -%endif + %endif Obsoletes: libvirt-daemon-driver-storage-sheepdog < 8.8.0 %description daemon-driver-storage-core @@ -691,7 +704,7 @@ Requires: iscsi-initiator-utils The storage driver backend adding implementation of the storage APIs for iscsi volumes using the host iscsi stack. -%if %{with_storage_iscsi_direct} + %if %{with_storage_iscsi_direct} %package daemon-driver-storage-iscsi-direct Summary: Storage driver plugin for iscsi-direct Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} @@ -700,7 +713,7 @@ Requires: libvirt-libs = %{version}-%{release} %description daemon-driver-storage-iscsi-direct The storage driver backend adding implementation of the storage APIs for iscsi volumes using libiscsi direct connection. -%endif + %endif %package daemon-driver-storage-mpath Summary: Storage driver plugin for multipath volumes @@ -712,24 +725,24 @@ Requires: device-mapper The storage driver backend adding implementation of the storage APIs for multipath storage using device mapper. -%if %{with_storage_gluster} + %if %{with_storage_gluster} %package daemon-driver-storage-gluster Summary: Storage driver plugin for gluster Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} Requires: libvirt-libs = %{version}-%{release} - %if 0%{?fedora} + %if 0%{?fedora} Requires: glusterfs-client >= 2.0.1 - %endif - %if 0%{?fedora} || 0%{?with_storage_gluster} + %endif + %if 0%{?fedora} || 0%{?with_storage_gluster} Requires: /usr/sbin/gluster - %endif + %endif %description daemon-driver-storage-gluster The storage driver backend adding implementation of the storage APIs for gluster volumes using libgfapi. -%endif + %endif -%if %{with_storage_rbd} + %if %{with_storage_rbd} %package daemon-driver-storage-rbd Summary: Storage driver plugin for rbd Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} @@ -738,9 +751,9 @@ Requires: libvirt-libs = %{version}-%{release} %description daemon-driver-storage-rbd The storage driver backend adding implementation of the storage APIs for rbd volumes using the ceph protocol. -%endif + %endif -%if %{with_storage_zfs} + %if %{with_storage_zfs} %package daemon-driver-storage-zfs Summary: Storage driver plugin for ZFS Requires: libvirt-daemon-driver-storage-core = %{version}-%{release} @@ -752,7 +765,7 @@ Requires: /sbin/zpool %description daemon-driver-storage-zfs The storage driver backend adding implementation of the storage APIs for ZFS volumes. -%endif + %endif %package daemon-driver-storage Summary: Storage driver plugin including all backends for the libvirtd daemon @@ -762,25 +775,25 @@ Requires: libvirt-daemon-driver-storage-logical = %{version}-%{release} Requires: libvirt-daemon-driver-storage-scsi = %{version}-%{release} Requires: libvirt-daemon-driver-storage-iscsi = %{version}-%{release} Requires: libvirt-daemon-driver-storage-mpath = %{version}-%{release} -%if %{with_storage_iscsi_direct} + %if %{with_storage_iscsi_direct} Requires: libvirt-daemon-driver-storage-iscsi-direct = %{version}-%{release} -%endif -%if %{with_storage_gluster} + %endif + %if %{with_storage_gluster} Requires: libvirt-daemon-driver-storage-gluster = %{version}-%{release} -%endif -%if %{with_storage_rbd} + %endif + %if %{with_storage_rbd} Requires: libvirt-daemon-driver-storage-rbd = %{version}-%{release} -%endif -%if %{with_storage_zfs} + %endif + %if %{with_storage_zfs} Requires: libvirt-daemon-driver-storage-zfs = %{version}-%{release} -%endif + %endif %description daemon-driver-storage The storage driver plugin for the libvirtd daemon, providing an implementation of the storage APIs using LVM, iSCSI, parted and more. -%if %{with_qemu} + %if %{with_qemu} %package daemon-driver-qemu Summary: QEMU driver plugin for the libvirtd daemon Requires: libvirt-daemon-common = %{version}-%{release} @@ -794,26 +807,26 @@ Requires: lzop Requires: xz Requires: systemd-container Requires: swtpm-tools - %if %{with_numad} + %if %{with_numad} Requires: numad - %endif - %if 0%{?fedora} || 0%{?rhel} >= 9 + %endif + %if 0%{?fedora} || 0%{?rhel} >= 9 Recommends: passt Recommends: passt-selinux - %endif - %if %{with_nbdkit} + %endif + %if %{with_nbdkit} Recommends: nbdkit Recommends: nbdkit-curl-plugin Recommends: nbdkit-ssh-plugin - %endif + %endif %description daemon-driver-qemu The qemu driver plugin for the libvirtd daemon, providing an implementation of the hypervisor driver APIs using QEMU -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %package daemon-driver-lxc Summary: LXC driver plugin for the libvirtd daemon Requires: libvirt-daemon-common = %{version}-%{release} @@ -823,17 +836,17 @@ Requires: libvirt-daemon-driver-network = %{version}-%{release} Requires: systemd-container # for modprobe of nbd driver Requires: module-init-tools - %if %{with_numad} + %if %{with_numad} Requires: numad - %endif + %endif %description daemon-driver-lxc The LXC driver plugin for the libvirtd daemon, providing an implementation of the hypervisor driver APIs using the Linux kernel -%endif + %endif -%if %{with_vbox} + %if %{with_vbox} %package daemon-driver-vbox Summary: VirtualBox driver plugin for the libvirtd daemon Requires: libvirt-daemon-common = %{version}-%{release} @@ -843,9 +856,9 @@ Requires: libvirt-libs = %{version}-%{release} The vbox driver plugin for the libvirtd daemon, providing an implementation of the hypervisor driver APIs using VirtualBox -%endif + %endif -%if %{with_libxl} + %if %{with_libxl} %package daemon-driver-libxl Summary: Libxl driver plugin for the libvirtd daemon Requires: libvirt-daemon-common = %{version}-%{release} @@ -856,22 +869,22 @@ Obsoletes: libvirt-daemon-driver-xen < 4.3.0 The Libxl driver plugin for the libvirtd daemon, providing an implementation of the hypervisor driver APIs using Libxl -%endif + %endif -%if %{with_qemu_tcg} + %if %{with_qemu_tcg} %package daemon-qemu Summary: Server side daemon & driver required to run QEMU guests - %if %{with_modular_daemons} + %if %{with_modular_daemons} Requires: libvirt-daemon-common = %{version}-%{release} Requires: libvirt-daemon-log = %{version}-%{release} Requires: libvirt-daemon-lock = %{version}-%{release} Requires: libvirt-daemon-plugin-lockd = %{version}-%{release} Requires: libvirt-daemon-proxy = %{version}-%{release} Recommends: libvirt-daemon = %{version}-%{release} - %else + %else Requires: libvirt-daemon = %{version}-%{release} - %endif + %endif Requires: libvirt-daemon-driver-qemu = %{version}-%{release} Requires: libvirt-daemon-driver-interface = %{version}-%{release} Requires: libvirt-daemon-driver-network = %{version}-%{release} @@ -884,22 +897,22 @@ Requires: qemu %description daemon-qemu Server side daemon and driver required to manage the virtualization capabilities of the QEMU TCG emulators -%endif + %endif -%if %{with_qemu_kvm} + %if %{with_qemu_kvm} %package daemon-kvm Summary: Server side daemon & driver required to run KVM guests - %if %{with_modular_daemons} + %if %{with_modular_daemons} Requires: libvirt-daemon-common = %{version}-%{release} Requires: libvirt-daemon-log = %{version}-%{release} Requires: libvirt-daemon-lock = %{version}-%{release} Requires: libvirt-daemon-plugin-lockd = %{version}-%{release} Requires: libvirt-daemon-proxy = %{version}-%{release} Recommends: libvirt-daemon = %{version}-%{release} - %else + %else Requires: libvirt-daemon = %{version}-%{release} - %endif + %endif Requires: libvirt-daemon-driver-qemu = %{version}-%{release} Requires: libvirt-daemon-driver-interface = %{version}-%{release} Requires: libvirt-daemon-driver-network = %{version}-%{release} @@ -912,19 +925,19 @@ Requires: qemu-kvm %description daemon-kvm Server side daemon and driver required to manage the virtualization capabilities of the KVM hypervisor -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %package daemon-lxc Summary: Server side daemon & driver required to run LXC guests - %if %{with_modular_daemons} + %if %{with_modular_daemons} Requires: libvirt-daemon-common = %{version}-%{release} Requires: libvirt-daemon-proxy = %{version}-%{release} Recommends: libvirt-daemon = %{version}-%{release} - %else + %else Requires: libvirt-daemon = %{version}-%{release} - %endif + %endif Requires: libvirt-daemon-driver-lxc = %{version}-%{release} Requires: libvirt-daemon-driver-interface = %{version}-%{release} Requires: libvirt-daemon-driver-network = %{version}-%{release} @@ -936,21 +949,21 @@ Requires: libvirt-daemon-driver-storage = %{version}-%{release} %description daemon-lxc Server side daemon and driver required to manage the virtualization capabilities of LXC -%endif + %endif -%if %{with_libxl} + %if %{with_libxl} %package daemon-xen Summary: Server side daemon & driver required to run XEN guests - %if %{with_modular_daemons} + %if %{with_modular_daemons} Requires: libvirt-daemon-common = %{version}-%{release} Requires: libvirt-daemon-lock = %{version}-%{release} Requires: libvirt-daemon-plugin-lockd = %{version}-%{release} Requires: libvirt-daemon-proxy = %{version}-%{release} Recommends: libvirt-daemon = %{version}-%{release} - %else + %else Requires: libvirt-daemon = %{version}-%{release} - %endif + %endif Requires: libvirt-daemon-driver-libxl = %{version}-%{release} Requires: libvirt-daemon-driver-interface = %{version}-%{release} Requires: libvirt-daemon-driver-network = %{version}-%{release} @@ -963,19 +976,19 @@ Requires: xen %description daemon-xen Server side daemon and driver required to manage the virtualization capabilities of XEN -%endif + %endif -%if %{with_vbox} + %if %{with_vbox} %package daemon-vbox Summary: Server side daemon & driver required to run VirtualBox guests - %if %{with_modular_daemons} + %if %{with_modular_daemons} Requires: libvirt-daemon-common = %{version}-%{release} Requires: libvirt-daemon-proxy = %{version}-%{release} Recommends: libvirt-daemon = %{version}-%{release} - %else + %else Requires: libvirt-daemon = %{version}-%{release} - %endif + %endif Requires: libvirt-daemon-driver-vbox = %{version}-%{release} Requires: libvirt-daemon-driver-interface = %{version}-%{release} Requires: libvirt-daemon-driver-network = %{version}-%{release} @@ -987,7 +1000,7 @@ Requires: libvirt-daemon-driver-storage = %{version}-%{release} %description daemon-vbox Server side daemon and driver required to manage the virtualization capabilities of VirtualBox -%endif + %endif %package client Summary: Client side utilities of the libvirt library @@ -1024,7 +1037,7 @@ Requires: cyrus-sasl-gssapi %description libs Shared libraries for accessing the libvirt daemon. -%if %{with_wireshark} + %if %{with_wireshark} %package wireshark Summary: Wireshark dissector plugin for libvirt RPC transactions Requires: wireshark @@ -1032,9 +1045,9 @@ Requires: libvirt-libs = %{version}-%{release} %description wireshark Wireshark dissector plugin for better analysis of libvirt RPC traffic. -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %package login-shell Summary: Login shell for connecting users to an LXC container Requires: libvirt-libs = %{version}-%{release} @@ -1043,7 +1056,7 @@ Requires: libvirt-libs = %{version}-%{release} Provides the set-uid virt-login-shell binary that is used to connect a user to an LXC container when they login, by switching namespaces. -%endif + %endif %package devel Summary: Libraries, includes, etc. to compile with the libvirt library @@ -1053,7 +1066,7 @@ Requires: pkgconfig %description devel Include header files & development libraries for the libvirt C library. -%if %{with_sanlock} + %if %{with_sanlock} %package daemon-plugin-sanlock Summary: Sanlock lock manager plugin for QEMU driver Requires: sanlock >= 2.4 @@ -1066,7 +1079,7 @@ Provides: libvirt-lock-sanlock = %{version}-%{release} %description daemon-plugin-sanlock Includes the Sanlock lock manager plugin for the QEMU driver -%endif + %endif %package nss Summary: Libvirt plugin for Name Service Switch @@ -1074,6 +1087,7 @@ Requires: libvirt-daemon-driver-network = %{version}-%{release} %description nss Libvirt plugin for NSS for translating domain names into IP addresses. +%endif %if %{with_mingw32} %package -n mingw32-libvirt @@ -1265,6 +1279,7 @@ exit 1 export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) +%if %{with_native} %meson \ -Drunstatedir=%{_rundir} \ -Dinitconfdir=%{_sysconfdir}/sysconfig \ @@ -1340,6 +1355,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) %{?arg_login_shell} %meson_build +%endif %if %{with_mingw32} || %{with_mingw64} %mingw_meson \ @@ -1416,7 +1432,7 @@ export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) -Dudev=disabled \ -Dwireshark_dissector=disabled \ -Dyajl=disabled -%mingw_ninja + %mingw_ninja %endif %install @@ -1424,6 +1440,7 @@ rm -fr %{buildroot} export SOURCE_DATE_EPOCH=$(stat --printf='%Y' %{_specdir}/libvirt.spec) +%if %{with_native} %meson_install # We don't want to install /etc/libvirt/qemu/networks in the main %%files list @@ -1443,47 +1460,48 @@ cp -a $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml \ # libvirt saves these files with mode 600 chmod 600 $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/nwfilter/*.xml -%if ! %{with_qemu} + %if ! %{with_qemu} rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_qemu.aug rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_qemu.aug -%endif + %endif %find_lang %{name} -%if ! %{with_sanlock} + %if ! %{with_sanlock} rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirt_sanlock.aug rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirt_sanlock.aug -%endif + %endif -%if ! %{with_lxc} + %if ! %{with_lxc} rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_lxc.aug rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_lxc.aug -%endif + %endif -%if ! %{with_qemu} + %if ! %{with_qemu} rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/qemu.conf rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.qemu -%endif -%if ! %{with_lxc} + %endif + %if ! %{with_lxc} rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/lxc.conf rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.lxc -%endif -%if ! %{with_libxl} + %endif + %if ! %{with_libxl} rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/libvirt/libxl.conf rm -rf $RPM_BUILD_ROOT%{_sysconfdir}/logrotate.d/libvirtd.libxl rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/libvirtd_libxl.aug rm -f $RPM_BUILD_ROOT%{_datadir}/augeas/lenses/tests/test_libvirtd_libxl.aug -%endif + %endif # Copied into libvirt-docs subpackage eventually mv $RPM_BUILD_ROOT%{_datadir}/doc/libvirt libvirt-docs -%ifarch %{arches_systemtap_64bit} + %ifarch %{arches_systemtap_64bit} mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes.stp \ $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_probes-64.stp - %if %{with_qemu} + %if %{with_qemu} mv $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes.stp \ $RPM_BUILD_ROOT%{_datadir}/systemtap/tapset/libvirt_qemu_probes-64.stp + %endif %endif %endif @@ -1515,9 +1533,12 @@ rm -rf $RPM_BUILD_ROOT%{mingw64_libexecdir}/libvirt-guests.sh %endif %check + +%if %{with_native} # Building on slow archs, like emulated s390x in Fedora copr, requires # raising the test timeout VIR_TEST_DEBUG=1 %meson_test --no-suite syntax-check --timeout-multiplier 10 +%endif %define libvirt_rpmstatedir %{_localstatedir}/lib/rpm-state/libvirt @@ -1663,6 +1684,7 @@ VIR_TEST_DEBUG=1 %meson_test --no-suite syntax-check --timeout-multiplier 10 %define libvirt_systemd_config_pre() %libvirt_systemd_schedule_restart %1.service %define libvirt_systemd_config_posttrans() %libvirt_systemd_perform_restart %1.service +%if %{with_native} %pre daemon %libvirt_sysconfig_pre libvirtd %libvirt_systemd_inet_pre libvirtd @@ -1727,9 +1749,9 @@ exit 0 %libvirt_systemd_unix_pre virtnetworkd %post daemon-driver-network -%if %{with_firewalld_zone} + %if %{with_firewalld_zone} %firewalld_reload -%endif + %endif %posttrans daemon-driver-network %libvirt_sysconfig_posttrans virtnetworkd @@ -1739,9 +1761,9 @@ exit 0 %libvirt_systemd_unix_preun virtnetworkd %postun daemon-driver-network -%if %{with_firewalld_zone} + %if %{with_firewalld_zone} %firewalld_reload -%endif + %endif %pre daemon-driver-nwfilter %libvirt_sysconfig_pre virtnwfilterd @@ -1798,7 +1820,7 @@ exit 0 %preun daemon-driver-storage-core %libvirt_systemd_unix_preun virtstoraged -%if %{with_qemu} + %if %{with_qemu} %pre daemon-driver-qemu %libvirt_sysconfig_pre virtqemud %libvirt_systemd_unix_pre virtqemud @@ -1822,9 +1844,9 @@ exit 0 %preun daemon-driver-qemu %libvirt_systemd_unix_preun virtqemud -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %pre daemon-driver-lxc %libvirt_sysconfig_pre virtlxcd %libvirt_systemd_unix_pre virtlxcd @@ -1835,9 +1857,9 @@ exit 0 %preun daemon-driver-lxc %libvirt_systemd_unix_preun virtlxcd -%endif + %endif -%if %{with_vbox} + %if %{with_vbox} %pre daemon-driver-vbox %libvirt_sysconfig_pre virtvboxd %libvirt_systemd_unix_pre virtvboxd @@ -1848,9 +1870,9 @@ exit 0 %preun daemon-driver-vbox %libvirt_systemd_unix_preun virtvboxd -%endif + %endif -%if %{with_libxl} + %if %{with_libxl} %pre daemon-driver-libxl %libvirt_sysconfig_pre virtxend %libvirt_systemd_unix_pre virtxend @@ -1861,7 +1883,7 @@ exit 0 %preun daemon-driver-libxl %libvirt_systemd_unix_preun virtxend -%endif + %endif %pre daemon-config-network %libvirt_systemd_config_pre libvirtd @@ -1926,12 +1948,14 @@ done %libvirt_systemd_config_posttrans libvirtd %libvirt_systemd_config_posttrans virtnwfilterd -%if %{with_lxc} + %if %{with_lxc} %pre login-shell getent group virtlogin >/dev/null || groupadd -r virtlogin exit 0 + %endif %endif +%if %{with_native} %files %files docs @@ -1992,9 +2016,9 @@ exit 0 %{_datadir}/augeas/lenses/virtlockd.aug %{_datadir}/augeas/lenses/tests/test_virtlockd.aug %{_datadir}/augeas/lenses/libvirt_lockd.aug -%if %{with_qemu} + %if %{with_qemu} %{_datadir}/augeas/lenses/tests/test_libvirt_lockd.aug -%endif + %endif %attr(0755, root, root) %{_sbindir}/virtlockd %{_mandir}/man8/virtlockd.8* @@ -2067,13 +2091,13 @@ exit 0 %attr(0755, root, root) %{_libexecdir}/libvirt_leaseshelper %{_libdir}/libvirt/connection-driver/libvirt_driver_network.so %{_mandir}/man8/virtnetworkd.8* -%if %{with_firewalld_zone} + %if %{with_firewalld_zone} %{_prefix}/lib/firewalld/zones/libvirt.xml %{_prefix}/lib/firewalld/zones/libvirt-routed.xml %{_prefix}/lib/firewalld/policies/libvirt-routed-in.xml %{_prefix}/lib/firewalld/policies/libvirt-routed-out.xml %{_prefix}/lib/firewalld/policies/libvirt-to-host.xml -%endif + %endif %files daemon-driver-nodedev %config(noreplace) %{_sysconfdir}/libvirt/virtnodedevd.conf @@ -2150,31 +2174,31 @@ exit 0 %files daemon-driver-storage-iscsi %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi.so -%if %{with_storage_iscsi_direct} + %if %{with_storage_iscsi_direct} %files daemon-driver-storage-iscsi-direct %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_iscsi-direct.so -%endif + %endif %files daemon-driver-storage-mpath %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_mpath.so -%if %{with_storage_gluster} + %if %{with_storage_gluster} %files daemon-driver-storage-gluster %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_gluster.so %{_libdir}/libvirt/storage-file/libvirt_storage_file_gluster.so -%endif + %endif -%if %{with_storage_rbd} + %if %{with_storage_rbd} %files daemon-driver-storage-rbd %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_rbd.so -%endif + %endif -%if %{with_storage_zfs} + %if %{with_storage_zfs} %files daemon-driver-storage-zfs %{_libdir}/libvirt/storage-backend/libvirt_storage_backend_zfs.so -%endif + %endif -%if %{with_qemu} + %if %{with_qemu} %files daemon-driver-qemu %config(noreplace) %{_sysconfdir}/libvirt/virtqemud.conf %config(noreplace) %{_prefix}/lib/sysctl.d/60-qemu-postcopy-migration.conf @@ -2212,9 +2236,9 @@ exit 0 %{_bindir}/virt-qemu-run %{_mandir}/man1/virt-qemu-run.1* %{_mandir}/man8/virtqemud.8* -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %files daemon-driver-lxc %config(noreplace) %{_sysconfdir}/libvirt/virtlxcd.conf %{_datadir}/augeas/lenses/virtlxcd.aug @@ -2236,9 +2260,9 @@ exit 0 %attr(0755, root, root) %{_libexecdir}/libvirt_lxc %{_libdir}/libvirt/connection-driver/libvirt_driver_lxc.so %{_mandir}/man8/virtlxcd.8* -%endif + %endif -%if %{with_libxl} + %if %{with_libxl} %files daemon-driver-libxl %config(noreplace) %{_sysconfdir}/libvirt/virtxend.conf %{_datadir}/augeas/lenses/virtxend.aug @@ -2264,9 +2288,9 @@ exit 0 %dir %attr(0700, root, root) %{_localstatedir}/lib/libvirt/libxl/save/ %{_libdir}/libvirt/connection-driver/libvirt_driver_libxl.so %{_mandir}/man8/virtxend.8* -%endif + %endif -%if %{with_vbox} + %if %{with_vbox} %files daemon-driver-vbox %config(noreplace) %{_sysconfdir}/libvirt/virtvboxd.conf %{_datadir}/augeas/lenses/virtvboxd.aug @@ -2278,36 +2302,36 @@ exit 0 %attr(0755, root, root) %{_sbindir}/virtvboxd %{_libdir}/libvirt/connection-driver/libvirt_driver_vbox.so %{_mandir}/man8/virtvboxd.8* -%endif + %endif -%if %{with_qemu_tcg} + %if %{with_qemu_tcg} %files daemon-qemu -%endif + %endif -%if %{with_qemu_kvm} + %if %{with_qemu_kvm} %files daemon-kvm -%endif + %endif -%if %{with_lxc} + %if %{with_lxc} %files daemon-lxc -%endif + %endif -%if %{with_libxl} + %if %{with_libxl} %files daemon-xen -%endif + %endif -%if %{with_vbox} + %if %{with_vbox} %files daemon-vbox -%endif + %endif -%if %{with_sanlock} + %if %{with_sanlock} %files daemon-plugin-sanlock - %if %{with_qemu} + %if %{with_qemu} %config(noreplace) %{_sysconfdir}/libvirt/qemu-sanlock.conf - %endif - %if %{with_libxl} + %endif + %if %{with_libxl} %config(noreplace) %{_sysconfdir}/libvirt/libxl-sanlock.conf - %endif + %endif %dir %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/ %attr(0755, root, root) %{_libdir}/libvirt/lock-driver/sanlock.so %{_datadir}/augeas/lenses/libvirt_sanlock.aug @@ -2316,7 +2340,7 @@ exit 0 %{_sbindir}/virt-sanlock-cleanup %{_mandir}/man8/virt-sanlock-cleanup.8* %attr(0755, root, root) %{_libexecdir}/libvirt_sanlock_helper -%endif + %endif %files client %{_mandir}/man1/virsh.1* @@ -2330,13 +2354,13 @@ exit 0 %{_bindir}/virt-pki-validate %{_datadir}/bash-completion/completions/virsh -%if %{with_qemu} + %if %{with_qemu} %files client-qemu %{_mandir}/man1/virt-qemu-qmp-proxy.1* %{_mandir}/man1/virt-qemu-sev-validate.1* %{_bindir}/virt-qemu-qmp-proxy %{_bindir}/virt-qemu-sev-validate -%endif + %endif %files libs -f %{name}.lang %license COPYING COPYING.LESSER @@ -2351,29 +2375,29 @@ exit 0 %dir %{_datadir}/libvirt/schemas/ %{_datadir}/systemtap/tapset/libvirt_probes*.stp %{_datadir}/systemtap/tapset/libvirt_functions.stp -%if %{with_qemu} + %if %{with_qemu} %{_datadir}/systemtap/tapset/libvirt_qemu_probes*.stp -%endif + %endif %{_datadir}/libvirt/schemas/*.rng %{_datadir}/libvirt/cpu_map/*.xml %{_datadir}/libvirt/test-screenshot.png -%if %{with_wireshark} + %if %{with_wireshark} %files wireshark %{wireshark_plugindir}/libvirt.so -%endif + %endif %files nss %{_libdir}/libnss_libvirt.so.2 %{_libdir}/libnss_libvirt_guest.so.2 -%if %{with_lxc} + %if %{with_lxc} %files login-shell %attr(4750, root, virtlogin) %{_bindir}/virt-login-shell %{_libexecdir}/virt-login-shell-helper %config(noreplace) %{_sysconfdir}/libvirt/virt-login-shell.conf %{_mandir}/man1/virt-login-shell.1* -%endif + %endif %files devel %{_libdir}/libvirt.so @@ -2408,6 +2432,7 @@ exit 0 %{_datadir}/libvirt/api/libvirt-admin-api.xml %{_datadir}/libvirt/api/libvirt-qemu-api.xml %{_datadir}/libvirt/api/libvirt-lxc-api.xml +%endif %if %{with_mingw32} %files -n mingw32-libvirt -f mingw32-libvirt.lang -- 2.41.0

The native version of gettext is now included in MinGW containers. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- ci/buildenv/fedora-38-cross-mingw32.sh | 1 + ci/buildenv/fedora-38-cross-mingw64.sh | 1 + ci/buildenv/fedora-rawhide-cross-mingw32.sh | 1 + ci/buildenv/fedora-rawhide-cross-mingw64.sh | 1 + ci/containers/fedora-38-cross-mingw32.Dockerfile | 1 + ci/containers/fedora-38-cross-mingw64.Dockerfile | 1 + ci/containers/fedora-rawhide-cross-mingw32.Dockerfile | 1 + ci/containers/fedora-rawhide-cross-mingw64.Dockerfile | 1 + 8 files changed, 8 insertions(+) diff --git a/ci/buildenv/fedora-38-cross-mingw32.sh b/ci/buildenv/fedora-38-cross-mingw32.sh index babfa6450a..f909705ed9 100644 --- a/ci/buildenv/fedora-38-cross-mingw32.sh +++ b/ci/buildenv/fedora-38-cross-mingw32.sh @@ -18,6 +18,7 @@ function install_buildenv() { dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ diff --git a/ci/buildenv/fedora-38-cross-mingw64.sh b/ci/buildenv/fedora-38-cross-mingw64.sh index 18ae4c3f3d..d5173a68c5 100644 --- a/ci/buildenv/fedora-38-cross-mingw64.sh +++ b/ci/buildenv/fedora-38-cross-mingw64.sh @@ -18,6 +18,7 @@ function install_buildenv() { dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ diff --git a/ci/buildenv/fedora-rawhide-cross-mingw32.sh b/ci/buildenv/fedora-rawhide-cross-mingw32.sh index 218159f17d..8d20d750e6 100644 --- a/ci/buildenv/fedora-rawhide-cross-mingw32.sh +++ b/ci/buildenv/fedora-rawhide-cross-mingw32.sh @@ -19,6 +19,7 @@ function install_buildenv() { dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ diff --git a/ci/buildenv/fedora-rawhide-cross-mingw64.sh b/ci/buildenv/fedora-rawhide-cross-mingw64.sh index 42a3df41f5..107f618409 100644 --- a/ci/buildenv/fedora-rawhide-cross-mingw64.sh +++ b/ci/buildenv/fedora-rawhide-cross-mingw64.sh @@ -19,6 +19,7 @@ function install_buildenv() { dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ diff --git a/ci/containers/fedora-38-cross-mingw32.Dockerfile b/ci/containers/fedora-38-cross-mingw32.Dockerfile index 7d3267b0f8..f7b659ac52 100644 --- a/ci/containers/fedora-38-cross-mingw32.Dockerfile +++ b/ci/containers/fedora-38-cross-mingw32.Dockerfile @@ -29,6 +29,7 @@ exec "$@"\n' > /usr/bin/nosync && \ dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ diff --git a/ci/containers/fedora-38-cross-mingw64.Dockerfile b/ci/containers/fedora-38-cross-mingw64.Dockerfile index 286b22c434..bd346b9d49 100644 --- a/ci/containers/fedora-38-cross-mingw64.Dockerfile +++ b/ci/containers/fedora-38-cross-mingw64.Dockerfile @@ -29,6 +29,7 @@ exec "$@"\n' > /usr/bin/nosync && \ dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ diff --git a/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile b/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile index 113e18159b..be730cf956 100644 --- a/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile +++ b/ci/containers/fedora-rawhide-cross-mingw32.Dockerfile @@ -30,6 +30,7 @@ exec "$@"\n' > /usr/bin/nosync && \ dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ diff --git a/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile b/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile index 19408fd177..ef5952dc30 100644 --- a/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile +++ b/ci/containers/fedora-rawhide-cross-mingw64.Dockerfile @@ -30,6 +30,7 @@ exec "$@"\n' > /usr/bin/nosync && \ dwarves \ ebtables \ firewalld-filesystem \ + gettext \ git \ glibc-langpack-en \ grep \ -- 2.41.0

Now that the spec file supports selectively disabling the native, mingw32 and mingw64 parts, we can add coverage for the MinGW RPM builds. Signed-off-by: Andrea Bolognani <abologna@redhat.com> --- .gitlab-ci.yml | 11 ++++++++--- ci/jobs.sh | 19 ++++++++++++++++++- 2 files changed, 26 insertions(+), 4 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 1cdabed941..42c43a556e 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -57,10 +57,15 @@ include: key: "$CI_JOB_NAME" script: - source ci/jobs.sh - - run_build - - if test "$CROSS" = "i686" ; + - if test -x /usr/bin/rpmbuild && test "$RPM" != "skip"; then - run_test; + run_rpmbuild; + else + run_build; + if test "$CROSS" = "i686"; + then + run_test; + fi; fi .cross_build_job_prebuilt_env: diff --git a/ci/jobs.sh b/ci/jobs.sh index ba522258a1..8f7748aab8 100644 --- a/ci/jobs.sh +++ b/ci/jobs.sh @@ -72,10 +72,27 @@ run_potfile() { run_rpmbuild() { run_dist + + case "$CROSS" in + mingw32) + without_feature1="_without_native 1" + without_feature2="_without_mingw64 1" + ;; + mingw64) + without_feature1="_without_native 1" + without_feature2="_without_mingw32 1" + ;; + *) + without_feature1="_without_mingw32 1" + without_feature2="_without_mingw64 1" + ;; + esac + run_cmd rpmbuild \ --clean \ --nodeps \ - --define "_without_mingw 1" \ + --define "$without_feature1" \ + --define "$without_feature2" \ -ta build/meson-dist/libvirt-*.tar.xz } -- 2.41.0

On Thu, Nov 02, 2023 at 11:37:22PM +0100, Andrea Bolognani wrote:
Test pipeline: https://gitlab.com/abologna/libvirt/-/pipelines/1059447352
The openSUSE Leap 15 job failed, but that's caused by an unrelated packaging issue:
$ pkg-config --cflags libtirpc -I/usr/include/tirpc $ rpm -ql libtirpc-devel | grep usr/include /usr/include/netconfig.h /usr/include/rpc /usr/include/rpc/auth.h /usr/include/rpc/auth_des.h ... /usr/include/rpc/types.h /usr/include/rpc/xdr.h /usr/include/rpcsvc /usr/include/rpcsvc/crypt.h /usr/include/rpcsvc/crypt.x
That appears to be due to their update to the new version that was pushed to repos this week. Their changelog says * pkg-config: use the correct replacements for libdir/includedir but clearly that's been screwed up. THeir previous pkg-config file had Cflags: -I/usr/include The new one has Cflags: -I${includedir}/tirpc From upstream POV libtirpc always installed into $include/tirpc, but suse explicitly undo that to put it in the root. In thier tumbleweed specfile they munged the .pc file to match, but i guess that got lost in 15.5 branch :-( https://build.opensuse.org/package/view_file/openSUSE:Factory/libtirpc/libti... If we want to avoid broken CI upstream after the contaniers get rebuilt this weekend, we'll need to set CFLAGS="-Wno-missing-include-dirs" in the suse job With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|

On Fri, Nov 03, 2023 at 10:14:55AM +0000, Daniel P. Berrangé wrote:
On Thu, Nov 02, 2023 at 11:37:22PM +0100, Andrea Bolognani wrote:
The openSUSE Leap 15 job failed, but that's caused by an unrelated packaging issue:
$ pkg-config --cflags libtirpc -I/usr/include/tirpc $ rpm -ql libtirpc-devel | grep usr/include /usr/include/netconfig.h /usr/include/rpc /usr/include/rpc/auth.h /usr/include/rpc/auth_des.h ... /usr/include/rpc/types.h /usr/include/rpc/xdr.h /usr/include/rpcsvc /usr/include/rpcsvc/crypt.h /usr/include/rpcsvc/crypt.x
That appears to be due to their update to the new version that was pushed to repos this week. Their changelog says
* pkg-config: use the correct replacements for libdir/includedir
but clearly that's been screwed up. THeir previous pkg-config file had
Cflags: -I/usr/include
The new one has
Cflags: -I${includedir}/tirpc
From upstream POV libtirpc always installed into $include/tirpc, but suse explicitly undo that to put it in the root.
In thier tumbleweed specfile they munged the .pc file to match, but i guess that got lost in 15.5 branch :-(
https://build.opensuse.org/package/view_file/openSUSE:Factory/libtirpc/libti...
If we want to avoid broken CI upstream after the contaniers get rebuilt this weekend, we'll need to set CFLAGS="-Wno-missing-include-dirs" in the suse job
We also need to make SUSE aware of the issue so they can fix it. Do you mind taking care of this? I'm trying to wrap something else up and I'd rather not get further sidetracked if I can help it :) -- Andrea Bolognani / Red Hat / Virtualization
participants (2)
-
Andrea Bolognani
-
Daniel P. Berrangé