Start reducing our reliance on autotools
This commit updates a few of our CI scripts to build protoc using Bazel
instead of autotools. I also updated the setuptools and Rake build
configs to look for protoc under bazel-bin/ so that they will
preferentially use a Bazel-built protoc binary. The goal is to start
chipping away at our use of autotools in preparation for eventually
dropping autotools support.
* Eliminated git_repository() in favor of HTTP archives.
Also factored out logic for github archives into its own macro.
* Sorted entries and ran buildifier.
* Removed the import of git_repository.
- Run for all Apple configurations/platforms.
- Limit the action to only run when the ObjC source change.
- Document why the CocoaPods doesn't run the tests during the validation.
The kokoro objectivec_cocoapods_integration configuration can likely be retired
by retiring this.
* WIP.
* Restore deleted __init__.py files.
* Updated version of upb.
* Moved upb from a submodule to a Bazel dep.
* Updated to new upb which can tolerate missing system_python.
* Updated to a new upb.
This change adds `rules_pkg`-based targets that will produce source distribution archives, similar to `make dist`.
These rules produce nearly the same outputs as `make dist`. However, there are some differences and caveats:
1. The outputs do not contain vendored googletest sources.
2. You have to run `autogen.sh` before `blaze build pkg:all`. This produces several autotools-related files directly into the source tree.
3. The output .zip files do not have a directory prefix like `protobuf-3.20.1-rc-1` (this will be addressed after [Substitute package variables in `pkg_zip#package_dir`. bazelbuild/rules_pkg#577](https://github.com/bazelbuild/rules_pkg/pull/577); the tar files do have this prefix, though.)
4. One file is missing from the archives, which is produced during the `make` build: benchmarks/gogo/cpp_no_group/cpp_benchmark.cc
5. In several places, I have explicitly excluded some files that are not in the autotools distribution outputs. I think most of those files should probably be included, but for now, I'm aiming for parity with `make dist`. These are marked with comments, so it should be easy to clean them up later.
Previously it was releasing content from main/master, not the
release branch!
I fixed this by not checking out a separate copy of protobuf.
Also updated the composer.json so we don't need to rewrite it with
sed.
* Avoid exporting build tree targets to installation directory
`export(TARGETS ...)` is meant to allow for build trees to be found
from other projects, however, writing the file to an installation
directory causes buildtree paths to be hardcoded in the installed
protobuf-targets.cmake
* Install protobuf-targets.cmake from target, not build tree
This allows for installation prefixes to match the intended
installation directories, instead of being copied from
the build tree.
This change moves the `pkg_*` rules into the `//pkg` package, which cleans up the root package.
It also adds an experimental `cc_dist_library` rule, which is similar to Bazel's `cc_import` rule. The goal of `cc_dist_library` is to produce output libraries from several targets. For example, splitting `//:protobuf` into multiple targets means that `bazel-bin/libprotobuf.a` won't contain all of the objects. The `cc_dist_library` creates a single library from several different `cc_library` targets. This may be useful for future packaging targets.