sys-libs/liburing: Sync with Gentoo

It's from Gentoo commit 9a630bb7b4e424d09bfef7436e34e6513c4bcbe2.
This commit is contained in:
Flatcar Buildbot 2025-01-13 07:10:51 +00:00 committed by Krzesimir Nowak
parent 27e8857135
commit 5fcfbe4b69
7 changed files with 1 additions and 323 deletions

View File

@ -1,3 +1,2 @@
DIST liburing-2.2.tar.bz2 172733 BLAKE2B 19ae8a356e4fdc296bfb3ff121b777bd7c970388b31686aac5c531508e807360d58220bc27f9c62c55bd76ca687013acfceb3fa8a2162b615561f637cc50ffe1 SHA512 55b935a90c108be54393a5ab341b56e40ad8d506360fe15b3dcde5ee263356f11080f8614efdc4253f6318ea35d808ec47a9dbfc6b9f6cc2e04f7f1a75c3f621
DIST liburing-2.7.tar.bz2 252289 BLAKE2B dc04745d2eda04d7009a532fc77566804c34b77dcef512f17ef424e22bc1e1a31ba87c2a841bb5574b11c494641a3128005d6dfccf2b87d6c3888fe5cd887996 SHA512 ec6cf69cae2e7e448e9e338bcd616bf27522f6f0e4768bf80d246d6df8610df3accaddae1c135c31bca7814bc3b8214854c40b3f7137163c0950605c716793f1
DIST liburing-2.8.tar.bz2 284202 BLAKE2B de1deaa8927b5f80a38195ef857fdb0d3dc5f7f57358fe319af42ec3d980bf4c20284d7726645e9c32bcb3e5d7d981540a52a35abb26394cbef03f88ab7c4248 SHA512 5822108aa771a34a4c3f008a0155e4f1fa9393499f24a1bce00aed7fab6e3b9e022b44f96479af0036295129db75d5062618fb4c48cef836e3155c604491e94d

View File

@ -1,35 +0,0 @@
From 19424b0baa5999918701e1972b901b0937331581 Mon Sep 17 00:00:00 2001
From: Ammar Faizi <ammarfaizi2@gnuweeb.org>
Date: Sat, 14 Jan 2023 10:54:05 +0700
Subject: [PATCH] liburing.map: Export
`io_uring_{enable_rings,register_restrictions}`
When adding these two functions, Stefano didn't add
io_uring_enable_rings() and io_uring_register_restrictions() to
liburing.map. It causes a linking problem. Add them to liburing.map.
This issue hits liburing 2.0 to 2.3.
[flow: backport to liburing 2.3]
Closes: https://github.com/axboe/liburing/pull/774
Fixes: https://github.com/axboe/liburing/issues/773
Fixes: https://github.com/facebook/folly/issues/1908
Fixes: d2654b1ac886 ("Add helper to enable rings")
Fixes: 25cf9b968a27 ("Add helper to register restrictions")
Cc: Dylan Yudaken <dylany@meta.com>
Cc: Stefano Garzarella <sgarzare@redhat.com>
Signed-off-by: Ammar Faizi <ammarfaizi2@gnuweeb.org>
Link: https://lore.kernel.org/r/20230114035405.429608-1-ammar.faizi@intel.com
Signed-off-by: Jens Axboe <axboe@kernel.dk>
--- a/src/liburing.map
+++ b/src/liburing.map
@@ -68,2 +68,5 @@ LIBURING_2.3 {
io_uring_submit_and_get_events;
+
+ io_uring_enable_rings;
+ io_uring_register_restrictions;
} LIBURING_2.3;
--
2.39.1

View File

