protobuf protobuf-python: Upgrade to 3.7.0

CQ-DEPEND=CL:1528691,CL:1531183,CL:1531185,CL:1531336
BUG=chromium:937442
TEST=PreCQ passes, build_packages and build_image work

Change-Id: Ibc7aa899f2ac2ecb892150bff8cb9d864a7e0e73
Reviewed-on: https://chromium-review.googlesource.com/1526361
Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com>
Tested-by: Allen Webb <allenwebb@google.com>
Reviewed-by: Allen Webb <allenwebb@google.com>
diff --git a/dev-python/protobuf-python/Manifest b/dev-python/protobuf-python/Manifest
new file mode 100644
index 0000000..566b840
--- /dev/null
+++ b/dev-python/protobuf-python/Manifest
@@ -0,0 +1 @@
+DIST protobuf-3.7.0.tar.gz 4784675 BLAKE2B cb65f3384c7b0f015ab48081764ee9e01ad4bcffdb4903025774d95626f804fb9f72532371cc090de2b2e86c4bb0eb8f618d1cf8ff4d9c54d281c45a43b1cd8b SHA512 c570ece1d42706982dd87f601af6b3dd1d788d1b150b543190d10d2f070c67f0d006726ec4eafd3b9234a679e7ef77ac9d97749414f53f619287a1f23a0b739c
diff --git a/dev-python/protobuf-python/files/protobuf-python-3.7.0-google.protobuf.pyext._message.MessageMeta.patch b/dev-python/protobuf-python/files/protobuf-python-3.7.0-google.protobuf.pyext._message.MessageMeta.patch
new file mode 100644
index 0000000..8e3ad0d
--- /dev/null
+++ b/dev-python/protobuf-python/files/protobuf-python-3.7.0-google.protobuf.pyext._message.MessageMeta.patch
@@ -0,0 +1,26 @@
+diff --git a/python/google/protobuf/pyext/message.cc b/python/google/protobuf/pyext/message.cc
+index 44df9fbc..be207267 100644
+--- a/python/google/protobuf/pyext/message.cc
++++ b/python/google/protobuf/pyext/message.cc
+@@ -399,12 +399,6 @@ static PyObject* GetExtensionsByNumber(CMessageClass *self, void *closure) {
+   return result.release();
+ }
+ 
+-static PyGetSetDef Getters[] = {
+-  {"_extensions_by_name", (getter)GetExtensionsByName, NULL},
+-  {"_extensions_by_number", (getter)GetExtensionsByNumber, NULL},
+-  {NULL}
+-};
+-
+ // Compute some class attributes on the fly:
+ // - All the _FIELD_NUMBER attributes, for all fields and nested extensions.
+ // Returns a new reference, or NULL with an exception set.
+@@ -479,7 +473,7 @@ static PyTypeObject _CMessageClass_Type = {
+   0,                                   // tp_iternext
+   0,                                   // tp_methods
+   0,                                   // tp_members
+-  message_meta::Getters,               // tp_getset
++  0,                                   // tp_getset
+   0,                                   // tp_base
+   0,                                   // tp_dict
+   0,                                   // tp_descr_get
diff --git a/dev-python/protobuf-python/metadata.xml b/dev-python/protobuf-python/metadata.xml
new file mode 100644
index 0000000..0b20fcb
--- /dev/null
+++ b/dev-python/protobuf-python/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+	<maintainer type="person">
+		<email>arfrever.fta@gmail.com</email>
+		<name>Arfrever Frehtes Taifersar Arahesis</name>
+	</maintainer>
+	<maintainer type="project">
+		<email>proxy-maint@gentoo.org</email>
+		<name>Proxy Maintainers</name>
+	</maintainer>
+	<maintainer type="project">
+		<email>python@gentoo.org</email>
+		<name>Python</name>
+	</maintainer>
+	<slots>
+		<subslots>Soname version number of Protobuf</subslots>
+	</slots>
+	<upstream>
+		<remote-id type="github">protocolbuffers/protobuf</remote-id>
+	</upstream>
+</pkgmetadata>
diff --git a/dev-python/protobuf-python/protobuf-python-3.7.0-r1.ebuild b/dev-python/protobuf-python/protobuf-python-3.7.0-r1.ebuild
new file mode 120000
index 0000000..dd4f5d1
--- /dev/null
+++ b/dev-python/protobuf-python/protobuf-python-3.7.0-r1.ebuild
@@ -0,0 +1 @@
+protobuf-python-3.7.0.ebuild
\ No newline at end of file
diff --git a/dev-python/protobuf-python/protobuf-python-3.7.0.ebuild b/dev-python/protobuf-python/protobuf-python-3.7.0.ebuild
new file mode 100644
index 0000000..4b5ffd9
--- /dev/null
+++ b/dev-python/protobuf-python/protobuf-python-3.7.0.ebuild
@@ -0,0 +1,50 @@
+# Copyright 2008-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI="6"
+PYTHON_COMPAT=(python{2_7,3_4,3_5,3_6,3_7})
+
+inherit distutils-r1
+
+DESCRIPTION="Google's Protocol Buffers - Python bindings"
+HOMEPAGE="https://developers.google.com/protocol-buffers/ https://github.com/protocolbuffers/protobuf"
+SRC_URI="https://github.com/protocolbuffers/protobuf/archive/v${PV}.tar.gz -> protobuf-${PV}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0/18"
+KEYWORDS="*"
+IUSE=""
+
+DEPEND="${PYTHON_DEPS}
+	~dev-libs/protobuf-${PV}
+	dev-python/namespace-google[${PYTHON_USEDEP}]
+	dev-python/setuptools[${PYTHON_USEDEP}]
+	dev-python/six[${PYTHON_USEDEP}]"
+RDEPEND="${DEPEND}
+	!<dev-libs/protobuf-3[python(-)]"
+
+S="${WORKDIR}/protobuf-${PV}/python"
+
+python_prepare_all() {
+	eapply -p2 "${FILESDIR}/${PN}-3.7.0-google.protobuf.pyext._message.MessageMeta.patch"
+	distutils-r1_python_prepare_all
+}
+
+python_configure_all() {
+	mydistutilsargs=(--cpp_implementation)
+}
+
+python_compile() {
+	python_is_python3 || local -x CXXFLAGS="${CXXFLAGS} -fno-strict-aliasing"
+	distutils-r1_python_compile
+}
+
+python_test() {
+	esetup.py test
+}
+
+python_install_all() {
+	distutils-r1_python_install_all
+
+	find "${D}" -name "*.pth" -delete || die
+}