summaryrefslogtreecommitdiffstats
path: root/contrib/python/grpcio/py3
diff options
context:
space:
mode:
authormaxim-yurchuk <[email protected]>2024-10-09 12:29:46 +0300
committermaxim-yurchuk <[email protected]>2024-10-09 13:14:22 +0300
commit9731d8a4bb7ee2cc8554eaf133bb85498a4c7d80 (patch)
treea8fb3181d5947c0d78cf402aa56e686130179049 /contrib/python/grpcio/py3
parenta44b779cd359f06c3ebbef4ec98c6b38609d9d85 (diff)
publishFullContrib: true for ydb
<HIDDEN_URL> commit_hash:c82a80ac4594723cebf2c7387dec9c60217f603e
Diffstat (limited to 'contrib/python/grpcio/py3')
-rw-r--r--contrib/python/grpcio/py3/.dist-info/METADATA141
-rw-r--r--contrib/python/grpcio/py3/.dist-info/top_level.txt1
-rw-r--r--contrib/python/grpcio/py3/.yandex_meta/__init__.py79
-rw-r--r--contrib/python/grpcio/py3/.yandex_meta/devtools.copyrights.report304
-rw-r--r--contrib/python/grpcio/py3/.yandex_meta/devtools.licenses.report261
-rw-r--r--contrib/python/grpcio/py3/.yandex_meta/licenses.list.txt1318
-rw-r--r--contrib/python/grpcio/py3/.yandex_meta/override.nix18
-rw-r--r--contrib/python/grpcio/py3/.yandex_meta/setup.patch16
-rw-r--r--contrib/python/grpcio/py3/_parallel_compile_patch.py66
-rw-r--r--contrib/python/grpcio/py3/_spawn_patch.py60
-rw-r--r--contrib/python/grpcio/py3/commands.py351
-rw-r--r--contrib/python/grpcio/py3/grpc_core_dependencies.py1502
-rw-r--r--contrib/python/grpcio/py3/grpc_version.py17
-rw-r--r--contrib/python/grpcio/py3/patches/05-ssl.patch50
-rw-r--r--contrib/python/grpcio/py3/patches/14-fix-cimport.patch11
-rw-r--r--contrib/python/grpcio/py3/support.py117
16 files changed, 4312 insertions, 0 deletions
diff --git a/contrib/python/grpcio/py3/.dist-info/METADATA b/contrib/python/grpcio/py3/.dist-info/METADATA
new file mode 100644
index 00000000000..a679047cb5e
--- /dev/null
+++ b/contrib/python/grpcio/py3/.dist-info/METADATA
@@ -0,0 +1,141 @@
+Metadata-Version: 2.1
+Name: grpcio
+Version: 1.54.2
+Summary: HTTP/2-based RPC framework
+Home-page: https://grpc.io
+Author: The gRPC Authors
+Author-email: [email protected]
+License: Apache License 2.0
+Project-URL: Source Code, https://github.com/grpc/grpc
+Project-URL: Bug Tracker, https://github.com/grpc/grpc/issues
+Project-URL: Documentation, https://grpc.github.io/grpc/python
+Classifier: Development Status :: 5 - Production/Stable
+Classifier: Programming Language :: Python
+Classifier: Programming Language :: Python :: 3
+Classifier: Programming Language :: Python :: 3.7
+Classifier: Programming Language :: Python :: 3.8
+Classifier: Programming Language :: Python :: 3.9
+Classifier: Programming Language :: Python :: 3.10
+Classifier: Programming Language :: Python :: 3.11
+Classifier: License :: OSI Approved :: Apache Software License
+Requires-Python: >=3.7
+Description-Content-Type: text/x-rst
+License-File: LICENSE
+Provides-Extra: protobuf
+Requires-Dist: grpcio-tools (>=1.54.2) ; extra == 'protobuf'
+
+gRPC Python
+===========
+
+|compat_check_pypi|
+
+Package for gRPC Python.
+
+.. |compat_check_pypi| image:: https://python-compatibility-tools.appspot.com/one_badge_image?package=grpcio
+ :target: https://python-compatibility-tools.appspot.com/one_badge_target?package=grpcio
+
+Supported Python Versions
+-------------------------
+Python >= 3.7
+
+Installation
+------------
+
+gRPC Python is available for Linux, macOS, and Windows.
+
+Installing From PyPI
+~~~~~~~~~~~~~~~~~~~~
+
+If you are installing locally...
+
+::
+
+ $ pip install grpcio
+
+Else system wide (on Ubuntu)...
+
+::
+
+ $ sudo pip install grpcio
+
+If you're on Windows make sure that you installed the :code:`pip.exe` component
+when you installed Python (if not go back and install it!) then invoke:
+
+::
+
+ $ pip.exe install grpcio
+
+Windows users may need to invoke :code:`pip.exe` from a command line ran as
+administrator.
+
+n.b. On Windows and on Mac OS X one *must* have a recent release of :code:`pip`
+to retrieve the proper wheel from PyPI. Be sure to upgrade to the latest
+version!
+
+Installing From Source
+~~~~~~~~~~~~~~~~~~~~~~
+
+Building from source requires that you have the Python headers (usually a
+package named :code:`python-dev`).
+
+::
+
+ $ export REPO_ROOT=grpc # REPO_ROOT can be any directory of your choice
+ $ git clone -b RELEASE_TAG_HERE https://github.com/grpc/grpc $REPO_ROOT
+ $ cd $REPO_ROOT
+ $ git submodule update --init
+
+ # For the next two commands do `sudo pip install` if you get permission-denied errors
+ $ pip install -rrequirements.txt
+ $ GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install .
+
+You cannot currently install Python from source on Windows. Things might work
+out for you in MSYS2 (follow the Linux instructions), but it isn't officially
+supported at the moment.
+
+Troubleshooting
+~~~~~~~~~~~~~~~
+
+Help, I ...
+
+* **... see a** :code:`pkg_resources.VersionConflict` **when I try to install
+ grpc**
+
+ This is likely because :code:`pip` doesn't own the offending dependency,
+ which in turn is likely because your operating system's package manager owns
+ it. You'll need to force the installation of the dependency:
+
+ :code:`pip install --ignore-installed $OFFENDING_DEPENDENCY`
+
+ For example, if you get an error like the following:
+
+ ::
+
+ Traceback (most recent call last):
+ File "<string>", line 17, in <module>
+ ...
+ File "/usr/lib/python2.7/dist-packages/pkg_resources.py", line 509, in find
+ raise VersionConflict(dist, req)
+ pkg_resources.VersionConflict: (six 1.8.0 (/usr/lib/python2.7/dist-packages), Requirement.parse('six>=1.10'))
+
+ You can fix it by doing:
+
+ ::
+
+ sudo pip install --ignore-installed six
+
+* **... see the following error on some platforms**
+
+ ::
+
+ /tmp/pip-build-U8pSsr/cython/Cython/Plex/Scanners.c:4:20: fatal error: Python.h: No such file or directory
+ #include "Python.h"
+ ^
+ compilation terminated.
+
+ You can fix it by installing `python-dev` package. i.e
+
+ ::
+
+ sudo apt-get install python-dev
+
diff --git a/contrib/python/grpcio/py3/.dist-info/top_level.txt b/contrib/python/grpcio/py3/.dist-info/top_level.txt
new file mode 100644
index 00000000000..3b2fe54cba7
--- /dev/null
+++ b/contrib/python/grpcio/py3/.dist-info/top_level.txt
@@ -0,0 +1 @@
+grpc
diff --git a/contrib/python/grpcio/py3/.yandex_meta/__init__.py b/contrib/python/grpcio/py3/.yandex_meta/__init__.py
new file mode 100644
index 00000000000..d519c459ee0
--- /dev/null
+++ b/contrib/python/grpcio/py3/.yandex_meta/__init__.py
@@ -0,0 +1,79 @@
+import os
+import shutil
+
+from devtools.yamaker.arcpath import ArcPath
+from devtools.yamaker.modules import py_srcs, Linkable, Switch
+from devtools.yamaker.project import NixProject
+from devtools.yamaker import python
+
+
+def post_install(self):
+ python.extract_dist_info(self)
+
+ # pypi archive with grpcio contains cpp core and python files
+ # Python files in this archive are located in src/python/grpcio
+ # In order to exclude additional PEERDIR usage in Arcadia
+ # let's move src/python/grpcio content directly to contrib/python/grpcio/py3
+ python_source_location = os.path.join(self.dstdir, "src/python/grpcio")
+ grpcio_files = os.listdir(python_source_location)
+
+ # move all files to root
+ for elem in grpcio_files:
+ shutil.move(os.path.join(python_source_location, elem), self.dstdir)
+
+ # remove unnecessary folder src
+ shutil.rmtree(os.path.join(self.dstdir, "src"))
+
+ # Collect python files but remove files for pypi build and
+ # yamaker related files
+ with self.yamakes["."] as pb:
+ py_src_common = py_srcs(
+ self.dstdir,
+ remove=[
+ ".yandex_meta/__init__.py", # yamaker settings
+ "grpc_core_dependencies.py",
+ "support.py",
+ "commands.py",
+ "_spawn_patch.py",
+ "_parallel_compile_patch.py",
+ "grpc_version.py",
+ ],
+ )
+
+ pb.to_py_library(
+ module="PY3_LIBRARY",
+ PY_SRCS=py_src_common,
+ PEERDIR=["contrib/libs/grpc", "contrib/python/six"],
+ ADDINCL=[
+ "${ARCADIA_BUILD_ROOT}/contrib/libs/grpc",
+ "contrib/libs/grpc",
+ "contrib/libs/grpc/include",
+ ArcPath("contrib/python/grpcio/py3", FOR="cython"),
+ ],
+ )
+
+ # Function pointer is not sanitized for ubsan.
+ # This decision has been done in original grpc repo.
+ # see https://github.com/grpc/grpc/blob/v1.45.0/tools/bazel.rc#L103
+ pb.after(
+ "ADDINCL",
+ Switch({'SANITIZER_TYPE == undefined': Linkable(CXXFLAGS=["-fno-sanitize=function"])}),
+ )
+
+
+grpcio = NixProject(
+ owners=["g:python-contrib"],
+ projects=["python/grpcio"],
+ arcdir="contrib/python/grpcio/py3",
+ nixattr=python.make_nixattr("grpcio"),
+ ignore_targets=[
+ "cygrpc.cpython-310-x86_64-linux-gnu",
+ ],
+ copy_sources=[
+ "src/python/grpcio/**/*.py",
+ "src/python/grpcio/**/*.pxi",
+ "src/python/grpcio/**/*.pxd",
+ "src/python/grpcio/**/*.pyx",
+ ],
+ post_install=post_install,
+)
diff --git a/contrib/python/grpcio/py3/.yandex_meta/devtools.copyrights.report b/contrib/python/grpcio/py3/.yandex_meta/devtools.copyrights.report
new file mode 100644
index 00000000000..40782daa6a9
--- /dev/null
+++ b/contrib/python/grpcio/py3/.yandex_meta/devtools.copyrights.report
@@ -0,0 +1,304 @@
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $ RENAME {original license id} TO {new license id} # user comments - (optional) use {new license id} instead {original license id} in ya.make files
+# $ # user comments
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP COPYRIGHT_SERVICE_LABEL 0f2ee97b72f8652f2f1b888d86348121
+BELONGS ya.make
+ License text:
+ \# Copyright 2015 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ commands.py [1:1]
+ grpc/_cython/__init__.py [1:1]
+ grpc/_cython/_cygrpc/__init__.py [1:1]
+ grpc/_cython/_cygrpc/call.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/call.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/channel.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/channel.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/completion_queue.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/completion_queue.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/credentials.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/credentials.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/grpc.pxi [1:1]
+ grpc/_cython/_cygrpc/records.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/records.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/server.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/server.pyx.pxi [1:1]
+ grpc/_cython/cygrpc.pxd [1:1]
+ grpc/_cython/cygrpc.pyx [1:1]
+ grpc/_plugin_wrapping.py [1:1]
+ grpc/_utilities.py [1:1]
+ grpc/beta/__init__.py [1:1]
+ grpc/beta/interfaces.py [1:1]
+ grpc/beta/utilities.py [1:1]
+ grpc/framework/__init__.py [1:1]
+ grpc/framework/common/__init__.py [1:1]
+ grpc/framework/common/cardinality.py [1:1]
+ grpc/framework/common/style.py [1:1]
+ grpc/framework/foundation/__init__.py [1:1]
+ grpc/framework/foundation/abandonment.py [1:1]
+ grpc/framework/foundation/callable_util.py [1:1]
+ grpc/framework/foundation/future.py [1:1]
+ grpc/framework/foundation/logging_pool.py [1:1]
+ grpc/framework/foundation/stream.py [1:1]
+ grpc/framework/foundation/stream_util.py [1:1]
+ grpc/framework/interfaces/__init__.py [1:1]
+ grpc/framework/interfaces/base/__init__.py [1:1]
+ grpc/framework/interfaces/base/base.py [1:1]
+ grpc/framework/interfaces/base/utilities.py [1:1]
+ grpc/framework/interfaces/face/__init__.py [1:1]
+ grpc/framework/interfaces/face/face.py [1:1]
+ grpc/framework/interfaces/face/utilities.py [1:1]
+ grpc_core_dependencies.py [1:1]
+ grpc_version.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 102c1910c87bee28e8a69885f85346f4
+BELONGS ya.make
+ License text:
+ \# Copyright 2022 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_typing.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1393ed0d9a5e8e3a97f2447521ecb0a6
+BELONGS ya.make
+ License text:
+ \# Copyright 2018 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_cython/_cygrpc/arguments.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/fork_posix.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/fork_posix.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/fork_windows.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/time.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/time.pyx.pxi [1:1]
+ grpc/experimental/__init__.py [1:1]
+ grpc/experimental/gevent.py [1:1]
+ grpc/experimental/session_cache.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1ad5a8379223f39b4124906a5bd2437d
+BELONGS ya.make
+ License text:
+ \# Copyright 2019 The gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_compression.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 1c0b49517f30a005a1f30fc39200d3ee
+BELONGS ya.make
+ License text:
+ \# Copyright 2019 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_cython/_cygrpc/aio/call.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/call.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/channel.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/channel.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/grpc_aio.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/vtable.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/vtable.pyx.pxi [1:1]
+ grpc/aio/__init__.py [1:1]
+ grpc/aio/_call.py [1:1]
+ grpc/aio/_channel.py [1:1]
+ grpc/aio/_interceptor.py [1:1]
+ grpc/aio/_utils.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 249314deafd9b3e055b23b29bdbf09f3
+BELONGS ya.make
+ License text:
+ \# Copyright 2020 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/aio/_metadata.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 24f793f95f5c432d60ec3ef10b0e1a07
+BELONGS ya.make
+ License text:
+ Copyright 2016, Google Inc.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ LICENSE [208:208]
+
+KEEP COPYRIGHT_SERVICE_LABEL 3f8e6ecc96f8543539ce4b548cdc9afb
+BELONGS ya.make
+ License text:
+ \# Copyright 2021 The gRPC Authors
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_cython/_cygrpc/csds.pyx.pxi [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 57712bcea01f379c970232b100dc2326
+BELONGS ya.make
+ License text:
+ \# Copyright 2020 The gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_cython/_cygrpc/thread.pyx.pxi [1:1]
+ grpc/_runtime_protos.py [1:1]
+ grpc/_simple_stubs.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 7b51323881f67ba78a30a266dca846ec
+BELONGS ya.make
+ License text:
+ \# Copyright 2018 The gRPC Authors
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ _parallel_compile_patch.py [1:1]
+ grpc/_cython/_cygrpc/_hooks.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/_hooks.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/arguments.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/channelz.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/propagation_bits.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/propagation_bits.pyx.pxi [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 8183794cfdcd444d086a2c63a36d9beb
+BELONGS ya.make
+ License text:
+ \# Copyright 2020 The gRPC Authors
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi [1:1]
+ grpc/aio/_base_channel.py [1:1]
+ grpc/aio/_base_server.py [1:1]
+ grpc/experimental/aio/__init__.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL 90fc8bbf7a57ec743af147a4496a5eb2
+BELONGS ya.make
+ License text:
+ \# Copyright 2019 The gRPC Authors
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_cython/_cygrpc/aio/common.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/server.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/aio/server.pyx.pxi [1:1]
+ grpc/aio/_base_call.py [1:1]
+ grpc/aio/_server.py [1:1]
+ grpc/aio/_typing.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL cd2dccf3745a79cfb4fea6a49cb170ae
+BELONGS ya.make
+ License text:
+ \# Copyright 2015-2016 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/__init__.py [1:1]
+ grpc/beta/implementations.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL ce123482847d9599548cd2797b1f2978
+BELONGS ya.make
+ License text:
+ \# Copyright 2017 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ grpc/_cython/_cygrpc/event.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/event.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/grpc_gevent.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/metadata.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/metadata.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/operation.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/operation.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/tag.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/tag.pyx.pxi [1:1]
+ grpc/_interceptor.py [1:1]
+ grpc/beta/_metadata.py [1:1]
+
+KEEP COPYRIGHT_SERVICE_LABEL f8fb9a8ebe3e4b096090bd006ebb72cc
+BELONGS ya.make
+ License text:
+ \# Copyright 2016 gRPC authors.
+ Scancode info:
+ Original SPDX id: COPYRIGHT_SERVICE_LABEL
+ Score : 100.00
+ Match type : COPYRIGHT
+ Files with this license:
+ _spawn_patch.py [1:1]
+ grpc/_auth.py [1:1]
+ grpc/_channel.py [1:1]
+ grpc/_common.py [1:1]
+ grpc/_cython/_cygrpc/grpc_string.pyx.pxi [1:1]
+ grpc/_cython/_cygrpc/security.pxd.pxi [1:1]
+ grpc/_cython/_cygrpc/security.pyx.pxi [1:1]
+ grpc/_server.py [1:1]
+ grpc/beta/_client_adaptations.py [1:1]
+ grpc/beta/_server_adaptations.py [1:1]
+ support.py [1:1]
diff --git a/contrib/python/grpcio/py3/.yandex_meta/devtools.licenses.report b/contrib/python/grpcio/py3/.yandex_meta/devtools.licenses.report
new file mode 100644
index 00000000000..d8bcbbc08ce
--- /dev/null
+++ b/contrib/python/grpcio/py3/.yandex_meta/devtools.licenses.report
@@ -0,0 +1,261 @@
+# File format ($ symbol means the beginning of a line):
+#
+# $ # this message
+# $ # =======================
+# $ # comments (all commentaries should starts with some number of spaces and # symbol)
+# $ IGNORE_FILES {file1.ext1} {file2.ext2} - (optional) ignore listed files when generating license macro and credits
+# $ RENAME {original license id} TO {new license id} # user comments - (optional) use {new license id} instead {original license id} in ya.make files
+# $ # user comments
+# $
+# ${action} {license id} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/1/ya.make ./ya/make/2/ya.make
+# ${all_file_action} filename
+# $ # user commentaries (many lines)
+# $ generated description - files with this license, license text... (some number of lines that starts with some number of spaces, do not modify)
+# ${action} {license spdx} {license text hash}
+# $BELONGS ./ya/make/file/relative/path/3/ya.make
+# ${all_file_action} filename
+# $ # user commentaries
+# $ generated description
+# $ ...
+#
+# You can modify action, all_file_action and add commentaries
+# Available actions:
+# keep - keep license in contrib and use in credits
+# skip - skip license
+# remove - remove all files with this license
+# rename - save license text/links into licenses texts file, but not store SPDX into LINCENSE macro. You should store correct license id into devtools.license.spdx.txt file
+#
+# {all file action} records will be generated when license text contains filename that exists on filesystem (in contrib directory)
+# We suppose that that files can contain some license info
+# Available all file actions:
+# FILE_IGNORE - ignore file (do nothing)
+# FILE_INCLUDE - include all file data into licenses text file
+# =======================
+
+KEEP Python-2.0 084da548815188967cad816891b84e50
+BELONGS ya.make
+ License text:
+ \# limitations under the License.
+ """gRPC's Python API."""
+ Scancode info:
+ Original SPDX id: Python-2.0
+ Score : 66.67
+ Match type : TAG
+ Links : http://docs.python.org/license.html, http://spdx.org/licenses/Python-2.0, https://spdx.org/licenses/Python-2.0
+ Files with this license:
+ grpc/__init__.py [13:14]
+
+KEEP MPL-2.0 280da0ae8b63b2e861e6766d710e9baf
+BELONGS ya.make
+FILE_INCLUDE LICENSE found in files: LICENSE at line 600
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: MPL-2.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://mpl.mozilla.org/2012/01/03/announcing-mpl-2-0/, http://www.mozilla.com/MPL/2.0/, https://spdx.org/licenses/MPL-2.0
+ Files with this license:
+ LICENSE [238:610]
+
+KEEP Apache-2.0 2b42edef8fa55315f34f2370b4715ca9
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ LICENSE [2:202]
+
+KEEP Python-2.0 5749a3f68d211a0dbd91f414c9769695
+BELONGS ya.make
+ License text:
+ \# limitations under the License.
+ """gRPC's Python gEvent APIs."""
+ Scancode info:
+ Original SPDX id: Python-2.0
+ Score : 66.67
+ Match type : TAG
+ Links : http://docs.python.org/license.html, http://spdx.org/licenses/Python-2.0, https://spdx.org/licenses/Python-2.0
+ Files with this license:
+ grpc/experimental/gevent.py [13:14]
+
+KEEP Apache-2.0 86e8237b9a37a6951edea992afba41f3
+BELONGS ya.make
+ License text:
+ Classifier: License :: OSI Approved :: Apache Software License
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 95.00
+ Match type : TAG
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ .dist-info/METADATA [20:20]
+
+KEEP Apache-2.0 920b2f581700b4aa528093ed0d2f5a5b
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : NOTICE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ _parallel_compile_patch.py [3:13]
+ _spawn_patch.py [3:13]
+ commands.py [3:13]
+ grpc/__init__.py [3:13]
+ grpc/_auth.py [3:13]
+ grpc/_channel.py [3:13]
+ grpc/_common.py [3:13]
+ grpc/_compression.py [3:13]
+ grpc/_cython/__init__.py [3:13]
+ grpc/_cython/_cygrpc/__init__.py [3:13]
+ grpc/_cython/_cygrpc/_hooks.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/_hooks.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/call.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/call.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/callback_common.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/callback_common.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/channel.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/channel.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/common.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/completion_queue.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/grpc_aio.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/grpc_aio.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/rpc_status.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/rpc_status.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/server.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/aio/server.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/arguments.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/arguments.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/call.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/call.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/channel.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/channel.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/channelz.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/completion_queue.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/completion_queue.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/credentials.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/credentials.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/csds.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/event.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/event.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/fork_posix.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/fork_posix.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/fork_windows.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/grpc.pxi [3:13]
+ grpc/_cython/_cygrpc/grpc_gevent.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/grpc_gevent.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/grpc_string.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/metadata.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/metadata.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/operation.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/operation.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/propagation_bits.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/propagation_bits.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/records.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/records.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/security.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/security.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/server.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/server.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/tag.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/tag.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/thread.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/time.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/time.pyx.pxi [3:13]
+ grpc/_cython/_cygrpc/vtable.pxd.pxi [3:13]
+ grpc/_cython/_cygrpc/vtable.pyx.pxi [3:13]
+ grpc/_cython/cygrpc.pxd [3:13]
+ grpc/_cython/cygrpc.pyx [3:13]
+ grpc/_interceptor.py [3:13]
+ grpc/_plugin_wrapping.py [3:13]
+ grpc/_runtime_protos.py [3:13]
+ grpc/_server.py [3:13]
+ grpc/_simple_stubs.py [3:13]
+ grpc/_typing.py [3:13]
+ grpc/_utilities.py [3:13]
+ grpc/aio/__init__.py [3:13]
+ grpc/aio/_base_call.py [3:13]
+ grpc/aio/_base_channel.py [3:13]
+ grpc/aio/_base_server.py [3:13]
+ grpc/aio/_call.py [3:13]
+ grpc/aio/_channel.py [3:13]
+ grpc/aio/_interceptor.py [3:13]
+ grpc/aio/_metadata.py [3:13]
+ grpc/aio/_server.py [3:13]
+ grpc/aio/_typing.py [3:13]
+ grpc/aio/_utils.py [3:13]
+ grpc/beta/__init__.py [3:13]
+ grpc/beta/_client_adaptations.py [3:13]
+ grpc/beta/_metadata.py [3:13]
+ grpc/beta/_server_adaptations.py [3:13]
+ grpc/beta/implementations.py [3:13]
+ grpc/beta/interfaces.py [3:13]
+ grpc/beta/utilities.py [3:13]
+ grpc/experimental/__init__.py [3:13]
+ grpc/experimental/aio/__init__.py [3:13]
+ grpc/experimental/gevent.py [3:13]
+ grpc/experimental/session_cache.py [3:13]
+ grpc/framework/__init__.py [3:13]
+ grpc/framework/common/__init__.py [3:13]
+ grpc/framework/common/cardinality.py [3:13]
+ grpc/framework/common/style.py [3:13]
+ grpc/framework/foundation/__init__.py [3:13]
+ grpc/framework/foundation/abandonment.py [3:13]
+ grpc/framework/foundation/callable_util.py [3:13]
+ grpc/framework/foundation/future.py [3:13]
+ grpc/framework/foundation/logging_pool.py [3:13]
+ grpc/framework/foundation/stream.py [3:13]
+ grpc/framework/foundation/stream_util.py [3:13]
+ grpc/framework/interfaces/__init__.py [3:13]
+ grpc/framework/interfaces/base/__init__.py [3:13]
+ grpc/framework/interfaces/base/base.py [3:13]
+ grpc/framework/interfaces/base/utilities.py [3:13]
+ grpc/framework/interfaces/face/__init__.py [3:13]
+ grpc/framework/interfaces/face/face.py [3:13]
+ grpc/framework/interfaces/face/utilities.py [3:13]
+ grpc_core_dependencies.py [3:13]
+ grpc_version.py [3:13]
+ support.py [3:13]
+
+KEEP BSD-3-Clause bf460a928b270e23d6623d4db9286950
+BELONGS ya.make
+ Note: matched license text is too long. Read it in the source files.
+ Scancode info:
+ Original SPDX id: BSD-3-Clause
+ Score : 100.00
+ Match type : TEXT
+ Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
+ Files with this license:
+ LICENSE [210:234]
+
+KEEP Apache-2.0 df9d777d047486b6b2cc4bd489b7e975
+BELONGS ya.make
+ License text:
+ License: Apache License 2.0
+ Scancode info:
+ Original SPDX id: Apache-2.0
+ Score : 100.00
+ Match type : REFERENCE
+ Links : http://www.apache.org/licenses/, http://www.apache.org/licenses/LICENSE-2.0, https://spdx.org/licenses/Apache-2.0
+ Files with this license:
+ .dist-info/METADATA [8:8]
+
+KEEP BSD-3-Clause efdacd288befe1a76f28537587b3936a
+BELONGS ya.make
+ License text:
+ limitations under the License.
+ -----------------------------------------------------------
+ BSD 3-Clause License
+ Scancode info:
+ Original SPDX id: BSD-3-Clause
+ Score : 100.00
+ Match type : TAG
+ Links : http://www.opensource.org/licenses/BSD-3-Clause, https://spdx.org/licenses/BSD-3-Clause
+ Files with this license:
+ LICENSE [202:206]
diff --git a/contrib/python/grpcio/py3/.yandex_meta/licenses.list.txt b/contrib/python/grpcio/py3/.yandex_meta/licenses.list.txt
new file mode 100644
index 00000000000..b3be57a69d6
--- /dev/null
+++ b/contrib/python/grpcio/py3/.yandex_meta/licenses.list.txt
@@ -0,0 +1,1318 @@
+====================Apache-2.0====================
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+
+====================Apache-2.0====================
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+====================Apache-2.0====================
+Classifier: License :: OSI Approved :: Apache Software License
+
+
+====================Apache-2.0====================
+License: Apache License 2.0
+
+
+====================BSD-3-Clause====================
+ limitations under the License.
+
+-----------------------------------------------------------
+
+BSD 3-Clause License
+
+
+====================BSD-3-Clause====================
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+contributors may be used to endorse or promote products derived from this
+software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+
+====================COPYRIGHT====================
+# Copyright 2015 gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2015-2016 gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2016 gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2017 gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2018 The gRPC Authors
+
+
+====================COPYRIGHT====================
+# Copyright 2018 gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2019 The gRPC Authors
+
+
+====================COPYRIGHT====================
+# Copyright 2019 The gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2019 gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2020 The gRPC Authors
+
+
+====================COPYRIGHT====================
+# Copyright 2020 The gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2020 gRPC authors.
+
+
+====================COPYRIGHT====================
+# Copyright 2021 The gRPC Authors
+
+
+====================COPYRIGHT====================
+# Copyright 2022 gRPC authors.
+
+
+====================COPYRIGHT====================
+Copyright 2016, Google Inc.
+
+
+====================File: LICENSE====================
+
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "[]"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+
+-----------------------------------------------------------
+
+BSD 3-Clause License
+
+Copyright 2016, Google Inc.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice,
+this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright notice,
+this list of conditions and the following disclaimer in the documentation
+and/or other materials provided with the distribution.
+
+3. Neither the name of the copyright holder nor the names of its
+contributors may be used to endorse or promote products derived from this
+software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
+LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+THE POSSIBILITY OF SUCH DAMAGE.
+
+-----------------------------------------------------------
+
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
+
+
+====================MPL-2.0====================
+Mozilla Public License Version 2.0
+==================================
+
+1. Definitions
+--------------
+
+1.1. "Contributor"
+ means each individual or legal entity that creates, contributes to
+ the creation of, or owns Covered Software.
+
+1.2. "Contributor Version"
+ means the combination of the Contributions of others (if any) used
+ by a Contributor and that particular Contributor's Contribution.
+
+1.3. "Contribution"
+ means Covered Software of a particular Contributor.
+
+1.4. "Covered Software"
+ means Source Code Form to which the initial Contributor has attached
+ the notice in Exhibit A, the Executable Form of such Source Code
+ Form, and Modifications of such Source Code Form, in each case
+ including portions thereof.
+
+1.5. "Incompatible With Secondary Licenses"
+ means
+
+ (a) that the initial Contributor has attached the notice described
+ in Exhibit B to the Covered Software; or
+
+ (b) that the Covered Software was made available under the terms of
+ version 1.1 or earlier of the License, but not also under the
+ terms of a Secondary License.
+
+1.6. "Executable Form"
+ means any form of the work other than Source Code Form.
+
+1.7. "Larger Work"
+ means a work that combines Covered Software with other material, in
+ a separate file or files, that is not Covered Software.
+
+1.8. "License"
+ means this document.
+
+1.9. "Licensable"
+ means having the right to grant, to the maximum extent possible,
+ whether at the time of the initial grant or subsequently, any and
+ all of the rights conveyed by this License.
+
+1.10. "Modifications"
+ means any of the following:
+
+ (a) any file in Source Code Form that results from an addition to,
+ deletion from, or modification of the contents of Covered
+ Software; or
+
+ (b) any new file in Source Code Form that contains any Covered
+ Software.
+
+1.11. "Patent Claims" of a Contributor
+ means any patent claim(s), including without limitation, method,
+ process, and apparatus claims, in any patent Licensable by such
+ Contributor that would be infringed, but for the grant of the
+ License, by the making, using, selling, offering for sale, having
+ made, import, or transfer of either its Contributions or its
+ Contributor Version.
+
+1.12. "Secondary License"
+ means either the GNU General Public License, Version 2.0, the GNU
+ Lesser General Public License, Version 2.1, the GNU Affero General
+ Public License, Version 3.0, or any later versions of those
+ licenses.
+
+1.13. "Source Code Form"
+ means the form of the work preferred for making modifications.
+
+1.14. "You" (or "Your")
+ means an individual or a legal entity exercising rights under this
+ License. For legal entities, "You" includes any entity that
+ controls, is controlled by, or is under common control with You. For
+ purposes of this definition, "control" means (a) the power, direct
+ or indirect, to cause the direction or management of such entity,
+ whether by contract or otherwise, or (b) ownership of more than
+ fifty percent (50%) of the outstanding shares or beneficial
+ ownership of such entity.
+
+2. License Grants and Conditions
+--------------------------------
+
+2.1. Grants
+
+Each Contributor hereby grants You a world-wide, royalty-free,
+non-exclusive license:
+
+(a) under intellectual property rights (other than patent or trademark)
+ Licensable by such Contributor to use, reproduce, make available,
+ modify, display, perform, distribute, and otherwise exploit its
+ Contributions, either on an unmodified basis, with Modifications, or
+ as part of a Larger Work; and
+
+(b) under Patent Claims of such Contributor to make, use, sell, offer
+ for sale, have made, import, and otherwise transfer either its
+ Contributions or its Contributor Version.
+
+2.2. Effective Date
+
+The licenses granted in Section 2.1 with respect to any Contribution
+become effective for each Contribution on the date the Contributor first
+distributes such Contribution.
+
+2.3. Limitations on Grant Scope
+
+The licenses granted in this Section 2 are the only rights granted under
+this License. No additional rights or licenses will be implied from the
+distribution or licensing of Covered Software under this License.
+Notwithstanding Section 2.1(b) above, no patent license is granted by a
+Contributor:
+
+(a) for any code that a Contributor has removed from Covered Software;
+ or
+
+(b) for infringements caused by: (i) Your and any other third party's
+ modifications of Covered Software, or (ii) the combination of its
+ Contributions with other software (except as part of its Contributor
+ Version); or
+
+(c) under Patent Claims infringed by Covered Software in the absence of
+ its Contributions.
+
+This License does not grant any rights in the trademarks, service marks,
+or logos of any Contributor (except as may be necessary to comply with
+the notice requirements in Section 3.4).
+
+2.4. Subsequent Licenses
+
+No Contributor makes additional grants as a result of Your choice to
+distribute the Covered Software under a subsequent version of this
+License (see Section 10.2) or under the terms of a Secondary License (if
+permitted under the terms of Section 3.3).
+
+2.5. Representation
+
+Each Contributor represents that the Contributor believes its
+Contributions are its original creation(s) or it has sufficient rights
+to grant the rights to its Contributions conveyed by this License.
+
+2.6. Fair Use
+
+This License is not intended to limit any rights You have under
+applicable copyright doctrines of fair use, fair dealing, or other
+equivalents.
+
+2.7. Conditions
+
+Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted
+in Section 2.1.
+
+3. Responsibilities
+-------------------
+
+3.1. Distribution of Source Form
+
+All distribution of Covered Software in Source Code Form, including any
+Modifications that You create or to which You contribute, must be under
+the terms of this License. You must inform recipients that the Source
+Code Form of the Covered Software is governed by the terms of this
+License, and how they can obtain a copy of this License. You may not
+attempt to alter or restrict the recipients' rights in the Source Code
+Form.
+
+3.2. Distribution of Executable Form
+
+If You distribute Covered Software in Executable Form then:
+
+(a) such Covered Software must also be made available in Source Code
+ Form, as described in Section 3.1, and You must inform recipients of
+ the Executable Form how they can obtain a copy of such Source Code
+ Form by reasonable means in a timely manner, at a charge no more
+ than the cost of distribution to the recipient; and
+
+(b) You may distribute such Executable Form under the terms of this
+ License, or sublicense it under different terms, provided that the
+ license for the Executable Form does not attempt to limit or alter
+ the recipients' rights in the Source Code Form under this License.
+
+3.3. Distribution of a Larger Work
+
+You may create and distribute a Larger Work under terms of Your choice,
+provided that You also comply with the requirements of this License for
+the Covered Software. If the Larger Work is a combination of Covered
+Software with a work governed by one or more Secondary Licenses, and the
+Covered Software is not Incompatible With Secondary Licenses, this
+License permits You to additionally distribute such Covered Software
+under the terms of such Secondary License(s), so that the recipient of
+the Larger Work may, at their option, further distribute the Covered
+Software under the terms of either this License or such Secondary
+License(s).
+
+3.4. Notices
+
+You may not remove or alter the substance of any license notices
+(including copyright notices, patent notices, disclaimers of warranty,
+or limitations of liability) contained within the Source Code Form of
+the Covered Software, except that You may alter any license notices to
+the extent required to remedy known factual inaccuracies.
+
+3.5. Application of Additional Terms
+
+You may choose to offer, and to charge a fee for, warranty, support,
+indemnity or liability obligations to one or more recipients of Covered
+Software. However, You may do so only on Your own behalf, and not on
+behalf of any Contributor. You must make it absolutely clear that any
+such warranty, support, indemnity, or liability obligation is offered by
+You alone, and You hereby agree to indemnify every Contributor for any
+liability incurred by such Contributor as a result of warranty, support,
+indemnity or liability terms You offer. You may include additional
+disclaimers of warranty and limitations of liability specific to any
+jurisdiction.
+
+4. Inability to Comply Due to Statute or Regulation
+---------------------------------------------------
+
+If it is impossible for You to comply with any of the terms of this
+License with respect to some or all of the Covered Software due to
+statute, judicial order, or regulation then You must: (a) comply with
+the terms of this License to the maximum extent possible; and (b)
+describe the limitations and the code they affect. Such description must
+be placed in a text file included with all distributions of the Covered
+Software under this License. Except to the extent prohibited by statute
+or regulation, such description must be sufficiently detailed for a
+recipient of ordinary skill to be able to understand it.
+
+5. Termination
+--------------
+
+5.1. The rights granted under this License will terminate automatically
+if You fail to comply with any of its terms. However, if You become
+compliant, then the rights granted under this License from a particular
+Contributor are reinstated (a) provisionally, unless and until such
+Contributor explicitly and finally terminates Your grants, and (b) on an
+ongoing basis, if such Contributor fails to notify You of the
+non-compliance by some reasonable means prior to 60 days after You have
+come back into compliance. Moreover, Your grants from a particular
+Contributor are reinstated on an ongoing basis if such Contributor
+notifies You of the non-compliance by some reasonable means, this is the
+first time You have received notice of non-compliance with this License
+from such Contributor, and You become compliant prior to 30 days after
+Your receipt of the notice.
+
+5.2. If You initiate litigation against any entity by asserting a patent
+infringement claim (excluding declaratory judgment actions,
+counter-claims, and cross-claims) alleging that a Contributor Version
+directly or indirectly infringes any patent, then the rights granted to
+You by any and all Contributors for the Covered Software under Section
+2.1 of this License shall terminate.
+
+5.3. In the event of termination under Sections 5.1 or 5.2 above, all
+end user license agreements (excluding distributors and resellers) which
+have been validly granted by You or Your distributors under this License
+prior to termination shall survive termination.
+
+************************************************************************
+* *
+* 6. Disclaimer of Warranty *
+* ------------------------- *
+* *
+* Covered Software is provided under this License on an "as is" *
+* basis, without warranty of any kind, either expressed, implied, or *
+* statutory, including, without limitation, warranties that the *
+* Covered Software is free of defects, merchantable, fit for a *
+* particular purpose or non-infringing. The entire risk as to the *
+* quality and performance of the Covered Software is with You. *
+* Should any Covered Software prove defective in any respect, You *
+* (not any Contributor) assume the cost of any necessary servicing, *
+* repair, or correction. This disclaimer of warranty constitutes an *
+* essential part of this License. No use of any Covered Software is *
+* authorized under this License except under this disclaimer. *
+* *
+************************************************************************
+
+************************************************************************
+* *
+* 7. Limitation of Liability *
+* -------------------------- *
+* *
+* Under no circumstances and under no legal theory, whether tort *
+* (including negligence), contract, or otherwise, shall any *
+* Contributor, or anyone who distributes Covered Software as *
+* permitted above, be liable to You for any direct, indirect, *
+* special, incidental, or consequential damages of any character *
+* including, without limitation, damages for lost profits, loss of *
+* goodwill, work stoppage, computer failure or malfunction, or any *
+* and all other commercial damages or losses, even if such party *
+* shall have been informed of the possibility of such damages. This *
+* limitation of liability shall not apply to liability for death or *
+* personal injury resulting from such party's negligence to the *
+* extent applicable law prohibits such limitation. Some *
+* jurisdictions do not allow the exclusion or limitation of *
+* incidental or consequential damages, so this exclusion and *
+* limitation may not apply to You. *
+* *
+************************************************************************
+
+8. Litigation
+-------------
+
+Any litigation relating to this License may be brought only in the
+courts of a jurisdiction where the defendant maintains its principal
+place of business and such litigation shall be governed by laws of that
+jurisdiction, without reference to its conflict-of-law provisions.
+Nothing in this Section shall prevent a party's ability to bring
+cross-claims or counter-claims.
+
+9. Miscellaneous
+----------------
+
+This License represents the complete agreement concerning the subject
+matter hereof. If any provision of this License is held to be
+unenforceable, such provision shall be reformed only to the extent
+necessary to make it enforceable. Any law or regulation which provides
+that the language of a contract shall be construed against the drafter
+shall not be used to construe this License against a Contributor.
+
+10. Versions of the License
+---------------------------
+
+10.1. New Versions
+
+Mozilla Foundation is the license steward. Except as provided in Section
+10.3, no one other than the license steward has the right to modify or
+publish new versions of this License. Each version will be given a
+distinguishing version number.
+
+10.2. Effect of New Versions
+
+You may distribute the Covered Software under the terms of the version
+of the License under which You originally received the Covered Software,
+or under the terms of any subsequent version published by the license
+steward.
+
+10.3. Modified Versions
+
+If you create software not governed by this License, and you want to
+create a new license for such software, you may create and use a
+modified version of this License if you rename the license and remove
+any references to the name of the license steward (except to note that
+such modified license differs from this License).
+
+10.4. Distributing Source Code Form that is Incompatible With Secondary
+Licenses
+
+If You choose to distribute Source Code Form that is Incompatible With
+Secondary Licenses under the terms of this version of the License, the
+notice described in Exhibit B of this License must be attached.
+
+Exhibit A - Source Code Form License Notice
+-------------------------------------------
+
+ This Source Code Form is subject to the terms of the Mozilla Public
+ License, v. 2.0. If a copy of the MPL was not distributed with this
+ file, You can obtain one at http://mozilla.org/MPL/2.0/.
+
+If it is not possible or desirable to put the notice in a particular
+file, then You may include the notice in a location (such as a LICENSE
+file in a relevant directory) where a recipient would be likely to look
+for such a notice.
+
+You may add additional accurate notices of copyright ownership.
+
+Exhibit B - "Incompatible With Secondary Licenses" Notice
+---------------------------------------------------------
+
+ This Source Code Form is "Incompatible With Secondary Licenses", as
+ defined by the Mozilla Public License, v. 2.0.
+
+====================Python-2.0====================
+# limitations under the License.
+"""gRPC's Python API."""
+
+
+====================Python-2.0====================
+# limitations under the License.
+"""gRPC's Python gEvent APIs."""
diff --git a/contrib/python/grpcio/py3/.yandex_meta/override.nix b/contrib/python/grpcio/py3/.yandex_meta/override.nix
new file mode 100644
index 00000000000..46925d47d9b
--- /dev/null
+++ b/contrib/python/grpcio/py3/.yandex_meta/override.nix
@@ -0,0 +1,18 @@
+pkgs: attrs: with pkgs; with python310.pkgs; with attrs; rec {
+ pname = "grpcio";
+ version = "1.54.2";
+
+ src = fetchPypi {
+ inherit pname version;
+ hash = "sha256-UKnwde7aUJeqmhgrs4d/4ScodeRTcDaKwO4Wq54i0Bk=";
+ };
+
+ prePatch = "";
+
+ # pypi package specifies the hardcoded
+ # dependencies for third-party libraries:
+ # /usr/include. In result in nix build we use
+ # system headers instead of nix headers.
+ # This patch removes dependencies on /usr/include
+ patches = [ ./setup.patch ];
+}
diff --git a/contrib/python/grpcio/py3/.yandex_meta/setup.patch b/contrib/python/grpcio/py3/.yandex_meta/setup.patch
new file mode 100644
index 00000000000..d46237f7ef5
--- /dev/null
+++ b/contrib/python/grpcio/py3/.yandex_meta/setup.patch
@@ -0,0 +1,16 @@
+--- a/setup.py
++++ b/setup.py
+@@ -299,11 +299,11 @@
+ RE2_INCLUDE = (os.path.join('/usr', 'include', 're2'),)
+
+ EXTENSION_INCLUDE_DIRECTORIES = ((PYTHON_STEM,) + CORE_INCLUDE + ABSL_INCLUDE +
+- ADDRESS_SORTING_INCLUDE + CARES_INCLUDE +
+- RE2_INCLUDE + SSL_INCLUDE + UPB_INCLUDE +
++ ADDRESS_SORTING_INCLUDE +
++ RE2_INCLUDE + UPB_INCLUDE +
+ UPB_GRPC_GENERATED_INCLUDE +
+ UPBDEFS_GRPC_GENERATED_INCLUDE +
+- XXHASH_INCLUDE + ZLIB_INCLUDE)
++ XXHASH_INCLUDE)
+
+ EXTENSION_LIBRARIES = ()
diff --git a/contrib/python/grpcio/py3/_parallel_compile_patch.py b/contrib/python/grpcio/py3/_parallel_compile_patch.py
new file mode 100644
index 00000000000..e4d50c38311
--- /dev/null
+++ b/contrib/python/grpcio/py3/_parallel_compile_patch.py
@@ -0,0 +1,66 @@
+# Copyright 2018 The gRPC Authors
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Patches the compile() to allow enable parallel compilation of C/C++.
+
+build_ext has lots of C/C++ files and normally them one by one.
+Enabling parallel build helps a lot.
+"""
+
+import distutils.ccompiler
+import os
+
+try:
+ BUILD_EXT_COMPILER_JOBS = int(
+ os.environ['GRPC_PYTHON_BUILD_EXT_COMPILER_JOBS'])
+except KeyError:
+ import multiprocessing
+ BUILD_EXT_COMPILER_JOBS = multiprocessing.cpu_count()
+except ValueError:
+ BUILD_EXT_COMPILER_JOBS = 1
+
+
+# monkey-patch for parallel compilation
+def _parallel_compile(self,
+ sources,
+ output_dir=None,
+ macros=None,
+ include_dirs=None,
+ debug=0,
+ extra_preargs=None,
+ extra_postargs=None,
+ depends=None):
+ # setup the same way as distutils.ccompiler.CCompiler
+ # https://github.com/python/cpython/blob/31368a4f0e531c19affe2a1becd25fc316bc7501/Lib/distutils/ccompiler.py#L564
+ macros, objects, extra_postargs, pp_opts, build = self._setup_compile(
+ str(output_dir), macros, include_dirs, sources, depends, extra_postargs)
+ cc_args = self._get_cc_args(pp_opts, debug, extra_preargs)
+
+ def _compile_single_file(obj):
+ try:
+ src, ext = build[obj]
+ except KeyError:
+ return
+ self._compile(obj, src, ext, cc_args, extra_postargs, pp_opts)
+
+ # run compilation of individual files in parallel
+ import multiprocessing.pool
+ multiprocessing.pool.ThreadPool(BUILD_EXT_COMPILER_JOBS).map(
+ _compile_single_file, objects)
+ return objects
+
+
+def monkeypatch_compile_maybe():
+ """Monkeypatching is dumb, but the build speed gain is worth it."""
+ if BUILD_EXT_COMPILER_JOBS > 1:
+ distutils.ccompiler.CCompiler.compile = _parallel_compile
diff --git a/contrib/python/grpcio/py3/_spawn_patch.py b/contrib/python/grpcio/py3/_spawn_patch.py
new file mode 100644
index 00000000000..377cc7a9f37
--- /dev/null
+++ b/contrib/python/grpcio/py3/_spawn_patch.py
@@ -0,0 +1,60 @@
+# Copyright 2016 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Patches the spawn() command for windows compilers.
+
+Windows has an 8191 character command line limit, but some compilers
+support an @command_file directive where command_file is a file
+containing the full command line.
+"""
+
+from distutils import ccompiler
+import os
+import os.path
+import shutil
+import sys
+import tempfile
+
+MAX_COMMAND_LENGTH = 8191
+
+_classic_spawn = ccompiler.CCompiler.spawn
+
+
+def _commandfile_spawn(self, command):
+ command_length = sum([len(arg) for arg in command])
+ if os.name == 'nt' and command_length > MAX_COMMAND_LENGTH:
+ # Even if this command doesn't support the @command_file, it will
+ # fail as is so we try blindly
+ print('Command line length exceeded, using command file')
+ print(' '.join(command))
+ temporary_directory = tempfile.mkdtemp()
+ command_filename = os.path.abspath(
+ os.path.join(temporary_directory, 'command'))
+ with open(command_filename, 'w') as command_file:
+ escaped_args = [
+ '"' + arg.replace('\\', '\\\\') + '"' for arg in command[1:]
+ ]
+ command_file.write(' '.join(escaped_args))
+ modified_command = command[:1] + ['@{}'.format(command_filename)]
+ try:
+ _classic_spawn(self, modified_command)
+ finally:
+ shutil.rmtree(temporary_directory)
+ else:
+ _classic_spawn(self, command)
+
+
+def monkeypatch_spawn():
+ """Monkeypatching is dumb, but it's either that or we become maintainers of
+ something much, much bigger."""
+ ccompiler.CCompiler.spawn = _commandfile_spawn
diff --git a/contrib/python/grpcio/py3/commands.py b/contrib/python/grpcio/py3/commands.py
new file mode 100644
index 00000000000..6d8228ffa05
--- /dev/null
+++ b/contrib/python/grpcio/py3/commands.py
@@ -0,0 +1,351 @@
+# Copyright 2015 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+"""Provides distutils command classes for the GRPC Python setup process."""
+
+# NOTE(https://github.com/grpc/grpc/issues/24028): allow setuptools to monkey
+# patch distutils
+import setuptools # isort:skip
+
+import glob
+import os
+import os.path
+import shutil
+import subprocess
+import sys
+import sysconfig
+import traceback
+
+from setuptools.command import build_ext
+from setuptools.command import build_py
+import support
+
+PYTHON_STEM = os.path.dirname(os.path.abspath(__file__))
+GRPC_STEM = os.path.abspath(PYTHON_STEM + '../../../../')
+PROTO_STEM = os.path.join(GRPC_STEM, 'src', 'proto')
+PROTO_GEN_STEM = os.path.join(GRPC_STEM, 'src', 'python', 'gens')
+CYTHON_STEM = os.path.join(PYTHON_STEM, 'grpc', '_cython')
+
+
+class CommandError(Exception):
+ """Simple exception class for GRPC custom commands."""
+
+
+# TODO(atash): Remove this once PyPI has better Linux bdist support. See
+# https://bitbucket.org/pypa/pypi/issues/120/binary-wheels-for-linux-are-not-supported
+def _get_grpc_custom_bdist(decorated_basename, target_bdist_basename):
+ """Returns a string path to a bdist file for Linux to install.
+
+ If we can retrieve a pre-compiled bdist from online, uses it. Else, emits a
+ warning and builds from source.
+ """
+ # TODO(atash): somehow the name that's returned from `wheel` is different
+ # between different versions of 'wheel' (but from a compatibility standpoint,
+ # the names are compatible); we should have some way of determining name
+ # compatibility in the same way `wheel` does to avoid having to rename all of
+ # the custom wheels that we build/upload to GCS.
+
+ # Break import style to ensure that setup.py has had a chance to install the
+ # relevant package.
+ from urllib import request
+ decorated_path = decorated_basename + GRPC_CUSTOM_BDIST_EXT
+ try:
+ url = BINARIES_REPOSITORY + '/{target}'.format(target=decorated_path)
+ bdist_data = request.urlopen(url).read()
+ except IOError as error:
+ raise CommandError('{}\n\nCould not find the bdist {}: {}'.format(
+ traceback.format_exc(), decorated_path, error.message))
+ # Our chosen local bdist path.
+ bdist_path = target_bdist_basename + GRPC_CUSTOM_BDIST_EXT
+ try:
+ with open(bdist_path, 'w') as bdist_file:
+ bdist_file.write(bdist_data)
+ except IOError as error:
+ raise CommandError('{}\n\nCould not write grpcio bdist: {}'.format(
+ traceback.format_exc(), error.message))
+ return bdist_path
+
+
+class SphinxDocumentation(setuptools.Command):
+ """Command to generate documentation via sphinx."""
+
+ description = 'generate sphinx documentation'
+ user_options = []
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ # We import here to ensure that setup.py has had a chance to install the
+ # relevant package eggs first.
+ import sphinx.cmd.build
+ source_dir = os.path.join(GRPC_STEM, 'doc', 'python', 'sphinx')
+ target_dir = os.path.join(GRPC_STEM, 'doc', 'build')
+ exit_code = sphinx.cmd.build.build_main(
+ ['-b', 'html', '-W', '--keep-going', source_dir, target_dir])
+ if exit_code != 0:
+ raise CommandError(
+ "Documentation generation has warnings or errors")
+
+
+class BuildProjectMetadata(setuptools.Command):
+ """Command to generate project metadata in a module."""
+
+ description = 'build grpcio project metadata files'
+ user_options = []
+
+ def initialize_options(self):
+ pass
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ with open(os.path.join(PYTHON_STEM, 'grpc/_grpcio_metadata.py'),
+ 'w') as module_file:
+ module_file.write('__version__ = """{}"""'.format(
+ self.distribution.get_version()))
+
+
+class BuildPy(build_py.build_py):
+ """Custom project build command."""
+
+ def run(self):
+ self.run_command('build_project_metadata')
+ build_py.build_py.run(self)
+
+
+def _poison_extensions(extensions, message):
+ """Includes a file that will always fail to compile in all extensions."""
+ poison_filename = os.path.join(PYTHON_STEM, 'poison.c')
+ with open(poison_filename, 'w') as poison:
+ poison.write('#error {}'.format(message))
+ for extension in extensions:
+ extension.sources = [poison_filename]
+
+
+def check_and_update_cythonization(extensions):
+ """Replace .pyx files with their generated counterparts and return whether or
+ not cythonization still needs to occur."""
+ for extension in extensions:
+ generated_pyx_sources = []
+ other_sources = []
+ for source in extension.sources:
+ base, file_ext = os.path.splitext(source)
+ if file_ext == '.pyx':
+ generated_pyx_source = next((base + gen_ext for gen_ext in (
+ '.c',
+ '.cpp',
+ ) if os.path.isfile(base + gen_ext)), None)
+ if generated_pyx_source:
+ generated_pyx_sources.append(generated_pyx_source)
+ else:
+ sys.stderr.write('Cython-generated files are missing...\n')
+ return False
+ else:
+ other_sources.append(source)
+ extension.sources = generated_pyx_sources + other_sources
+ sys.stderr.write('Found cython-generated files...\n')
+ return True
+
+
+def try_cythonize(extensions, linetracing=False, mandatory=True):
+ """Attempt to cythonize the extensions.
+
+ Args:
+ extensions: A list of `distutils.extension.Extension`.
+ linetracing: A bool indicating whether or not to enable linetracing.
+ mandatory: Whether or not having Cython-generated files is mandatory. If it
+ is, extensions will be poisoned when they can't be fully generated.
+ """
+ try:
+ # Break import style to ensure we have access to Cython post-setup_requires
+ import Cython.Build
+ except ImportError:
+ if mandatory:
+ sys.stderr.write(
+ "This package needs to generate C files with Cython but it cannot. "
+ "Poisoning extension sources to disallow extension commands...")
+ _poison_extensions(
+ extensions,
+ "Extensions have been poisoned due to missing Cython-generated code."
+ )
+ return extensions
+ cython_compiler_directives = {}
+ if linetracing:
+ additional_define_macros = [('CYTHON_TRACE_NOGIL', '1')]
+ cython_compiler_directives['linetrace'] = True
+ return Cython.Build.cythonize(
+ extensions,
+ include_path=[
+ include_dir for extension in extensions
+ for include_dir in extension.include_dirs
+ ] + [CYTHON_STEM],
+ compiler_directives=cython_compiler_directives)
+
+
+class BuildExt(build_ext.build_ext):
+ """Custom build_ext command to enable compiler-specific flags."""
+
+ C_OPTIONS = {
+ 'unix': ('-pthread',),
+ 'msvc': (),
+ }
+ LINK_OPTIONS = {}
+
+ def get_ext_filename(self, ext_name):
+ # since python3.5, python extensions' shared libraries use a suffix that corresponds to the value
+ # of sysconfig.get_config_var('EXT_SUFFIX') and contains info about the architecture the library targets.
+ # E.g. on x64 linux the suffix is ".cpython-XYZ-x86_64-linux-gnu.so"
+ # When crosscompiling python wheels, we need to be able to override this suffix
+ # so that the resulting file name matches the target architecture and we end up with a well-formed
+ # wheel.
+ filename = build_ext.build_ext.get_ext_filename(self, ext_name)
+ orig_ext_suffix = sysconfig.get_config_var('EXT_SUFFIX')
+ new_ext_suffix = os.getenv('GRPC_PYTHON_OVERRIDE_EXT_SUFFIX')
+ if new_ext_suffix and filename.endswith(orig_ext_suffix):
+ filename = filename[:-len(orig_ext_suffix)] + new_ext_suffix
+ return filename
+
+ def build_extensions(self):
+
+ def compiler_ok_with_extra_std():
+ """Test if default compiler is okay with specifying c++ version
+ when invoked in C mode. GCC is okay with this, while clang is not.
+ """
+ try:
+ # TODO(lidiz) Remove the generated a.out for success tests.
+ cc = os.environ.get('CC', 'cc')
+ cc_test = subprocess.Popen([cc, '-x', 'c', '-std=c++14', '-'],
+ stdin=subprocess.PIPE,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE)
+ _, cc_err = cc_test.communicate(input=b'int main(){return 0;}')
+ return not 'invalid argument' in str(cc_err)
+ except:
+ sys.stderr.write('Non-fatal exception:' +
+ traceback.format_exc() + '\n')
+ return False
+
+ # This special conditioning is here due to difference of compiler
+ # behavior in gcc and clang. The clang doesn't take --stdc++11
+ # flags but gcc does. Since the setuptools of Python only support
+ # all C or all C++ compilation, the mix of C and C++ will crash.
+ # *By default*, macOS and FreBSD use clang and Linux use gcc
+ #
+ # If we are not using a permissive compiler that's OK with being
+ # passed wrong std flags, swap out compile function by adding a filter
+ # for it.
+ if not compiler_ok_with_extra_std():
+ old_compile = self.compiler._compile
+
+ def new_compile(obj, src, ext, cc_args, extra_postargs, pp_opts):
+ if src.endswith('.c'):
+ extra_postargs = [
+ arg for arg in extra_postargs if not '-std=c++' in arg
+ ]
+ elif src.endswith('.cc') or src.endswith('.cpp'):
+ extra_postargs = [
+ arg for arg in extra_postargs if not '-std=gnu99' in arg
+ ]
+ return old_compile(obj, src, ext, cc_args, extra_postargs,
+ pp_opts)
+
+ self.compiler._compile = new_compile
+
+ compiler = self.compiler.compiler_type
+ if compiler in BuildExt.C_OPTIONS:
+ for extension in self.extensions:
+ extension.extra_compile_args += list(
+ BuildExt.C_OPTIONS[compiler])
+ if compiler in BuildExt.LINK_OPTIONS:
+ for extension in self.extensions:
+ extension.extra_link_args += list(
+ BuildExt.LINK_OPTIONS[compiler])
+ if not check_and_update_cythonization(self.extensions):
+ self.extensions = try_cythonize(self.extensions)
+ try:
+ build_ext.build_ext.build_extensions(self)
+ except Exception as error:
+ formatted_exception = traceback.format_exc()
+ support.diagnose_build_ext_error(self, error, formatted_exception)
+ raise CommandError(
+ "Failed `build_ext` step:\n{}".format(formatted_exception))
+
+
+class Gather(setuptools.Command):
+ """Command to gather project dependencies."""
+
+ description = 'gather dependencies for grpcio'
+ user_options = [
+ ('test', 't', 'flag indicating to gather test dependencies'),
+ ('install', 'i', 'flag indicating to gather install dependencies')
+ ]
+
+ def initialize_options(self):
+ self.test = False
+ self.install = False
+
+ def finalize_options(self):
+ # distutils requires this override.
+ pass
+
+ def run(self):
+ if self.install and self.distribution.install_requires:
+ self.distribution.fetch_build_eggs(
+ self.distribution.install_requires)
+ if self.test and self.distribution.tests_require:
+ self.distribution.fetch_build_eggs(self.distribution.tests_require)
+
+
+class Clean(setuptools.Command):
+ """Command to clean build artifacts."""
+
+ description = 'Clean build artifacts.'
+ user_options = [
+ ('all', 'a', 'a phony flag to allow our script to continue'),
+ ]
+
+ _FILE_PATTERNS = (
+ 'python_build',
+ 'src/python/grpcio/__pycache__/',
+ 'src/python/grpcio/grpc/_cython/cygrpc.cpp',
+ 'src/python/grpcio/grpc/_cython/*.so',
+ 'src/python/grpcio/grpcio.egg-info/',
+ )
+ _CURRENT_DIRECTORY = os.path.normpath(
+ os.path.join(os.path.dirname(os.path.realpath(__file__)), "../../.."))
+
+ def initialize_options(self):
+ self.all = False
+
+ def finalize_options(self):
+ pass
+
+ def run(self):
+ for path_spec in self._FILE_PATTERNS:
+ this_glob = os.path.normpath(
+ os.path.join(Clean._CURRENT_DIRECTORY, path_spec))
+ abs_paths = glob.glob(this_glob)
+ for path in abs_paths:
+ if not str(path).startswith(Clean._CURRENT_DIRECTORY):
+ raise ValueError(
+ "Cowardly refusing to delete {}.".format(path))
+ print("Removing {}".format(os.path.relpath(path)))
+ if os.path.isfile(path):
+ os.remove(str(path))
+ else:
+ shutil.rmtree(str(path))
diff --git a/contrib/python/grpcio/py3/grpc_core_dependencies.py b/contrib/python/grpcio/py3/grpc_core_dependencies.py
new file mode 100644
index 00000000000..dcab5dcd455
--- /dev/null
+++ b/contrib/python/grpcio/py3/grpc_core_dependencies.py
@@ -0,0 +1,1502 @@
+# Copyright 2015 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_core_dependencies.py.template`!!!
+
+CORE_SOURCE_FILES = [
+ 'src/core/ext/filters/backend_metrics/backend_metric_filter.cc',
+ 'src/core/ext/filters/census/grpc_context.cc',
+ 'src/core/ext/filters/channel_idle/channel_idle_filter.cc',
+ 'src/core/ext/filters/channel_idle/idle_filter_state.cc',
+ 'src/core/ext/filters/client_channel/backend_metric.cc',
+ 'src/core/ext/filters/client_channel/backup_poller.cc',
+ 'src/core/ext/filters/client_channel/channel_connectivity.cc',
+ 'src/core/ext/filters/client_channel/client_channel.cc',
+ 'src/core/ext/filters/client_channel/client_channel_channelz.cc',
+ 'src/core/ext/filters/client_channel/client_channel_factory.cc',
+ 'src/core/ext/filters/client_channel/client_channel_plugin.cc',
+ 'src/core/ext/filters/client_channel/client_channel_service_config.cc',
+ 'src/core/ext/filters/client_channel/config_selector.cc',
+ 'src/core/ext/filters/client_channel/dynamic_filters.cc',
+ 'src/core/ext/filters/client_channel/global_subchannel_pool.cc',
+ 'src/core/ext/filters/client_channel/health/health_check_client.cc',
+ 'src/core/ext/filters/client_channel/http_proxy.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/address_filtering.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/priority/priority.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/rls/rls.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/static_stride_scheduler.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/weighted_round_robin/weighted_round_robin.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/cds.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_override_host.cc',
+ 'src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc',
+ 'src/core/ext/filters/client_channel/local_subchannel_pool.cc',
+ 'src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_posix.cc',
+ 'src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc',
+ 'src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc',
+ 'src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc',
+ 'src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc',
+ 'src/core/ext/filters/client_channel/resolver/polling_resolver.cc',
+ 'src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc',
+ 'src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc',
+ 'src/core/ext/filters/client_channel/retry_filter.cc',
+ 'src/core/ext/filters/client_channel/retry_service_config.cc',
+ 'src/core/ext/filters/client_channel/retry_throttle.cc',
+ 'src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc',
+ 'src/core/ext/filters/client_channel/subchannel.cc',
+ 'src/core/ext/filters/client_channel/subchannel_pool_interface.cc',
+ 'src/core/ext/filters/client_channel/subchannel_stream_client.cc',
+ 'src/core/ext/filters/deadline/deadline_filter.cc',
+ 'src/core/ext/filters/fault_injection/fault_injection_filter.cc',
+ 'src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc',
+ 'src/core/ext/filters/http/client/http_client_filter.cc',
+ 'src/core/ext/filters/http/client_authority_filter.cc',
+ 'src/core/ext/filters/http/http_filters_plugin.cc',
+ 'src/core/ext/filters/http/message_compress/compression_filter.cc',
+ 'src/core/ext/filters/http/server/http_server_filter.cc',
+ 'src/core/ext/filters/message_size/message_size_filter.cc',
+ 'src/core/ext/filters/rbac/rbac_filter.cc',
+ 'src/core/ext/filters/rbac/rbac_service_config_parser.cc',
+ 'src/core/ext/filters/server_config_selector/server_config_selector_filter.cc',
+ 'src/core/ext/filters/stateful_session/stateful_session_filter.cc',
+ 'src/core/ext/filters/stateful_session/stateful_session_service_config_parser.cc',
+ 'src/core/ext/gcp/metadata_query.cc',
+ 'src/core/ext/transport/chttp2/alpn/alpn.cc',
+ 'src/core/ext/transport/chttp2/client/chttp2_connector.cc',
+ 'src/core/ext/transport/chttp2/server/chttp2_server.cc',
+ 'src/core/ext/transport/chttp2/transport/bin_decoder.cc',
+ 'src/core/ext/transport/chttp2/transport/bin_encoder.cc',
+ 'src/core/ext/transport/chttp2/transport/chttp2_transport.cc',
+ 'src/core/ext/transport/chttp2/transport/context_list.cc',
+ 'src/core/ext/transport/chttp2/transport/decode_huff.cc',
+ 'src/core/ext/transport/chttp2/transport/flow_control.cc',
+ 'src/core/ext/transport/chttp2/transport/frame_data.cc',
+ 'src/core/ext/transport/chttp2/transport/frame_goaway.cc',
+ 'src/core/ext/transport/chttp2/transport/frame_ping.cc',
+ 'src/core/ext/transport/chttp2/transport/frame_rst_stream.cc',
+ 'src/core/ext/transport/chttp2/transport/frame_settings.cc',
+ 'src/core/ext/transport/chttp2/transport/frame_window_update.cc',
+ 'src/core/ext/transport/chttp2/transport/hpack_encoder.cc',
+ 'src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc',
+ 'src/core/ext/transport/chttp2/transport/hpack_parser.cc',
+ 'src/core/ext/transport/chttp2/transport/hpack_parser_table.cc',
+ 'src/core/ext/transport/chttp2/transport/http2_settings.cc',
+ 'src/core/ext/transport/chttp2/transport/http_trace.cc',
+ 'src/core/ext/transport/chttp2/transport/huffsyms.cc',
+ 'src/core/ext/transport/chttp2/transport/parsing.cc',
+ 'src/core/ext/transport/chttp2/transport/stream_lists.cc',
+ 'src/core/ext/transport/chttp2/transport/stream_map.cc',
+ 'src/core/ext/transport/chttp2/transport/varint.cc',
+ 'src/core/ext/transport/chttp2/transport/writing.cc',
+ 'src/core/ext/transport/inproc/inproc_plugin.cc',
+ 'src/core/ext/transport/inproc/inproc_transport.cc',
+ 'src/core/ext/upb-generated/envoy/admin/v3/certs.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/clusters.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/config_dump.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/config_dump_shared.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/init_dump.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/listeners.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/memory.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/metrics.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/mutex_stats.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/server_info.upb.c',
+ 'src/core/ext/upb-generated/envoy/admin/v3/tap.upb.c',
+ 'src/core/ext/upb-generated/envoy/annotations/deprecation.upb.c',
+ 'src/core/ext/upb-generated/envoy/annotations/resource.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/common/matcher/v3/matcher.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/grpc_method_list.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/metrics/v3/metrics_service.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/metrics/v3/stats.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/overload/v3/overload.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/tap/v3/common.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/datadog.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/dynamic_ot.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/lightstep.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/opencensus.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/opentelemetry.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/service.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/skywalking.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/trace.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/xray.upb.c',
+ 'src/core/ext/upb-generated/envoy/config/trace/v3/zipkin.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/clusters/aggregate/v3/cluster.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/filters/common/fault/v3/fault.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/filters/http/rbac/v3/rbac.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/client_side_weighted_round_robin/v3/client_side_weighted_round_robin.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/common/v3/common.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/ring_hash/v3/ring_hash.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/load_balancing_policies/wrr_locality/v3/wrr_locality.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c',
+ 'src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upb.c',
+ 'src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c',
+ 'src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c',
+ 'src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c',
+ 'src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/http/v3/cookie.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/filter_state.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/http_inputs.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/node.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/status_code_input.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/struct.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/hash_policy.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/http.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/http_status.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/percent.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/range.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/ratelimit_strategy.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/ratelimit_unit.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c',
+ 'src/core/ext/upb-generated/envoy/type/v3/token_bucket.upb.c',
+ 'src/core/ext/upb-generated/google/api/annotations.upb.c',
+ 'src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c',
+ 'src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c',
+ 'src/core/ext/upb-generated/google/api/http.upb.c',
+ 'src/core/ext/upb-generated/google/api/httpbody.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/any.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/descriptor.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/duration.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/empty.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/struct.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/timestamp.upb.c',
+ 'src/core/ext/upb-generated/google/protobuf/wrappers.upb.c',
+ 'src/core/ext/upb-generated/google/rpc/status.upb.c',
+ 'src/core/ext/upb-generated/opencensus/proto/trace/v1/trace_config.upb.c',
+ 'src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c',
+ 'src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c',
+ 'src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c',
+ 'src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c',
+ 'src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c',
+ 'src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls.upb.c',
+ 'src/core/ext/upb-generated/src/proto/grpc/lookup/v1/rls_config.upb.c',
+ 'src/core/ext/upb-generated/udpa/annotations/migrate.upb.c',
+ 'src/core/ext/upb-generated/udpa/annotations/security.upb.c',
+ 'src/core/ext/upb-generated/udpa/annotations/sensitive.upb.c',
+ 'src/core/ext/upb-generated/udpa/annotations/status.upb.c',
+ 'src/core/ext/upb-generated/udpa/annotations/versioning.upb.c',
+ 'src/core/ext/upb-generated/validate/validate.upb.c',
+ 'src/core/ext/upb-generated/xds/annotations/v3/migrate.upb.c',
+ 'src/core/ext/upb-generated/xds/annotations/v3/security.upb.c',
+ 'src/core/ext/upb-generated/xds/annotations/v3/sensitive.upb.c',
+ 'src/core/ext/upb-generated/xds/annotations/v3/status.upb.c',
+ 'src/core/ext/upb-generated/xds/annotations/v3/versioning.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/authority.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/cidr.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/collection_entry.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/context_params.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/extension.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/resource.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/resource_locator.upb.c',
+ 'src/core/ext/upb-generated/xds/core/v3/resource_name.upb.c',
+ 'src/core/ext/upb-generated/xds/data/orca/v3/orca_load_report.upb.c',
+ 'src/core/ext/upb-generated/xds/service/orca/v3/orca.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/cel.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/domain.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/http_inputs.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/ip.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/matcher.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/range.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/regex.upb.c',
+ 'src/core/ext/upb-generated/xds/type/matcher/v3/string.upb.c',
+ 'src/core/ext/upb-generated/xds/type/v3/cel.upb.c',
+ 'src/core/ext/upb-generated/xds/type/v3/range.upb.c',
+ 'src/core/ext/upb-generated/xds/type/v3/typed_struct.upb.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/certs.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/clusters.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/config_dump_shared.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/init_dump.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/listeners.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/memory.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/metrics.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/mutex_stats.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/server_info.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/admin/v3/tap.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/common/matcher/v3/matcher.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_method_list.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/metrics/v3/metrics_service.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/metrics/v3/stats.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/overload/v3/overload.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/rbac/v3/rbac.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/tap/v3/common.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/datadog.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/dynamic_ot.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/lightstep.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/opencensus.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/opentelemetry.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/service.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/skywalking.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/trace.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/xray.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/config/trace/v3/zipkin.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/clusters/aggregate/v3/cluster.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/common/fault/v3/fault.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/rbac/v3/rbac.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/http/stateful_session/v3/stateful_session.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/http/stateful_session/cookie/v3/cookie.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls_spiffe_validator_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/http/v3/cookie.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/filter_state.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/http_inputs.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/node.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/status_code_input.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/struct.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/hash_policy.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/http_status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_strategy.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/ratelimit_unit.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/envoy/type/v3/token_bucket.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/checked.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/expr/v1alpha1/syntax.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/http.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/api/httpbody.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/opencensus/proto/trace/v1/trace_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/src/proto/grpc/lookup/v1/rls_config.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/validate/validate.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/annotations/v3/migrate.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/annotations/v3/security.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/annotations/v3/sensitive.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/annotations/v3/status.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/annotations/v3/versioning.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/authority.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/cidr.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/collection_entry.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/context_params.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/extension.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/resource.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/resource_locator.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/core/v3/resource_name.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/cel.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/domain.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/http_inputs.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/ip.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/matcher.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/range.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/regex.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/matcher/v3/string.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/v3/cel.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/v3/range.upbdefs.c',
+ 'src/core/ext/upbdefs-generated/xds/type/v3/typed_struct.upbdefs.c',
+ 'src/core/ext/xds/certificate_provider_store.cc',
+ 'src/core/ext/xds/file_watcher_certificate_provider_factory.cc',
+ 'src/core/ext/xds/xds_api.cc',
+ 'src/core/ext/xds/xds_bootstrap.cc',
+ 'src/core/ext/xds/xds_bootstrap_grpc.cc',
+ 'src/core/ext/xds/xds_certificate_provider.cc',
+ 'src/core/ext/xds/xds_channel_stack_modifier.cc',
+ 'src/core/ext/xds/xds_client.cc',
+ 'src/core/ext/xds/xds_client_grpc.cc',
+ 'src/core/ext/xds/xds_client_stats.cc',
+ 'src/core/ext/xds/xds_cluster.cc',
+ 'src/core/ext/xds/xds_cluster_specifier_plugin.cc',
+ 'src/core/ext/xds/xds_common_types.cc',
+ 'src/core/ext/xds/xds_endpoint.cc',
+ 'src/core/ext/xds/xds_health_status.cc',
+ 'src/core/ext/xds/xds_http_fault_filter.cc',
+ 'src/core/ext/xds/xds_http_filters.cc',
+ 'src/core/ext/xds/xds_http_rbac_filter.cc',
+ 'src/core/ext/xds/xds_http_stateful_session_filter.cc',
+ 'src/core/ext/xds/xds_lb_policy_registry.cc',
+ 'src/core/ext/xds/xds_listener.cc',
+ 'src/core/ext/xds/xds_route_config.cc',
+ 'src/core/ext/xds/xds_routing.cc',
+ 'src/core/ext/xds/xds_server_config_fetcher.cc',
+ 'src/core/ext/xds/xds_transport_grpc.cc',
+ 'src/core/lib/address_utils/parse_address.cc',
+ 'src/core/lib/address_utils/sockaddr_utils.cc',
+ 'src/core/lib/backoff/backoff.cc',
+ 'src/core/lib/backoff/random_early_detection.cc',
+ 'src/core/lib/channel/call_tracer.cc',
+ 'src/core/lib/channel/channel_args.cc',
+ 'src/core/lib/channel/channel_args_preconditioning.cc',
+ 'src/core/lib/channel/channel_stack.cc',
+ 'src/core/lib/channel/channel_stack_builder.cc',
+ 'src/core/lib/channel/channel_stack_builder_impl.cc',
+ 'src/core/lib/channel/channel_trace.cc',
+ 'src/core/lib/channel/channelz.cc',
+ 'src/core/lib/channel/channelz_registry.cc',
+ 'src/core/lib/channel/connected_channel.cc',
+ 'src/core/lib/channel/promise_based_filter.cc',
+ 'src/core/lib/channel/server_call_tracer_filter.cc',
+ 'src/core/lib/channel/status_util.cc',
+ 'src/core/lib/compression/compression.cc',
+ 'src/core/lib/compression/compression_internal.cc',
+ 'src/core/lib/compression/message_compress.cc',
+ 'src/core/lib/config/config_vars.cc',
+ 'src/core/lib/config/config_vars_non_generated.cc',
+ 'src/core/lib/config/core_configuration.cc',
+ 'src/core/lib/config/load_config.cc',
+ 'src/core/lib/debug/event_log.cc',
+ 'src/core/lib/debug/histogram_view.cc',
+ 'src/core/lib/debug/stats.cc',
+ 'src/core/lib/debug/stats_data.cc',
+ 'src/core/lib/debug/trace.cc',
+ 'src/core/lib/event_engine/channel_args_endpoint_config.cc',
+ 'src/core/lib/event_engine/default_event_engine.cc',
+ 'src/core/lib/event_engine/default_event_engine_factory.cc',
+ 'src/core/lib/event_engine/event_engine.cc',
+ 'src/core/lib/event_engine/forkable.cc',
+ 'src/core/lib/event_engine/memory_allocator.cc',
+ 'src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc',
+ 'src/core/lib/event_engine/posix_engine/ev_poll_posix.cc',
+ 'src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc',
+ 'src/core/lib/event_engine/posix_engine/internal_errqueue.cc',
+ 'src/core/lib/event_engine/posix_engine/lockfree_event.cc',
+ 'src/core/lib/event_engine/posix_engine/posix_endpoint.cc',
+ 'src/core/lib/event_engine/posix_engine/posix_engine.cc',
+ 'src/core/lib/event_engine/posix_engine/posix_engine_listener.cc',
+ 'src/core/lib/event_engine/posix_engine/posix_engine_listener_utils.cc',
+ 'src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc',
+ 'src/core/lib/event_engine/posix_engine/timer.cc',
+ 'src/core/lib/event_engine/posix_engine/timer_heap.cc',
+ 'src/core/lib/event_engine/posix_engine/timer_manager.cc',
+ 'src/core/lib/event_engine/posix_engine/traced_buffer_list.cc',
+ 'src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc',
+ 'src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc',
+ 'src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc',
+ 'src/core/lib/event_engine/resolved_address.cc',
+ 'src/core/lib/event_engine/shim.cc',
+ 'src/core/lib/event_engine/slice.cc',
+ 'src/core/lib/event_engine/slice_buffer.cc',
+ 'src/core/lib/event_engine/tcp_socket_utils.cc',
+ 'src/core/lib/event_engine/thread_local.cc',
+ 'src/core/lib/event_engine/thread_pool.cc',
+ 'src/core/lib/event_engine/time_util.cc',
+ 'src/core/lib/event_engine/trace.cc',
+ 'src/core/lib/event_engine/utils.cc',
+ 'src/core/lib/event_engine/windows/iocp.cc',
+ 'src/core/lib/event_engine/windows/win_socket.cc',
+ 'src/core/lib/event_engine/windows/windows_endpoint.cc',
+ 'src/core/lib/event_engine/windows/windows_engine.cc',
+ 'src/core/lib/event_engine/windows/windows_listener.cc',
+ 'src/core/lib/experiments/config.cc',
+ 'src/core/lib/experiments/experiments.cc',
+ 'src/core/lib/gpr/alloc.cc',
+ 'src/core/lib/gpr/android/log.cc',
+ 'src/core/lib/gpr/atm.cc',
+ 'src/core/lib/gpr/iphone/cpu.cc',
+ 'src/core/lib/gpr/linux/cpu.cc',
+ 'src/core/lib/gpr/linux/log.cc',
+ 'src/core/lib/gpr/log.cc',
+ 'src/core/lib/gpr/msys/tmpfile.cc',
+ 'src/core/lib/gpr/posix/cpu.cc',
+ 'src/core/lib/gpr/posix/log.cc',
+ 'src/core/lib/gpr/posix/string.cc',
+ 'src/core/lib/gpr/posix/sync.cc',
+ 'src/core/lib/gpr/posix/time.cc',
+ 'src/core/lib/gpr/posix/tmpfile.cc',
+ 'src/core/lib/gpr/string.cc',
+ 'src/core/lib/gpr/sync.cc',
+ 'src/core/lib/gpr/sync_abseil.cc',
+ 'src/core/lib/gpr/time.cc',
+ 'src/core/lib/gpr/time_precise.cc',
+ 'src/core/lib/gpr/windows/cpu.cc',
+ 'src/core/lib/gpr/windows/log.cc',
+ 'src/core/lib/gpr/windows/string.cc',
+ 'src/core/lib/gpr/windows/string_util.cc',
+ 'src/core/lib/gpr/windows/sync.cc',
+ 'src/core/lib/gpr/windows/time.cc',
+ 'src/core/lib/gpr/windows/tmpfile.cc',
+ 'src/core/lib/gpr/wrap_memcpy.cc',
+ 'src/core/lib/gprpp/crash.cc',
+ 'src/core/lib/gprpp/examine_stack.cc',
+ 'src/core/lib/gprpp/fork.cc',
+ 'src/core/lib/gprpp/host_port.cc',
+ 'src/core/lib/gprpp/linux/env.cc',
+ 'src/core/lib/gprpp/load_file.cc',
+ 'src/core/lib/gprpp/mpscq.cc',
+ 'src/core/lib/gprpp/posix/env.cc',
+ 'src/core/lib/gprpp/posix/stat.cc',
+ 'src/core/lib/gprpp/posix/thd.cc',
+ 'src/core/lib/gprpp/status_helper.cc',
+ 'src/core/lib/gprpp/strerror.cc',
+ 'src/core/lib/gprpp/tchar.cc',
+ 'src/core/lib/gprpp/time.cc',
+ 'src/core/lib/gprpp/time_averaged_stats.cc',
+ 'src/core/lib/gprpp/time_util.cc',
+ 'src/core/lib/gprpp/validation_errors.cc',
+ 'src/core/lib/gprpp/windows/env.cc',
+ 'src/core/lib/gprpp/windows/stat.cc',
+ 'src/core/lib/gprpp/windows/thd.cc',
+ 'src/core/lib/gprpp/work_serializer.cc',
+ 'src/core/lib/handshaker/proxy_mapper_registry.cc',
+ 'src/core/lib/http/format_request.cc',
+ 'src/core/lib/http/httpcli.cc',
+ 'src/core/lib/http/httpcli_security_connector.cc',
+ 'src/core/lib/http/parser.cc',
+ 'src/core/lib/iomgr/buffer_list.cc',
+ 'src/core/lib/iomgr/call_combiner.cc',
+ 'src/core/lib/iomgr/cfstream_handle.cc',
+ 'src/core/lib/iomgr/closure.cc',
+ 'src/core/lib/iomgr/combiner.cc',
+ 'src/core/lib/iomgr/dualstack_socket_posix.cc',
+ 'src/core/lib/iomgr/endpoint.cc',
+ 'src/core/lib/iomgr/endpoint_cfstream.cc',
+ 'src/core/lib/iomgr/endpoint_pair_posix.cc',
+ 'src/core/lib/iomgr/endpoint_pair_windows.cc',
+ 'src/core/lib/iomgr/error.cc',
+ 'src/core/lib/iomgr/error_cfstream.cc',
+ 'src/core/lib/iomgr/ev_apple.cc',
+ 'src/core/lib/iomgr/ev_epoll1_linux.cc',
+ 'src/core/lib/iomgr/ev_poll_posix.cc',
+ 'src/core/lib/iomgr/ev_posix.cc',
+ 'src/core/lib/iomgr/ev_windows.cc',
+ 'src/core/lib/iomgr/event_engine_shims/closure.cc',
+ 'src/core/lib/iomgr/event_engine_shims/endpoint.cc',
+ 'src/core/lib/iomgr/event_engine_shims/tcp_client.cc',
+ 'src/core/lib/iomgr/exec_ctx.cc',
+ 'src/core/lib/iomgr/executor.cc',
+ 'src/core/lib/iomgr/fork_posix.cc',
+ 'src/core/lib/iomgr/fork_windows.cc',
+ 'src/core/lib/iomgr/gethostname_fallback.cc',
+ 'src/core/lib/iomgr/gethostname_host_name_max.cc',
+ 'src/core/lib/iomgr/gethostname_sysconf.cc',
+ 'src/core/lib/iomgr/grpc_if_nametoindex_posix.cc',
+ 'src/core/lib/iomgr/grpc_if_nametoindex_unsupported.cc',
+ 'src/core/lib/iomgr/internal_errqueue.cc',
+ 'src/core/lib/iomgr/iocp_windows.cc',
+ 'src/core/lib/iomgr/iomgr.cc',
+ 'src/core/lib/iomgr/iomgr_internal.cc',
+ 'src/core/lib/iomgr/iomgr_posix.cc',
+ 'src/core/lib/iomgr/iomgr_posix_cfstream.cc',
+ 'src/core/lib/iomgr/iomgr_windows.cc',
+ 'src/core/lib/iomgr/load_file.cc',
+ 'src/core/lib/iomgr/lockfree_event.cc',
+ 'src/core/lib/iomgr/polling_entity.cc',
+ 'src/core/lib/iomgr/pollset.cc',
+ 'src/core/lib/iomgr/pollset_set.cc',
+ 'src/core/lib/iomgr/pollset_set_windows.cc',
+ 'src/core/lib/iomgr/pollset_windows.cc',
+ 'src/core/lib/iomgr/resolve_address.cc',
+ 'src/core/lib/iomgr/resolve_address_posix.cc',
+ 'src/core/lib/iomgr/resolve_address_windows.cc',
+ 'src/core/lib/iomgr/sockaddr_utils_posix.cc',
+ 'src/core/lib/iomgr/socket_factory_posix.cc',
+ 'src/core/lib/iomgr/socket_mutator.cc',
+ 'src/core/lib/iomgr/socket_utils_common_posix.cc',
+ 'src/core/lib/iomgr/socket_utils_linux.cc',
+ 'src/core/lib/iomgr/socket_utils_posix.cc',
+ 'src/core/lib/iomgr/socket_utils_windows.cc',
+ 'src/core/lib/iomgr/socket_windows.cc',
+ 'src/core/lib/iomgr/systemd_utils.cc',
+ 'src/core/lib/iomgr/tcp_client.cc',
+ 'src/core/lib/iomgr/tcp_client_cfstream.cc',
+ 'src/core/lib/iomgr/tcp_client_posix.cc',
+ 'src/core/lib/iomgr/tcp_client_windows.cc',
+ 'src/core/lib/iomgr/tcp_posix.cc',
+ 'src/core/lib/iomgr/tcp_server.cc',
+ 'src/core/lib/iomgr/tcp_server_posix.cc',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_common.cc',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc',
+ 'src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc',
+ 'src/core/lib/iomgr/tcp_server_windows.cc',
+ 'src/core/lib/iomgr/tcp_windows.cc',
+ 'src/core/lib/iomgr/timer.cc',
+ 'src/core/lib/iomgr/timer_generic.cc',
+ 'src/core/lib/iomgr/timer_heap.cc',
+ 'src/core/lib/iomgr/timer_manager.cc',
+ 'src/core/lib/iomgr/unix_sockets_posix.cc',
+ 'src/core/lib/iomgr/unix_sockets_posix_noop.cc',
+ 'src/core/lib/iomgr/wakeup_fd_eventfd.cc',
+ 'src/core/lib/iomgr/wakeup_fd_nospecial.cc',
+ 'src/core/lib/iomgr/wakeup_fd_pipe.cc',
+ 'src/core/lib/iomgr/wakeup_fd_posix.cc',
+ 'src/core/lib/json/json_object_loader.cc',
+ 'src/core/lib/json/json_reader.cc',
+ 'src/core/lib/json/json_util.cc',
+ 'src/core/lib/json/json_writer.cc',
+ 'src/core/lib/load_balancing/lb_policy.cc',
+ 'src/core/lib/load_balancing/lb_policy_registry.cc',
+ 'src/core/lib/matchers/matchers.cc',
+ 'src/core/lib/promise/activity.cc',
+ 'src/core/lib/promise/party.cc',
+ 'src/core/lib/promise/sleep.cc',
+ 'src/core/lib/promise/trace.cc',
+ 'src/core/lib/resolver/resolver.cc',
+ 'src/core/lib/resolver/resolver_registry.cc',
+ 'src/core/lib/resolver/server_address.cc',
+ 'src/core/lib/resource_quota/api.cc',
+ 'src/core/lib/resource_quota/arena.cc',
+ 'src/core/lib/resource_quota/memory_quota.cc',
+ 'src/core/lib/resource_quota/periodic_update.cc',
+ 'src/core/lib/resource_quota/resource_quota.cc',
+ 'src/core/lib/resource_quota/thread_quota.cc',
+ 'src/core/lib/resource_quota/trace.cc',
+ 'src/core/lib/security/authorization/authorization_policy_provider_vtable.cc',
+ 'src/core/lib/security/authorization/evaluate_args.cc',
+ 'src/core/lib/security/authorization/grpc_authorization_engine.cc',
+ 'src/core/lib/security/authorization/grpc_server_authz_filter.cc',
+ 'src/core/lib/security/authorization/matchers.cc',
+ 'src/core/lib/security/authorization/rbac_policy.cc',
+ 'src/core/lib/security/certificate_provider/certificate_provider_registry.cc',
+ 'src/core/lib/security/context/security_context.cc',
+ 'src/core/lib/security/credentials/alts/alts_credentials.cc',
+ 'src/core/lib/security/credentials/alts/check_gcp_environment.cc',
+ 'src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc',
+ 'src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc',
+ 'src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc',
+ 'src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc',
+ 'src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc',
+ 'src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc',
+ 'src/core/lib/security/credentials/call_creds_util.cc',
+ 'src/core/lib/security/credentials/channel_creds_registry_init.cc',
+ 'src/core/lib/security/credentials/composite/composite_credentials.cc',
+ 'src/core/lib/security/credentials/credentials.cc',
+ 'src/core/lib/security/credentials/external/aws_external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/aws_request_signer.cc',
+ 'src/core/lib/security/credentials/external/external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/file_external_account_credentials.cc',
+ 'src/core/lib/security/credentials/external/url_external_account_credentials.cc',
+ 'src/core/lib/security/credentials/fake/fake_credentials.cc',
+ 'src/core/lib/security/credentials/google_default/credentials_generic.cc',
+ 'src/core/lib/security/credentials/google_default/google_default_credentials.cc',
+ 'src/core/lib/security/credentials/iam/iam_credentials.cc',
+ 'src/core/lib/security/credentials/insecure/insecure_credentials.cc',
+ 'src/core/lib/security/credentials/jwt/json_token.cc',
+ 'src/core/lib/security/credentials/jwt/jwt_credentials.cc',
+ 'src/core/lib/security/credentials/jwt/jwt_verifier.cc',
+ 'src/core/lib/security/credentials/local/local_credentials.cc',
+ 'src/core/lib/security/credentials/oauth2/oauth2_credentials.cc',
+ 'src/core/lib/security/credentials/plugin/plugin_credentials.cc',
+ 'src/core/lib/security/credentials/ssl/ssl_credentials.cc',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc',
+ 'src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc',
+ 'src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc',
+ 'src/core/lib/security/credentials/tls/tls_credentials.cc',
+ 'src/core/lib/security/credentials/tls/tls_utils.cc',
+ 'src/core/lib/security/credentials/xds/xds_credentials.cc',
+ 'src/core/lib/security/security_connector/alts/alts_security_connector.cc',
+ 'src/core/lib/security/security_connector/fake/fake_security_connector.cc',
+ 'src/core/lib/security/security_connector/insecure/insecure_security_connector.cc',
+ 'src/core/lib/security/security_connector/load_system_roots_fallback.cc',
+ 'src/core/lib/security/security_connector/load_system_roots_supported.cc',
+ 'src/core/lib/security/security_connector/local/local_security_connector.cc',
+ 'src/core/lib/security/security_connector/security_connector.cc',
+ 'src/core/lib/security/security_connector/ssl/ssl_security_connector.cc',
+ 'src/core/lib/security/security_connector/ssl_utils.cc',
+ 'src/core/lib/security/security_connector/tls/tls_security_connector.cc',
+ 'src/core/lib/security/transport/client_auth_filter.cc',
+ 'src/core/lib/security/transport/secure_endpoint.cc',
+ 'src/core/lib/security/transport/security_handshaker.cc',
+ 'src/core/lib/security/transport/server_auth_filter.cc',
+ 'src/core/lib/security/transport/tsi_error.cc',
+ 'src/core/lib/security/util/json_util.cc',
+ 'src/core/lib/service_config/service_config_impl.cc',
+ 'src/core/lib/service_config/service_config_parser.cc',
+ 'src/core/lib/slice/b64.cc',
+ 'src/core/lib/slice/percent_encoding.cc',
+ 'src/core/lib/slice/slice.cc',
+ 'src/core/lib/slice/slice_buffer.cc',
+ 'src/core/lib/slice/slice_refcount.cc',
+ 'src/core/lib/slice/slice_string_helpers.cc',
+ 'src/core/lib/surface/api_trace.cc',
+ 'src/core/lib/surface/builtins.cc',
+ 'src/core/lib/surface/byte_buffer.cc',
+ 'src/core/lib/surface/byte_buffer_reader.cc',
+ 'src/core/lib/surface/call.cc',
+ 'src/core/lib/surface/call_details.cc',
+ 'src/core/lib/surface/call_log_batch.cc',
+ 'src/core/lib/surface/call_trace.cc',
+ 'src/core/lib/surface/channel.cc',
+ 'src/core/lib/surface/channel_init.cc',
+ 'src/core/lib/surface/channel_ping.cc',
+ 'src/core/lib/surface/channel_stack_type.cc',
+ 'src/core/lib/surface/completion_queue.cc',
+ 'src/core/lib/surface/completion_queue_factory.cc',
+ 'src/core/lib/surface/event_string.cc',
+ 'src/core/lib/surface/init.cc',
+ 'src/core/lib/surface/init_internally.cc',
+ 'src/core/lib/surface/lame_client.cc',
+ 'src/core/lib/surface/metadata_array.cc',
+ 'src/core/lib/surface/server.cc',
+ 'src/core/lib/surface/validate_metadata.cc',
+ 'src/core/lib/surface/version.cc',
+ 'src/core/lib/transport/batch_builder.cc',
+ 'src/core/lib/transport/bdp_estimator.cc',
+ 'src/core/lib/transport/connectivity_state.cc',
+ 'src/core/lib/transport/error_utils.cc',
+ 'src/core/lib/transport/handshaker.cc',
+ 'src/core/lib/transport/handshaker_registry.cc',
+ 'src/core/lib/transport/http_connect_handshaker.cc',
+ 'src/core/lib/transport/metadata_batch.cc',
+ 'src/core/lib/transport/parsed_metadata.cc',
+ 'src/core/lib/transport/pid_controller.cc',
+ 'src/core/lib/transport/status_conversion.cc',
+ 'src/core/lib/transport/tcp_connect_handshaker.cc',
+ 'src/core/lib/transport/timeout_encoding.cc',
+ 'src/core/lib/transport/transport.cc',
+ 'src/core/lib/transport/transport_op_string.cc',
+ 'src/core/lib/uri/uri_parser.cc',
+ 'src/core/plugin_registry/grpc_plugin_registry.cc',
+ 'src/core/plugin_registry/grpc_plugin_registry_extra.cc',
+ 'src/core/tsi/alts/crypt/aes_gcm.cc',
+ 'src/core/tsi/alts/crypt/gsec.cc',
+ 'src/core/tsi/alts/frame_protector/alts_counter.cc',
+ 'src/core/tsi/alts/frame_protector/alts_crypter.cc',
+ 'src/core/tsi/alts/frame_protector/alts_frame_protector.cc',
+ 'src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc',
+ 'src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc',
+ 'src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc',
+ 'src/core/tsi/alts/frame_protector/frame_handler.cc',
+ 'src/core/tsi/alts/handshaker/alts_handshaker_client.cc',
+ 'src/core/tsi/alts/handshaker/alts_shared_resource.cc',
+ 'src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc',
+ 'src/core/tsi/alts/handshaker/alts_tsi_utils.cc',
+ 'src/core/tsi/alts/handshaker/transport_security_common_api.cc',
+ 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc',
+ 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc',
+ 'src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc',
+ 'src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc',
+ 'src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc',
+ 'src/core/tsi/fake_transport_security.cc',
+ 'src/core/tsi/local_transport_security.cc',
+ 'src/core/tsi/ssl/key_logging/ssl_key_logging.cc',
+ 'src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc',
+ 'src/core/tsi/ssl/session_cache/ssl_session_cache.cc',
+ 'src/core/tsi/ssl/session_cache/ssl_session_openssl.cc',
+ 'src/core/tsi/ssl_transport_security.cc',
+ 'src/core/tsi/ssl_transport_security_utils.cc',
+ 'src/core/tsi/transport_security.cc',
+ 'src/core/tsi/transport_security_grpc.cc',
+ 'third_party/abseil-cpp/absl/base/internal/cycleclock.cc',
+ 'third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc',
+ 'third_party/abseil-cpp/absl/base/internal/raw_logging.cc',
+ 'third_party/abseil-cpp/absl/base/internal/spinlock.cc',
+ 'third_party/abseil-cpp/absl/base/internal/spinlock_wait.cc',
+ 'third_party/abseil-cpp/absl/base/internal/strerror.cc',
+ 'third_party/abseil-cpp/absl/base/internal/sysinfo.cc',
+ 'third_party/abseil-cpp/absl/base/internal/thread_identity.cc',
+ 'third_party/abseil-cpp/absl/base/internal/throw_delegate.cc',
+ 'third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc',
+ 'third_party/abseil-cpp/absl/base/log_severity.cc',
+ 'third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc',
+ 'third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc',
+ 'third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc',
+ 'third_party/abseil-cpp/absl/crc/crc32c.cc',
+ 'third_party/abseil-cpp/absl/crc/internal/cpu_detect.cc',
+ 'third_party/abseil-cpp/absl/crc/internal/crc.cc',
+ 'third_party/abseil-cpp/absl/crc/internal/crc_cord_state.cc',
+ 'third_party/abseil-cpp/absl/crc/internal/crc_memcpy_fallback.cc',
+ 'third_party/abseil-cpp/absl/crc/internal/crc_memcpy_x86_64.cc',
+ 'third_party/abseil-cpp/absl/crc/internal/crc_non_temporal_memcpy.cc',
+ 'third_party/abseil-cpp/absl/crc/internal/crc_x86_arm_combined.cc',
+ 'third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc',
+ 'third_party/abseil-cpp/absl/debugging/internal/demangle.cc',
+ 'third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc',
+ 'third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc',
+ 'third_party/abseil-cpp/absl/debugging/stacktrace.cc',
+ 'third_party/abseil-cpp/absl/debugging/symbolize.cc',
+ 'third_party/abseil-cpp/absl/flags/commandlineflag.cc',
+ 'third_party/abseil-cpp/absl/flags/flag.cc',
+ 'third_party/abseil-cpp/absl/flags/internal/commandlineflag.cc',
+ 'third_party/abseil-cpp/absl/flags/internal/flag.cc',
+ 'third_party/abseil-cpp/absl/flags/internal/private_handle_accessor.cc',
+ 'third_party/abseil-cpp/absl/flags/internal/program_name.cc',
+ 'third_party/abseil-cpp/absl/flags/marshalling.cc',
+ 'third_party/abseil-cpp/absl/flags/reflection.cc',
+ 'third_party/abseil-cpp/absl/flags/usage_config.cc',
+ 'third_party/abseil-cpp/absl/hash/internal/city.cc',
+ 'third_party/abseil-cpp/absl/hash/internal/hash.cc',
+ 'third_party/abseil-cpp/absl/hash/internal/low_level_hash.cc',
+ 'third_party/abseil-cpp/absl/numeric/int128.cc',
+ 'third_party/abseil-cpp/absl/profiling/internal/exponential_biased.cc',
+ 'third_party/abseil-cpp/absl/random/discrete_distribution.cc',
+ 'third_party/abseil-cpp/absl/random/gaussian_distribution.cc',
+ 'third_party/abseil-cpp/absl/random/internal/pool_urbg.cc',
+ 'third_party/abseil-cpp/absl/random/internal/randen.cc',
+ 'third_party/abseil-cpp/absl/random/internal/randen_detect.cc',
+ 'third_party/abseil-cpp/absl/random/internal/randen_hwaes.cc',
+ 'third_party/abseil-cpp/absl/random/internal/randen_round_keys.cc',
+ 'third_party/abseil-cpp/absl/random/internal/randen_slow.cc',
+ 'third_party/abseil-cpp/absl/random/internal/seed_material.cc',
+ 'third_party/abseil-cpp/absl/random/seed_gen_exception.cc',
+ 'third_party/abseil-cpp/absl/random/seed_sequences.cc',
+ 'third_party/abseil-cpp/absl/status/status.cc',
+ 'third_party/abseil-cpp/absl/status/status_payload_printer.cc',
+ 'third_party/abseil-cpp/absl/status/statusor.cc',
+ 'third_party/abseil-cpp/absl/strings/ascii.cc',
+ 'third_party/abseil-cpp/absl/strings/charconv.cc',
+ 'third_party/abseil-cpp/absl/strings/cord.cc',
+ 'third_party/abseil-cpp/absl/strings/cord_analysis.cc',
+ 'third_party/abseil-cpp/absl/strings/cord_buffer.cc',
+ 'third_party/abseil-cpp/absl/strings/escaping.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cord_internal.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cord_rep_btree.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_navigator.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cord_rep_btree_reader.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cord_rep_consume.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cord_rep_crc.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cordz_functions.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cordz_handle.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/cordz_info.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/damerau_levenshtein_distance.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/escaping.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/memutil.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/ostringstream.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/str_format/output.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/stringify_sink.cc',
+ 'third_party/abseil-cpp/absl/strings/internal/utf8.cc',
+ 'third_party/abseil-cpp/absl/strings/match.cc',
+ 'third_party/abseil-cpp/absl/strings/numbers.cc',
+ 'third_party/abseil-cpp/absl/strings/str_cat.cc',
+ 'third_party/abseil-cpp/absl/strings/str_replace.cc',
+ 'third_party/abseil-cpp/absl/strings/str_split.cc',
+ 'third_party/abseil-cpp/absl/strings/string_view.cc',
+ 'third_party/abseil-cpp/absl/strings/substitute.cc',
+ 'third_party/abseil-cpp/absl/synchronization/barrier.cc',
+ 'third_party/abseil-cpp/absl/synchronization/blocking_counter.cc',
+ 'third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc',
+ 'third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc',
+ 'third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc',
+ 'third_party/abseil-cpp/absl/synchronization/internal/waiter.cc',
+ 'third_party/abseil-cpp/absl/synchronization/mutex.cc',
+ 'third_party/abseil-cpp/absl/synchronization/notification.cc',
+ 'third_party/abseil-cpp/absl/time/civil_time.cc',
+ 'third_party/abseil-cpp/absl/time/clock.cc',
+ 'third_party/abseil-cpp/absl/time/duration.cc',
+ 'third_party/abseil-cpp/absl/time/format.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc',
+ 'third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc',
+ 'third_party/abseil-cpp/absl/time/time.cc',
+ 'third_party/abseil-cpp/absl/types/bad_optional_access.cc',
+ 'third_party/abseil-cpp/absl/types/bad_variant_access.cc',
+ 'third_party/address_sorting/address_sorting.c',
+ 'third_party/address_sorting/address_sorting_posix.c',
+ 'third_party/address_sorting/address_sorting_windows.c',
+ 'third_party/boringssl-with-bazel/err_data.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_d2i_fp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_dup.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_gentm.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_i2d_fp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_mbstr.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_octet.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_strex.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_strnid.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/a_utctm.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/asn1_par.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/posix_time.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/tasn_dec.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/tasn_new.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/tasn_typ.c',
+ 'third_party/boringssl-with-bazel/src/crypto/asn1/tasn_utl.c',
+ 'third_party/boringssl-with-bazel/src/crypto/base64/base64.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/bio.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/bio_mem.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/connect.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/fd.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/file.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/hexdump.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/pair.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/printf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/socket.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bio/socket_helper.c',
+ 'third_party/boringssl-with-bazel/src/crypto/blake2/blake2.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bn_extra/bn_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bn_extra/convert.c',
+ 'third_party/boringssl-with-bazel/src/crypto/buf/buf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bytestring/asn1_compat.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bytestring/ber.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bytestring/cbb.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bytestring/cbs.c',
+ 'third_party/boringssl-with-bazel/src/crypto/bytestring/unicode.c',
+ 'third_party/boringssl-with-bazel/src/crypto/chacha/chacha.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesctrhmac.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_aesgcmsiv.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_chacha20poly1305.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_des.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_null.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc2.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_rc4.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c',
+ 'third_party/boringssl-with-bazel/src/crypto/conf/conf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_apple.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_freebsd.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_fuchsia.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_linux.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_aarch64_win.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_arm.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_arm_freebsd.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_arm_linux.c',
+ 'third_party/boringssl-with-bazel/src/crypto/cpu_intel.c',
+ 'third_party/boringssl-with-bazel/src/crypto/crypto.c',
+ 'third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c',
+ 'third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c',
+ 'third_party/boringssl-with-bazel/src/crypto/des/des.c',
+ 'third_party/boringssl-with-bazel/src/crypto/dh_extra/dh_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/dh_extra/params.c',
+ 'third_party/boringssl-with-bazel/src/crypto/digest_extra/digest_extra.c',
+ 'third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c',
+ 'third_party/boringssl-with-bazel/src/crypto/dsa/dsa_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ec_extra/ec_derive.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ecdsa_extra/ecdsa_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/engine/engine.c',
+ 'third_party/boringssl-with-bazel/src/crypto/err/err.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/evp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/evp_ctx.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_dsa_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_ec.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_ec_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_ed25519_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_hkdf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_rsa.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_rsa_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_x25519.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/p_x25519_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/pbkdf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/print.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/scrypt.c',
+ 'third_party/boringssl-with-bazel/src/crypto/evp/sign.c',
+ 'third_party/boringssl-with-bazel/src/crypto/ex_data.c',
+ 'third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c',
+ 'third_party/boringssl-with-bazel/src/crypto/fipsmodule/fips_shared_support.c',
+ 'third_party/boringssl-with-bazel/src/crypto/hkdf/hkdf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c',
+ 'third_party/boringssl-with-bazel/src/crypto/hrss/hrss.c',
+ 'third_party/boringssl-with-bazel/src/crypto/kyber/keccak.c',
+ 'third_party/boringssl-with-bazel/src/crypto/lhash/lhash.c',
+ 'third_party/boringssl-with-bazel/src/crypto/mem.c',
+ 'third_party/boringssl-with-bazel/src/crypto/obj/obj.c',
+ 'third_party/boringssl-with-bazel/src/crypto/obj/obj_xref.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_all.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_info.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_lib.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_oth.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_pk8.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_pkey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_x509.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pem/pem_xaux.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pkcs8/p5_pbev2.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c',
+ 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305.c',
+ 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm.c',
+ 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_vec.c',
+ 'third_party/boringssl-with-bazel/src/crypto/pool/pool.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rand_extra/forkunsafe.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rand_extra/fuchsia.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rc4/rc4.c',
+ 'third_party/boringssl-with-bazel/src/crypto/refcount_c11.c',
+ 'third_party/boringssl-with-bazel/src/crypto/refcount_lock.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c',
+ 'third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_print.c',
+ 'third_party/boringssl-with-bazel/src/crypto/siphash/siphash.c',
+ 'third_party/boringssl-with-bazel/src/crypto/stack/stack.c',
+ 'third_party/boringssl-with-bazel/src/crypto/thread.c',
+ 'third_party/boringssl-with-bazel/src/crypto/thread_none.c',
+ 'third_party/boringssl-with-bazel/src/crypto/thread_pthread.c',
+ 'third_party/boringssl-with-bazel/src/crypto/thread_win.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c',
+ 'third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/a_digest.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/a_sign.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/a_verify.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/by_dir.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/by_file.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/i2d_pr.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/name_print.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/policy.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/rsa_pss.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/t_crl.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/t_req.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/t_x509.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_d2.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_def.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_ext.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_lu.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_obj.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_txt.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_v3.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509name.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x509spki.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_all.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_exten.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_info.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_name.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_pkey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_req.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_spki.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_val.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_akeya.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bcons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_bitst.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_conf.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_crld.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_enum.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_extku.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_genn.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ia5.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_info.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_int.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_lib.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ncons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_ocsp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pcons.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_pmaps.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c',
+ 'third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c',
+ 'third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/d1_both.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/d1_lib.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/d1_pkt.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/dtls_method.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/dtls_record.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/extensions.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/handoff.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/handshake.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/handshake_client.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/handshake_server.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/s3_both.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/s3_lib.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_aead_ctx.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_buffer.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_cipher.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_file.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_session.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/ssl_x509.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/t1_enc.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/tls13_both.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/tls13_client.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/tls13_server.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/tls_method.cc',
+ 'third_party/boringssl-with-bazel/src/ssl/tls_record.cc',
+ 'third_party/cares/cares/src/lib/ares__close_sockets.c',
+ 'third_party/cares/cares/src/lib/ares__get_hostent.c',
+ 'third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c',
+ 'third_party/cares/cares/src/lib/ares__read_line.c',
+ 'third_party/cares/cares/src/lib/ares__readaddrinfo.c',
+ 'third_party/cares/cares/src/lib/ares__sortaddrinfo.c',
+ 'third_party/cares/cares/src/lib/ares__timeval.c',
+ 'third_party/cares/cares/src/lib/ares_android.c',
+ 'third_party/cares/cares/src/lib/ares_cancel.c',
+ 'third_party/cares/cares/src/lib/ares_create_query.c',
+ 'third_party/cares/cares/src/lib/ares_data.c',
+ 'third_party/cares/cares/src/lib/ares_destroy.c',
+ 'third_party/cares/cares/src/lib/ares_expand_name.c',
+ 'third_party/cares/cares/src/lib/ares_expand_string.c',
+ 'third_party/cares/cares/src/lib/ares_fds.c',
+ 'third_party/cares/cares/src/lib/ares_free_hostent.c',
+ 'third_party/cares/cares/src/lib/ares_free_string.c',
+ 'third_party/cares/cares/src/lib/ares_freeaddrinfo.c',
+ 'third_party/cares/cares/src/lib/ares_getaddrinfo.c',
+ 'third_party/cares/cares/src/lib/ares_getenv.c',
+ 'third_party/cares/cares/src/lib/ares_gethostbyaddr.c',
+ 'third_party/cares/cares/src/lib/ares_gethostbyname.c',
+ 'third_party/cares/cares/src/lib/ares_getnameinfo.c',
+ 'third_party/cares/cares/src/lib/ares_getsock.c',
+ 'third_party/cares/cares/src/lib/ares_init.c',
+ 'third_party/cares/cares/src/lib/ares_library_init.c',
+ 'third_party/cares/cares/src/lib/ares_llist.c',
+ 'third_party/cares/cares/src/lib/ares_mkquery.c',
+ 'third_party/cares/cares/src/lib/ares_nowarn.c',
+ 'third_party/cares/cares/src/lib/ares_options.c',
+ 'third_party/cares/cares/src/lib/ares_parse_a_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_caa_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_mx_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_naptr_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_ns_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_ptr_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_soa_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_srv_reply.c',
+ 'third_party/cares/cares/src/lib/ares_parse_txt_reply.c',
+ 'third_party/cares/cares/src/lib/ares_platform.c',
+ 'third_party/cares/cares/src/lib/ares_process.c',
+ 'third_party/cares/cares/src/lib/ares_query.c',
+ 'third_party/cares/cares/src/lib/ares_search.c',
+ 'third_party/cares/cares/src/lib/ares_send.c',
+ 'third_party/cares/cares/src/lib/ares_strcasecmp.c',
+ 'third_party/cares/cares/src/lib/ares_strdup.c',
+ 'third_party/cares/cares/src/lib/ares_strerror.c',
+ 'third_party/cares/cares/src/lib/ares_strsplit.c',
+ 'third_party/cares/cares/src/lib/ares_timeout.c',
+ 'third_party/cares/cares/src/lib/ares_version.c',
+ 'third_party/cares/cares/src/lib/ares_writev.c',
+ 'third_party/cares/cares/src/lib/bitncmp.c',
+ 'third_party/cares/cares/src/lib/inet_net_pton.c',
+ 'third_party/cares/cares/src/lib/inet_ntop.c',
+ 'third_party/cares/cares/src/lib/windows_port.c',
+ 'third_party/re2/re2/bitstate.cc',
+ 'third_party/re2/re2/compile.cc',
+ 'third_party/re2/re2/dfa.cc',
+ 'third_party/re2/re2/filtered_re2.cc',
+ 'third_party/re2/re2/mimics_pcre.cc',
+ 'third_party/re2/re2/nfa.cc',
+ 'third_party/re2/re2/onepass.cc',
+ 'third_party/re2/re2/parse.cc',
+ 'third_party/re2/re2/perl_groups.cc',
+ 'third_party/re2/re2/prefilter.cc',
+ 'third_party/re2/re2/prefilter_tree.cc',
+ 'third_party/re2/re2/prog.cc',
+ 'third_party/re2/re2/re2.cc',
+ 'third_party/re2/re2/regexp.cc',
+ 'third_party/re2/re2/set.cc',
+ 'third_party/re2/re2/simplify.cc',
+ 'third_party/re2/re2/stringpiece.cc',
+ 'third_party/re2/re2/tostring.cc',
+ 'third_party/re2/re2/unicode_casefold.cc',
+ 'third_party/re2/re2/unicode_groups.cc',
+ 'third_party/re2/util/pcre.cc',
+ 'third_party/re2/util/rune.cc',
+ 'third_party/re2/util/strutil.cc',
+ 'third_party/upb/third_party/utf8_range/naive.c',
+ 'third_party/upb/third_party/utf8_range/range2-neon.c',
+ 'third_party/upb/third_party/utf8_range/range2-sse.c',
+ 'third_party/upb/upb/arena.c',
+ 'third_party/upb/upb/array.c',
+ 'third_party/upb/upb/decode.c',
+ 'third_party/upb/upb/decode_fast.c',
+ 'third_party/upb/upb/def.c',
+ 'third_party/upb/upb/encode.c',
+ 'third_party/upb/upb/extension_registry.c',
+ 'third_party/upb/upb/json_decode.c',
+ 'third_party/upb/upb/json_encode.c',
+ 'third_party/upb/upb/map.c',
+ 'third_party/upb/upb/mini_table.c',
+ 'third_party/upb/upb/msg.c',
+ 'third_party/upb/upb/reflection.c',
+ 'third_party/upb/upb/status.c',
+ 'third_party/upb/upb/table.c',
+ 'third_party/upb/upb/text_encode.c',
+ 'third_party/upb/upb/upb.c',
+ 'third_party/zlib/adler32.c',
+ 'third_party/zlib/compress.c',
+ 'third_party/zlib/crc32.c',
+ 'third_party/zlib/deflate.c',
+ 'third_party/zlib/gzclose.c',
+ 'third_party/zlib/gzlib.c',
+ 'third_party/zlib/gzread.c',
+ 'third_party/zlib/gzwrite.c',
+ 'third_party/zlib/infback.c',
+ 'third_party/zlib/inffast.c',
+ 'third_party/zlib/inflate.c',
+ 'third_party/zlib/inftrees.c',
+ 'third_party/zlib/trees.c',
+ 'third_party/zlib/uncompr.c',
+ 'third_party/zlib/zutil.c',
+]
+
+ASM_SOURCE_FILES = {
+ 'crypto_apple_aarch64': [
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/chacha/chacha-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/armv8-mont-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/bn-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghash-neon-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/ghashv8-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256-armv8-asm-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha1-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha256-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/sha512-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/fipsmodule/vpaes-armv8-apple.S',
+ 'third_party/boringssl-with-bazel/apple-aarch64/crypto/test/trampoline-armv8-apple.S',
+ ],
+ 'crypto_apple_arm': [
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/chacha/chacha-armv4-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/aesv8-armv7-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/armv4-mont-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/bsaes-armv7-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/ghash-armv4-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/ghashv8-armv7-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha1-armv4-large-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha256-armv4-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/sha512-armv4-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/fipsmodule/vpaes-armv7-apple.S',
+ 'third_party/boringssl-with-bazel/apple-arm/crypto/test/trampoline-armv4-apple.S',
+ ],
+ 'crypto_apple_x86': [
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/chacha/chacha-x86-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/aesni-x86-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/bn-586-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/co-586-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-ssse3-x86-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/ghash-x86-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/md5-586-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha1-586-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha256-586-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/sha512-586-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/vpaes-x86-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/fipsmodule/x86-mont-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86/crypto/test/trampoline-x86-apple.S',
+ ],
+ 'crypto_apple_x86_64': [
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/chacha/chacha-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/aesni-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/ghash-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/md5-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256-x86_64-asm-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rdrand-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/rsaz-avx2-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha1-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha256-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/sha512-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/vpaes-x86_64-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/fipsmodule/x86_64-mont5-apple.S',
+ 'third_party/boringssl-with-bazel/apple-x86_64/crypto/test/trampoline-x86_64-apple.S',
+ ],
+ 'crypto_linux_aarch64': [
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/chacha/chacha-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/armv8-mont-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/bn-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghash-neon-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/ghashv8-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256-armv8-asm-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha1-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha256-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/sha512-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/fipsmodule/vpaes-armv8-linux.S',
+ 'third_party/boringssl-with-bazel/linux-aarch64/crypto/test/trampoline-armv8-linux.S',
+ ],
+ 'crypto_linux_arm': [
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/chacha/chacha-armv4-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/aesv8-armv7-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/armv4-mont-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/bsaes-armv7-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghash-armv4-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/ghashv8-armv7-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha1-armv4-large-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha256-armv4-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/sha512-armv4-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/fipsmodule/vpaes-armv7-linux.S',
+ 'third_party/boringssl-with-bazel/linux-arm/crypto/test/trampoline-armv4-linux.S',
+ 'third_party/boringssl-with-bazel/src/crypto/curve25519/asm/x25519-asm-arm.S',
+ 'third_party/boringssl-with-bazel/src/crypto/poly1305/poly1305_arm_asm.S',
+ ],
+ 'crypto_linux_x86': [
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/chacha/chacha-x86-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/aesni-x86-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/bn-586-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/co-586-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-ssse3-x86-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/ghash-x86-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/md5-586-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha1-586-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha256-586-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/sha512-586-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/vpaes-x86-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/fipsmodule/x86-mont-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86/crypto/test/trampoline-x86-linux.S',
+ ],
+ 'crypto_linux_x86_64': [
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/chacha/chacha-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/aesni-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/ghash-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/md5-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256-x86_64-asm-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rdrand-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/rsaz-avx2-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha1-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha256-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/sha512-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/vpaes-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/fipsmodule/x86_64-mont5-linux.S',
+ 'third_party/boringssl-with-bazel/linux-x86_64/crypto/test/trampoline-x86_64-linux.S',
+ 'third_party/boringssl-with-bazel/src/crypto/hrss/asm/poly_rq_mul.S',
+ ],
+ 'crypto_win_aarch64': [
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/chacha/chacha-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/cipher_extra/chacha20_poly1305_armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/aesv8-gcm-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/armv8-mont-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/bn-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghash-neon-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/ghashv8-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256-armv8-asm-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/p256_beeu-armv8-asm-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha1-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha256-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/sha512-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/fipsmodule/vpaes-armv8-win.S',
+ 'third_party/boringssl-with-bazel/win-aarch64/crypto/test/trampoline-armv8-win.S',
+ ],
+ 'crypto_win_x86': [
+ 'third_party/boringssl-with-bazel/win-x86/crypto/chacha/chacha-x86-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/aesni-x86-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/bn-586-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/co-586-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-ssse3-x86-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/ghash-x86-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/md5-586-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha1-586-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha256-586-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/sha512-586-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/vpaes-x86-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/fipsmodule/x86-mont-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86/crypto/test/trampoline-x86-win.asm',
+ ],
+ 'crypto_win_x86_64': [
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/chacha/chacha-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/aes128gcmsiv-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/cipher_extra/chacha20_poly1305_x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-gcm-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/aesni-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-ssse3-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/ghash-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/md5-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256-x86_64-asm-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/p256_beeu-x86_64-asm-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rdrand-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/rsaz-avx2-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha1-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha256-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/sha512-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/vpaes-x86_64-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/fipsmodule/x86_64-mont5-win.asm',
+ 'third_party/boringssl-with-bazel/win-x86_64/crypto/test/trampoline-x86_64-win.asm',
+ ],
+}
diff --git a/contrib/python/grpcio/py3/grpc_version.py b/contrib/python/grpcio/py3/grpc_version.py
new file mode 100644
index 00000000000..57a095efc17
--- /dev/null
+++ b/contrib/python/grpcio/py3/grpc_version.py
@@ -0,0 +1,17 @@
+# Copyright 2015 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
+
+VERSION = '1.54.2'
diff --git a/contrib/python/grpcio/py3/patches/05-ssl.patch b/contrib/python/grpcio/py3/patches/05-ssl.patch
new file mode 100644
index 00000000000..573ff7f59fe
--- /dev/null
+++ b/contrib/python/grpcio/py3/patches/05-ssl.patch
@@ -0,0 +1,50 @@
+diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi
+index fc7a9ba..bfec911 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/grpc.pxi
+@@ -333,6 +333,7 @@ cdef extern from "grpc/grpc.h":
+ void * reserved
+ grpc_op_data data
+
++ void grpc_dont_init_openssl() nogil
+ void grpc_init() nogil
+ void grpc_shutdown() nogil
+ void grpc_shutdown_blocking() nogil
+diff --git a/src/python/grpcio/grpc/_cython/cygrpc.pyx b/src/python/grpcio/grpc/_cython/cygrpc.pyx
+index ce98fa3..f7f369c 100644
+--- a/src/python/grpcio/grpc/_cython/cygrpc.pyx
++++ b/src/python/grpcio/grpc/_cython/cygrpc.pyx
+@@ -56,8 +56,8 @@ cdef _initialize():
+ # We have Python callbacks called by c-core threads, this ensures the GIL
+ # is initialized.
+ PyEval_InitThreads()
+- grpc_set_ssl_roots_override_callback(
+- <grpc_ssl_roots_override_callback>ssl_roots_override_callback)
+-
++ import ssl
++ grpc_dont_init_openssl()
++ # Load Arcadia certs in ComputePemRootCerts and do not override here.
+
+ _initialize()
+diff --git a/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi b/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi
+index e17ca6d..9cc3fd5 100644
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/security.pyx.pxi
+@@ -14,16 +14,10 @@
+
+ from libc.string cimport memcpy
+
+-import pkgutil
+-
+-
+ cdef grpc_ssl_roots_override_result ssl_roots_override_callback(
+ char **pem_root_certs) nogil:
+ with gil:
+- pkg = __name__
+- if pkg.endswith('.cygrpc'):
+- pkg = pkg[:-len('.cygrpc')]
+- temporary_pem_root_certs = pkgutil.get_data(pkg, '_credentials/roots.pem')
++ temporary_pem_root_certs = ''
+ pem_root_certs[0] = <char *>gpr_malloc(len(temporary_pem_root_certs) + 1)
+ memcpy(
+ pem_root_certs[0], <char *>temporary_pem_root_certs,
diff --git a/contrib/python/grpcio/py3/patches/14-fix-cimport.patch b/contrib/python/grpcio/py3/patches/14-fix-cimport.patch
new file mode 100644
index 00000000000..5fa25ae0f6e
--- /dev/null
+++ b/contrib/python/grpcio/py3/patches/14-fix-cimport.patch
@@ -0,0 +1,11 @@
+--- a/src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi (index)
++++ b/src/python/grpcio/grpc/_cython/_cygrpc/aio/completion_queue.pyx.pxi (working tree)
+@@ -22,7 +22,7 @@ IF UNAME_SYSNAME == "Windows":
+ cdef void _unified_socket_write(int fd) nogil:
+ win_socket_send(<WIN_SOCKET>fd, b"1", 1, 0)
+ ELSE:
+- from posix cimport unistd
++ cimport posix.unistd as unistd
+
+ cdef void _unified_socket_write(int fd) nogil:
+ unistd.write(fd, b"1", 1)
diff --git a/contrib/python/grpcio/py3/support.py b/contrib/python/grpcio/py3/support.py
new file mode 100644
index 00000000000..3d64b3170ca
--- /dev/null
+++ b/contrib/python/grpcio/py3/support.py
@@ -0,0 +1,117 @@
+# Copyright 2016 gRPC authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+from distutils import errors
+import os
+import os.path
+import shutil
+import sys
+import tempfile
+
+import commands
+
+C_PYTHON_DEV = """
+#include <Python.h>
+int main(int argc, char **argv) { return 0; }
+"""
+C_PYTHON_DEV_ERROR_MESSAGE = """
+Could not find <Python.h>. This could mean the following:
+ * You're on Ubuntu and haven't run `apt-get install <PY_REPR>-dev`.
+ * You're on RHEL/Fedora and haven't run `yum install <PY_REPR>-devel` or
+ `dnf install <PY_REPR>-devel` (make sure you also have redhat-rpm-config
+ installed)
+ * You're on Mac OS X and the usual Python framework was somehow corrupted
+ (check your environment variables or try re-installing?)
+ * You're on Windows and your Python installation was somehow corrupted
+ (check your environment variables or try re-installing?)
+"""
+if sys.version_info[0] == 2:
+ PYTHON_REPRESENTATION = 'python'
+elif sys.version_info[0] == 3:
+ PYTHON_REPRESENTATION = 'python3'
+else:
+ raise NotImplementedError('Unsupported Python version: %s' % sys.version)
+
+C_CHECKS = {
+ C_PYTHON_DEV:
+ C_PYTHON_DEV_ERROR_MESSAGE.replace('<PY_REPR>', PYTHON_REPRESENTATION),
+}
+
+
+def _compile(compiler, source_string):
+ tempdir = tempfile.mkdtemp()
+ cpath = os.path.join(tempdir, 'a.c')
+ with open(cpath, 'w') as cfile:
+ cfile.write(source_string)
+ try:
+ compiler.compile([cpath])
+ except errors.CompileError as error:
+ return error
+ finally:
+ shutil.rmtree(tempdir)
+
+
+def _expect_compile(compiler, source_string, error_message):
+ if _compile(compiler, source_string) is not None:
+ sys.stderr.write(error_message)
+ raise commands.CommandError(
+ "Diagnostics found a compilation environment issue:\n{}".format(
+ error_message))
+
+
+def diagnose_compile_error(build_ext, error):
+ """Attempt to diagnose an error during compilation."""
+ for c_check, message in C_CHECKS.items():
+ _expect_compile(build_ext.compiler, c_check, message)
+ python_sources = [
+ source for source in build_ext.get_source_files()
+ if source.startswith('./src/python') and source.endswith('c')
+ ]
+ for source in python_sources:
+ if not os.path.isfile(source):
+ raise commands.CommandError((
+ "Diagnostics found a missing Python extension source file:\n{}\n\n"
+ "This is usually because the Cython sources haven't been transpiled "
+ "into C yet and you're building from source.\n"
+ "Try setting the environment variable "
+ "`GRPC_PYTHON_BUILD_WITH_CYTHON=1` when invoking `setup.py` or "
+ "when using `pip`, e.g.:\n\n"
+ "pip install -rrequirements.txt\n"
+ "GRPC_PYTHON_BUILD_WITH_CYTHON=1 pip install .").format(source))
+
+
+def diagnose_attribute_error(build_ext, error):
+ if any('_needs_stub' in arg for arg in error.args):
+ raise commands.CommandError(
+ "We expect a missing `_needs_stub` attribute from older versions of "
+ "setuptools. Consider upgrading setuptools.")
+
+
+_ERROR_DIAGNOSES = {
+ errors.CompileError: diagnose_compile_error,
+ AttributeError: diagnose_attribute_error,
+}
+
+
+def diagnose_build_ext_error(build_ext, error, formatted):
+ diagnostic = _ERROR_DIAGNOSES.get(type(error))
+ if diagnostic is None:
+ raise commands.CommandError(
+ "\n\nWe could not diagnose your build failure. If you are unable to "
+ "proceed, please file an issue at http://www.github.com/grpc/grpc "
+ "with `[Python install]` in the title; please attach the whole log "
+ "(including everything that may have appeared above the Python "
+ "backtrace).\n\n{}".format(formatted))
+ else:
+ diagnostic(build_ext, error)