Preparations for updating Protobuf to 3.11.3

Partial commit for third_party/*, see #10723.

Signed-off-by: Philipp Wollermann <philwo@google.com>
diff --git a/third_party/protobuf/3.11.3.patch b/third_party/protobuf/3.11.3.patch
new file mode 100644
index 0000000..0e5c8c6
--- /dev/null
+++ b/third_party/protobuf/3.11.3.patch
@@ -0,0 +1,35 @@
+diff --git a/BUILD b/BUILD
+index 79871d621..5c347365e 100644
+--- a/BUILD
++++ b/BUILD
+@@ -26,7 +26,7 @@ config_setting(
+ # ZLIB configuration
+ ################################################################################
+ 
+-ZLIB_DEPS = ["@zlib//:zlib"]
++ZLIB_DEPS = ["@io_bazel//third_party/zlib"]
+ 
+ ################################################################################
+ # Protobuf Runtime Library
+@@ -787,9 +787,9 @@ java_library(
+     visibility = ["//visibility:public"],
+     deps = [
+         "protobuf_java",
+-        "//external:error_prone_annotations",
+-        "//external:gson",
+-        "//external:guava",
++        "@io_bazel//third_party:error_prone_annotations",
++        "@io_bazel//third_party:gson",
++        "@io_bazel//third_party:guava",
+     ],
+ )
+ 
+@@ -900,7 +900,7 @@ py_proto_library(
+     py_extra_srcs = glob(["python/**/__init__.py"]),
+     py_libs = [
+         ":python_srcs",
+-        "@six//:six",
++        "@io_bazel//third_party/py/six",
+     ],
+     srcs_version = "PY2AND3",
+     visibility = ["//visibility:public"],
diff --git a/third_party/protobuf/BUILD b/third_party/protobuf/BUILD
index c0129d7..9ff406c 100644
--- a/third_party/protobuf/BUILD
+++ b/third_party/protobuf/BUILD
@@ -1,8 +1,10 @@
-package(default_visibility = ["//visibility:public"])
+load(":proto_alias.bzl", "proto_alias")
 
 licenses(["notice"])
 
-load(":proto_alias.bzl", "proto_alias")
+package(default_visibility = ["//visibility:public"])
+
+exports_files(["3.11.3.patch"])
 
 PROTOBUF_VERSION = "3.6.1"
 
diff --git a/third_party/protobuf/README.md b/third_party/protobuf/README.md
deleted file mode 100644
index a293972..0000000
--- a/third_party/protobuf/README.md
+++ /dev/null
@@ -1,106 +0,0 @@
-# Updating protobuf
-
-You will create and merge the following Pull Requests.
-
-## 1st PR: add the new protobuf version to the Bazel tree
-
-1.  Fetch the desired protobuf version and copy it in a folder `new_proto` under
-   `third_party/protobuf`.
-
-    **Example:** to upgrade to 3.6.1, download and unpack
-    [protobuf-all-3.6.1.zip](https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.zip).
-
-1.  Build the Java proto library from source and, in case you cloned an upstream version
-    of protobuf, remove the .git folders:
-
-    ```
-    cd third_party/protobuf/new_proto
-    bazel build :protobuf_java :protobuf_java_util
-    cp bazel-bin/libprotobuf_java.jar .
-    cp bazel-bin/libprotobuf_java_util.jar .
-    bazel clean --expunge
-    rm -rf .git .gitignore .gitmodules
-    ```
-
-    **Reason:** Bazel uses upstream protobuf from source, except for Java, as Bazel's bootstrapping
-    scripts currently don't build protobuf Java when bootstrapping Bazel but use pre-built jars
-    instead.
-
-1.  Modify protobuf's `BUILD` file to not build java from source, but to use the jars instead:
-
-    1.  In the BUILD file delete the rules listed under `Java support`.
-
-    1.  From the `third_party/protobuf/<old_proto>/BUILD` file copy the rules under the
-        "Modifications made by bazel" section to the new BUILD file. The java rules in there should
-        have the same names as the ones you just deleted under "Java support". You might need to
-        update the names of the jars in the rules sources to the ones you just build.
-
-1.  Copy `third_party/protobuf/<old_proto>/com_google_protobuf_java.BUILD` to the new directory.
-
-1.  From `third_party/protobuf/<old_proto>/util/python/BUILD`,
-    `third_party/protobuf/<old_proto>/examples/BUILD`, and
-    `third_party/protobuf/<old_proto>/third_party/googletest/BUILD.bazel`:
-    copy the `licenses` declaration and the `srcs` filegroup to the corresponding file under
-    `third_party/protobuf/<new_proto>`.
-
-1.  Modify the new protobuf to be compatible with #9006 (until upstream protobuf migrates):
-    In the `BUILD`, `protobuf.bzl`, and `six.BUILD` files under `third_party/protobuf/<new_proto>`,
-    copy the line that loads from `@rules_python` along with its explanatory comment, from the
-    corresponding files in the old proto directory. (See also #9019.)
-
-1.  In `third_party/protobuf/<new_proto>/BUILD`, in the `srcs` filegroup rule, update the version
-    number referring to the newly added `srcs` rules.
-
-1.  Rename `third_party/protobuf/<new_proto>` directory according to the protobuf version number.
-
-1.  In `third_party/protobuf/BUILD`:
-
-    1.  Add a new variable `_NEW_PROTOBUF_VERSION`, set to value of the version.
-
-    1.  In the `srcs` filegroup rule, add:
-
-        ```diff
-         srcs = [
-             "//third_party/protobuf/" + PROTOBUF_VERSION + ":srcs",
-        +    "//third_party/protobuf/" + _NEW_PROTOBUF_VERSION + ":srcs",
-         ],
-        ```
-
-1.  Create a PR of these changes and merge it directly to
-    https://bazel.googlesource.com/bazel/+/master (without the usual process of importing it to
-    the Google-internal version control).
-
-## 2nd and 3rd PRs: update references in the Bazel tree
-
-1.  In `third_party/protobuf/BUILD`:
-
-    1.  rename `PROTOBUF_VERSION` to `_OLD_PROTOBUF_VERSION`
-
-    1.  rename `_NEW_PROTOBUF_VERSION` to `PROTOBUF_VERSION`
-
-1.  In the root `WORKSPACE` file update relative paths of protobuf to point to the new version.
-
-1.  Update version number in `src/main/protobuf/BUILD` and `src/test/shell/testenv.sh`.
-
-1.  Update the current version in this file.
-
-1.  Create a PR of these changes and get it imported. Some files won't be imported (those that are
-    only hosted on GitHub); this is expected.
-
-2.  Wait for the imported PR to be pushed back to GitHub. Rebase the PR from the previous step, and
-    merge it to https://bazel.googlesource.com/bazel/+/master .
-
-## 4th PR: remove the old directory
-
-1.  Delete the `third_party/protobuf/<old_proto>` directory.
-
-1.  Remove `_OLD_PROTOBUF_VERSION` from `third_party/protobuf/BUILD`.
-
-1.  Create a PR of these changes and merge it directly to
-    https://bazel.googlesource.com/bazel/+/master .
-
-**Update this file if you found these instructions to be wrong or incomplete.**
-
-# Current protobuf version
-
-The current version of protobuf is [3.6.1](https://github.com/google/protobuf/releases/tag/v3.6.1).