diff options
author | Violet Purcell <vimproved@inventati.org> | 2023-12-19 09:17:08 -0500 |
---|---|---|
committer | Florian Schmaus <flow@gentoo.org> | 2023-12-19 19:01:06 +0100 |
commit | 25c754248c86b71962eaf1f9aa363c1fac5f12d2 (patch) | |
tree | 2b51da7783954cfaeb4222f3803df61c689d8b86 | |
parent | dev-python/zeroconf: Bump to 0.131.0 (diff) | |
download | gentoo-25c754248c86b71962eaf1f9aa363c1fac5f12d2.tar.gz gentoo-25c754248c86b71962eaf1f9aa363c1fac5f12d2.tar.bz2 gentoo-25c754248c86b71962eaf1f9aa363c1fac5f12d2.zip |
sys-libs/liburing: backport fix for building without libgcc
Since 2.4, liburing has been building in its nolibc configuration for
arm64, x86, and amd64. Since 2.5, in this configuration, it explicitly
links to -lgcc. This commit backports a patch that removes the explicit
-lgcc link and replaces it with the output of cc
-print-libgcc-file-name, which fixes building on LLVM-only systems.
Upstream-Commit: https://github.com/axboe/liburing/commit/09b8ded9686f33f1044ad8c612f2281b865cd314
Signed-off-by: Violet Purcell <vimproved@inventati.org>
Closes: https://github.com/gentoo/gentoo/pull/34369
Signed-off-by: Florian Schmaus <flow@gentoo.org>
-rw-r--r-- | sys-libs/liburing/files/liburing-2.5-print-libgcc-file-name.patch | 43 | ||||
-rw-r--r-- | sys-libs/liburing/liburing-2.5-r2.ebuild | 88 |
2 files changed, 131 insertions, 0 deletions
diff --git a/sys-libs/liburing/files/liburing-2.5-print-libgcc-file-name.patch b/sys-libs/liburing/files/liburing-2.5-print-libgcc-file-name.patch new file mode 100644 index 000000000000..bedc6897b901 --- /dev/null +++ b/sys-libs/liburing/files/liburing-2.5-print-libgcc-file-name.patch @@ -0,0 +1,43 @@ +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" diff --git a/sys-libs/liburing/liburing-2.5-r2.ebuild b/sys-libs/liburing/liburing-2.5-r2.ebuild new file mode 100644 index 000000000000..29f679d0a2da --- /dev/null +++ b/sys-libs/liburing/liburing-2.5-r2.ebuild @@ -0,0 +1,88 @@ +# Copyright 1999-2023 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 ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86" + QA_PKGCONFIG_VERSION=${PV} +fi +LICENSE="MIT" +SLOT="0/2" # liburing.so major version + +IUSE="examples static-libs test" +# fsync test hangs forever +RESTRICT="!test? ( test )" + +# At least installed headers need <linux/*>, bug #802516 +DEPEND=">=sys-kernel/linux-headers-5.1" +RDEPEND="${DEPEND}" + +PATCHES=( + "${FILESDIR}"/${P}-lld-17.patch + "${FILESDIR}"/${P}-print-libgcc-file-name.patch +) + +src_prepare() { + default + + if ! use examples; then + sed -e '/examples/d' Makefile -i || die + fi + if ! use test; then + sed -e '/test/d' Makefile -i || 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() { + local disabled_tests=( + accept.c + fpos.c + io_uring_register.c + link-timeout.c + read-before-exit.c + recv-msgall-stream.c + ) + local disabled_test + for disabled_test in "${disabled_tests[@]}"; do + sed -i "/\s*${disabled_test}/d" test/Makefile \ + || die "Failed to remove ${disabled_test}" + done + + emake -C test V=1 runtests +} |