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).