diff options
author | spreis <spreis@yandex-team.com> | 2024-03-28 11:07:37 +0300 |
---|---|---|
committer | spreis <spreis@yandex-team.com> | 2024-03-28 11:17:45 +0300 |
commit | 2de742ce97267f0469cf0c9bd384488c91442bce (patch) | |
tree | 15daa45ea6fb7ecfd1e07759c7bbd6fba92075a6 /contrib/python | |
parent | 48212452a70da88a5e4b814979dd82f22379801f (diff) | |
download | ydb-2de742ce97267f0469cf0c9bd384488c91442bce.tar.gz |
Revertcommits
Эта история про второй питон подразнесла нам графогенерацию . Нам придется этот коммит откатить.
Суть проблемы в том, что генерация для 2го и 3го раньше была одной и той же командой. Ты сделал так, что команда стала разной, но аутпут этих двух команд одинаковый. Имя результата команды является ключом и сейчас берётся какая-то рандомная команда из двух. При этом команда влияет на UID и все UIDы питонячей протогенерации мигают. От фатальных проблем нас спасает только то, что protobuf-ы на самом деле одинаковые. И даже это не факт - сейчас ты патчишь какие-то рандомные либы включая таковые для 3го питона.
Мы тут конечно редиски - мы в целом контролируем клэши аутпутов, но не в мультимодулях - там часто бывает что одна и та же команда оказывается в нескольких вариантах мультимодуля (потому что оно по дефолту сейчас так себя ведёт). Мы хотим это зачинить (сделать отдельный подмодуль под кодген и отселить всякие RUN_PROGRAM туда) - но это много работы и мы не успели.
План такой:
1. мы откатываем твой фикс
2. отдельно стабилизируем раздельные команды генерации для 2го и 3го питона
3. накатываем обратно отревеченные тут правки.
916a5456c4e901ab2cda0841b4167e16397e83c4
Diffstat (limited to 'contrib/python')
-rw-r--r-- | contrib/python/protobuf/py2/google/protobuf/pyext/descriptor_pool.cc | 35 | ||||
-rw-r--r-- | contrib/python/protobuf/py2/ya.make | 52 |
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() |