From 6a2ffeeb53b4c1385d1dad954eb8658059526525 Mon Sep 17 00:00:00 2001 From: zenobit Date: Thu, 5 Oct 2023 16:23:17 +0200 Subject: [PATCH] libvirt: update to 9.8.0 --- .../improve-generic-mass-close-of-fds.patch | 109 ------------------ srcpkgs/libvirt/template | 4 +- 2 files changed, 2 insertions(+), 111 deletions(-) diff --git a/srcpkgs/libvirt/patches/improve-generic-mass-close-of-fds.patch b/srcpkgs/libvirt/patches/improve-generic-mass-close-of-fds.patch index 026b6fe51e646..e3932f77a526b 100644 --- a/srcpkgs/libvirt/patches/improve-generic-mass-close-of-fds.patch +++ b/srcpkgs/libvirt/patches/improve-generic-mass-close-of-fds.patch @@ -12,116 +12,7 @@ This solves a deadlock with musl libc. Signed-off-by: Natanael Copa --- - src/util/vircommand.c | 66 +++++++++++++++++++++++++++++++++++++------ - 1 file changed, 58 insertions(+), 8 deletions(-) -diff --git a/src/util/vircommand.c b/src/util/vircommand.c -index 8e372c3152..5319b9c9b3 100644 ---- a/src/util/vircommand.c -+++ b/src/util/vircommand.c -@@ -455,7 +455,7 @@ virExecCommon(virCommand *cmd, gid_t *groups, int ngroups) - return 0; - } - --# ifdef __linux__ -+# if defined(__linux__) && defined(__GLIBC__) - /* On Linux, we can utilize procfs and read the table of opened - * FDs and selectively close only those FDs we don't want to pass - * onto child process (well, the one we will exec soon since this -@@ -500,7 +500,7 @@ virCommandMassCloseGetFDsGeneric(virCommand *cmd G_GNUC_UNUSED, - virBitmapSetAll(fds); - return 0; - } --# endif /* !__linux__ */ -+# endif /* __linux__ && __GLIBC__ */ - - # ifdef __FreeBSD__ - -@@ -554,7 +554,7 @@ virCommandMassClose(virCommand *cmd, - return 0; - } - --# else /* ! __FreeBSD__ */ -+# elif defined(__GLIBC__) /* ! __FreeBSD__ */ - - static int - virCommandMassClose(virCommand *cmd, -@@ -581,13 +581,8 @@ virCommandMassClose(virCommand *cmd, - - fds = virBitmapNew(openmax); - --# ifdef __linux__ - if (virCommandMassCloseGetFDsLinux(cmd, fds) < 0) - return -1; --# else -- if (virCommandMassCloseGetFDsGeneric(cmd, fds) < 0) -- return -1; --# endif - - fd = virBitmapNextSetBit(fds, 2); - for (; fd >= 0; fd = virBitmapNextSetBit(fds, fd)) { -@@ -605,6 +600,61 @@ virCommandMassClose(virCommand *cmd, - return 0; - } - -+#else /* ! __FreeBSD__ && ! __GLIBC__ */ -+static int -+virCommandMassClose(virCommand* cmd, -+ int childin, -+ int childout, -+ int childerr) -+{ -+ static struct pollfd pfds[1024]; -+ int fd = 0; -+ int i, total; -+ int max_fd = sysconf(_SC_OPEN_MAX); -+ -+ if (max_fd < 0) { -+ virReportSystemError(errno, "%s", _("sysconf(_SC_OPEN_MAX) failed")); -+ return -1; -+ } -+ -+ total = max_fd - fd; -+ for (i = 0; i < (total < 1024 ? total : 1024); i++) -+ pfds[i].events = 0; -+ -+ while (fd < max_fd) { -+ int nfds, r = 0; -+ -+ total = max_fd - fd; -+ nfds = total < 1024 ? total : 1024; -+ -+ for (i = 0; i < nfds; i++) -+ pfds[i].fd = fd + i; -+ -+ do { -+ r = poll(pfds, nfds, 0); -+ } while (r == -1 && errno == EINTR); -+ -+ if (r < 0) { -+ virReportSystemError(errno, "%s", _("poll() failed")); -+ return -1; -+ } -+ -+ for (i = 0; i < nfds; i++) -+ if (pfds[i].revents != POLLNVAL) { -+ if (pfds[i].fd == childin || pfds[i].fd == childout || pfds[i].fd == childerr) -+ continue; -+ if (!virCommandFDIsSet(cmd, pfds[i].fd)) { -+ VIR_MASS_CLOSE(pfds[i].fd); -+ } else if (virSetInherit(pfds[i].fd, true) < 0) { -+ virReportSystemError(errno, _("failed to preserve fd %d"), pfds[i].fd); -+ return -1; -+ } -+ } -+ fd += nfds; -+ } -+ return 0; -+} -+ - # endif /* ! __FreeBSD__ */ - - /* -- 2.33.0 diff --git a/srcpkgs/libvirt/template b/srcpkgs/libvirt/template index 110947c2db322..dd517a14fb7a4 100644 --- a/srcpkgs/libvirt/template +++ b/srcpkgs/libvirt/template @@ -1,6 +1,6 @@ # Template file for 'libvirt' pkgname=libvirt -version=9.6.0 +version=9.8.0 revision=1 build_style=meson configure_args="-Dqemu_user=libvirt -Dqemu_group=libvirt -Drunstatedir=/run @@ -20,7 +20,7 @@ license="LGPL-2.1-or-later" homepage="https://libvirt.org" changelog="https://libvirt.org/news.html" distfiles="https://libvirt.org/sources/${pkgname}-${version}.tar.xz" -checksum=10f2e52dbb5df90410594a8e36d0e0587d38f11efb64ff32cbec422b93b70c52 +checksum=7aa90d133bb301e94663a45c36176f46f4a9fc1b34d77d2e22b7a2517106f506 # At least one test times out on CI but works locally make_check=ci-skip