commit:     a76defdd03f53949133c2a18dec2ec2b8aa07ef6
Author:     Jory Pratt <anarchy <AT> gentoo <DOT> org>
AuthorDate: Fri Mar 12 15:06:33 2021 +0000
Commit:     Jory Pratt <anarchy <AT> gentoo <DOT> org>
CommitDate: Fri Mar 12 15:06:47 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=a76defdd

sys-libs/liburing: add support to detect ucontext.h

Closes: https://bugs.gentoo.org/713528
Closes: https://github.com/gentoo/musl/issues/379
Package-Manager: Portage-3.0.17, Repoman-3.0.2
Signed-off-by: Jory Pratt <anarchy <AT> gentoo.org>

 .../files/liburing-0.7-ucontext_h-detection.patch  | 72 ++++++++++++++++++++++
 sys-libs/liburing/liburing-0.7-r1.ebuild           |  6 +-
 2 files changed, 77 insertions(+), 1 deletion(-)

diff --git a/sys-libs/liburing/files/liburing-0.7-ucontext_h-detection.patch 
b/sys-libs/liburing/files/liburing-0.7-ucontext_h-detection.patch
new file mode 100644
index 00000000000..24b847d919d
--- /dev/null
+++ b/sys-libs/liburing/files/liburing-0.7-ucontext_h-detection.patch
@@ -0,0 +1,72 @@
+From 1cf969dfcba797a02d74540965677b92d3884cfa Mon Sep 17 00:00:00 2001
+From: Simon Zeni <[email protected]>
+Date: Tue, 27 Oct 2020 22:31:21 -0400
+Subject: [PATCH] examples: disable ucontext-cp if ucontext.h is not available
+
+The header file `ucontext.h` is not available on musl based distros. The
+example `ucontext-cp` is not built if `configure` fails to locate the
+header.
+
+Signed-off-by: Simon Zeni <[email protected]>
+Signed-off-by: Jens Axboe <[email protected]>
+---
+ configure         | 21 +++++++++++++++++++++
+ examples/Makefile |  6 +++++-
+ 2 files changed, 26 insertions(+), 1 deletion(-)
+
+diff --git a/configure b/configure
+index c911f59..3b96cde 100755
+--- a/configure
++++ b/configure
+@@ -287,6 +287,24 @@ if compile_prog_cxx "" "" "C++"; then
+ fi
+ print_config "C++" "$has_cxx"
+ 
++##########################################
++# check for ucontext support
++has_ucontext="no"
++cat > $TMPC << EOF
++#include <ucontext.h>
++int main(int argc, char **argv)
++{
++  ucontext_t ctx;
++  getcontext(&ctx);
++  return 0;
++}
++EOF
++if compile_prog "" "" "has_ucontext"; then
++  has_ucontext="yes"
++fi
++print_config "has_ucontext" "$has_ucontext"
++
++
+ #############################################################################
+ 
+ if test "$__kernel_rwf_t" = "yes"; then
+@@ -304,6 +322,9 @@ fi
+ if test "$has_cxx" = "yes"; then
+   output_sym "CONFIG_HAVE_CXX"
+ fi
++if test "$has_ucontext" = "yes"; then
++  output_sym "CONFIG_HAVE_UCONTEXT"
++fi
+ 
+ echo "CC=$cc" >> $config_host_mak
+ print_config "CC" "$cc"
+diff --git a/examples/Makefile b/examples/Makefile
+index 0eec627..60c1b71 100644
+--- a/examples/Makefile
++++ b/examples/Makefile
+@@ -10,7 +10,11 @@ ifneq ($(MAKECMDGOALS),clean)
+ include ../config-host.mak
+ endif
+ 
+-all_targets += io_uring-test io_uring-cp link-cp ucontext-cp
++all_targets += io_uring-test io_uring-cp link-cp
++
++ifdef CONFIG_HAVE_UCONTEXT
++all_targets += ucontext-cp
++endif
+ 
+ all: $(all_targets)
+ 

diff --git a/sys-libs/liburing/liburing-0.7-r1.ebuild 
b/sys-libs/liburing/liburing-0.7-r1.ebuild
index dc6b6076077..715212503eb 100644
--- a/sys-libs/liburing/liburing-0.7-r1.ebuild
+++ b/sys-libs/liburing/liburing-0.7-r1.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2020 Gentoo Authors
+# Copyright 1999-2021 Gentoo Authors
 # Distributed under the terms of the GNU General Public License v2
 
 EAPI=7
@@ -21,6 +21,10 @@ IUSE="static-libs"
 # fsync test hangs forever
 RESTRICT="test"
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-0.7-ucontext_h-detection.patch
+)
+
 src_prepare() {
        default
        multilib_copy_sources

Reply via email to