diff options
author | V3n3RiX <venerix@koprulu.sector> | 2023-02-14 13:57:43 +0000 |
---|---|---|
committer | V3n3RiX <venerix@koprulu.sector> | 2023-02-14 13:57:43 +0000 |
commit | f3b59a4d34d28f51cc97e3cd2eb23686d61c2002 (patch) | |
tree | cc91311e9274ea5846d59d65bcf4a6b0e7139a12 /sys-libs/liburing/files | |
parent | 2e4747a36a51fd58c21f3f00db959709e83fe08b (diff) |
gentoo auto-resync : 14:02:2023 - 13:57:43
Diffstat (limited to 'sys-libs/liburing/files')
-rw-r--r-- | sys-libs/liburing/files/liburing-2.3-remove-error-from-error_h-for-portability.patch | 150 |
1 files changed, 150 insertions, 0 deletions
diff --git a/sys-libs/liburing/files/liburing-2.3-remove-error-from-error_h-for-portability.patch b/sys-libs/liburing/files/liburing-2.3-remove-error-from-error_h-for-portability.patch new file mode 100644 index 000000000000..0f2933a10bb4 --- /dev/null +++ b/sys-libs/liburing/files/liburing-2.3-remove-error-from-error_h-for-portability.patch @@ -0,0 +1,150 @@ +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); + |