public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Sam James" <sam@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: dev-cpp/folly/, dev-cpp/folly/files/
Date: Thu, 24 Apr 2025 23:33:04 +0000 (UTC)	[thread overview]
Message-ID: <1745537504.8ac2ad88832e37b7df16a842a1cbc57d259431e4.sam@gentoo> (raw)

commit:     8ac2ad88832e37b7df16a842a1cbc57d259431e4
Author:     sin-ack <sin-ack <AT> protonmail <DOT> com>
AuthorDate: Thu Apr 24 21:06:43 2025 +0000
Commit:     Sam James <sam <AT> gentoo <DOT> org>
CommitDate: Thu Apr 24 23:31:44 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=8ac2ad88

dev-cpp/folly: add IUSE io-uring

There are three different problems being addressed here:

1. Recent Folly versions depend on liburing features that have not yet
   been released.
2. Folly has no build system configuration option to disable io_uring
   support.
3. Folly's CMake build system will unconditionally add liburing as a
   library to link against, which downstream Facebook libraries rely on.

The third one creates an implicit dependency between Folly and liburing
which means if liburing gets depcleaned or otherwise unmerged, other
Facebook packages will fail to build.

We solve this by conditionally patching out io_uring support based on
USE=io-uring and having a (currently technically invalid) dependency
on the yet-unreleased liburing-2.10, which will make it automagically
start working once we do have that release in ::gentoo.

Ref: https://github.com/facebook/folly/issues/2420
Bug: https://bugs.gentoo.org/954335
Signed-off-by: sin-ack <sin-ack <AT> protonmail.com>
Part-of: https://github.com/gentoo/gentoo/pull/41734
Signed-off-by: Sam James <sam <AT> gentoo.org>

 ...025.04.14.00-CMake-Avoid-finding-liburing.patch | 30 ++++++++++++++++++++++
 ....14.00.ebuild => folly-2025.04.14.00-r1.ebuild} | 25 +++++++++---------
 2 files changed, 43 insertions(+), 12 deletions(-)

diff --git a/dev-cpp/folly/files/folly-2025.04.14.00-CMake-Avoid-finding-liburing.patch b/dev-cpp/folly/files/folly-2025.04.14.00-CMake-Avoid-finding-liburing.patch
new file mode 100644
index 000000000000..80399fb9c432
--- /dev/null
+++ b/dev-cpp/folly/files/folly-2025.04.14.00-CMake-Avoid-finding-liburing.patch
@@ -0,0 +1,30 @@
+From a0d86ed3bc2150ddfad50ab1b2eb09bea7a277d2 Mon Sep 17 00:00:00 2001
+From: sin-ack <sin-ack@protonmail.com>
+Date: Thu, 24 Apr 2025 20:59:06 +0000
+Subject: [PATCH] CMake: Avoid finding liburing
+
+Otherwise, Folly will unconditionally add it to the list of libraries to
+link even if io_uring support is otherwise disabled, creating an
+implicit dependency on it that can't be tracked by package managers.
+---
+ CMake/folly-deps.cmake | 4 ----
+ 1 file changed, 4 deletions(-)
+
+diff --git a/CMake/folly-deps.cmake b/CMake/folly-deps.cmake
+index 6ce4c679a..b1e20a901 100644
+--- a/CMake/folly-deps.cmake
++++ b/CMake/folly-deps.cmake
+@@ -139,10 +139,6 @@ find_package(LibAIO)
+ list(APPEND FOLLY_LINK_LIBRARIES ${LIBAIO_LIBRARIES})
+ list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBAIO_INCLUDE_DIRS})
+ 
+-find_package(LibUring)
+-list(APPEND FOLLY_LINK_LIBRARIES ${LIBURING_LIBRARIES})
+-list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBURING_INCLUDE_DIRS})
+-
+ find_package(Libsodium)
+ list(APPEND FOLLY_LINK_LIBRARIES ${LIBSODIUM_LIBRARIES})
+ list(APPEND FOLLY_INCLUDE_DIRECTORIES ${LIBSODIUM_INCLUDE_DIRS})
+-- 
+2.49.0
+

diff --git a/dev-cpp/folly/folly-2025.04.14.00.ebuild b/dev-cpp/folly/folly-2025.04.14.00-r1.ebuild
similarity index 81%
rename from dev-cpp/folly/folly-2025.04.14.00.ebuild
rename to dev-cpp/folly/folly-2025.04.14.00-r1.ebuild
index 05ec9d0a3f03..48695a36dd84 100644
--- a/dev-cpp/folly/folly-2025.04.14.00.ebuild
+++ b/dev-cpp/folly/folly-2025.04.14.00-r1.ebuild
@@ -22,16 +22,9 @@ SRC_URI="https://github.com/facebook/folly/releases/download/v${PV}/${PN}-v${PV}
 LICENSE="Apache-2.0"
 SLOT="0/${PV}"
 KEYWORDS="~amd64 ~arm64 ~ppc64"
-IUSE="llvm-libunwind test"
+IUSE="io-uring llvm-libunwind test"
 RESTRICT="!test? ( test )"
 
-# NOTE: liburing support is disabled because Folly depends on features
-#       that are not available in the current stable version of liburing.
-#
-#       See: https://github.com/facebook/folly/issues/2420
-#
-# NOTE: Re-check during next bump whether liburing released a version with
-#       zcrx support.
 RDEPEND="
 	app-arch/bzip2
 	app-arch/lz4:=
@@ -51,8 +44,8 @@ RDEPEND="
 	sys-libs/zlib
 	llvm-libunwind? ( llvm-runtimes/libunwind:= )
 	!llvm-libunwind? ( sys-libs/libunwind:= )
+	io-uring? ( >=sys-libs/liburing-2.10:= )
 "
-# libiberty is linked statically
 DEPEND="
 	${RDEPEND}
 	sys-libs/binutils-libs
@@ -61,9 +54,6 @@ DEPEND="
 
 PATCHES=(
 	"${FILESDIR}"/${PN}-2024.11.04.00-musl-fix.patch
-	# NOTE: Disable liburing support as mentioned above. Folly doesn't have
-	#       a configure flag for this so we must patch the check out.
-	"${FILESDIR}"/${PN}-2025.04.14.00-force-liburing-off.patch
 )
 
 src_unpack() {
@@ -73,6 +63,17 @@ src_unpack() {
 	default
 }
 
+src_prepare() {
+	# Folly has no configuration option for disabling io_uring support
+	# so we need to patch it out.
+	if use !io-uring; then
+		eapply "${FILESDIR}"/${PN}-2025.04.14.00-force-liburing-off.patch
+		eapply "${FILESDIR}"/${PN}-2025.04.14.00-CMake-Avoid-finding-liburing.patch
+	fi
+
+	cmake_src_prepare
+}
+
 src_configure() {
 	local mycmakeargs=(
 		-DCMAKE_INSTALL_DIR="$(get_libdir)/cmake/${PN}"


             reply	other threads:[~2025-04-24 23:33 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-04-24 23:33 Sam James [this message]
  -- strict thread matches above, loose matches on Subject: below --
2025-10-30  8:11 [gentoo-commits] repo/gentoo:master commit in: dev-cpp/folly/, dev-cpp/folly/files/ Sam James
2024-11-11 22:25 Sam James
2023-11-25  6:21 Sam James
2022-08-12 18:40 Sam James

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1745537504.8ac2ad88832e37b7df16a842a1cbc57d259431e4.sam@gentoo \
    --to=sam@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox