diff options
Diffstat (limited to 'dev-python/protobuf-python')
9 files changed, 406 insertions, 26 deletions
diff --git a/dev-python/protobuf-python/Manifest b/dev-python/protobuf-python/Manifest index dfb0564c5120..74313749d43f 100644 --- a/dev-python/protobuf-python/Manifest +++ b/dev-python/protobuf-python/Manifest @@ -1,2 +1,5 @@ +DIST protobuf-21.8.tar.gz 5110670 BLAKE2B 3c1b0c857a86e9586481d63896341d0cb11290dbd710d87a6f7889d34f5f262abe2986a29ed19a730f8fa5df0b5c62d77a4db6aa415a72b239f7483ae8d6380c SHA512 cb17be759311e91172801add1f88fe7a0291b547170c40d2e3303f5c248570dddeade96bd48740edd628215f55269c97475e2f4c4a41c50f1018d525f52036cb DIST protobuf-3.19.3.tar.gz 5293258 BLAKE2B c05b70ffca97f7166ea6a511a36907eed125edf1ebf17f908718221d9b851be84dfb2b1b39973f2faf35f6ade630e6ba4f9e8b91b8fbc922c5db97079323ee6e SHA512 1c003e7cbc8eae6a038f46e688b401ee202ba47f502561e909df79770f6e8b7daf3dc1ccc727e31bfb5b52cd04cb4fef7d2d2a28d650c13f396872ad4aa076c6 +DIST protobuf-3.19.6.tar.gz 5299501 BLAKE2B 3121f76b95f83c5309ce49ce296b738eff7be9d3a5093c564fbe2339fb5f3729e406f1b44bfcc05feb0d31ab63838bb4f54685017977c73a33b91215a6776072 SHA512 8f92242f2be8e1bbfba41341c87709ad91ad83b8b3e3df88bb430411541d3399295f49291fd52b50e3487b0fce33181cb4d175685fd25aac72adfaee26a612d4 DIST protobuf-3.20.1.tar.gz 5368262 BLAKE2B 1ce1aef2e4c4f3ea4863629cc75d89fe17d0c7ac0c342ac641c787456fd4a12756c2892a27ddadedc94a7201494ec84566638ce33a03cb0c867b04e9eee0edb3 SHA512 fde3eb9f13946887ddfd87df428c5615ad09aaf191e4478b24e98e5e13231feeff4e70b4ca6a2ff7d9b9b2e2c60bc1d5479526edeafa78f9a8ed3bef2e0bacb0 +DIST protobuf-3.20.3.tar.gz 5374320 BLAKE2B fb51f2a0ecf5b83235f5252051f8192ae377bb7a5e030c3f3e9435ccde25919c059830cf476e840fa6c970928a32c0075e213c9d5d4d9e3d3b24732c39a9fbfa SHA512 01d6703bdbe769a1200ee6e4ebcdcb99688ec21f576988c60d82ec36e0822820fb245fcb4ca53293143d53e666d748b5a0c6937bc659fb3cdc4cd9b05ed12a1c diff --git a/dev-python/protobuf-python/files/protobuf-python-4.21.8-python311.patch b/dev-python/protobuf-python/files/protobuf-python-4.21.8-python311.patch new file mode 100644 index 000000000000..b9aca40776c5 --- /dev/null +++ b/dev-python/protobuf-python/files/protobuf-python-4.21.8-python311.patch @@ -0,0 +1,132 @@ +https://github.com/protocolbuffers/protobuf/commit/2206b63c4649cf2e8a06b66c9191c8ef862ca519 +https://github.com/protocolbuffers/protobuf/pull/10403 +https://github.com/protocolbuffers/protobuf/issues/10305 +https://bugs.gentoo.org/844184 + +From da973aff2adab60a9e516d3202c111dbdde1a50f Mon Sep 17 00:00:00 2001 +From: Alexander Shadchin <alexandr.shadchin@gmail.com> +Date: Sun, 14 Aug 2022 21:13:49 +0300 +Subject: [PATCH] Fix build with Python 3.11 + +The PyFrameObject structure members have been removed from the public C API. +--- a/google/protobuf/pyext/descriptor.cc ++++ b/google/protobuf/pyext/descriptor.cc +@@ -58,6 +58,37 @@ + : 0) \ + : PyBytes_AsStringAndSize(ob, (charpp), (sizep))) + ++#if PY_VERSION_HEX < 0x030900B1 && !defined(PYPY_VERSION) ++static PyCodeObject* PyFrame_GetCode(PyFrameObject *frame) ++{ ++ Py_INCREF(frame->f_code); ++ return frame->f_code; ++} ++ ++static PyFrameObject* PyFrame_GetBack(PyFrameObject *frame) ++{ ++ Py_XINCREF(frame->f_back); ++ return frame->f_back; ++} ++#endif ++ ++#if PY_VERSION_HEX < 0x030B00A7 && !defined(PYPY_VERSION) ++static PyObject* PyFrame_GetLocals(PyFrameObject *frame) ++{ ++ if (PyFrame_FastToLocalsWithError(frame) < 0) { ++ return NULL; ++ } ++ Py_INCREF(frame->f_locals); ++ return frame->f_locals; ++} ++ ++static PyObject* PyFrame_GetGlobals(PyFrameObject *frame) ++{ ++ Py_INCREF(frame->f_globals); ++ return frame->f_globals; ++} ++#endif ++ + namespace google { + namespace protobuf { + namespace python { +@@ -96,48 +127,66 @@ bool _CalledFromGeneratedFile(int stacklevel) { + // This check is not critical and is somewhat difficult to implement correctly + // in PyPy. + PyFrameObject* frame = PyEval_GetFrame(); ++ PyCodeObject* frame_code = nullptr; ++ PyObject* frame_globals = nullptr; ++ PyObject* frame_locals = nullptr; ++ bool result = false; ++ + if (frame == nullptr) { +- return false; ++ goto exit; + } ++ Py_INCREF(frame); + while (stacklevel-- > 0) { +- frame = frame->f_back; ++ PyFrameObject* next_frame = PyFrame_GetBack(frame); ++ Py_DECREF(frame); ++ frame = next_frame; + if (frame == nullptr) { +- return false; ++ goto exit; + } + } + +- if (frame->f_code->co_filename == nullptr) { +- return false; ++ frame_code = PyFrame_GetCode(frame); ++ if (frame_code->co_filename == nullptr) { ++ goto exit; + } + char* filename; + Py_ssize_t filename_size; +- if (PyString_AsStringAndSize(frame->f_code->co_filename, ++ if (PyString_AsStringAndSize(frame_code->co_filename, + &filename, &filename_size) < 0) { + // filename is not a string. + PyErr_Clear(); +- return false; ++ goto exit; + } + if ((filename_size < 3) || + (strcmp(&filename[filename_size - 3], ".py") != 0)) { + // Cython's stack does not have .py file name and is not at global module + // scope. +- return true; ++ result = true; ++ goto exit; + } + if (filename_size < 7) { + // filename is too short. +- return false; ++ goto exit; + } + if (strcmp(&filename[filename_size - 7], "_pb2.py") != 0) { + // Filename is not ending with _pb2. +- return false; ++ goto exit; + } + +- if (frame->f_globals != frame->f_locals) { ++ frame_globals = PyFrame_GetGlobals(frame); ++ frame_locals = PyFrame_GetLocals(frame); ++ if (frame_globals != frame_locals) { + // Not at global module scope +- return false; ++ goto exit; + } + #endif +- return true; ++ result = true; ++exit: ++ Py_XDECREF(frame_globals); ++ Py_XDECREF(frame_locals); ++ Py_XDECREF(frame_code); ++ Py_XDECREF(frame); ++ return result; + } + + // If the calling code is not a _pb2.py file, raise AttributeError. + diff --git a/dev-python/protobuf-python/protobuf-python-3.19.3-r2.ebuild b/dev-python/protobuf-python/protobuf-python-3.19.3-r2.ebuild index e40e3e4434b4..e035f888527a 100644 --- a/dev-python/protobuf-python/protobuf-python-3.19.3-r2.ebuild +++ b/dev-python/protobuf-python/protobuf-python-3.19.3-r2.ebuild @@ -3,7 +3,7 @@ EAPI=8 -PYTHON_COMPAT=( python3_{7,8,9,10} ) +PYTHON_COMPAT=( python3_{7,8,9,10,11} ) inherit distutils-r1 diff --git a/dev-python/protobuf-python/protobuf-python-3.19.3-r3.ebuild b/dev-python/protobuf-python/protobuf-python-3.19.3-r3.ebuild index bffcd342d04a..5007626e90fe 100644 --- a/dev-python/protobuf-python/protobuf-python-3.19.3-r3.ebuild +++ b/dev-python/protobuf-python/protobuf-python-3.19.3-r3.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{7,8,9,10} ) +PYTHON_COMPAT=( python3_{7,8,9,10,11} ) inherit distutils-r1 diff --git a/dev-python/protobuf-python/protobuf-python-3.19.6.ebuild b/dev-python/protobuf-python/protobuf-python-3.19.6.ebuild new file mode 100644 index 000000000000..88cbd60e9514 --- /dev/null +++ b/dev-python/protobuf-python/protobuf-python-3.19.6.ebuild @@ -0,0 +1,79 @@ +# Copyright 2008-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{7,8,9,10,11} ) + +inherit distutils-r1 + +PARENT_PN="${PN/-python/}" +PARENT_PV="${PV}" +PARENT_P="${PARENT_PN}-${PARENT_PV}" + +if [[ "${PV}" == *9999 ]]; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/protocolbuffers/protobuf.git" + EGIT_SUBMODULES=() + EGIT_CHECKOUT_DIR="${WORKDIR}/${PARENT_P}" +else + SRC_URI=" + https://github.com/protocolbuffers/protobuf/archive/v${PARENT_PV}.tar.gz + -> ${PARENT_P}.tar.gz + " + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" +fi + +DESCRIPTION="Google's Protocol Buffers - Python bindings" +HOMEPAGE=" + https://developers.google.com/protocol-buffers/ + https://pypi.org/project/protobuf/ +" + +LICENSE="BSD" +SLOT="0/30" + +S="${WORKDIR}/${PARENT_P}/python" + +BDEPEND=" +" +DEPEND=" + ${PYTHON_DEPS} +" +RDEPEND=" + ${BDEPEND} + dev-libs/protobuf:${SLOT} +" + +distutils_enable_tests setup.py + +# Same than PATCHES but from repository's root directory, +# please see function `python_prepare_all` below. +# Simplier for users IMHO. +PARENT_PATCHES=( + "${FILESDIR}/${PN}-3.19.0-google.protobuf.pyext._message.PyUnknownFieldRef.patch" +) + +# Here for patches within "python/" subdirectory. +PATCHES=( +) + +python_prepare_all() { + pushd "${WORKDIR}/${PARENT_P}" > /dev/null || die + [[ -n "${PARENT_PATCHES[@]}" ]] && eapply "${PARENT_PATCHES[@]}" + eapply_user + popd > /dev/null || die + + distutils-r1_python_prepare_all +} + +src_configure() { + DISTUTILS_ARGS=( --cpp_implementation ) +} + +python_compile() { + distutils-r1_python_compile + find "${BUILD_DIR}/install" -name "*.pth" -type f -delete || die +} diff --git a/dev-python/protobuf-python/protobuf-python-3.20.1.ebuild b/dev-python/protobuf-python/protobuf-python-3.20.1.ebuild index 42ec1cfd1bf2..a3b0f64c61af 100644 --- a/dev-python/protobuf-python/protobuf-python-3.20.1.ebuild +++ b/dev-python/protobuf-python/protobuf-python-3.20.1.ebuild @@ -4,7 +4,7 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{7,8,9,10} ) +PYTHON_COMPAT=( python3_{7,8,9,10,11} ) inherit distutils-r1 diff --git a/dev-python/protobuf-python/protobuf-python-3.20.3.ebuild b/dev-python/protobuf-python/protobuf-python-3.20.3.ebuild new file mode 100644 index 000000000000..1118414d45b8 --- /dev/null +++ b/dev-python/protobuf-python/protobuf-python-3.20.3.ebuild @@ -0,0 +1,78 @@ +# Copyright 2008-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{7,8,9,10,11} ) + +inherit distutils-r1 + +PARENT_PN="${PN/-python/}" +PARENT_PV="${PV}" +PARENT_P="${PARENT_PN}-${PARENT_PV}" + +if [[ "${PV}" == *9999 ]]; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/protocolbuffers/protobuf.git" + EGIT_SUBMODULES=() + EGIT_CHECKOUT_DIR="${WORKDIR}/${PARENT_P}" +else + SRC_URI=" + https://github.com/protocolbuffers/protobuf/archive/v${PARENT_PV}.tar.gz + -> ${PARENT_P}.tar.gz + " + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" +fi + +DESCRIPTION="Google's Protocol Buffers - Python bindings" +HOMEPAGE=" + https://developers.google.com/protocol-buffers/ + https://pypi.org/project/protobuf/ +" + +LICENSE="BSD" +SLOT="0/31" + +S="${WORKDIR}/${PARENT_P}/python" + +BDEPEND=" +" +DEPEND=" + ${PYTHON_DEPS} +" +RDEPEND=" + ${BDEPEND} + dev-libs/protobuf:${SLOT} +" + +distutils_enable_tests setup.py + +# Same than PATCHES but from repository's root directory, +# please see function `python_prepare_all` below. +# Simplier for users IMHO. +PARENT_PATCHES=( +) + +# Here for patches within "python/" subdirectory. +PATCHES=( +) + +python_prepare_all() { + pushd "${WORKDIR}/${PARENT_P}" > /dev/null || die + [[ -n "${PARENT_PATCHES[@]}" ]] && eapply "${PARENT_PATCHES[@]}" + eapply_user + popd > /dev/null || die + + distutils-r1_python_prepare_all +} + +src_configure() { + DISTUTILS_ARGS=( --cpp_implementation ) +} + +python_compile() { + distutils-r1_python_compile + find "${BUILD_DIR}/install" -name "*.pth" -type f -delete || die +} diff --git a/dev-python/protobuf-python/protobuf-python-4.21.8.ebuild b/dev-python/protobuf-python/protobuf-python-4.21.8.ebuild new file mode 100644 index 000000000000..996398bbb613 --- /dev/null +++ b/dev-python/protobuf-python/protobuf-python-4.21.8.ebuild @@ -0,0 +1,79 @@ +# Copyright 2008-2022 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{7,8,9,10,11} ) + +inherit distutils-r1 + +PARENT_PN="${PN/-python/}" +PARENT_PV="$(ver_cut 2-)" +PARENT_P="${PARENT_PN}-${PARENT_PV}" + +if [[ "${PV}" == *9999 ]]; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/protocolbuffers/protobuf.git" + EGIT_SUBMODULES=() + EGIT_CHECKOUT_DIR="${WORKDIR}/${PARENT_P}" +else + SRC_URI=" + https://github.com/protocolbuffers/protobuf/archive/v${PARENT_PV}.tar.gz + -> ${PARENT_P}.tar.gz + " + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" +fi + +DESCRIPTION="Google's Protocol Buffers - Python bindings" +HOMEPAGE=" + https://developers.google.com/protocol-buffers/ + https://pypi.org/project/protobuf/ +" + +LICENSE="BSD" +SLOT="0/32" + +S="${WORKDIR}/${PARENT_P}/python" + +BDEPEND=" +" +DEPEND=" + ${PYTHON_DEPS} +" +RDEPEND=" + ${BDEPEND} + dev-libs/protobuf:${SLOT} +" + +distutils_enable_tests setup.py + +# Same than PATCHES but from repository's root directory, +# please see function `python_prepare_all` below. +# Simplier for users IMHO. +PARENT_PATCHES=( +) + +# Here for patches within "python/" subdirectory. +PATCHES=( + "${FILESDIR}"/${P}-python311.patch +) + +python_prepare_all() { + pushd "${WORKDIR}/${PARENT_P}" > /dev/null || die + [[ -n "${PARENT_PATCHES[@]}" ]] && eapply "${PARENT_PATCHES[@]}" + eapply_user + popd > /dev/null || die + + distutils-r1_python_prepare_all +} + +src_configure() { + DISTUTILS_ARGS=( --cpp_implementation ) +} + +python_compile() { + distutils-r1_python_compile + find "${BUILD_DIR}/install" -name "*.pth" -type f -delete || die +} diff --git a/dev-python/protobuf-python/protobuf-python-9999.ebuild b/dev-python/protobuf-python/protobuf-python-9999.ebuild index 7678e85da858..4582618817c6 100644 --- a/dev-python/protobuf-python/protobuf-python-9999.ebuild +++ b/dev-python/protobuf-python/protobuf-python-9999.ebuild @@ -4,57 +4,66 @@ EAPI=8 DISTUTILS_USE_PEP517=setuptools -PYTHON_COMPAT=( python3_{7,8,9,10} ) +PYTHON_COMPAT=( python3_{7,8,9,10,11} ) inherit distutils-r1 -if [[ "${PV}" == "9999" ]]; then +PARENT_PN="${PN/-python/}" +PARENT_PV="${PV}" +PARENT_P="${PARENT_PN}-${PARENT_PV}" + +if [[ "${PV}" == *9999 ]]; then inherit git-r3 - EGIT_REPO_URI="https://github.com/protocolbuffers/protobuf" + EGIT_REPO_URI="https://github.com/protocolbuffers/protobuf.git" EGIT_SUBMODULES=() + EGIT_CHECKOUT_DIR="${WORKDIR}/${PARENT_P}" +else + SRC_URI=" + https://github.com/protocolbuffers/protobuf/archive/v${PARENT_PV}.tar.gz + -> ${PARENT_P}.tar.gz + " + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86 ~amd64-linux ~x86-linux ~x64-macos" fi DESCRIPTION="Google's Protocol Buffers - Python bindings" HOMEPAGE=" https://developers.google.com/protocol-buffers/ - https://github.com/protocolbuffers/protobuf/ https://pypi.org/project/protobuf/ " -if [[ "${PV}" != "9999" ]]; then - SRC_URI=" - https://github.com/protocolbuffers/protobuf/archive/v${PV}.tar.gz - -> protobuf-${PV}.tar.gz - " -fi -S="${WORKDIR}/protobuf-${PV}/python" LICENSE="BSD" -SLOT="0/30" -KEYWORDS="" +SLOT="0/32" + +S="${WORKDIR}/${PARENT_P}/python" BDEPEND=" - ${PYTHON_DEPS} - ~dev-libs/protobuf-${PV} + dev-libs/protobuf:${SLOT} dev-python/six[${PYTHON_USEDEP}] " DEPEND=" ${PYTHON_DEPS} - ~dev-libs/protobuf-${PV} + dev-libs/protobuf:${SLOT} " RDEPEND=" ${BDEPEND} - !dev-python/namespace-google " -if [[ "${PV}" == "9999" ]]; then - EGIT_CHECKOUT_DIR="${WORKDIR}/protobuf-${PV}" -fi - distutils_enable_tests setup.py +# Same than PATCHES but from repository's root directory, +# please see function `python_prepare_all` below. +# Simplier for users IMHO. +PARENT_PATCHES=( +) + +# Here for patches within "python/" subdirectory. +PATCHES=( +) + python_prepare_all() { - pushd "${WORKDIR}/protobuf-${PV}" > /dev/null || die + pushd "${WORKDIR}/${PARENT_P}" > /dev/null || die + [[ -n "${PARENT_PATCHES[@]}" ]] && eapply "${PARENT_PATCHES[@]}" eapply_user popd > /dev/null || die @@ -62,7 +71,7 @@ python_prepare_all() { } src_configure() { - DISTUTILS_ARGS=(--cpp_implementation) + DISTUTILS_ARGS=( --cpp_implementation ) } python_compile() { |
