mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-24 04:59:14 -07:00
dev-python/protobuf: remove unused patch(es)
Signed-off-by: Michael Mair-Keimberger <mmk@levelnine.at> Part-of: https://github.com/gentoo/gentoo/pull/42268 Closes: https://github.com/gentoo/gentoo/pull/42268 Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
committed by
Sam James
parent
23d5bfec55
commit
963796d3f6
@@ -1,132 +0,0 @@
|
||||
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.
|
||||
|
||||
@@ -1,13 +0,0 @@
|
||||
diff --git a/python/setup.py b/python/setup.py
|
||||
index e65631013..8a6cbe59a 100755
|
||||
--- a/python/setup.py
|
||||
+++ b/python/setup.py
|
||||
@@ -370,7 +370,7 @@ if __name__ == '__main__':
|
||||
extra_compile_args.append('-Wno-invalid-offsetof')
|
||||
extra_compile_args.append('-Wno-sign-compare')
|
||||
extra_compile_args.append('-Wno-unused-variable')
|
||||
- extra_compile_args.append('-std=c++14')
|
||||
+ extra_compile_args.append('-std=c++17')
|
||||
|
||||
if sys.platform == 'darwin':
|
||||
extra_compile_args.append('-Wno-shorten-64-to-32')
|
||||
@@ -1,21 +0,0 @@
|
||||
See also https://github.com/protocolbuffers/protobuf/pull/9098
|
||||
--- a/google/protobuf/internal/json_format_test.py
|
||||
+++ b/google/protobuf/internal/json_format_test.py
|
||||
@@ -1060,7 +1060,7 @@ class JsonFormatTest(JsonFormatBase):
|
||||
def testInvalidTimestamp(self):
|
||||
message = json_format_proto3_pb2.TestTimestamp()
|
||||
text = '{"value": "10000-01-01T00:00:00.00Z"}'
|
||||
- self.assertRaisesRegexp(
|
||||
+ self.assertRaisesRegex(
|
||||
json_format.ParseError, 'Failed to parse value field: '
|
||||
'time data \'10000-01-01T00:00:00\' does not match'
|
||||
' format \'%Y-%m-%dT%H:%M:%S\' at TestTimestamp.value.',
|
||||
@@ -1097,7 +1097,7 @@ class JsonFormatTest(JsonFormatBase):
|
||||
def testInvalidOneof(self):
|
||||
message = json_format_proto3_pb2.TestOneof()
|
||||
text = '{"oneofInt32Value": 1, "oneofStringValue": "2"}'
|
||||
- self.assertRaisesRegexp(
|
||||
+ self.assertRaisesRegex(
|
||||
json_format.ParseError, 'Message type "proto3.TestOneof"'
|
||||
' should not have multiple "oneof_value" oneof fields at "TestOneof".',
|
||||
json_format.Parse, text, message)
|
||||
Reference in New Issue
Block a user