[RFC PATCH v1 0/6] swtpm: Add support for profiles
by Stefan Berger
Upcoming libtpms v0.10 and swtpm v0.10 will have TPM profile support that
allows to restrict a TPM's provided set of crypto algorithms and commands
and through which backwards compatibility and migration from newer versions
of libtpms to older ones (up to libtpms v0.9) is supported. For the latter
to work it is necessary that the user chooses the right profile.
This series adds support for passing a profile choice to swtpm_setup by
setting it in the domain XML using the <profile/> XML node. An optional
attribute 'remove_disabled' can be set in this node and accepts two values:
"check": test a few crypto algorithms (tdes, camellia, unpadded encryption,
and others) for whether they are currently disabled due to FIPS
mode on the host and remove these algorithms in the 'custom'
profile if they are disabled;
"fips-host": do not test but remove all potentially disabled crypto
algorithms
Also extend the documentation but point the user to swtpm and libtpms
documentation for further details.
Stefan
Stefan Berger (6):
util: Add parsing support for swtpm_setup's cmdarg-profile capability
conf: Define enum virDomainTPMProfileRemoveDisabled
schema: Extend schema for TPM emulator profile node
conf: Add support for profile parameter on TPM emulator in domain XML
docs: Add documentation for the TPM backend profile node
qemu: Run swtpm_setup with --profile option if profile given
docs/formatdomain.rst | 20 ++++++++++++++++
src/conf/domain_conf.c | 39 +++++++++++++++++++++++++++++++
src/conf/domain_conf.h | 11 +++++++++
src/conf/domain_validate.c | 7 ++++++
src/conf/schemas/basictypes.rng | 6 +++++
src/conf/schemas/domaincommon.rng | 17 ++++++++++++++
src/qemu/qemu_tpm.c | 26 +++++++++++++++++++--
src/util/virtpm.c | 1 +
src/util/virtpm.h | 1 +
tests/testutilsqemu.c | 1 +
10 files changed, 127 insertions(+), 2 deletions(-)
--
2.46.0
2 months, 4 weeks
[PATCH] rpc: ssh: Allow SSH_ASKPASS_REQUIRE
by Cole Robinson
openssh 8.4p1 released in Sep 2020 added a feature to force use
of SSH_ASKPASS
https://man.openbsd.org/ssh.1#SSH_ASKPASS_REQUIRE
Don't strip it from the environment
Signed-off-by: Cole Robinson <crobinso(a)redhat.com>
---
src/rpc/virnetsocket.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/rpc/virnetsocket.c b/src/rpc/virnetsocket.c
index 79bf8e511a..e8fc2d5f7d 100644
--- a/src/rpc/virnetsocket.c
+++ b/src/rpc/virnetsocket.c
@@ -850,6 +850,7 @@ int virNetSocketNewConnectSSH(const char *nodename,
virCommandAddEnvPass(cmd, "KRB5CCNAME");
virCommandAddEnvPass(cmd, "SSH_AUTH_SOCK");
virCommandAddEnvPass(cmd, "SSH_ASKPASS");
+ virCommandAddEnvPass(cmd, "SSH_ASKPASS_REQUIRE");
virCommandAddEnvPass(cmd, "OPENSSL_CONF");
virCommandAddEnvPass(cmd, "DISPLAY");
virCommandAddEnvPass(cmd, "XAUTHORITY");
--
2.46.0
2 months, 4 weeks
[libvirt PATCH] ci: refresh generated files
by Ján Tomko
Signed-off-by: Ján Tomko <jtomko(a)redhat.com>
---
ci/buildenv/fedora-rawhide.sh | 2 +-
ci/buildenv/opensuse-tumbleweed.sh | 2 +-
ci/containers/fedora-rawhide.Dockerfile | 2 +-
ci/containers/opensuse-tumbleweed.Dockerfile | 2 +-
4 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/ci/buildenv/fedora-rawhide.sh b/ci/buildenv/fedora-rawhide.sh
index f89a87ad63..17ed6fe7a4 100644
--- a/ci/buildenv/fedora-rawhide.sh
+++ b/ci/buildenv/fedora-rawhide.sh
@@ -81,7 +81,7 @@ function install_buildenv() {
sed \
systemd-devel \
systemd-rpm-macros \
- systemtap-sdt-devel \
+ systemtap-sdt-dtrace \
wireshark-devel \
xen-devel \
yajl-devel
diff --git a/ci/buildenv/opensuse-tumbleweed.sh b/ci/buildenv/opensuse-tumbleweed.sh
index ac566d349f..59a786efac 100644
--- a/ci/buildenv/opensuse-tumbleweed.sh
+++ b/ci/buildenv/opensuse-tumbleweed.sh
@@ -81,7 +81,7 @@ function install_buildenv() {
sanlock-devel \
sed \
systemd-rpm-macros \
- systemtap-sdt-devel \
+ systemtap-dtrace \
wireshark-devel \
xen-devel
rm -f /usr/lib*/python3*/EXTERNALLY-MANAGED
diff --git a/ci/containers/fedora-rawhide.Dockerfile b/ci/containers/fedora-rawhide.Dockerfile
index 6f06843985..90f2372663 100644
--- a/ci/containers/fedora-rawhide.Dockerfile
+++ b/ci/containers/fedora-rawhide.Dockerfile
@@ -92,7 +92,7 @@ exec "$@"\n' > /usr/bin/nosync && \
sed \
systemd-devel \
systemd-rpm-macros \
- systemtap-sdt-devel \
+ systemtap-sdt-dtrace \
wireshark-devel \
xen-devel \
yajl-devel && \
diff --git a/ci/containers/opensuse-tumbleweed.Dockerfile b/ci/containers/opensuse-tumbleweed.Dockerfile
index 2b7cdb4af5..5d0bd77113 100644
--- a/ci/containers/opensuse-tumbleweed.Dockerfile
+++ b/ci/containers/opensuse-tumbleweed.Dockerfile
@@ -82,7 +82,7 @@ RUN zypper dist-upgrade -y && \
sanlock-devel \
sed \
systemd-rpm-macros \
- systemtap-sdt-devel \
+ systemtap-dtrace \
wireshark-devel \
xen-devel && \
zypper clean --all && \
--
2.46.1
2 months, 4 weeks
[PATCH 0/2] meson: Sort summary() values alphabetically
by Michal Privoznik
*** BLURB HERE ***
Michal Prívozník (2):
meson: Restore alphabetical order of reported libraries
meson: Sort values reported in summary()
meson.build | 58 ++++++++++++++++++++++++++---------------------------
1 file changed, 29 insertions(+), 29 deletions(-)
--
2.45.2
2 months, 4 weeks
[PATCH v2 0/8] qemu: Remember memory backing paths for started domains
by Martin Kletzander
Every time we work with file-backed memory we construct the paths from the
driver config. Not only does is that slow, it is also wrong. If the
configuration changes while a domain with file-backed memory is running, once
the daemon is restarted and the domain is being stopped, we construct the wrong
path to clean up. And it also makes it more difficult to change that in the
future, for example the patch series which led me to write this patch series:
https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/message/I...
The patches are maybe split way too much, so feel free to suggest squashing some
together, I'm not opposed to that.
v2:
- Do not introduce unused functions
v1:
- https://lists.libvirt.org/archives/list/devel@lists.libvirt.org/thread/H5...
Martin Kletzander (8):
qemu: Move domain-related functions to qemu_domain
qemu: Change parameters of qemuGetMemoryBackingDomainPath()
qemu: Add memoryBackingDir to qemuDomainObjPrivate
qemu: Set memoryBackingDir in private data upon start
qemu: Use per-domain private memoryBackingDir for new memory backends
qemu: Make qemuGetMemoryBackingDomainPath static
qemu: Rename memory path functions
qemu: Generate domain memory backing path directly
src/qemu/qemu_command.c | 5 +-
src/qemu/qemu_conf.c | 58 ---------------
src/qemu/qemu_conf.h | 8 --
src/qemu/qemu_domain.c | 73 ++++++++++++++++++-
src/qemu/qemu_domain.h | 7 ++
src/qemu/qemu_hotplug.c | 4 +-
src/qemu/qemu_process.c | 13 ++--
src/qemu/qemu_process.h | 3 +-
.../qemustatusxml2xmldata/backup-pull-in.xml | 1 +
.../blockjob-blockdev-in.xml | 1 +
.../blockjob-mirror-in.xml | 1 +
.../memory-backing-dir-in.xml | 61 ++++++++++++++++
.../memory-backing-dir-out.xml | 1 +
.../migration-in-params-in.xml | 1 +
.../migration-out-nbd-bitmaps-in.xml | 1 +
.../migration-out-nbd-out.xml | 1 +
.../migration-out-nbd-tls-out.xml | 1 +
.../migration-out-params-in.xml | 1 +
tests/qemustatusxml2xmldata/modern-in.xml | 1 +
tests/qemustatusxml2xmldata/upgrade-out.xml | 1 +
.../qemustatusxml2xmldata/vcpus-multi-in.xml | 1 +
tests/qemuxmlactivetest.c | 2 +
22 files changed, 163 insertions(+), 83 deletions(-)
create mode 100644 tests/qemustatusxml2xmldata/memory-backing-dir-in.xml
create mode 120000 tests/qemustatusxml2xmldata/memory-backing-dir-out.xml
--
2.46.1
2 months, 4 weeks
Re: [PATCH] Сheck snapshot disk is not NULL when searching it in the VM config
by Peter Krempa
On Mon, May 20, 2024 at 14:48:47 +0000, Efim Shevrin via Devel wrote:
> Hello,
>
> > If vmdisk is NULL, shouldn't this function (qemuSnapshotDeleteValidate()) return an error?
>
> I think this qemuSnapshotDeleteValidate should not return an error.
>
> It seems to me that when vmdisk is NULL, this does not invalidate
> the snapshot itself, but indicates that the config has changed since
> the snapshot was done. And if the VM config has changed, this adds evidence that the snapshot should be deleted,
> because the snapshot does not reflect the real vm config.
>
> Since we do not have an analogue of the --force option for deleting a snapshot, in the case when qemuSnapshotDeleteValidate returns
> an error when vmdisk is NULL, we will never delete a snapshot which has invalid disk.
Snapshot deletion does have something that can be considered force and
that is the '--metadata' option that removes just the snapshot
definition (metadata) and doesn't touch the disk images.
> > Similarly, disk can be NULL too
> Thank you for the comment regarding the disk variable. I`ve reworked patch.
>
> When creating a snapshot of a VM with multiple hard disks,
> the snapshot takes into account the presence of all disks
> in the system. If, over time, one of the disks is deleted,
> the snapshot will continue to store knowledge of the deleted disk.
> This results in the fact that at the moment of deleting the snapshot,
> at the validation stage, a disk from the snapshot will be searched which
> is not in the VM configuration. As a result, vmdisk variable will
> be equal to NULL. Dereferencing a null pointer at the time of calling
> virStorageSourceIsSameLocation(vmdisk->src, disk->src)
> will result in SIGSEGV.
Crashing is obviously not okay ...
> Also, the disk variable can also be equal to NULL and this
> requires to check that disk != NULL before calling the
> virStorageSourceIsSameLocation function to avoid SIGSEGV.
.. but going ahead with the snapshot deletion isn't always okay either.
The disk isn't referenced by the VM so the disk state can't be merged,
while the state would be merged for any other disk.
When reverting back to a previous snapshot, which is still referencing
the older state of the disk which was removed from the VM, the VM would
see that the image state of disks that were present at deletion would
contain the merged state, but only a partial state for the disk which
was later removed.
3 months
[PATCH 0/4] small improvements to virSocketAddr, and a trivial debug log change
by Laine Stump
I noticed the virSocjetAddr() stuff when I was writing code that was
going to use virSocketAddrMask(). I think I ended up not using that
function after all, but the fixes are still worthwhile.
Laine Stump (4):
network: fix argument order/log level in message about
firewall_backend
util: fix virSocketAddrMask() when source and result are the same
object
util: make virSocketAddrIPv4 a union
util: use uint32 instead of char[4] for several virSocketAddrIPv4
operations
src/network/bridge_driver_conf.c | 4 +-
src/util/virsocketaddr.c | 84 +++++++++++++++-----------------
2 files changed, 42 insertions(+), 46 deletions(-)
--
2.46.0
3 months
[libvirt PATCHv2 00/15] Switch to json-c from yajl
by Ján Tomko
Ján Tomko (15):
util: json: introduce virJSONStringPrettifyBlanks
tests: switch to compact empty JSON object formatting
build: introduce WITH_JSON
ci: install json-c too
meson: add option for building with json-c
meson: switch checks to depend on json-c as well as yajl
build: do not depend on yajl
build: link with json_c
util: json: write a json-c implementation
nss: convert findLeases to use json-c
nss: convert findMACs to use json-c
meson: do not link anything with yajl anymore
meson: options: drop yajl
meson: drop yajl detection
ci: drop yajl completely
ci/buildenv/almalinux-9.sh | 4 +-
ci/buildenv/alpine-319.sh | 4 +-
ci/buildenv/alpine-edge.sh | 4 +-
ci/buildenv/centos-stream-9.sh | 4 +-
ci/buildenv/debian-11-cross-aarch64.sh | 2 +-
ci/buildenv/debian-11-cross-armv6l.sh | 2 +-
ci/buildenv/debian-11-cross-armv7l.sh | 2 +-
ci/buildenv/debian-11-cross-i686.sh | 2 +-
ci/buildenv/debian-11-cross-mips64el.sh | 2 +-
ci/buildenv/debian-11-cross-mipsel.sh | 2 +-
ci/buildenv/debian-11-cross-ppc64le.sh | 2 +-
ci/buildenv/debian-11-cross-s390x.sh | 2 +-
ci/buildenv/debian-11.sh | 2 +-
ci/buildenv/debian-12-cross-aarch64.sh | 2 +-
ci/buildenv/debian-12-cross-armv6l.sh | 2 +-
ci/buildenv/debian-12-cross-armv7l.sh | 2 +-
ci/buildenv/debian-12-cross-i686.sh | 2 +-
ci/buildenv/debian-12-cross-mips64el.sh | 2 +-
ci/buildenv/debian-12-cross-mipsel.sh | 2 +-
ci/buildenv/debian-12-cross-ppc64le.sh | 2 +-
ci/buildenv/debian-12-cross-s390x.sh | 2 +-
ci/buildenv/debian-12.sh | 2 +-
ci/buildenv/debian-sid-cross-aarch64.sh | 2 +-
ci/buildenv/debian-sid-cross-armv6l.sh | 2 +-
ci/buildenv/debian-sid-cross-armv7l.sh | 2 +-
ci/buildenv/debian-sid-cross-i686.sh | 2 +-
ci/buildenv/debian-sid-cross-mips64el.sh | 2 +-
ci/buildenv/debian-sid-cross-ppc64le.sh | 2 +-
ci/buildenv/debian-sid-cross-s390x.sh | 2 +-
ci/buildenv/debian-sid.sh | 2 +-
ci/buildenv/fedora-39.sh | 4 +-
ci/buildenv/fedora-40.sh | 4 +-
ci/buildenv/fedora-rawhide.sh | 4 +-
ci/buildenv/opensuse-leap-15.sh | 2 +-
ci/buildenv/opensuse-tumbleweed.sh | 2 +-
ci/buildenv/ubuntu-2204.sh | 2 +-
ci/buildenv/ubuntu-2404.sh | 2 +-
ci/cirrus/freebsd-13.vars | 2 +-
ci/cirrus/freebsd-14.vars | 2 +-
ci/cirrus/macos-13.vars | 2 +-
ci/cirrus/macos-14.vars | 2 +-
ci/containers/almalinux-9.Dockerfile | 4 +-
ci/containers/alpine-319.Dockerfile | 4 +-
ci/containers/alpine-edge.Dockerfile | 4 +-
ci/containers/centos-stream-9.Dockerfile | 4 +-
.../debian-11-cross-aarch64.Dockerfile | 2 +-
.../debian-11-cross-armv6l.Dockerfile | 2 +-
.../debian-11-cross-armv7l.Dockerfile | 2 +-
ci/containers/debian-11-cross-i686.Dockerfile | 2 +-
.../debian-11-cross-mips64el.Dockerfile | 2 +-
.../debian-11-cross-mipsel.Dockerfile | 2 +-
.../debian-11-cross-ppc64le.Dockerfile | 2 +-
.../debian-11-cross-s390x.Dockerfile | 2 +-
ci/containers/debian-11.Dockerfile | 2 +-
.../debian-12-cross-aarch64.Dockerfile | 2 +-
.../debian-12-cross-armv6l.Dockerfile | 2 +-
.../debian-12-cross-armv7l.Dockerfile | 2 +-
ci/containers/debian-12-cross-i686.Dockerfile | 2 +-
.../debian-12-cross-mips64el.Dockerfile | 2 +-
.../debian-12-cross-mipsel.Dockerfile | 2 +-
.../debian-12-cross-ppc64le.Dockerfile | 2 +-
.../debian-12-cross-s390x.Dockerfile | 2 +-
ci/containers/debian-12.Dockerfile | 2 +-
.../debian-sid-cross-aarch64.Dockerfile | 2 +-
.../debian-sid-cross-armv6l.Dockerfile | 2 +-
.../debian-sid-cross-armv7l.Dockerfile | 2 +-
.../debian-sid-cross-i686.Dockerfile | 2 +-
.../debian-sid-cross-mips64el.Dockerfile | 2 +-
.../debian-sid-cross-ppc64le.Dockerfile | 2 +-
.../debian-sid-cross-s390x.Dockerfile | 2 +-
ci/containers/debian-sid.Dockerfile | 2 +-
ci/containers/fedora-39.Dockerfile | 4 +-
ci/containers/fedora-40.Dockerfile | 4 +-
ci/containers/fedora-rawhide.Dockerfile | 4 +-
ci/containers/opensuse-leap-15.Dockerfile | 2 +-
ci/containers/opensuse-tumbleweed.Dockerfile | 2 +-
ci/containers/ubuntu-2204.Dockerfile | 2 +-
ci/containers/ubuntu-2404.Dockerfile | 2 +-
ci/lcitool/projects/libvirt.yml | 2 +-
libvirt.spec.in | 6 +-
meson.build | 62 +--
meson_options.txt | 8 +-
src/libvirt_private.syms | 1 +
src/meson.build | 2 +-
src/util/meson.build | 2 +-
src/util/virjson.c | 485 +++++-------------
src/util/virjson.h | 2 +
tests/meson.build | 8 +-
tests/qemublocktest.c | 5 +-
.../backupmerge/empty-out.json | 4 +-
tests/qemumigparamsdata/empty.json | 4 +-
tests/qemumigparamstest.c | 5 +-
tests/virmacmaptest.c | 5 +-
tests/virmacmaptestdata/empty.json | 4 +-
tests/virnetdaemontest.c | 2 +-
tests/virstoragetest.c | 4 +-
tools/nss/libvirt_nss_leases.c | 370 +++++--------
tools/nss/libvirt_nss_macs.c | 278 +++-------
tools/nss/meson.build | 4 +-
99 files changed, 475 insertions(+), 972 deletions(-)
--
2.46.0
3 months
[PATCH] ci: Switch from macOS 13 to macOS 15
by Michal Privoznik
libvirt-ci added macOS 15 so let's introduce it and while at it
drop macOS 13.
Signed-off-by: Michal Privoznik <mprivozn(a)redhat.com>
---
ci/cirrus/{macos-13.vars => macos-15.vars} | 0
ci/gitlab/builds.yml | 32 +++++++++++-----------
ci/manifest.yml | 14 +++++-----
3 files changed, 23 insertions(+), 23 deletions(-)
rename ci/cirrus/{macos-13.vars => macos-15.vars} (100%)
diff --git a/ci/cirrus/macos-13.vars b/ci/cirrus/macos-15.vars
similarity index 100%
rename from ci/cirrus/macos-13.vars
rename to ci/cirrus/macos-15.vars
diff --git a/ci/gitlab/builds.yml b/ci/gitlab/builds.yml
index 214119b902..6f78ba2e89 100644
--- a/ci/gitlab/builds.yml
+++ b/ci/gitlab/builds.yml
@@ -624,22 +624,6 @@ x86_64-freebsd-14:
UPGRADE_COMMAND: pkg upgrade -y
-aarch64-macos-13:
- extends: .cirrus_build_job
- needs: []
- allow_failure: false
- variables:
- CIRRUS_VM_IMAGE_NAME: ghcr.io/cirruslabs/macos-ventura-base:latest
- CIRRUS_VM_IMAGE_SELECTOR: image
- CIRRUS_VM_INSTANCE_TYPE: macos_instance
- INSTALL_COMMAND: brew install
- NAME: macos-13
- PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin
- PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
- UPDATE_COMMAND: brew update
- UPGRADE_COMMAND: brew upgrade
-
-
aarch64-macos-14:
extends: .cirrus_build_job
needs: []
@@ -654,3 +638,19 @@ aarch64-macos-14:
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
UPDATE_COMMAND: brew update
UPGRADE_COMMAND: brew upgrade
+
+
+aarch64-macos-15:
+ extends: .cirrus_build_job
+ needs: []
+ allow_failure: false
+ variables:
+ CIRRUS_VM_IMAGE_NAME: ghcr.io/cirruslabs/macos-sonoma-base:latest
+ CIRRUS_VM_IMAGE_SELECTOR: image
+ CIRRUS_VM_INSTANCE_TYPE: macos_instance
+ INSTALL_COMMAND: brew install
+ NAME: macos-15
+ PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin
+ PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
+ UPDATE_COMMAND: brew update
+ UPGRADE_COMMAND: brew upgrade
diff --git a/ci/manifest.yml b/ci/manifest.yml
index 647510ed2f..3c2366380c 100644
--- a/ci/manifest.yml
+++ b/ci/manifest.yml
@@ -203,13 +203,6 @@ targets:
variables:
RPM: skip
- macos-13:
- jobs:
- - arch: aarch64
- variables:
- PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin
- PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
-
macos-14:
jobs:
- arch: aarch64
@@ -217,6 +210,13 @@ targets:
PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin
PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
+ macos-15:
+ jobs:
+ - arch: aarch64
+ variables:
+ PATH_EXTRA: /usr/local/opt/ccache/libexec:/usr/local/opt/gettext/bin:/usr/local/opt/libpcap/bin:/usr/local/opt/libxslt/bin
+ PKG_CONFIG_PATH: /usr/local/opt/curl/lib/pkgconfig:/usr/local/opt/libpcap/lib/pkgconfig:/usr/local/opt/libxml2/lib/pkgconfig:/usr/local/opt/ncurses/lib/pkgconfig:/usr/local/opt/readline/lib/pkgconfig
+
ubuntu-2204:
jobs:
- arch: x86_64
--
2.44.2
3 months