mirror of
https://github.com/pentoo/pentoo-overlay
synced 2025-12-07 17:03:31 +01:00
115 lines
3.2 KiB
Bash
115 lines
3.2 KiB
Bash
# Copyright 2024-2025 Gentoo Authors
|
|
# Distributed under the terms of the GNU General Public License v2
|
|
|
|
EAPI=8
|
|
|
|
DISTUTILS_EXT=1
|
|
DISTUTILS_USE_PEP517=setuptools
|
|
PYTHON_COMPAT=( python3_{10..13} )
|
|
|
|
inherit distutils-r1 flag-o-matic multiprocessing pypi
|
|
|
|
MY_P=grpc-${PV}
|
|
DESCRIPTION="HTTP/2-based RPC framework"
|
|
HOMEPAGE="
|
|
https://grpc.io/
|
|
https://github.com/grpc/grpc/
|
|
https://pypi.org/project/grpcio/
|
|
"
|
|
# Tests need other packages from the source tree, so use a GitHub
|
|
# archive. sdist provides bundled library sources (git submodules).
|
|
SRC_URI+="
|
|
test? (
|
|
https://github.com/grpc/grpc/archive/v${PV}.tar.gz
|
|
-> ${MY_P}.gh.tar.gz
|
|
$(pypi_sdist_url grpcio_tools)
|
|
)
|
|
"
|
|
|
|
LICENSE="Apache-2.0"
|
|
SLOT="0"
|
|
KEYWORDS="amd64 arm64 x86"
|
|
|
|
DEPEND="
|
|
dev-libs/openssl:=
|
|
net-dns/c-ares:=
|
|
sys-libs/zlib:=
|
|
"
|
|
RDEPEND="
|
|
${DEPEND}
|
|
"
|
|
# TODO: try to remove coverage dep
|
|
BDEPEND="
|
|
dev-python/cython[${PYTHON_USEDEP}]
|
|
test? (
|
|
dev-python/coverage[${PYTHON_USEDEP}]
|
|
>=dev-python/protobuf-5.26.1[${PYTHON_USEDEP}]
|
|
)
|
|
"
|
|
|
|
EPYTEST_XDIST=1
|
|
distutils_enable_tests pytest
|
|
|
|
src_configure() {
|
|
export GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS="$(makeopts_jobs)"
|
|
# system abseil-cpp crashes with USE=-debug, sigh
|
|
# https://bugs.gentoo.org/942021
|
|
#export GRPC_PYTHON_BUILD_SYSTEM_ABSL=1
|
|
export GRPC_PYTHON_BUILD_SYSTEM_CARES=1
|
|
export GRPC_PYTHON_BUILD_SYSTEM_OPENSSL=1
|
|
# re2 needs to be built against the same abseil-cpp version
|
|
#export GRPC_PYTHON_BUILD_SYSTEM_RE2=1
|
|
export GRPC_PYTHON_BUILD_SYSTEM_ZLIB=1
|
|
export GRPC_PYTHON_BUILD_WITH_CYTHON=1
|
|
|
|
# copied from setup.py, except for removed -std= that does not apply
|
|
# to C code and causes warnings
|
|
export GRPC_PYTHON_CFLAGS="-fvisibility=hidden -fno-wrapv -fno-exceptions"
|
|
# required by abseil-cpp
|
|
append-cxxflags -std=c++14
|
|
# silence a lot of harmless noise from bad quality code
|
|
append-cxxflags -Wno-attributes
|
|
}
|
|
|
|
python_test() {
|
|
local EPYTEST_DESELECT=(
|
|
# Internet
|
|
tests/unit/_dns_resolver_test.py::DNSResolverTest::test_connect_loopback
|
|
# not a test
|
|
tests_aio/unit/channel_argument_test.py::test_if_reuse_port_enabled
|
|
)
|
|
local EPYTEST_IGNORE=(
|
|
# not a test
|
|
tests/unit/test_common.py
|
|
# requires oauth2client
|
|
tests/unit/beta/_implementations_test.py
|
|
)
|
|
local -x PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
|
|
|
|
cp -a "${BUILD_DIR}"/{install,test} || die
|
|
local -x PATH=${BUILD_DIR}/test/usr/bin:${PATH}
|
|
|
|
# grpcio proper builds against system libs
|
|
# grpcio_tools supports bundled libs only, and requires different
|
|
# flags
|
|
unset GRPC_PYTHON_CFLAGS
|
|
cd "${WORKDIR}/grpcio_tools-${PV}" || die
|
|
distutils_pep517_install "${BUILD_DIR}"/test
|
|
|
|
cd "${WORKDIR}/${MY_P}" || die
|
|
local protodir=src/proto/grpc/testing
|
|
local testdir=src/python/grpcio_tests
|
|
"${EPYTHON}" -m grpc_tools.protoc -I. --python_out="${testdir}" \
|
|
"${protodir}"/{empty,messages}.proto || die
|
|
"${EPYTHON}" -m grpc_tools.protoc -I. --grpc_python_out="${testdir}" \
|
|
"${protodir}"/test.proto || die
|
|
|
|
cd "${testdir}" || die
|
|
"${EPYTHON}" -m grpc_tools.protoc -I. --python_out=. \
|
|
tests/testing/proto/{requests,services}.proto || die
|
|
"${EPYTHON}" -m grpc_tools.protoc -I. --grpc_python_out=. \
|
|
tests/testing/proto/services.proto || die
|
|
|
|
# TODO: aio tests are failing randomly, so we're skipping them entirely
|
|
epytest tests{_py3_only,}/unit
|
|
}
|