@ -1,150 +0,0 @@
From 11dc64a71558948aef16730cb363e7e5da773a5b Mon Sep 17 00:00:00 2001
From: Steffen <steffen.winter@proton.me>
Date: Mon, 13 Feb 2023 17:32:16 +0100
Subject: [PATCH 1/3] Add custom error function for tests.
On musl systems, liburing cannot build examples and tests due to
it's usage of error.h. t_error calls fprintf(stderr, ...) and
exits.
Closes: #786
Signed-off-by: Steffen Winter <steffen.winter@proton.me>
--- a/test/helpers.c
+++ b/test/helpers.c
@@ -8,6 +8,7 @@
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
+#include <stdarg.h>
#include <sys/types.h>
#include <arpa/inet.h>
@@ -300,3 +301,20 @@ unsigned __io_uring_flush_sq(struct io_uring *ring)
*/
return tail - *sq->khead;
}
+
+/*
+ * Implementation of error(3), prints an error message and exits.
+ */
+void t_error(int status, int errnum, const char *format, ...)
+{
+ va_list args;
+ va_start(args, format);
+
+ vfprintf(stderr, format, args);
+ if (errnum)
+ fprintf(stderr, ": %s", strerror(errnum));
+
+ fprintf(stderr, "\n");
+ va_end(args);
+ exit(status);
+}
--- a/test/helpers.h
+++ b/test/helpers.h
@@ -89,6 +89,8 @@ unsigned __io_uring_flush_sq(struct io_uring *ring);
#define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0]))
+void t_error(int status, int errnum, const char *format, ...);
+
#ifdef __cplusplus
}
#endif
From 3b0b4976d7da2e4616fe860fb7a8e52d88d4523b Mon Sep 17 00:00:00 2001
From: Steffen <steffen.winter@proton.me>
Date: Mon, 13 Feb 2023 17:56:03 +0100
Subject: [PATCH 2/3] test: Use t_error instead of glibc's error.
On musl systems, liburing cannot build examples and tests due to
it's usage of error.h. Replacing calls to error() with t_error().
Closes: #786
Signed-off-by: Steffen Winter <steffen.winter@proton.me>
--- a/test/defer-taskrun.c
+++ b/test/defer-taskrun.c
@@ -4,7 +4,6 @@
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
-#include <error.h>
#include <sys/eventfd.h>
#include <signal.h>
#include <poll.h>
--- a/test/send-zerocopy.c
+++ b/test/send-zerocopy.c
@@ -4,7 +4,6 @@
#include <stdint.h>
#include <assert.h>
#include <errno.h>
-#include <error.h>
#include <limits.h>
#include <fcntl.h>
#include <unistd.h>
--- a/test/single-issuer.c
+++ b/test/single-issuer.c
@@ -5,7 +5,6 @@
#include <stdlib.h>
#include <string.h>
#include <fcntl.h>
-#include <error.h>
#include <sys/types.h>
#include <sys/wait.h>
@@ -56,13 +55,13 @@ static int try_submit(struct io_uring *ring)
return ret;
if (ret != 1)
- error(1, ret, "submit %i", ret);
+ t_error(1, ret, "submit %i", ret);
ret = io_uring_wait_cqe(ring, &cqe);
if (ret)
- error(1, ret, "wait fail %i", ret);
+ t_error(1, ret, "wait fail %i", ret);
if (cqe->res || cqe->user_data != 42)
- error(1, ret, "invalid cqe");
+ t_error(1, ret, "invalid cqe");
io_uring_cqe_seen(ring, cqe);
return 0;
@@ -105,7 +104,7 @@ int main(int argc, char *argv[])
ret = io_uring_queue_init(8, &ring, IORING_SETUP_SINGLE_ISSUER |
IORING_SETUP_R_DISABLED);
if (ret)
- error(1, ret, "ring init (2) %i", ret);
+ t_error(1, ret, "ring init (2) %i", ret);
if (!fork_t()) {
io_uring_enable_rings(&ring);
@@ -121,7 +120,7 @@ int main(int argc, char *argv[])
ret = io_uring_queue_init(8, &ring, IORING_SETUP_SINGLE_ISSUER |
IORING_SETUP_R_DISABLED);
if (ret)
- error(1, ret, "ring init (3) %i", ret);
+ t_error(1, ret, "ring init (3) %i", ret);
io_uring_enable_rings(&ring);
if (!fork_t()) {
@@ -136,7 +135,7 @@ int main(int argc, char *argv[])
/* test that anyone can submit to a SQPOLL|SINGLE_ISSUER ring */
ret = io_uring_queue_init(8, &ring, IORING_SETUP_SINGLE_ISSUER|IORING_SETUP_SQPOLL);
if (ret)
- error(1, ret, "ring init (4) %i", ret);
+ t_error(1, ret, "ring init (4) %i", ret);
ret = try_submit(&ring);
if (ret) {
@@ -156,7 +155,7 @@ int main(int argc, char *argv[])
/* test that IORING_ENTER_REGISTERED_RING doesn't break anything */
ret = io_uring_queue_init(8, &ring, IORING_SETUP_SINGLE_ISSUER);
if (ret)
- error(1, ret, "ring init (5) %i", ret);
+ t_error(1, ret, "ring init (5) %i", ret);
if (!fork_t()) {
ret = try_submit(&ring);

View File

@ -1,26 +0,0 @@
https://bugs.gentoo.org/919780
https://github.com/axboe/liburing/commit/92b21aa1b4ea98e322c5eca9db1d94b837f4be75
(Rebased.)
From 92b21aa1b4ea98e322c5eca9db1d94b837f4be75 Mon Sep 17 00:00:00 2001
From: Jens Axboe <axboe@kernel.dk>
Date: Mon, 11 Dec 2023 13:14:54 -0700
Subject: [PATCH] Rename ffi io_uring_prep_sock_cmd _> io_uring_prep_cmd_sock()
The non-ffi versions already use this name, and to make this as painless
as it can be, rename the ffi version even though it is technically
the better one. The documentation also matches prep_cmd_sock().
Link: https://github.com/axboe/liburing/issues/1013
Fixes: 2459fef09411 ("io_uring_prep_cmd: Create a new helper for command ops")
Signed-off-by: Jens Axboe <axboe@kernel.dk>
--- a/src/liburing-ffi.map
+++ b/src/liburing-ffi.map
@@ -179,5 +179,5 @@ LIBURING_2.4 {
LIBURING_2.5 {
global:
io_uring_queue_init_mem;
- io_uring_prep_sock_cmd;
+ io_uring_prep_cmd_sock;
} LIBURING_2.4;

View File

@ -1,43 +0,0 @@
From https://github.com/axboe/liburing/commit/09b8ded9686f33f1044ad8c612f2281b865cd314 Mon Sep 17 00:00:00 2001
From: Violet Purcell <vimproved@inventati.org>
Date: Sat, 16 Dec 2023 16:17:09 -0500
Subject: [PATCH] Link against libgcc based on output of
-print-libgcc-file-name
GCC and clang have the -print-libgcc-file-name option to automatically
print out the correct compiler runtime library to link to. This can be
helpful in case the runtime library is named something other than libgcc
(i.e. on a system where only LLVM's compiler-rt is used), or if libgcc
is in a non-standard directory. If the option fails for whatever reason,
fall back to using "-lgcc".
Signed-off-by: Violet Purcell <vimproved@inventati.org>
--- a/configure
+++ b/configure
@@ -202,6 +202,15 @@ print_and_output_mak "relativelibdir" "$relativelibdir"
print_and_output_mak "mandir" "$mandir"
print_and_output_mak "datadir" "$datadir"
+####################################################
+# Check for correct compiler runtime library to link with
+libgcc_link_flag="-lgcc"
+if $cc -print-libgcc-file-name >/dev/null 2>&1; then
+ libgcc_link_flag="$($cc $CFLAGS $LDFLAGS -print-libgcc-file-name)"
+fi
+print_and_output_mak "libgcc_link_flag" "$libgcc_link_flag"
+####################################################
+
##########################################
# check for compiler -Wstringop-overflow
stringop_overflow="no"
--- a/src/Makefile
+++ b/src/Makefile
@@ -47,7 +47,7 @@ ifeq ($(CONFIG_NOLIBC),y)
liburing_srcs += nolibc.c
override CFLAGS += -nostdlib -nodefaultlibs -ffreestanding -fno-builtin -fno-stack-protector
override CPPFLAGS += -nostdlib -nodefaultlibs -ffreestanding -fno-builtin -fno-stack-protector
- override LINK_FLAGS += -nostdlib -nodefaultlibs -lgcc
+ override LINK_FLAGS += -nostdlib -nodefaultlibs $(libgcc_link_flag)
endif
override CPPFLAGS += -MT "$@" -MMD -MP -MF "$@.d"

View File

@ -1,67 +0,0 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit multilib-minimal toolchain-funcs
DESCRIPTION="Efficient I/O with io_uring"
HOMEPAGE="https://github.com/axboe/liburing"
if [[ "${PV}" == *9999 ]] ; then
inherit git-r3
EGIT_REPO_URI="https://github.com/axboe/liburing.git"
else
SRC_URI="https://git.kernel.dk/cgit/${PN}/snapshot/${P}.tar.bz2"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ppc ppc64 ~riscv sparc x86"
fi
LICENSE="MIT"
SLOT="0/2" # liburing.so major version
IUSE="static-libs"
# fsync test hangs forever
RESTRICT="test"
# At least installed headers need <linux/*>, bug #802516
DEPEND=">=sys-kernel/linux-headers-5.1"
RDEPEND="${DEPEND}"
src_prepare() {
default
if [[ "${PV}" != *9999 ]] ; then
# Make sure pkgconfig files contain the correct version
# bug #809095 and #833895
sed -i "/^Version:/s@[[:digit:]\.]\+@${PV}@" ${PN}.spec || die
fi
multilib_copy_sources
}
multilib_src_configure() {
local myconf=(
--prefix="${EPREFIX}/usr"
--libdir="${EPREFIX}/usr/$(get_libdir)"
--libdevdir="${EPREFIX}/usr/$(get_libdir)"
--mandir="${EPREFIX}/usr/share/man"
--cc="$(tc-getCC)"
--cxx="$(tc-getCXX)"
)
# No autotools configure! "econf" will fail.
TMPDIR="${T}" ./configure "${myconf[@]}" || die
}
multilib_src_compile() {
emake V=1 AR="$(tc-getAR)" RANLIB="$(tc-getRANLIB)"
}
multilib_src_install_all() {
einstalldocs
if ! use static-libs ; then
find "${ED}" -type f -name "*.a" -delete || die
fi
}
multilib_src_test() {
emake V=1 runtests
}

View File

@ -12,7 +12,7 @@ if [[ "${PV}" == *9999 ]] ; then
EGIT_REPO_URI="https://github.com/axboe/liburing.git"
else
SRC_URI="https://git.kernel.dk/cgit/${PN}/snapshot/${P}.tar.bz2"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 sparc x86"
KEYWORDS="~alpha amd64 arm arm64 ~hppa ~loong ~mips ppc ppc64 ~riscv ~s390 sparc x86"
QA_PKGCONFIG_VERSION=${PV}
fi
LICENSE="MIT"