commit:     f3ee1efae2374a90b8b4237927316853c79b3e1b
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Wed Apr 16 07:27:26 2025 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Wed Apr 16 07:27:47 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f3ee1efa

dev-python/aiohttp: devendor llhttp

Closes: https://bugs.gentoo.org/953899
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 ...tp-3.11.16.ebuild => aiohttp-3.11.16-r1.ebuild} | 15 +++++-
 .../files/aiohttp-3.11.16-devendor-llhttp.patch    | 54 ++++++++++++++++++++++
 2 files changed, 67 insertions(+), 2 deletions(-)

diff --git a/dev-python/aiohttp/aiohttp-3.11.16.ebuild 
b/dev-python/aiohttp/aiohttp-3.11.16-r1.ebuild
similarity index 91%
rename from dev-python/aiohttp/aiohttp-3.11.16.ebuild
rename to dev-python/aiohttp/aiohttp-3.11.16-r1.ebuild
index 2c0d281aa753..dc9100ad7365 100644
--- a/dev-python/aiohttp/aiohttp-3.11.16.ebuild
+++ b/dev-python/aiohttp/aiohttp-3.11.16-r1.ebuild
@@ -17,10 +17,15 @@ HOMEPAGE="
 
 LICENSE="Apache-2.0"
 SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv 
~s390 ~sparc ~x86"
+KEYWORDS="~amd64 ~arm ~arm64 ~hppa ~loong ~mips ~ppc ~ppc64 ~riscv ~s390 
~sparc ~x86"
 IUSE="+native-extensions test-rust"
 
-RDEPEND="
+DEPEND="
+       $(python_gen_cond_dep '
+               native-extensions? ( net-libs/llhttp:= )
+       ' 'python3*')
+"
+RDEPEND="${DEPEND}
        >=dev-python/aiodns-3.2.0[${PYTHON_USEDEP}]
        >=dev-python/aiohappyeyeballs-2.3.0[${PYTHON_USEDEP}]
        >=dev-python/aiosignal-1.1.2[${PYTHON_USEDEP}]
@@ -57,6 +62,10 @@ BDEPEND="
 
 DOCS=( CHANGES.rst CONTRIBUTORS.txt README.rst )
 
+PATCHES=(
+       "${FILESDIR}"/${PN}-3.11.16-devendor-llhttp.patch
+)
+
 EPYTEST_XDIST=1
 distutils_enable_tests pytest
 
@@ -66,6 +75,8 @@ src_prepare() {
        # xfail_strict fails on py3.10
        sed -i -e '/--cov/d' -e '/pytest_cov/d' -e '/xfail_strict/d' setup.cfg 
|| die
        sed -i -e 's:-Werror::' Makefile || die
+       # remove the bundled llhttp, we use the system one
+       rm -r vendor/llhttp || die
 
        distutils-r1_src_prepare
 }

diff --git a/dev-python/aiohttp/files/aiohttp-3.11.16-devendor-llhttp.patch 
b/dev-python/aiohttp/files/aiohttp-3.11.16-devendor-llhttp.patch
new file mode 100644
index 000000000000..26aa843ad936
--- /dev/null
+++ b/dev-python/aiohttp/files/aiohttp-3.11.16-devendor-llhttp.patch
@@ -0,0 +1,54 @@
+https://src.fedoraproject.org/rpms/python-aiohttp/raw/bceb660b835a4aaffd763a261cb2cd2392ee06db/f/0001-Unbundle-llhttp.patch
+From: =?UTF-8?q?Tom=C3=A1=C5=A1=20Hrn=C4=8Diar?= <[email protected]>
+Date: Wed, 16 Feb 2022 13:57:57 +0100
+Subject: [PATCH] Unbundle llhttp
+
+Modified a little by [email protected] to force cythonize
+
+--- a/aiohttp/_cparser.pxd
++++ b/aiohttp/_cparser.pxd
+@@ -1,7 +1,7 @@
+ from libc.stdint cimport int32_t, uint8_t, uint16_t, uint64_t
+
+
+-cdef extern from "../vendor/llhttp/build/llhttp.h":
++cdef extern from "llhttp.h":
+
+     struct llhttp__internal_s:
+         int32_t _index
+--- a/setup.py
++++ b/setup.py
+@@ -27,23 +27,21 @@ if IS_GIT_REPO and not (HERE / 
"vendor/llhttp/README.md").exists():
+ # NOTE: makefile cythonizes all Cython modules
+
+ extensions = [
+-    Extension("aiohttp._websocket.mask", ["aiohttp/_websocket/mask.c"]),
++    Extension("aiohttp._websocket.mask", ["aiohttp/_websocket/mask.pyx"]),
+     Extension(
+         "aiohttp._http_parser",
+         [
+-            "aiohttp/_http_parser.c",
+-            "aiohttp/_find_header.c",
+-            "vendor/llhttp/build/c/llhttp.c",
+-            "vendor/llhttp/src/native/api.c",
+-            "vendor/llhttp/src/native/http.c",
++            "aiohttp/_http_parser.pyx",
+         ],
+-        define_macros=[("LLHTTP_STRICT_MODE", 0)],
+-        include_dirs=["vendor/llhttp/build"],
+     ),
+-    Extension("aiohttp._http_writer", ["aiohttp/_http_writer.c"]),
++    Extension("aiohttp._http_writer", ["aiohttp/_http_writer.pyx"]),
+     Extension("aiohttp._websocket.reader_c", 
["aiohttp/_websocket/reader_c.c"]),
+ ]
+
++if not NO_EXTENSIONS:
++    from Cython.Build import cythonize
++    extensions = cythonize(extensions, force=True, language_level=3)
++
+
+ build_type = "Pure" if NO_EXTENSIONS else "Accelerated"
+ setup_kwargs = {} if NO_EXTENSIONS else {"ext_modules": extensions}
+--
+2.48.1
+

Reply via email to