aboutsummaryrefslogtreecommitdiffstats
path: root/contrib/python/protobuf
diff options
context:
space:
mode:
authorspreis <spreis@yandex-team.com>2024-03-28 11:07:37 +0300
committerspreis <spreis@yandex-team.com>2024-03-28 11:17:45 +0300
commit2de742ce97267f0469cf0c9bd384488c91442bce (patch)
tree15daa45ea6fb7ecfd1e07759c7bbd6fba92075a6 /contrib/python/protobuf
parent48212452a70da88a5e4b814979dd82f22379801f (diff)
downloadydb-2de742ce97267f0469cf0c9bd384488c91442bce.tar.gz
Revertcommits
Эта история про второй питон подразнесла нам графогенерацию . Нам придется этот коммит откатить. Суть проблемы в том, что генерация для 2го и 3го раньше была одной и той же командой. Ты сделал так, что команда стала разной, но аутпут этих двух команд одинаковый. Имя результата команды является ключом и сейчас берётся какая-то рандомная команда из двух. При этом команда влияет на UID и все UIDы питонячей протогенерации мигают. От фатальных проблем нас спасает только то, что protobuf-ы на самом деле одинаковые. И даже это не факт - сейчас ты патчишь какие-то рандомные либы включая таковые для 3го питона. Мы тут конечно редиски - мы в целом контролируем клэши аутпутов, но не в мультимодулях - там часто бывает что одна и та же команда оказывается в нескольких вариантах мультимодуля (потому что оно по дефолту сейчас так себя ведёт). Мы хотим это зачинить (сделать отдельный подмодуль под кодген и отселить всякие RUN_PROGRAM туда) - но это много работы и мы не успели. План такой: 1. мы откатываем твой фикс 2. отдельно стабилизируем раздельные команды генерации для 2го и 3го питона 3. накатываем обратно отревеченные тут правки. 916a5456c4e901ab2cda0841b4167e16397e83c4
Diffstat (limited to 'contrib/python/protobuf')
-rw-r--r--contrib/python/protobuf/py2/google/protobuf/pyext/descriptor_pool.cc35
-rw-r--r--contrib/python/protobuf/py2/ya.make52
2 files changed, 37 insertions, 50 deletions
diff --git a/contrib/python/protobuf/py2/google/protobuf/pyext/descriptor_pool.cc b/contrib/python/protobuf/py2/google/protobuf/pyext/descriptor_pool.cc
index 3c08de1dc0..a53411e797 100644
--- a/contrib/python/protobuf/py2/google/protobuf/pyext/descriptor_pool.cc
+++ b/contrib/python/protobuf/py2/google/protobuf/pyext/descriptor_pool.cc
@@ -592,40 +592,31 @@ static PyObject* AddSerializedFile(PyObject* pself, PyObject* serialized_pb) {
PyErr_SetString(PyExc_TypeError, "Couldn't parse file content!");
return NULL;
}
- // DescriptorPool::InternalAddGeneratedFile(message_type, message_len);
+
// If the file was already part of a C++ library, all its descriptors are in
// the underlying pool. No need to do anything else.
const FileDescriptor* generated_file = NULL;
if (self->underlay) {
generated_file = self->underlay->FindFileByName(file_proto.name());
}
-
if (generated_file != NULL) {
- return PyFileDescriptor_FromDescriptorWithSerializedPb(generated_file, serialized_pb);
+ return PyFileDescriptor_FromDescriptorWithSerializedPb(
+ generated_file, serialized_pb);
}
BuildFileErrorCollector error_collector;
-
- generated_file = self->pool->BuildFileCollectingErrors(file_proto, &error_collector);
-
- if (generated_file != NULL) {
- return PyFileDescriptor_FromDescriptorWithSerializedPb(generated_file, serialized_pb);
- }
-
- DescriptorPool::InternalAddGeneratedFile(message_type, message_len);
-
- if (self->underlay) {
- generated_file = self->underlay->FindFileByName(file_proto.name());
- }
-
- if (generated_file != NULL) {
- return PyFileDescriptor_FromDescriptorWithSerializedPb(generated_file, serialized_pb);
- }
-
- PyErr_Format(PyExc_TypeError,
+ const FileDescriptor* descriptor =
+ self->pool->BuildFileCollectingErrors(file_proto,
+ &error_collector);
+ if (descriptor == NULL) {
+ PyErr_Format(PyExc_TypeError,
"Couldn't build proto file into descriptor pool!\n%s",
error_collector.error_message.c_str());
- return NULL;
+ return NULL;
+ }
+
+ return PyFileDescriptor_FromDescriptorWithSerializedPb(
+ descriptor, serialized_pb);
}
static PyObject* Add(PyObject* self, PyObject* file_descriptor_proto) {
diff --git a/contrib/python/protobuf/py2/ya.make b/contrib/python/protobuf/py2/ya.make
index b369e9bf4b..c66515d586 100644
--- a/contrib/python/protobuf/py2/ya.make
+++ b/contrib/python/protobuf/py2/ya.make
@@ -9,22 +9,41 @@ VERSION(3.17.3)
ORIGINAL_SOURCE(https://github.com/protocolbuffers/protobuf/archive/v3.17.3.tar.gz)
PEERDIR(
- contrib/libs/protobuf_old
- contrib/libs/protobuf_old/builtin_proto/protos_from_protobuf
- #contrib/libs/protobuf_old/builtin_proto/protos_from_protoc
+ contrib/libs/protobuf
+ contrib/libs/protobuf/builtin_proto/protos_from_protobuf
+ contrib/libs/protobuf/builtin_proto/protos_from_protoc
contrib/python/six
)
ADDINCL(
contrib/python/protobuf/py2
- contrib/libs/protobuf_old
- contrib/libs/protobuf_old/src
)
NO_COMPILER_WARNINGS()
NO_LINT()
+CFLAGS(
+ -DPYTHON_PROTO2_CPP_IMPL_V2
+)
+
+SRCS(
+ google/protobuf/internal/api_implementation.cc
+ google/protobuf/pyext/descriptor.cc
+ google/protobuf/pyext/descriptor_containers.cc
+ google/protobuf/pyext/descriptor_database.cc
+ google/protobuf/pyext/descriptor_pool.cc
+ google/protobuf/pyext/extension_dict.cc
+ google/protobuf/pyext/field.cc
+ google/protobuf/pyext/map_container.cc
+ google/protobuf/pyext/message.cc
+ google/protobuf/pyext/message_factory.cc
+ google/protobuf/pyext/message_module.cc
+ google/protobuf/pyext/repeated_composite_container.cc
+ google/protobuf/pyext/repeated_scalar_container.cc
+ google/protobuf/pyext/unknown_fields.cc
+)
+
PY_REGISTER(
google.protobuf.internal._api_implementation
google.protobuf.pyext._message
@@ -66,27 +85,4 @@ PY_SRCS(
google/protobuf/util/__init__.py
)
-NO_LTO()
-
-CFLAGS(
- -DPYTHON_PROTO2_CPP_IMPL_V2
-)
-
-SRCS(
- google/protobuf/internal/api_implementation.cc
- google/protobuf/pyext/descriptor.cc
- google/protobuf/pyext/descriptor_containers.cc
- google/protobuf/pyext/descriptor_database.cc
- google/protobuf/pyext/descriptor_pool.cc
- google/protobuf/pyext/extension_dict.cc
- google/protobuf/pyext/field.cc
- google/protobuf/pyext/map_container.cc
- google/protobuf/pyext/message.cc
- google/protobuf/pyext/message_factory.cc
- google/protobuf/pyext/message_module.cc
- google/protobuf/pyext/repeated_composite_container.cc
- google/protobuf/pyext/repeated_scalar_container.cc
- google/protobuf/pyext/unknown_fields.cc
-)
-
END()