grpc/third_party
Esun Kim dc8c0a2c2b Update abseil to lts_2020_02_25 2020-02-26 00:09:41 -08:00
..
abseil-cpp@b832dce848 Update abseil to lts_2020_02_25 2020-02-26 00:09:41 -08:00
address_sorting Format all Bazel files with buildifier 2019-11-05 14:03:52 -08:00
benchmark@090faecb45 Update Google Benchmark v1.5.0 to get CMake < 3.6 fix 2019-08-20 13:23:46 -07:00
bloaty@73594cde8c Submodule bloaty mcbloatface 2017-10-04 10:49:20 -07:00
boringssl-with-bazel@1c2769383f Revert "Revert "Reintroduce #21527 (boringssl submodule unification)"" 2020-01-29 09:18:51 -05:00
cares Added source of new CPUs 2019-08-14 22:26:37 -07:00
envoy-api@c83ed7ea9e Update envoy API to HEAD 2019-10-24 17:21:26 -07:00
gflags@28f50e0fed dependency bump for gflags 2019-03-15 18:13:45 -07:00
googleapis@80ed4d0bbf Add envoy and its dependent repos as submodules in third_party 2018-11-14 11:07:47 -08:00
googletest@c9ccac7cb7 Update googletest version to fix BoringSSL support 2019-08-22 12:42:18 -07:00
libuv@15ae750151 move submodule libuv to v1.34.0 2020-01-07 17:09:58 -08:00
objective_c Resolve conflict with master branch 2019-11-05 14:03:53 -08:00
protobuf@fe1790ca0d update third_party/protobuf to v3.11.2 2020-01-15 04:42:17 -05:00
protoc-gen-validate@e143189bf6 Add envoy and its dependent repos as submodules in third_party 2018-11-14 11:07:47 -08:00
py [bazel] Add fixes for --incompatible_load_proto_rules_from_bzl 2020-02-05 19:58:30 +01:00
toolchains Merge branch 'master' of https://github.com/grpc/grpc into blaze_modifications 2019-11-06 11:00:47 -08:00
udpa@94324803a4 Add API for accessing per-call backend metric data in LB policies. 2019-08-28 12:48:06 -07:00
upb [bazel] Add fixes for --incompatible_load_proto_rules_from_bzl 2020-02-05 19:58:30 +01:00
zlib@cacf7f1d4e Update to avoid ubsan failure 2017-04-19 15:24:59 -07:00
BUILD Add a new submodule "libuv" 2020-01-03 16:30:39 -08:00
README.md add README.md for third_party 2020-02-06 10:18:30 +01:00
constantly.BUILD Add python bazel deps needed to run resolver component tests 2018-02-14 14:06:00 -08:00
cython.BUILD Basic setup to build gRPC Python with Bazel 2018-07-27 14:39:14 +00:00
enum34.BUILD Separate py_grpc_library and py_proto_library. 2019-08-01 15:16:22 -07:00
futures.BUILD Separate py_grpc_library and py_proto_library. 2019-08-01 15:16:22 -07:00
incremental.BUILD Add python bazel deps needed to run resolver component tests 2018-02-14 14:06:00 -08:00
libuv.BUILD Fix sanity checks and "really" add the libuv submodule to third_party. 2020-01-07 15:44:42 -08:00
six.BUILD Conform to protobuf's usage of six 2020-01-15 04:43:59 -05:00
twisted.BUILD Add python bazel deps needed to run resolver component tests 2018-02-14 14:06:00 -08:00
yaml.BUILD Add python bazel deps needed to run resolver component tests 2018-02-14 14:06:00 -08:00
zlib.BUILD Update zlib dependency 2019-05-29 17:07:00 -07:00
zope_interface.BUILD Add python bazel deps needed to run resolver component tests 2018-02-14 14:06:00 -08:00

README.md

Third-party libraries

gRPC depends on several third-party libraries, their source code is available (usually as a git submodule) in this directory.

Guidelines on updating submodules

  • IMPORTANT: whenever possible, try to only update to a stable release of a library (= not to master / random commit). Depending on unreleased revisions makes gRPC installation harder for users, as it forces them to always build the dependency from source and prevents them from using more convenient installation channels (linux packages, package managers etc.)

  • bazel BUILD uses a different dependency model - whenever updating a submodule, also update the revision in grpc_deps.bzl so that bazel and non-bazel builds stay in sync (this is actually enforced by a sanity check in some cases)

Considerations when adding a new third-party dependency

  • gRPC C++ needs to stay buildable/installable even if the submodules are not present (e.g. the tar.gz archive with gRPC doesn't contain the submodules), assuming that the dependencies are already installed. This is a requirement for being able to provide a reasonable install process (e.g. using cmake) and to support package managers for gRPC C++.

  • Adding a new dependency is a lot of work (both for us and for the users). We currently support multiple build systems (BAZEL, cmake, make, ...) so adding a new dependency usually requires updates in multiple build systems (often not trivial). The installation process also needs to continue to work (we do have distrib tests to test many of the possible installation scenarios, but they are not perfect). Adding a new dependency also usually affects the installation instructions that need to be updated. Also keep in mind that adding a new dependency can be quite disruptive for the users and community - it means that all users will need to update their projects accordingly (for C++ projects often non-trivial) and the community-provided C++ packages (e.g. vcpkg) will need to be updated as well.

Instructions for updating dependencies

Usually the process is

  1. update the submodule to selected commit (see guidance above)
  2. update the dependency in grpc_deps.bzl to the same commit
  3. update tools/run_tests/sanity/check_submodules.sh to make the sanity test pass
  4. (when needed) run tools/buildgen/generate_projects.sh to regenerate the generated files

Updating some dependencies requires extra care.

Updating third_party/boringssl-with bazel

  • Update the third_party/boringssl-with-bazel submodule to the latest master-with-bazel branch

  • Update boringssl dependency in grpc_deps.bzl to the same commit

  • Update tools/run_tests/sanity/check_submodules.sh with the same commit

  • Run tools/buildgen/generate_projects.sh to regenerate the generated files

  • Run tools/distrib/generate_grpc_shadow_boringssl_symbol_list.sh

  • Increment the boringssl podspec version number in templates/src/objective-c/BoringSSL-GRPC.podspec.template and templates/gRPC-Core.podspec.template. example

  • Run tools/buildgen/generate_projects.sh (yes, again)

Updating third_party/protobuf

See http://go/grpc-third-party-protobuf-update-instructions (internal only)