Patched protobuf repo sufficiently for things to work.
diff --git a/python/BUILD b/python/BUILD
index 68cd74a..a00b0d0 100644
--- a/python/BUILD
+++ b/python/BUILD
@@ -93,10 +93,28 @@
cmd = "cp $< $@",
)
+genrule(
+ name = "api_implementation_ext",
+ srcs = [":api_implementation"],
+ outs = ["google/protobuf/internal/_api_implementation" + EXT_SUFFIX],
+ cmd = "cp $< $@",
+)
+
py_test(
name = "minimal_test",
- srcs = ["minimal_test.py"],
- data = [":message_ext"],
+ #srcs = ["minimal_test.py"],
+ srcs = [
+ "minimal_test.py",
+ "@com_google_protobuf//:python_tests",
+ ],
+ deps = [
+ "@com_google_protobuf//:python_tests",
+ ],
+ data = [
+ "@com_google_protobuf//:python_tests",
+ ":message_ext",
+ ":api_implementation_ext",
+ ],
imports = ["."],
legacy_create_init = False,
)
diff --git a/python/message.c b/python/message.c
index 728b116..e486fde 100644
--- a/python/message.c
+++ b/python/message.c
@@ -332,7 +332,7 @@
return ok >= 0;
}
-static bool PyUpb_CMessage_InitRepeatedAttribute() {
+static bool PyUpb_CMessage_InitRepeatedAttribute(void) {
// TODO(haberman): disabled until repeated container is in.
// PyObject* repeated = PyUpb_CMessage_GetAttr(_self, name);
// PyObject* tmp = PyUpb_RepeatedContainer_Extend(repeated, value);
@@ -1537,7 +1537,7 @@
PyUpb_MessageMeta_Slots,
};
-static PyObject* PyUpb_MessageMeta_CreateType() {
+static PyObject* PyUpb_MessageMeta_CreateType(void) {
PyObject* bases = Py_BuildValue("(O)", &PyType_Type);
if (!bases) return NULL;
PyUpb_MessageMeta_Spec.basicsize =
diff --git a/python/minimal_test.py b/python/minimal_test.py
index 13f1124..32b8333 100644
--- a/python/minimal_test.py
+++ b/python/minimal_test.py
@@ -29,6 +29,7 @@
import unittest
from google.protobuf.pyext import _message
+from google.protobuf.internal import api_implementation
class TestMessageExtension(unittest.TestCase):
@@ -48,9 +49,11 @@
def test_lib_is_upb(self):
# Ensure we are not pulling in a different protobuf library on the
# system.
+ print(_message._IS_UPB)
self.assertTrue(_message._IS_UPB)
+ self.assertEqual(api_implementation.Type(), "cpp")
-TestMessageExtension.test_descriptor_pool.__unittest_expecting_failure__ = True
+#TestMessageExtension.test_descriptor_pool.__unittest_expecting_failure__ = True
if __name__ == '__main__':
diff --git a/python/protobuf.c b/python/protobuf.c
index afe92c6..09b1552 100644
--- a/python/protobuf.c
+++ b/python/protobuf.c
@@ -288,7 +288,8 @@
state->obj_cache = PyUpb_WeakMap_New();
if (!PyUpb_InitDescriptorContainers(m) || !PyUpb_InitDescriptorPool(m) ||
- !PyUpb_InitDescriptor(m) || !PyUpb_InitArena(m)) {
+ !PyUpb_InitDescriptor(m) || !PyUpb_InitArena(m) ||
+ !PyUpb_InitMessage(m)) {
Py_DECREF(m);
return NULL;
}