aboutsummaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--build.yaml28
-rw-r--r--config.m4554
-rw-r--r--package.xml998
-rw-r--r--src/core/proto/grpc/lb/v0/load_balancer.pb.c2
-rw-r--r--src/core/proto/grpc/lb/v0/load_balancer.pb.h4
-rw-r--r--templates/config.m4.template44
-rw-r--r--templates/package.xml.template159
-rw-r--r--templates/tools/dockerfile/apt_get_basic.include3
-rw-r--r--templates/tools/dockerfile/run_tests_addons.include3
-rw-r--r--templates/tools/dockerfile/test/cxx_squeeze_x64/Dockerfile.template45
-rw-r--r--templates/tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile.template39
-rw-r--r--test/distrib/php/distribtest.php13
-rwxr-xr-xtest/distrib/php/run_distrib_test.sh39
m---------third_party/nanopb0
-rwxr-xr-xtools/distrib/check_nanopb_output.sh7
-rw-r--r--tools/dockerfile/distribtest/php_jessie_x64/Dockerfile32
-rw-r--r--tools/dockerfile/grpc_artifact_linux_x64/Dockerfile7
-rw-r--r--tools/dockerfile/test/cxx_squeeze_x64/Dockerfile84
-rw-r--r--tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile86
-rw-r--r--tools/run_tests/artifact_targets.py21
-rwxr-xr-xtools/run_tests/build_artifact_php.sh40
-rwxr-xr-xtools/run_tests/build_package_php.sh36
-rw-r--r--tools/run_tests/distribtest_targets.py31
-rw-r--r--tools/run_tests/package_targets.py20
-rwxr-xr-xtools/run_tests/run_tests.py355
-rwxr-xr-xtools/run_tests/sanity/check_submodules.sh2
26 files changed, 2459 insertions, 193 deletions
diff --git a/build.yaml b/build.yaml
index a838ef5690..bfa2efd94e 100644
--- a/build.yaml
+++ b/build.yaml
@@ -2816,6 +2816,34 @@ node_modules:
- src/node/ext/server.cc
- src/node/ext/server_credentials.cc
- src/node/ext/timeval.cc
+php_config_m4:
+ deps:
+ - grpc
+ - gpr
+ - boringssl
+ - z
+ headers:
+ - src/php/ext/grpc/byte_buffer.h
+ - src/php/ext/grpc/call.h
+ - src/php/ext/grpc/call_credentials.h
+ - src/php/ext/grpc/channel.h
+ - src/php/ext/grpc/channel_credentials.h
+ - src/php/ext/grpc/completion_queue.h
+ - src/php/ext/grpc/php_grpc.h
+ - src/php/ext/grpc/server.h
+ - src/php/ext/grpc/server_credentials.h
+ - src/php/ext/grpc/timeval.h
+ src:
+ - src/php/ext/grpc/byte_buffer.c
+ - src/php/ext/grpc/call.c
+ - src/php/ext/grpc/call_credentials.c
+ - src/php/ext/grpc/channel.c
+ - src/php/ext/grpc/channel_credentials.c
+ - src/php/ext/grpc/completion_queue.c
+ - src/php/ext/grpc/php_grpc.c
+ - src/php/ext/grpc/server.c
+ - src/php/ext/grpc/server_credentials.c
+ - src/php/ext/grpc/timeval.c
python_dependencies:
deps:
- grpc
diff --git a/config.m4 b/config.m4
new file mode 100644
index 0000000000..0323d5d2ad
--- /dev/null
+++ b/config.m4
@@ -0,0 +1,554 @@
+PHP_ARG_ENABLE(grpc, whether to enable grpc support,
+[ --enable-grpc Enable grpc support])
+
+if test "$PHP_GRPC" != "no"; then
+ dnl Write more examples of tests here...
+
+ dnl # --with-grpc -> add include path
+ PHP_ADD_INCLUDE(../../grpc/include)
+ PHP_ADD_INCLUDE(../../grpc/src/php/ext/grpc)
+ PHP_ADD_INCLUDE(../../grpc/third_party/boringssl/include)
+
+ LIBS="-lpthread $LIBS"
+
+ GRPC_SHARED_LIBADD="-lpthread $GRPC_SHARED_LIBADD"
+ PHP_ADD_LIBRARY(pthread)
+
+ PHP_ADD_LIBRARY(dl,,GRPC_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(dl)
+
+ case $host in
+ *darwin*) ;;
+ *)
+ PHP_ADD_LIBRARY(rt,,GRPC_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(rt)
+ ;;
+ esac
+
+ PHP_NEW_EXTENSION(grpc,
+ src/php/ext/grpc/byte_buffer.c \
+ src/php/ext/grpc/call.c \
+ src/php/ext/grpc/call_credentials.c \
+ src/php/ext/grpc/channel.c \
+ src/php/ext/grpc/channel_credentials.c \
+ src/php/ext/grpc/completion_queue.c \
+ src/php/ext/grpc/php_grpc.c \
+ src/php/ext/grpc/server.c \
+ src/php/ext/grpc/server_credentials.c \
+ src/php/ext/grpc/timeval.c \
+ src/core/profiling/basic_timers.c \
+ src/core/profiling/stap_timers.c \
+ src/core/support/alloc.c \
+ src/core/support/avl.c \
+ src/core/support/cmdline.c \
+ src/core/support/cpu_iphone.c \
+ src/core/support/cpu_linux.c \
+ src/core/support/cpu_posix.c \
+ src/core/support/cpu_windows.c \
+ src/core/support/env_linux.c \
+ src/core/support/env_posix.c \
+ src/core/support/env_win32.c \
+ src/core/support/file.c \
+ src/core/support/file_posix.c \
+ src/core/support/file_win32.c \
+ src/core/support/histogram.c \
+ src/core/support/host_port.c \
+ src/core/support/log.c \
+ src/core/support/log_android.c \
+ src/core/support/log_linux.c \
+ src/core/support/log_posix.c \
+ src/core/support/log_win32.c \
+ src/core/support/murmur_hash.c \
+ src/core/support/slice.c \
+ src/core/support/slice_buffer.c \
+ src/core/support/stack_lockfree.c \
+ src/core/support/string.c \
+ src/core/support/string_posix.c \
+ src/core/support/string_win32.c \
+ src/core/support/subprocess_posix.c \
+ src/core/support/subprocess_windows.c \
+ src/core/support/sync.c \
+ src/core/support/sync_posix.c \
+ src/core/support/sync_win32.c \
+ src/core/support/thd.c \
+ src/core/support/thd_posix.c \
+ src/core/support/thd_win32.c \
+ src/core/support/time.c \
+ src/core/support/time_posix.c \
+ src/core/support/time_precise.c \
+ src/core/support/time_win32.c \
+ src/core/support/tls_pthread.c \
+ src/core/support/wrap_memcpy.c \
+ src/core/census/grpc_context.c \
+ src/core/census/grpc_filter.c \
+ src/core/channel/channel_args.c \
+ src/core/channel/channel_stack.c \
+ src/core/channel/client_channel.c \
+ src/core/channel/client_uchannel.c \
+ src/core/channel/compress_filter.c \
+ src/core/channel/connected_channel.c \
+ src/core/channel/http_client_filter.c \
+ src/core/channel/http_server_filter.c \
+ src/core/channel/subchannel_call_holder.c \
+ src/core/client_config/client_config.c \
+ src/core/client_config/connector.c \
+ src/core/client_config/default_initial_connect_string.c \
+ src/core/client_config/initial_connect_string.c \
+ src/core/client_config/lb_policies/load_balancer_api.c \
+ src/core/client_config/lb_policies/pick_first.c \
+ src/core/client_config/lb_policies/round_robin.c \
+ src/core/client_config/lb_policy.c \
+ src/core/client_config/lb_policy_factory.c \
+ src/core/client_config/lb_policy_registry.c \
+ src/core/client_config/resolver.c \
+ src/core/client_config/resolver_factory.c \
+ src/core/client_config/resolver_registry.c \
+ src/core/client_config/resolvers/dns_resolver.c \
+ src/core/client_config/resolvers/sockaddr_resolver.c \
+ src/core/client_config/subchannel.c \
+ src/core/client_config/subchannel_factory.c \
+ src/core/client_config/subchannel_index.c \
+ src/core/client_config/uri_parser.c \
+ src/core/compression/algorithm.c \
+ src/core/compression/message_compress.c \
+ src/core/debug/trace.c \
+ src/core/httpcli/format_request.c \
+ src/core/httpcli/httpcli.c \
+ src/core/httpcli/parser.c \
+ src/core/iomgr/closure.c \
+ src/core/iomgr/endpoint.c \
+ src/core/iomgr/endpoint_pair_posix.c \
+ src/core/iomgr/endpoint_pair_windows.c \
+ src/core/iomgr/exec_ctx.c \
+ src/core/iomgr/executor.c \
+ src/core/iomgr/fd_posix.c \
+ src/core/iomgr/iocp_windows.c \
+ src/core/iomgr/iomgr.c \
+ src/core/iomgr/iomgr_posix.c \
+ src/core/iomgr/iomgr_windows.c \
+ src/core/iomgr/pollset_multipoller_with_epoll.c \
+ src/core/iomgr/pollset_multipoller_with_poll_posix.c \
+ src/core/iomgr/pollset_posix.c \
+ src/core/iomgr/pollset_set_posix.c \
+ src/core/iomgr/pollset_set_windows.c \
+ src/core/iomgr/pollset_windows.c \
+ src/core/iomgr/resolve_address_posix.c \
+ src/core/iomgr/resolve_address_windows.c \
+ src/core/iomgr/sockaddr_utils.c \
+ src/core/iomgr/socket_utils_common_posix.c \
+ src/core/iomgr/socket_utils_linux.c \
+ src/core/iomgr/socket_utils_posix.c \
+ src/core/iomgr/socket_windows.c \
+ src/core/iomgr/tcp_client_posix.c \
+ src/core/iomgr/tcp_client_windows.c \
+ src/core/iomgr/tcp_posix.c \
+ src/core/iomgr/tcp_server_posix.c \
+ src/core/iomgr/tcp_server_windows.c \
+ src/core/iomgr/tcp_windows.c \
+ src/core/iomgr/time_averaged_stats.c \
+ src/core/iomgr/timer.c \
+ src/core/iomgr/timer_heap.c \
+ src/core/iomgr/udp_server.c \
+ src/core/iomgr/wakeup_fd_eventfd.c \
+ src/core/iomgr/wakeup_fd_nospecial.c \
+ src/core/iomgr/wakeup_fd_pipe.c \
+ src/core/iomgr/wakeup_fd_posix.c \
+ src/core/iomgr/workqueue_posix.c \
+ src/core/iomgr/workqueue_windows.c \
+ src/core/json/json.c \
+ src/core/json/json_reader.c \
+ src/core/json/json_string.c \
+ src/core/json/json_writer.c \
+ src/core/proto/grpc/lb/v0/load_balancer.pb.c \
+ src/core/surface/alarm.c \
+ src/core/surface/api_trace.c \
+ src/core/surface/byte_buffer.c \
+ src/core/surface/byte_buffer_reader.c \
+ src/core/surface/call.c \
+ src/core/surface/call_details.c \
+ src/core/surface/call_log_batch.c \
+ src/core/surface/channel.c \
+ src/core/surface/channel_connectivity.c \
+ src/core/surface/channel_create.c \
+ src/core/surface/channel_ping.c \
+ src/core/surface/completion_queue.c \
+ src/core/surface/event_string.c \
+ src/core/surface/init.c \
+ src/core/surface/lame_client.c \
+ src/core/surface/metadata_array.c \
+ src/core/surface/server.c \
+ src/core/surface/server_chttp2.c \
+ src/core/surface/server_create.c \
+ src/core/surface/validate_metadata.c \
+ src/core/surface/version.c \
+ src/core/transport/byte_stream.c \
+ src/core/transport/chttp2/alpn.c \
+ src/core/transport/chttp2/bin_encoder.c \
+ src/core/transport/chttp2/frame_data.c \
+ src/core/transport/chttp2/frame_goaway.c \
+ src/core/transport/chttp2/frame_ping.c \
+ src/core/transport/chttp2/frame_rst_stream.c \
+ src/core/transport/chttp2/frame_settings.c \
+ src/core/transport/chttp2/frame_window_update.c \
+ src/core/transport/chttp2/hpack_encoder.c \
+ src/core/transport/chttp2/hpack_parser.c \
+ src/core/transport/chttp2/hpack_table.c \
+ src/core/transport/chttp2/huffsyms.c \
+ src/core/transport/chttp2/incoming_metadata.c \
+ src/core/transport/chttp2/parsing.c \
+ src/core/transport/chttp2/status_conversion.c \
+ src/core/transport/chttp2/stream_lists.c \
+ src/core/transport/chttp2/stream_map.c \
+ src/core/transport/chttp2/timeout_encoding.c \
+ src/core/transport/chttp2/varint.c \
+ src/core/transport/chttp2/writing.c \
+ src/core/transport/chttp2_transport.c \
+ src/core/transport/connectivity_state.c \
+ src/core/transport/metadata.c \
+ src/core/transport/metadata_batch.c \
+ src/core/transport/static_metadata.c \
+ src/core/transport/transport.c \
+ src/core/transport/transport_op_string.c \
+ src/core/httpcli/httpcli_security_connector.c \
+ src/core/security/base64.c \
+ src/core/security/client_auth_filter.c \
+ src/core/security/credentials.c \
+ src/core/security/credentials_metadata.c \
+ src/core/security/credentials_posix.c \
+ src/core/security/credentials_win32.c \
+ src/core/security/google_default_credentials.c \
+ src/core/security/handshake.c \
+ src/core/security/json_token.c \
+ src/core/security/jwt_verifier.c \
+ src/core/security/secure_endpoint.c \
+ src/core/security/security_connector.c \
+ src/core/security/security_context.c \
+ src/core/security/server_auth_filter.c \
+ src/core/security/server_secure_chttp2.c \
+ src/core/surface/init_secure.c \
+ src/core/surface/secure_channel_create.c \
+ src/core/tsi/fake_transport_security.c \
+ src/core/tsi/ssl_transport_security.c \
+ src/core/tsi/transport_security.c \
+ src/core/census/context.c \
+ src/core/census/initialize.c \
+ src/core/census/mlog.c \
+ src/core/census/operation.c \
+ src/core/census/placeholders.c \
+ src/core/census/tracing.c \
+ third_party/nanopb/pb_common.c \
+ third_party/nanopb/pb_decode.c \
+ third_party/nanopb/pb_encode.c \
+ src/boringssl/err_data.c \
+ third_party/boringssl/crypto/aes/aes.c \
+ third_party/boringssl/crypto/aes/mode_wrappers.c \
+ third_party/boringssl/crypto/asn1/a_bitstr.c \
+ third_party/boringssl/crypto/asn1/a_bool.c \
+ third_party/boringssl/crypto/asn1/a_bytes.c \
+ third_party/boringssl/crypto/asn1/a_d2i_fp.c \
+ third_party/boringssl/crypto/asn1/a_dup.c \
+ third_party/boringssl/crypto/asn1/a_enum.c \
+ third_party/boringssl/crypto/asn1/a_gentm.c \
+ third_party/boringssl/crypto/asn1/a_i2d_fp.c \
+ third_party/boringssl/crypto/asn1/a_int.c \
+ third_party/boringssl/crypto/asn1/a_mbstr.c \
+ third_party/boringssl/crypto/asn1/a_object.c \
+ third_party/boringssl/crypto/asn1/a_octet.c \
+ third_party/boringssl/crypto/asn1/a_print.c \
+ third_party/boringssl/crypto/asn1/a_strnid.c \
+ third_party/boringssl/crypto/asn1/a_time.c \
+ third_party/boringssl/crypto/asn1/a_type.c \
+ third_party/boringssl/crypto/asn1/a_utctm.c \
+ third_party/boringssl/crypto/asn1/a_utf8.c \
+ third_party/boringssl/crypto/asn1/asn1_lib.c \
+ third_party/boringssl/crypto/asn1/asn1_par.c \
+ third_party/boringssl/crypto/asn1/asn_pack.c \
+ third_party/boringssl/crypto/asn1/bio_asn1.c \
+ third_party/boringssl/crypto/asn1/bio_ndef.c \
+ third_party/boringssl/crypto/asn1/f_enum.c \
+ third_party/boringssl/crypto/asn1/f_int.c \
+ third_party/boringssl/crypto/asn1/f_string.c \
+ third_party/boringssl/crypto/asn1/t_bitst.c \
+ third_party/boringssl/crypto/asn1/t_pkey.c \
+ third_party/boringssl/crypto/asn1/tasn_dec.c \
+ third_party/boringssl/crypto/asn1/tasn_enc.c \
+ third_party/boringssl/crypto/asn1/tasn_fre.c \
+ third_party/boringssl/crypto/asn1/tasn_new.c \
+ third_party/boringssl/crypto/asn1/tasn_prn.c \
+ third_party/boringssl/crypto/asn1/tasn_typ.c \
+ third_party/boringssl/crypto/asn1/tasn_utl.c \
+ third_party/boringssl/crypto/asn1/x_bignum.c \
+ third_party/boringssl/crypto/asn1/x_long.c \
+ third_party/boringssl/crypto/base64/base64.c \
+ third_party/boringssl/crypto/bio/bio.c \
+ third_party/boringssl/crypto/bio/bio_mem.c \
+ third_party/boringssl/crypto/bio/buffer.c \
+ third_party/boringssl/crypto/bio/connect.c \
+ third_party/boringssl/crypto/bio/fd.c \
+ third_party/boringssl/crypto/bio/file.c \
+ third_party/boringssl/crypto/bio/hexdump.c \
+ third_party/boringssl/crypto/bio/pair.c \
+ third_party/boringssl/crypto/bio/printf.c \
+ third_party/boringssl/crypto/bio/socket.c \
+ third_party/boringssl/crypto/bio/socket_helper.c \
+ third_party/boringssl/crypto/bn/add.c \
+ third_party/boringssl/crypto/bn/asm/x86_64-gcc.c \
+ third_party/boringssl/crypto/bn/bn.c \
+ third_party/boringssl/crypto/bn/bn_asn1.c \
+ third_party/boringssl/crypto/bn/cmp.c \
+ third_party/boringssl/crypto/bn/convert.c \
+ third_party/boringssl/crypto/bn/ctx.c \
+ third_party/boringssl/crypto/bn/div.c \
+ third_party/boringssl/crypto/bn/exponentiation.c \
+ third_party/boringssl/crypto/bn/gcd.c \
+ third_party/boringssl/crypto/bn/generic.c \
+ third_party/boringssl/crypto/bn/kronecker.c \
+ third_party/boringssl/crypto/bn/montgomery.c \
+ third_party/boringssl/crypto/bn/mul.c \
+ third_party/boringssl/crypto/bn/prime.c \
+ third_party/boringssl/crypto/bn/random.c \
+ third_party/boringssl/crypto/bn/rsaz_exp.c \
+ third_party/boringssl/crypto/bn/shift.c \
+ third_party/boringssl/crypto/bn/sqrt.c \
+ third_party/boringssl/crypto/buf/buf.c \
+ third_party/boringssl/crypto/bytestring/ber.c \
+ third_party/boringssl/crypto/bytestring/cbb.c \
+ third_party/boringssl/crypto/bytestring/cbs.c \
+ third_party/boringssl/crypto/chacha/chacha_generic.c \
+ third_party/boringssl/crypto/chacha/chacha_vec.c \
+ third_party/boringssl/crypto/cipher/aead.c \
+ third_party/boringssl/crypto/cipher/cipher.c \
+ third_party/boringssl/crypto/cipher/derive_key.c \
+ third_party/boringssl/crypto/cipher/e_aes.c \
+ third_party/boringssl/crypto/cipher/e_chacha20poly1305.c \
+ third_party/boringssl/crypto/cipher/e_des.c \
+ third_party/boringssl/crypto/cipher/e_null.c \
+ third_party/boringssl/crypto/cipher/e_rc2.c \
+ third_party/boringssl/crypto/cipher/e_rc4.c \
+ third_party/boringssl/crypto/cipher/e_ssl3.c \
+ third_party/boringssl/crypto/cipher/e_tls.c \
+ third_party/boringssl/crypto/cipher/tls_cbc.c \
+ third_party/boringssl/crypto/cmac/cmac.c \
+ third_party/boringssl/crypto/conf/conf.c \
+ third_party/boringssl/crypto/cpu-arm.c \
+ third_party/boringssl/crypto/cpu-intel.c \
+ third_party/boringssl/crypto/crypto.c \
+ third_party/boringssl/crypto/curve25519/curve25519.c \
+ third_party/boringssl/crypto/des/des.c \
+ third_party/boringssl/crypto/dh/check.c \
+ third_party/boringssl/crypto/dh/dh.c \
+ third_party/boringssl/crypto/dh/dh_asn1.c \
+ third_party/boringssl/crypto/dh/params.c \
+ third_party/boringssl/crypto/digest/digest.c \
+ third_party/boringssl/crypto/digest/digests.c \
+ third_party/boringssl/crypto/directory_posix.c \
+ third_party/boringssl/crypto/directory_win.c \
+ third_party/boringssl/crypto/dsa/dsa.c \
+ third_party/boringssl/crypto/dsa/dsa_asn1.c \
+ third_party/boringssl/crypto/ec/ec.c \
+ third_party/boringssl/crypto/ec/ec_asn1.c \
+ third_party/boringssl/crypto/ec/ec_key.c \
+ third_party/boringssl/crypto/ec/ec_montgomery.c \
+ third_party/boringssl/crypto/ec/oct.c \
+ third_party/boringssl/crypto/ec/p224-64.c \
+ third_party/boringssl/crypto/ec/p256-64.c \
+ third_party/boringssl/crypto/ec/p256-x86_64.c \
+ third_party/boringssl/crypto/ec/simple.c \
+ third_party/boringssl/crypto/ec/util-64.c \
+ third_party/boringssl/crypto/ec/wnaf.c \
+ third_party/boringssl/crypto/ecdh/ecdh.c \
+ third_party/boringssl/crypto/ecdsa/ecdsa.c \
+ third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c \
+ third_party/boringssl/crypto/engine/engine.c \
+ third_party/boringssl/crypto/err/err.c \
+ third_party/boringssl/crypto/evp/algorithm.c \
+ third_party/boringssl/crypto/evp/digestsign.c \
+ third_party/boringssl/crypto/evp/evp.c \
+ third_party/boringssl/crypto/evp/evp_asn1.c \
+ third_party/boringssl/crypto/evp/evp_ctx.c \
+ third_party/boringssl/crypto/evp/p_dsa_asn1.c \
+ third_party/boringssl/crypto/evp/p_ec.c \
+ third_party/boringssl/crypto/evp/p_ec_asn1.c \
+ third_party/boringssl/crypto/evp/p_rsa.c \
+ third_party/boringssl/crypto/evp/p_rsa_asn1.c \
+ third_party/boringssl/crypto/evp/pbkdf.c \
+ third_party/boringssl/crypto/evp/sign.c \
+ third_party/boringssl/crypto/ex_data.c \
+ third_party/boringssl/crypto/hkdf/hkdf.c \
+ third_party/boringssl/crypto/hmac/hmac.c \
+ third_party/boringssl/crypto/lhash/lhash.c \
+ third_party/boringssl/crypto/md4/md4.c \
+ third_party/boringssl/crypto/md5/md5.c \
+ third_party/boringssl/crypto/mem.c \
+ third_party/boringssl/crypto/modes/cbc.c \
+ third_party/boringssl/crypto/modes/cfb.c \
+ third_party/boringssl/crypto/modes/ctr.c \
+ third_party/boringssl/crypto/modes/gcm.c \
+ third_party/boringssl/crypto/modes/ofb.c \
+ third_party/boringssl/crypto/obj/obj.c \
+ third_party/boringssl/crypto/obj/obj_xref.c \
+ third_party/boringssl/crypto/pem/pem_all.c \
+ third_party/boringssl/crypto/pem/pem_info.c \
+ third_party/boringssl/crypto/pem/pem_lib.c \
+ third_party/boringssl/crypto/pem/pem_oth.c \
+ third_party/boringssl/crypto/pem/pem_pk8.c \
+ third_party/boringssl/crypto/pem/pem_pkey.c \
+ third_party/boringssl/crypto/pem/pem_x509.c \
+ third_party/boringssl/crypto/pem/pem_xaux.c \
+ third_party/boringssl/crypto/pkcs8/p5_pbe.c \
+ third_party/boringssl/crypto/pkcs8/p5_pbev2.c \
+ third_party/boringssl/crypto/pkcs8/p8_pkey.c \
+ third_party/boringssl/crypto/pkcs8/pkcs8.c \
+ third_party/boringssl/crypto/poly1305/poly1305.c \
+ third_party/boringssl/crypto/poly1305/poly1305_arm.c \
+ third_party/boringssl/crypto/poly1305/poly1305_vec.c \
+ third_party/boringssl/crypto/rand/rand.c \
+ third_party/boringssl/crypto/rand/urandom.c \
+ third_party/boringssl/crypto/rand/windows.c \
+ third_party/boringssl/crypto/rc4/rc4.c \
+ third_party/boringssl/crypto/refcount_c11.c \
+ third_party/boringssl/crypto/refcount_lock.c \
+ third_party/boringssl/crypto/rsa/blinding.c \
+ third_party/boringssl/crypto/rsa/padding.c \
+ third_party/boringssl/crypto/rsa/rsa.c \
+ third_party/boringssl/crypto/rsa/rsa_asn1.c \
+ third_party/boringssl/crypto/rsa/rsa_impl.c \
+ third_party/boringssl/crypto/sha/sha1.c \
+ third_party/boringssl/crypto/sha/sha256.c \
+ third_party/boringssl/crypto/sha/sha512.c \
+ third_party/boringssl/crypto/stack/stack.c \
+ third_party/boringssl/crypto/thread.c \
+ third_party/boringssl/crypto/thread_none.c \
+ third_party/boringssl/crypto/thread_pthread.c \
+ third_party/boringssl/crypto/thread_win.c \
+ third_party/boringssl/crypto/time_support.c \
+ third_party/boringssl/crypto/x509/a_digest.c \
+ third_party/boringssl/crypto/x509/a_sign.c \
+ third_party/boringssl/crypto/x509/a_strex.c \
+ third_party/boringssl/crypto/x509/a_verify.c \
+ third_party/boringssl/crypto/x509/asn1_gen.c \
+ third_party/boringssl/crypto/x509/by_dir.c \
+ third_party/boringssl/crypto/x509/by_file.c \
+ third_party/boringssl/crypto/x509/i2d_pr.c \
+ third_party/boringssl/crypto/x509/pkcs7.c \
+ third_party/boringssl/crypto/x509/t_crl.c \
+ third_party/boringssl/crypto/x509/t_req.c \
+ third_party/boringssl/crypto/x509/t_x509.c \
+ third_party/boringssl/crypto/x509/t_x509a.c \
+ third_party/boringssl/crypto/x509/x509.c \
+ third_party/boringssl/crypto/x509/x509_att.c \
+ third_party/boringssl/crypto/x509/x509_cmp.c \
+ third_party/boringssl/crypto/x509/x509_d2.c \
+ third_party/boringssl/crypto/x509/x509_def.c \
+ third_party/boringssl/crypto/x509/x509_ext.c \
+ third_party/boringssl/crypto/x509/x509_lu.c \
+ third_party/boringssl/crypto/x509/x509_obj.c \
+ third_party/boringssl/crypto/x509/x509_r2x.c \
+ third_party/boringssl/crypto/x509/x509_req.c \
+ third_party/boringssl/crypto/x509/x509_set.c \
+ third_party/boringssl/crypto/x509/x509_trs.c \
+ third_party/boringssl/crypto/x509/x509_txt.c \
+ third_party/boringssl/crypto/x509/x509_v3.c \
+ third_party/boringssl/crypto/x509/x509_vfy.c \
+ third_party/boringssl/crypto/x509/x509_vpm.c \
+ third_party/boringssl/crypto/x509/x509cset.c \
+ third_party/boringssl/crypto/x509/x509name.c \
+ third_party/boringssl/crypto/x509/x509rset.c \
+ third_party/boringssl/crypto/x509/x509spki.c \
+ third_party/boringssl/crypto/x509/x509type.c \
+ third_party/boringssl/crypto/x509/x_algor.c \
+ third_party/boringssl/crypto/x509/x_all.c \
+ third_party/boringssl/crypto/x509/x_attrib.c \
+ third_party/boringssl/crypto/x509/x_crl.c \
+ third_party/boringssl/crypto/x509/x_exten.c \
+ third_party/boringssl/crypto/x509/x_info.c \
+ third_party/boringssl/crypto/x509/x_name.c \
+ third_party/boringssl/crypto/x509/x_pkey.c \
+ third_party/boringssl/crypto/x509/x_pubkey.c \
+ third_party/boringssl/crypto/x509/x_req.c \
+ third_party/boringssl/crypto/x509/x_sig.c \
+ third_party/boringssl/crypto/x509/x_spki.c \
+ third_party/boringssl/crypto/x509/x_val.c \
+ third_party/boringssl/crypto/x509/x_x509.c \
+ third_party/boringssl/crypto/x509/x_x509a.c \
+ third_party/boringssl/crypto/x509v3/pcy_cache.c \
+ third_party/boringssl/crypto/x509v3/pcy_data.c \
+ third_party/boringssl/crypto/x509v3/pcy_lib.c \
+ third_party/boringssl/crypto/x509v3/pcy_map.c \
+ third_party/boringssl/crypto/x509v3/pcy_node.c \
+ third_party/boringssl/crypto/x509v3/pcy_tree.c \
+ third_party/boringssl/crypto/x509v3/v3_akey.c \
+ third_party/boringssl/crypto/x509v3/v3_akeya.c \
+ third_party/boringssl/crypto/x509v3/v3_alt.c \
+ third_party/boringssl/crypto/x509v3/v3_bcons.c \
+ third_party/boringssl/crypto/x509v3/v3_bitst.c \
+ third_party/boringssl/crypto/x509v3/v3_conf.c \
+ third_party/boringssl/crypto/x509v3/v3_cpols.c \
+ third_party/boringssl/crypto/x509v3/v3_crld.c \
+ third_party/boringssl/crypto/x509v3/v3_enum.c \
+ third_party/boringssl/crypto/x509v3/v3_extku.c \
+ third_party/boringssl/crypto/x509v3/v3_genn.c \
+ third_party/boringssl/crypto/x509v3/v3_ia5.c \
+ third_party/boringssl/crypto/x509v3/v3_info.c \
+ third_party/boringssl/crypto/x509v3/v3_int.c \
+ third_party/boringssl/crypto/x509v3/v3_lib.c \
+ third_party/boringssl/crypto/x509v3/v3_ncons.c \
+ third_party/boringssl/crypto/x509v3/v3_pci.c \
+ third_party/boringssl/crypto/x509v3/v3_pcia.c \
+ third_party/boringssl/crypto/x509v3/v3_pcons.c \
+ third_party/boringssl/crypto/x509v3/v3_pku.c \
+ third_party/boringssl/crypto/x509v3/v3_pmaps.c \
+ third_party/boringssl/crypto/x509v3/v3_prn.c \
+ third_party/boringssl/crypto/x509v3/v3_purp.c \
+ third_party/boringssl/crypto/x509v3/v3_skey.c \
+ third_party/boringssl/crypto/x509v3/v3_sxnet.c \
+ third_party/boringssl/crypto/x509v3/v3_utl.c \
+ third_party/boringssl/ssl/custom_extensions.c \
+ third_party/boringssl/ssl/d1_both.c \
+ third_party/boringssl/ssl/d1_clnt.c \
+ third_party/boringssl/ssl/d1_lib.c \
+ third_party/boringssl/ssl/d1_meth.c \
+ third_party/boringssl/ssl/d1_pkt.c \
+ third_party/boringssl/ssl/d1_srtp.c \
+ third_party/boringssl/ssl/d1_srvr.c \
+ third_party/boringssl/ssl/dtls_record.c \
+ third_party/boringssl/ssl/pqueue/pqueue.c \
+ third_party/boringssl/ssl/s3_both.c \
+ third_party/boringssl/ssl/s3_clnt.c \
+ third_party/boringssl/ssl/s3_enc.c \
+ third_party/boringssl/ssl/s3_lib.c \
+ third_party/boringssl/ssl/s3_meth.c \
+ third_party/boringssl/ssl/s3_pkt.c \
+ third_party/boringssl/ssl/s3_srvr.c \
+ third_party/boringssl/ssl/ssl_aead_ctx.c \
+ third_party/boringssl/ssl/ssl_asn1.c \
+ third_party/boringssl/ssl/ssl_buffer.c \
+ third_party/boringssl/ssl/ssl_cert.c \
+ third_party/boringssl/ssl/ssl_cipher.c \
+ third_party/boringssl/ssl/ssl_file.c \
+ third_party/boringssl/ssl/ssl_lib.c \
+ third_party/boringssl/ssl/ssl_rsa.c \
+ third_party/boringssl/ssl/ssl_session.c \
+ third_party/boringssl/ssl/ssl_stat.c \
+ third_party/boringssl/ssl/t1_enc.c \
+ third_party/boringssl/ssl/t1_lib.c \
+ third_party/boringssl/ssl/tls_record.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 \
+ , $ext_shared, , -Wall -Werror -std=c11 \
+ -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN \
+ -D_HAS_EXCEPTIONS=0 -DNOMINMAX)
+fi
diff --git a/package.xml b/package.xml
new file mode 100644
index 0000000000..99109ada8f
--- /dev/null
+++ b/package.xml
@@ -0,0 +1,998 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<package packagerversion="1.9.5" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+ <name>grpc</name>
+ <channel>pecl.php.net</channel>
+ <summary>A high performance, open source, general RPC framework that puts mobile and HTTP/2 first.</summary>
+ <description>Remote Procedure Calls (RPCs) provide a useful abstraction for building distributed applications and services. The libraries in this repository provide a concrete implementation of the gRPC protocol, layered over HTTP/2. These libraries enable communication between clients and servers using any combination of the supported languages.</description>
+ <lead>
+ <name>Stanley Cheung</name>
+ <user>stanleycheung</user>
+ <email>grpc-packages@google.com</email>
+ <active>yes</active>
+ </lead>
+ <date>2016-02-23</date>
+ <time>16:06:07</time>
+ <version>
+ <release>0.8.0</release>
+ <api>0.8.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <license>BSD</license>
+ <notes>
+- Simplify gRPC PHP installation #4517
+ </notes>
+ <contents>
+ <dir baseinstalldir="/" name="/">
+ <file baseinstalldir="/" name="config.m4" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/CREDITS" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/LICENSE" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/README.md" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/byte_buffer.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/call.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/call_credentials.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/channel.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/channel_credentials.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/completion_queue.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/php_grpc.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/server.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/server_credentials.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/timeval.c" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/byte_buffer.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/call.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/call_credentials.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/channel.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/channel_credentials.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/completion_queue.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/php_grpc.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/server.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/server_credentials.h" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/timeval.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/alloc.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/atm.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/atm_gcc_atomic.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/atm_gcc_sync.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/atm_win32.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/avl.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/cmdline.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/cpu.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/histogram.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/host_port.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/log.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/log_win32.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/port_platform.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/slice.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/slice_buffer.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/string_util.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/subprocess.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/sync.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/sync_generic.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/sync_posix.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/sync_win32.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/thd.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/time.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/tls.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/tls_gcc.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/tls_msvc.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/tls_pthread.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/support/useful.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/alloc.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/atm.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_atomic.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_gcc_sync.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/atm_win32.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/log.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/port_platform.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/slice.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/slice_buffer.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/sync.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_generic.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_posix.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/sync_win32.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/time.h" role="src" />
+ <file baseinstalldir="/" name="src/core/profiling/timers.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/block_annotate.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/env.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/file.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/murmur_hash.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/stack_lockfree.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/string.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/string_win32.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/thd_internal.h" role="src" />
+ <file baseinstalldir="/" name="src/core/support/time_precise.h" role="src" />
+ <file baseinstalldir="/" name="src/core/profiling/basic_timers.c" role="src" />
+ <file baseinstalldir="/" name="src/core/profiling/stap_timers.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/alloc.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/avl.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/cmdline.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/cpu_iphone.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/cpu_linux.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/cpu_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/cpu_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/env_linux.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/env_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/env_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/file.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/file_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/file_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/histogram.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/host_port.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/log.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/log_android.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/log_linux.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/log_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/log_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/murmur_hash.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/slice.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/slice_buffer.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/stack_lockfree.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/string.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/string_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/string_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/subprocess_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/subprocess_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/sync.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/sync_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/sync_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/thd.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/thd_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/thd_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/time.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/time_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/time_precise.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/time_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/tls_pthread.c" role="src" />
+ <file baseinstalldir="/" name="src/core/support/wrap_memcpy.c" role="src" />
+ <file baseinstalldir="/" name="include/grpc/grpc_security.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/byte_buffer.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/compression_types.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/connectivity_state.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/grpc_types.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/propagation_bits.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/impl/codegen/status.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/byte_buffer.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/byte_buffer_reader.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/compression.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/grpc.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/status.h" role="src" />
+ <file baseinstalldir="/" name="include/grpc/census.h" role="src" />
+ <file baseinstalldir="/" name="src/core/census/grpc_filter.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/channel_args.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/channel_stack.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/client_channel.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/client_uchannel.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/compress_filter.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/connected_channel.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/context.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/http_client_filter.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/http_server_filter.h" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/subchannel_call_holder.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/client_config.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/connector.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/initial_connect_string.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policies/load_balancer_api.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policies/pick_first.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policies/round_robin.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policy.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policy_factory.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policy_registry.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolver.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolver_factory.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolver_registry.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolvers/dns_resolver.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolvers/sockaddr_resolver.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/subchannel.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/subchannel_factory.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/subchannel_index.h" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/uri_parser.h" role="src" />
+ <file baseinstalldir="/" name="src/core/compression/algorithm_metadata.h" role="src" />
+ <file baseinstalldir="/" name="src/core/compression/message_compress.h" role="src" />
+ <file baseinstalldir="/" name="src/core/debug/trace.h" role="src" />
+ <file baseinstalldir="/" name="src/core/httpcli/format_request.h" role="src" />
+ <file baseinstalldir="/" name="src/core/httpcli/httpcli.h" role="src" />
+ <file baseinstalldir="/" name="src/core/httpcli/parser.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/closure.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/endpoint.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/endpoint_pair.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/exec_ctx.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/executor.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/fd_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iocp_windows.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iomgr.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iomgr_internal.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iomgr_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_set.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_set_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_set_windows.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_windows.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/resolve_address.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/sockaddr.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/sockaddr_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/sockaddr_utils.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/sockaddr_win32.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/socket_utils_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/socket_windows.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_client.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_server.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_windows.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/time_averaged_stats.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/timer.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/timer_heap.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/udp_server.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_pipe.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/workqueue.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/workqueue_posix.h" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/workqueue_windows.h" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json.h" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json_common.h" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json_reader.h" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json_writer.h" role="src" />
+ <file baseinstalldir="/" name="src/core/proto/grpc/lb/v0/load_balancer.pb.h" role="src" />
+ <file baseinstalldir="/" name="src/core/statistics/census_interface.h" role="src" />
+ <file baseinstalldir="/" name="src/core/statistics/census_rpc_stats.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/api_trace.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/call.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/call_test_only.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/channel.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/completion_queue.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/event_string.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/init.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/server.h" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/surface_trace.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/byte_stream.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/alpn.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/bin_encoder.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_data.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_goaway.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_ping.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_rst_stream.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_settings.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_window_update.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/hpack_encoder.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/hpack_parser.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/hpack_table.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/http2_errors.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/huffsyms.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/incoming_metadata.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/internal.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/status_conversion.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/stream_map.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/timeout_encoding.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/varint.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2_transport.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/connectivity_state.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/metadata.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/metadata_batch.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/static_metadata.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/transport.h" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/transport_impl.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/auth_filters.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/base64.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/credentials.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/handshake.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/json_token.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/jwt_verifier.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/secure_endpoint.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/security_connector.h" role="src" />
+ <file baseinstalldir="/" name="src/core/security/security_context.h" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.h" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.h" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/ssl_types.h" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/transport_security.h" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/transport_security_interface.h" role="src" />
+ <file baseinstalldir="/" name="src/core/census/aggregation.h" role="src" />
+ <file baseinstalldir="/" name="src/core/census/mlog.h" role="src" />
+ <file baseinstalldir="/" name="src/core/census/rpc_metric_id.h" role="src" />
+ <file baseinstalldir="/" name="third_party/nanopb/pb.h" role="src" />
+ <file baseinstalldir="/" name="third_party/nanopb/pb_common.h" role="src" />
+ <file baseinstalldir="/" name="third_party/nanopb/pb_decode.h" role="src" />
+ <file baseinstalldir="/" name="third_party/nanopb/pb_encode.h" role="src" />
+ <file baseinstalldir="/" name="src/core/census/grpc_context.c" role="src" />
+ <file baseinstalldir="/" name="src/core/census/grpc_filter.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/channel_args.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/channel_stack.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/client_channel.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/client_uchannel.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/compress_filter.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/connected_channel.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/http_client_filter.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/http_server_filter.c" role="src" />
+ <file baseinstalldir="/" name="src/core/channel/subchannel_call_holder.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/client_config.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/connector.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/default_initial_connect_string.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/initial_connect_string.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policies/load_balancer_api.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policies/pick_first.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policies/round_robin.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policy.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policy_factory.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/lb_policy_registry.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolver.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolver_factory.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolver_registry.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolvers/dns_resolver.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/resolvers/sockaddr_resolver.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/subchannel.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/subchannel_factory.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/subchannel_index.c" role="src" />
+ <file baseinstalldir="/" name="src/core/client_config/uri_parser.c" role="src" />
+ <file baseinstalldir="/" name="src/core/compression/algorithm.c" role="src" />
+ <file baseinstalldir="/" name="src/core/compression/message_compress.c" role="src" />
+ <file baseinstalldir="/" name="src/core/debug/trace.c" role="src" />
+ <file baseinstalldir="/" name="src/core/httpcli/format_request.c" role="src" />
+ <file baseinstalldir="/" name="src/core/httpcli/httpcli.c" role="src" />
+ <file baseinstalldir="/" name="src/core/httpcli/parser.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/closure.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/endpoint.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/endpoint_pair_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/endpoint_pair_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/exec_ctx.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/executor.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/fd_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iocp_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iomgr.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iomgr_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/iomgr_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_multipoller_with_epoll.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_multipoller_with_poll_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_set_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_set_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/pollset_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/resolve_address_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/resolve_address_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/sockaddr_utils.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/socket_utils_common_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/socket_utils_linux.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/socket_utils_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/socket_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_client_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_client_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_server_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_server_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/tcp_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/time_averaged_stats.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/timer.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/timer_heap.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/udp_server.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_eventfd.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_nospecial.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_pipe.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/wakeup_fd_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/workqueue_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/iomgr/workqueue_windows.c" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json.c" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json_reader.c" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json_string.c" role="src" />
+ <file baseinstalldir="/" name="src/core/json/json_writer.c" role="src" />
+ <file baseinstalldir="/" name="src/core/proto/grpc/lb/v0/load_balancer.pb.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/alarm.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/api_trace.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/byte_buffer.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/byte_buffer_reader.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/call.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/call_details.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/call_log_batch.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/channel.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/channel_connectivity.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/channel_create.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/channel_ping.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/completion_queue.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/event_string.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/init.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/lame_client.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/metadata_array.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/server.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/server_chttp2.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/server_create.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/validate_metadata.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/version.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/byte_stream.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/alpn.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/bin_encoder.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_data.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_goaway.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_ping.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_rst_stream.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_settings.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/frame_window_update.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/hpack_encoder.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/hpack_parser.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/hpack_table.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/huffsyms.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/incoming_metadata.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/parsing.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/status_conversion.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/stream_lists.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/stream_map.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/timeout_encoding.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/varint.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2/writing.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/chttp2_transport.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/connectivity_state.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/metadata.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/metadata_batch.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/static_metadata.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/transport.c" role="src" />
+ <file baseinstalldir="/" name="src/core/transport/transport_op_string.c" role="src" />
+ <file baseinstalldir="/" name="src/core/httpcli/httpcli_security_connector.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/base64.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/client_auth_filter.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/credentials.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/credentials_metadata.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/credentials_posix.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/credentials_win32.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/google_default_credentials.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/handshake.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/json_token.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/jwt_verifier.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/secure_endpoint.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/security_connector.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/security_context.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/server_auth_filter.c" role="src" />
+ <file baseinstalldir="/" name="src/core/security/server_secure_chttp2.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/init_secure.c" role="src" />
+ <file baseinstalldir="/" name="src/core/surface/secure_channel_create.c" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/fake_transport_security.c" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/ssl_transport_security.c" role="src" />
+ <file baseinstalldir="/" name="src/core/tsi/transport_security.c" role="src" />
+ <file baseinstalldir="/" name="src/core/census/context.c" role="src" />
+ <file baseinstalldir="/" name="src/core/census/initialize.c" role="src" />
+ <file baseinstalldir="/" name="src/core/census/mlog.c" role="src" />
+ <file baseinstalldir="/" name="src/core/census/operation.c" role="src" />
+ <file baseinstalldir="/" name="src/core/census/placeholders.c" role="src" />
+ <file baseinstalldir="/" name="src/core/census/tracing.c" role="src" />
+ <file baseinstalldir="/" name="third_party/nanopb/pb_common.c" role="src" />
+ <file baseinstalldir="/" name="third_party/nanopb/pb_decode.c" role="src" />
+ <file baseinstalldir="/" name="third_party/nanopb/pb_encode.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/aes/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/asn1_locl.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/rsaz_exp.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/conf/conf_def.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/conf/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/des/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/digest/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/digest/md32_common.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/directory.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dsa/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/p256-x86_64-table.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/modes/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/obj/obj_dat.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/obj/obj_xref.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pkcs8/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rand/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rsa/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/test/scoped_types.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/test/test_util.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/charmap.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/vpm_int.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/ext_dat.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/pcy_int.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/aead.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/aes.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/arm_arch.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/asn1.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/asn1_mac.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/asn1t.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/base.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/base64.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/bio.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/blowfish.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/bn.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/buf.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/buffer.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/bytestring.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/cast.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/chacha.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/cipher.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/cmac.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/conf.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/cpu.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/crypto.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/curve25519.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/des.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/dh.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/digest.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/dsa.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/dtls1.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ec.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ec_key.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ecdh.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ecdsa.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/engine.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/err.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/evp.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ex_data.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/hkdf.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/hmac.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/lhash.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/lhash_macros.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/md4.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/md5.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/mem.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/obj.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/obj_mac.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/objects.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/opensslfeatures.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/opensslv.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ossl_typ.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/pem.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/pkcs12.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/pkcs7.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/pkcs8.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/poly1305.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/pqueue.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/rand.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/rc4.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/rsa.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/safestack.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/sha.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/srtp.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ssl.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/ssl3.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/stack.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/stack_macros.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/thread.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/time_support.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/tls1.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/type_check.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/x509.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/x509_vfy.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/include/openssl/x509v3.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/internal.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/test/async_bio.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/test/packeted_bio.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/test/scoped_types.h" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/test/test_config.h" role="src" />
+ <file baseinstalldir="/" name="src/boringssl/err_data.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/aes/aes.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/aes/mode_wrappers.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_bitstr.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_bool.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_bytes.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_d2i_fp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_dup.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_enum.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_gentm.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_i2d_fp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_int.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_mbstr.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_object.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_octet.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_print.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_strnid.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_time.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_type.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_utctm.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/a_utf8.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/asn1_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/asn1_par.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/asn_pack.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/bio_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/bio_ndef.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/f_enum.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/f_int.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/f_string.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/t_bitst.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/t_pkey.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/tasn_dec.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/tasn_enc.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/tasn_fre.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/tasn_new.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/tasn_prn.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/tasn_typ.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/tasn_utl.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/x_bignum.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/asn1/x_long.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/base64/base64.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/bio.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/bio_mem.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/buffer.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/connect.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/fd.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/file.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/hexdump.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/pair.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/printf.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/socket.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bio/socket_helper.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/add.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/asm/x86_64-gcc.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/bn.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/bn_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/cmp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/convert.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/ctx.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/div.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/exponentiation.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/gcd.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/generic.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/kronecker.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/montgomery.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/mul.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/prime.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/random.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/rsaz_exp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/shift.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bn/sqrt.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/buf/buf.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/ber.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/cbb.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/bytestring/cbs.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/chacha/chacha_generic.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/chacha/chacha_vec.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/aead.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/cipher.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/derive_key.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_aes.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_chacha20poly1305.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_des.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_null.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_rc2.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_rc4.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_ssl3.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/e_tls.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cipher/tls_cbc.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cmac/cmac.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/conf/conf.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cpu-arm.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/cpu-intel.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/crypto.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/curve25519/curve25519.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/des/des.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/check.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/dh.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/dh_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dh/params.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/digest/digest.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/digest/digests.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/directory_posix.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/directory_win.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dsa/dsa.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/dsa/dsa_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/ec.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/ec_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/ec_key.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/ec_montgomery.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/oct.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/p224-64.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/p256-64.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/p256-x86_64.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/simple.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/util-64.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ec/wnaf.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ecdh/ecdh.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ecdsa/ecdsa.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ecdsa/ecdsa_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/engine/engine.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/err/err.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/algorithm.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/digestsign.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/evp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/evp_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/evp_ctx.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/p_dsa_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/p_ec.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/p_ec_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/p_rsa.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/p_rsa_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/pbkdf.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/evp/sign.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/ex_data.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/hkdf/hkdf.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/hmac/hmac.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/lhash/lhash.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/md4/md4.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/md5/md5.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/mem.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/modes/cbc.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/modes/cfb.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/modes/ctr.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/modes/gcm.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/modes/ofb.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/obj/obj.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/obj/obj_xref.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_all.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_info.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_oth.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_pk8.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_pkey.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_x509.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pem/pem_xaux.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pkcs8/p5_pbe.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pkcs8/p5_pbev2.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pkcs8/p8_pkey.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/pkcs8/pkcs8.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/poly1305/poly1305.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/poly1305/poly1305_arm.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/poly1305/poly1305_vec.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rand/rand.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rand/urandom.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rand/windows.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rc4/rc4.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/refcount_c11.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/refcount_lock.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rsa/blinding.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rsa/padding.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rsa/rsa.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rsa/rsa_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/rsa/rsa_impl.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/sha/sha1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/sha/sha256.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/sha/sha512.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/stack/stack.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/thread.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/thread_none.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/thread_pthread.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/thread_win.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/time_support.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/a_digest.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/a_sign.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/a_strex.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/a_verify.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/asn1_gen.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/by_dir.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/by_file.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/i2d_pr.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/pkcs7.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/t_crl.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/t_req.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/t_x509.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/t_x509a.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_att.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_cmp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_d2.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_def.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_ext.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_lu.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_obj.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_r2x.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_req.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_set.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_trs.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_txt.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_v3.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_vfy.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509_vpm.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509cset.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509name.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509rset.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509spki.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x509type.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_algor.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_all.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_attrib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_crl.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_exten.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_info.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_name.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_pkey.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_pubkey.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_req.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_sig.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_spki.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_val.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_x509.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509/x_x509a.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/pcy_cache.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/pcy_data.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/pcy_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/pcy_map.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/pcy_node.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/pcy_tree.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_akey.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_akeya.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_alt.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_bcons.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_bitst.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_conf.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_cpols.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_crld.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_enum.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_extku.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_genn.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_ia5.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_info.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_int.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_ncons.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_pci.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_pcia.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_pcons.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_pku.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_pmaps.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_prn.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_purp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_skey.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_sxnet.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/crypto/x509v3/v3_utl.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/custom_extensions.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/d1_both.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/d1_clnt.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/d1_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/d1_meth.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/d1_pkt.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/d1_srtp.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/d1_srvr.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/dtls_record.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/pqueue/pqueue.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/s3_both.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/s3_clnt.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/s3_enc.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/s3_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/s3_meth.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/s3_pkt.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/s3_srvr.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_aead_ctx.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_asn1.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_buffer.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_cert.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_cipher.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_file.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_rsa.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_session.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/ssl_stat.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/t1_enc.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/t1_lib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/boringssl/ssl/tls_record.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/crc32.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/deflate.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/gzguts.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/inffast.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/inffixed.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/inflate.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/inftrees.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/trees.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/zconf.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/zlib.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/zutil.h" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/adler32.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/compress.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/crc32.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/deflate.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/gzclose.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/gzlib.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/gzread.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/gzwrite.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/infback.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/inffast.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/inflate.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/inftrees.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/trees.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/uncompr.c" role="src" />
+ <file baseinstalldir="/" name="third_party/zlib/zutil.c" role="src" />
+ </dir>
+ </contents>
+ <dependencies>
+ <required>
+ <php>
+ <min>5.5.0</min>
+ </php>
+ <pearinstaller>
+ <min>1.4.0</min>
+ </pearinstaller>
+ </required>
+ </dependencies>
+ <providesextension>grpc</providesextension>
+ <extsrcrelease />
+ <changelog>
+ <release>
+ <version>
+ <release>0.5.0</release>
+ <api>0.5.0</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <date>2015-06-16</date>
+ <license>BSD</license>
+ <notes>
+First alpha release
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.5.1</release>
+ <api>0.5.1</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <date>2015-07-09</date>
+ <license>BSD</license>
+ <notes>
+Update to wrap gRPC C Core version 0.10.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.6.0</release>
+ <api>0.6.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2015-09-24</date>
+ <license>BSD</license>
+ <notes>
+- support per message compression disable
+- expose per-call host override option
+- expose connectivity API
+- expose channel target and call peer
+- add user-agent
+- update to wrap gRPC C core library beta version 0.11.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.6.1</release>
+ <api>0.6.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2015-10-21</date>
+ <license>BSD</license>
+ <notes>
+- fixed undefined constant fatal error when run with apache/nginx #2275
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.7.0</release>
+ <api>0.7.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2016-01-13</date>
+ <license>BSD</license>
+ <notes>
+- Breaking change to Credentials class (removed) #3765
+- Replaced by ChannelCredentials and CallCredentials class #3765
+- New plugin based metadata auth API #4394
+- Explicit ChannelCredentials::createInsecure() call
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.8.0</release>
+ <api>0.8.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2016-02-23</date>
+ <license>BSD</license>
+ <notes>
+- Simplify gRPC PHP installation #4517
+ </notes>
+ </release>
+ </changelog>
+</package>
diff --git a/src/core/proto/grpc/lb/v0/load_balancer.pb.c b/src/core/proto/grpc/lb/v0/load_balancer.pb.c
index abd4b1cefc..59aae30cff 100644
--- a/src/core/proto/grpc/lb/v0/load_balancer.pb.c
+++ b/src/core/proto/grpc/lb/v0/load_balancer.pb.c
@@ -31,7 +31,7 @@
*
*/
/* Automatically generated nanopb constant definitions */
-/* Generated by nanopb-0.3.4-dev */
+/* Generated by nanopb-0.3.5-dev */
#include "src/core/proto/grpc/lb/v0/load_balancer.pb.h"
diff --git a/src/core/proto/grpc/lb/v0/load_balancer.pb.h b/src/core/proto/grpc/lb/v0/load_balancer.pb.h
index 8703721399..3599f881bb 100644
--- a/src/core/proto/grpc/lb/v0/load_balancer.pb.h
+++ b/src/core/proto/grpc/lb/v0/load_balancer.pb.h
@@ -31,7 +31,7 @@
*
*/
/* Automatically generated nanopb header */
-/* Generated by nanopb-0.3.4-dev */
+/* Generated by nanopb-0.3.5-dev */
#ifndef PB_LOAD_BALANCER_PB_H_INCLUDED
#define PB_LOAD_BALANCER_PB_H_INCLUDED
@@ -44,7 +44,6 @@
extern "C" {
#endif
-/* Enum definitions */
/* Struct definitions */
typedef struct _grpc_lb_v0_ClientStats {
bool has_total_requests;
@@ -164,6 +163,7 @@ extern const pb_field_t grpc_lb_v0_Server_fields[5];
#define grpc_lb_v0_LoadBalanceRequest_size 169
#define grpc_lb_v0_InitialLoadBalanceRequest_size 131
#define grpc_lb_v0_ClientStats_size 33
+#define grpc_lb_v0_LoadBalanceResponse_size (165 + grpc_lb_v0_ServerList_size)
#define grpc_lb_v0_InitialLoadBalanceResponse_size 156
#define grpc_lb_v0_Server_size 127
diff --git a/templates/config.m4.template b/templates/config.m4.template
new file mode 100644
index 0000000000..dbc12188dc
--- /dev/null
+++ b/templates/config.m4.template
@@ -0,0 +1,44 @@
+%YAML 1.2
+--- |
+ PHP_ARG_ENABLE(grpc, whether to enable grpc support,
+ [ --enable-grpc Enable grpc support])
+
+ if test "$PHP_GRPC" != "no"; then
+ dnl Write more examples of tests here...
+
+ dnl # --with-grpc -> add include path
+ PHP_ADD_INCLUDE(../../grpc/include)
+ PHP_ADD_INCLUDE(../../grpc/src/php/ext/grpc)
+ PHP_ADD_INCLUDE(../../grpc/third_party/boringssl/include)
+
+ LIBS="-lpthread $LIBS"
+
+ GRPC_SHARED_LIBADD="-lpthread $GRPC_SHARED_LIBADD"
+ PHP_ADD_LIBRARY(pthread)
+
+ PHP_ADD_LIBRARY(dl,,GRPC_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(dl)
+
+ case $host in
+ *darwin*) ;;
+ *)
+ PHP_ADD_LIBRARY(rt,,GRPC_SHARED_LIBADD)
+ PHP_ADD_LIBRARY(rt)
+ ;;
+ esac
+
+ PHP_NEW_EXTENSION(grpc,
+ % for source in php_config_m4.src:
+ ${source} ${"\\"}
+ % endfor
+ % for lib in libs:
+ % if lib.name in php_config_m4.get('deps', []):
+ % for source in lib.src:
+ ${source} ${"\\"}
+ % endfor
+ % endif
+ % endfor
+ , $ext_shared, , -Wall -Werror -std=c11 ${"\\"}
+ -fvisibility=hidden -DOPENSSL_NO_ASM -D_GNU_SOURCE -DWIN32_LEAN_AND_MEAN ${"\\"}
+ -D_HAS_EXCEPTIONS=0 -DNOMINMAX)
+ fi
diff --git a/templates/package.xml.template b/templates/package.xml.template
new file mode 100644
index 0000000000..455b002e64
--- /dev/null
+++ b/templates/package.xml.template
@@ -0,0 +1,159 @@
+%YAML 1.2
+--- |
+ <?xml version="1.0" encoding="UTF-8"?>
+ <package packagerversion="1.9.5" version="2.0" xmlns="http://pear.php.net/dtd/package-2.0" xmlns:tasks="http://pear.php.net/dtd/tasks-1.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://pear.php.net/dtd/tasks-1.0 http://pear.php.net/dtd/tasks-1.0.xsd http://pear.php.net/dtd/package-2.0 http://pear.php.net/dtd/package-2.0.xsd">
+ <name>grpc</name>
+ <channel>pecl.php.net</channel>
+ <summary>A high performance, open source, general RPC framework that puts mobile and HTTP/2 first.</summary>
+ <description>Remote Procedure Calls (RPCs) provide a useful abstraction for building distributed applications and services. The libraries in this repository provide a concrete implementation of the gRPC protocol, layered over HTTP/2. These libraries enable communication between clients and servers using any combination of the supported languages.</description>
+ <lead>
+ <name>Stanley Cheung</name>
+ <user>stanleycheung</user>
+ <email>grpc-packages@google.com</email>
+ <active>yes</active>
+ </lead>
+ <%! from time import strftime %><date>${"%Y-%m-%d" | strftime}</date>
+ <time>16:06:07</time>
+ <version>
+ <release>0.8.0</release>
+ <api>0.8.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <license>BSD</license>
+ <notes>
+ - Simplify gRPC PHP installation #4517
+ </notes>
+ <contents>
+ <dir baseinstalldir="/" name="/">
+ <file baseinstalldir="/" name="config.m4" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/CREDITS" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/LICENSE" role="src" />
+ <file baseinstalldir="/" name="src/php/ext/grpc/README.md" role="src" />
+ % for source in php_config_m4.src + php_config_m4.headers:
+ <file baseinstalldir="/" name="${source}" role="src" />
+ % endfor
+ % for lib in libs:
+ % if lib.name in php_config_m4.get('deps', []):
+ % for source in lib.get('public_headers', []) + lib.headers + lib.src:
+ <file baseinstalldir="/" name="${source}" role="src" />
+ % endfor
+ % endif
+ % endfor
+ </dir>
+ </contents>
+ <dependencies>
+ <required>
+ <php>
+ <min>5.5.0</min>
+ </php>
+ <pearinstaller>
+ <min>1.4.0</min>
+ </pearinstaller>
+ </required>
+ </dependencies>
+ <providesextension>grpc</providesextension>
+ <extsrcrelease />
+ <changelog>
+ <release>
+ <version>
+ <release>0.5.0</release>
+ <api>0.5.0</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <date>2015-06-16</date>
+ <license>BSD</license>
+ <notes>
+ First alpha release
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.5.1</release>
+ <api>0.5.1</api>
+ </version>
+ <stability>
+ <release>alpha</release>
+ <api>alpha</api>
+ </stability>
+ <date>2015-07-09</date>
+ <license>BSD</license>
+ <notes>
+ Update to wrap gRPC C Core version 0.10.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.6.0</release>
+ <api>0.6.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2015-09-24</date>
+ <license>BSD</license>
+ <notes>
+ - support per message compression disable
+ - expose per-call host override option
+ - expose connectivity API
+ - expose channel target and call peer
+ - add user-agent
+ - update to wrap gRPC C core library beta version 0.11.0
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.6.1</release>
+ <api>0.6.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2015-10-21</date>
+ <license>BSD</license>
+ <notes>
+ - fixed undefined constant fatal error when run with apache/nginx #2275
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.7.0</release>
+ <api>0.7.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>2016-01-13</date>
+ <license>BSD</license>
+ <notes>
+ - Breaking change to Credentials class (removed) #3765
+ - Replaced by ChannelCredentials and CallCredentials class #3765
+ - New plugin based metadata auth API #4394
+ - Explicit ChannelCredentials::createInsecure() call
+ </notes>
+ </release>
+ <release>
+ <version>
+ <release>0.8.0</release>
+ <api>0.8.0</api>
+ </version>
+ <stability>
+ <release>beta</release>
+ <api>beta</api>
+ </stability>
+ <date>${"%Y-%m-%d" | strftime}</date>
+ <license>BSD</license>
+ <notes>
+ - Simplify gRPC PHP installation #4517
+ </notes>
+ </release>
+ </changelog>
+ </package>
diff --git a/templates/tools/dockerfile/apt_get_basic.include b/templates/tools/dockerfile/apt_get_basic.include
index 9237e7dace..547ce01a30 100644
--- a/templates/tools/dockerfile/apt_get_basic.include
+++ b/templates/tools/dockerfile/apt_get_basic.include
@@ -1,3 +1,4 @@
+<%page args="skip_golang=False"/>\
# Install Git and basic packages.
RUN apt-get update && apt-get install -y ${'\\'}
autoconf ${'\\'}
@@ -9,7 +10,9 @@ RUN apt-get update && apt-get install -y ${'\\'}
gcc ${'\\'}
gcc-multilib ${'\\'}
git ${'\\'}
+% if not skip_golang:
golang ${'\\'}
+% endif
gyp ${'\\'}
lcov ${'\\'}
libc6 ${'\\'}
diff --git a/templates/tools/dockerfile/run_tests_addons.include b/templates/tools/dockerfile/run_tests_addons.include
index 27ac67f5d8..30d22be298 100644
--- a/templates/tools/dockerfile/run_tests_addons.include
+++ b/templates/tools/dockerfile/run_tests_addons.include
@@ -1,7 +1,10 @@
+<%page args="skip_zookeeper=False"/>\
<%include file="ccache_setup.include"/>
+% if not skip_zookeeper:
#======================
# Zookeeper dependencies
# TODO(jtattermusch): is zookeeper still needed?
RUN apt-get install -y libzookeeper-mt-dev
+% endif
RUN mkdir /var/local/jenkins
diff --git a/templates/tools/dockerfile/test/cxx_squeeze_x64/Dockerfile.template b/templates/tools/dockerfile/test/cxx_squeeze_x64/Dockerfile.template
new file mode 100644
index 0000000000..294ae00b4c
--- /dev/null
+++ b/templates/tools/dockerfile/test/cxx_squeeze_x64/Dockerfile.template
@@ -0,0 +1,45 @@
+%YAML 1.2
+--- |
+ # Copyright 2015-2016, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * 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.
+ # * Neither the name of Google Inc. 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
+ # OWNER 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.
+
+ FROM debian:squeeze
+
+ <%include file="../../apt_get_basic.include" args="skip_golang=True"/>
+
+ # libgflags-dev is not available on squeezy
+ RUN apt-get update && apt-get -y install libgtest-dev libc++-dev clang && apt-get clean
+
+ RUN apt-get update && apt-get -y install python-pip && apt-get clean
+ RUN pip install argparse
+
+ <%include file="../../run_tests_addons.include" args="skip_zookeeper=True"/>
+ # Define the default command.
+ CMD ["bash"]
+ \ No newline at end of file
diff --git a/templates/tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile.template b/templates/tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile.template
new file mode 100644
index 0000000000..6b30274892
--- /dev/null
+++ b/templates/tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile.template
@@ -0,0 +1,39 @@
+%YAML 1.2
+--- |
+ # Copyright 2015-2016, Google Inc.
+ # All rights reserved.
+ #
+ # Redistribution and use in source and binary forms, with or without
+ # modification, are permitted provided that the following conditions are
+ # met:
+ #
+ # * Redistributions of source code must retain the above copyright
+ # notice, this list of conditions and the following disclaimer.
+ # * 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.
+ # * Neither the name of Google Inc. 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
+ # OWNER 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.
+
+ FROM ubuntu:16.04
+
+ <%include file="../../apt_get_basic.include"/>
+ <%include file="../../cxx_deps.include"/>
+ <%include file="../../run_tests_addons.include"/>
+ # Define the default command.
+ CMD ["bash"]
+ \ No newline at end of file
diff --git a/test/distrib/php/distribtest.php b/test/distrib/php/distribtest.php
new file mode 100644
index 0000000000..318c6f9cf0
--- /dev/null
+++ b/test/distrib/php/distribtest.php
@@ -0,0 +1,13 @@
+<?php
+
+$channel = new Grpc\Channel('localhost:1000', [
+ 'credentials' => Grpc\ChannelCredentials::createInsecure()
+]);
+
+$deadline = Grpc\Timeval::infFuture();
+$call = new Grpc\Call($channel,
+ 'dummy_method',
+ $deadline);
+
+$call->cancel();
+$channel->close();
diff --git a/test/distrib/php/run_distrib_test.sh b/test/distrib/php/run_distrib_test.sh
new file mode 100755
index 0000000000..43b28d8429
--- /dev/null
+++ b/test/distrib/php/run_distrib_test.sh
@@ -0,0 +1,39 @@
+#!/bin/bash
+# Copyright 2015-2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. 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
+# OWNER 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.
+
+set -ex
+
+cd $(dirname $0)
+
+cp -r $EXTERNAL_GIT_ROOT/input_artifacts/grpc-php.tgz .
+
+pecl install grpc-php.tgz
+
+php -d extension=grpc.so -d max_execution_time=300 distribtest.php
diff --git a/third_party/nanopb b/third_party/nanopb
-Subproject 5497a1dfc91a86965383cdd1652e34834540043
+Subproject f8ac463766281625ad710900479130c7fcb4d63
diff --git a/tools/distrib/check_nanopb_output.sh b/tools/distrib/check_nanopb_output.sh
index 9cb7581d87..5f49ebb93e 100755
--- a/tools/distrib/check_nanopb_output.sh
+++ b/tools/distrib/check_nanopb_output.sh
@@ -32,7 +32,7 @@ set -ex
apt-get install -y autoconf automake libtool curl python-virtualenv
-readonly NANOPB_TMP_OUTPUT="${LOCAL_GIT_ROOT}/gens/src/proto/grpc/lb/v0"
+readonly NANOPB_TMP_OUTPUT="$(mktemp -d)"
# install protoc version 3
pushd third_party/protobuf
@@ -62,8 +62,7 @@ PATH="$PROTOC_PATH:$PATH" ./tools/codegen/core/gen_load_balancing_proto.sh \
$NANOPB_TMP_OUTPUT
# compare outputs to checked compiled code
-diff -rq $NANOPB_TMP_OUTPUT src/core/proto/grpc/lb/v0
-if [ $? != 0 ]; then
+if ! diff -r $NANOPB_TMP_OUTPUT src/core/proto/grpc/lb/v0; then
echo "Outputs differ: $NANOPB_TMP_OUTPUT vs src/core/proto/grpc/lb/v0"
- exit 1
+ exit 2
fi
diff --git a/tools/dockerfile/distribtest/php_jessie_x64/Dockerfile b/tools/dockerfile/distribtest/php_jessie_x64/Dockerfile
new file mode 100644
index 0000000000..d5d3fd626f
--- /dev/null
+++ b/tools/dockerfile/distribtest/php_jessie_x64/Dockerfile
@@ -0,0 +1,32 @@
+# Copyright 2015-2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. 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
+# OWNER 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.
+
+FROM debian:jessie
+
+RUN apt-get update && apt-get install -y php5 php5-dev php-pear phpunit
diff --git a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
index 41dc427454..d048b725c8 100644
--- a/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
+++ b/tools/dockerfile/grpc_artifact_linux_x64/Dockerfile
@@ -91,6 +91,13 @@ RUN /bin/bash -l -c "echo 'export PATH=/usr/local/rvm/bin:$PATH' >> ~/.bashrc"
RUN /bin/bash -l -c "echo 'rvm --default use ruby-2.1' >> ~/.bashrc"
RUN /bin/bash -l -c "gem install bundler --no-ri --no-rdoc"
+
+##################
+# PHP dependencies
+
+RUN apt-get update && apt-get install -y \
+ php5 php5-dev php-pear phpunit
+
RUN mkdir /var/local/jenkins
# Define the default command.
diff --git a/tools/dockerfile/test/cxx_squeeze_x64/Dockerfile b/tools/dockerfile/test/cxx_squeeze_x64/Dockerfile
new file mode 100644
index 0000000000..0848887434
--- /dev/null
+++ b/tools/dockerfile/test/cxx_squeeze_x64/Dockerfile
@@ -0,0 +1,84 @@
+# Copyright 2015-2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. 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
+# OWNER 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.
+
+FROM debian:squeeze
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+ autoconf \
+ autotools-dev \
+ build-essential \
+ bzip2 \
+ ccache \
+ curl \
+ gcc \
+ gcc-multilib \
+ git \
+ gyp \
+ lcov \
+ libc6 \
+ libc6-dbg \
+ libc6-dev \
+ libgtest-dev \
+ libtool \
+ make \
+ perl \
+ strace \
+ python-dev \
+ python-setuptools \
+ python-yaml \
+ telnet \
+ unzip \
+ wget \
+ zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+
+# libgflags-dev is not available on squeezy
+RUN apt-get update && apt-get -y install libgtest-dev libc++-dev clang && apt-get clean
+
+RUN apt-get update && apt-get -y install python-pip && apt-get clean
+RUN pip install argparse
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+
+RUN mkdir /var/local/jenkins
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile b/tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile
new file mode 100644
index 0000000000..c6fe79b42c
--- /dev/null
+++ b/tools/dockerfile/test/cxx_ubuntu1604_x64/Dockerfile
@@ -0,0 +1,86 @@
+# Copyright 2015-2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. 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
+# OWNER 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.
+
+FROM ubuntu:16.04
+
+# Install Git and basic packages.
+RUN apt-get update && apt-get install -y \
+ autoconf \
+ autotools-dev \
+ build-essential \
+ bzip2 \
+ ccache \
+ curl \
+ gcc \
+ gcc-multilib \
+ git \
+ golang \
+ gyp \
+ lcov \
+ libc6 \
+ libc6-dbg \
+ libc6-dev \
+ libgtest-dev \
+ libtool \
+ make \
+ perl \
+ strace \
+ python-dev \
+ python-setuptools \
+ python-yaml \
+ telnet \
+ unzip \
+ wget \
+ zip && apt-get clean
+
+#================
+# Build profiling
+RUN apt-get update && apt-get install -y time && apt-get clean
+
+#=================
+# C++ dependencies
+RUN apt-get update && apt-get -y install libgflags-dev libgtest-dev libc++-dev clang && apt-get clean
+
+# Prepare ccache
+RUN ln -s /usr/bin/ccache /usr/local/bin/gcc
+RUN ln -s /usr/bin/ccache /usr/local/bin/g++
+RUN ln -s /usr/bin/ccache /usr/local/bin/cc
+RUN ln -s /usr/bin/ccache /usr/local/bin/c++
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang
+RUN ln -s /usr/bin/ccache /usr/local/bin/clang++
+
+#======================
+# Zookeeper dependencies
+# TODO(jtattermusch): is zookeeper still needed?
+RUN apt-get install -y libzookeeper-mt-dev
+
+RUN mkdir /var/local/jenkins
+
+# Define the default command.
+CMD ["bash"]
diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py
index f84d35580b..803d3d106b 100644
--- a/tools/run_tests/artifact_targets.py
+++ b/tools/run_tests/artifact_targets.py
@@ -241,6 +241,23 @@ class NodeExtArtifact:
['tools/run_tests/build_artifact_node.sh',
self.gyp_arch])
+class PHPArtifact:
+ """Builds PHP PECL package"""
+
+ def __init__(self, platform, arch):
+ self.name = 'php_pecl_package_{0}_{1}'.format(platform, arch)
+ self.platform = platform
+ self.arch = arch
+ self.labels = ['artifact', 'php', platform, arch]
+
+ def pre_build_jobspecs(self):
+ return []
+
+ def build_jobspec(self):
+ return create_docker_jobspec(
+ self.name,
+ 'tools/dockerfile/grpc_artifact_linux_{}'.format(self.arch),
+ 'tools/run_tests/build_artifact_php.sh')
class ProtocArtifact:
"""Builds protoc and protoc-plugin artifacts"""
@@ -299,4 +316,6 @@ def targets():
PythonArtifact('windows', 'x64'),
RubyArtifact('linux', 'x86'),
RubyArtifact('linux', 'x64'),
- RubyArtifact('macos', 'x64')])
+ RubyArtifact('macos', 'x64'),
+ PHPArtifact('linux', 'x64'),
+ PHPArtifact('macos', 'x64')])
diff --git a/tools/run_tests/build_artifact_php.sh b/tools/run_tests/build_artifact_php.sh
new file mode 100755
index 0000000000..50bf0ea821
--- /dev/null
+++ b/tools/run_tests/build_artifact_php.sh
@@ -0,0 +1,40 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. 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
+# OWNER 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.
+
+PHP_TARGET_ARCH=$1
+set -ex
+
+cd $(dirname $0)/../..
+
+mkdir -p artifacts
+
+pear package
+
+cp -r grpc-*.tgz artifacts/grpc-php.tgz
diff --git a/tools/run_tests/build_package_php.sh b/tools/run_tests/build_package_php.sh
new file mode 100755
index 0000000000..56e3319ed9
--- /dev/null
+++ b/tools/run_tests/build_package_php.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+# Copyright 2016, Google Inc.
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are
+# met:
+#
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * 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.
+# * Neither the name of Google Inc. 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
+# OWNER 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.
+
+set -ex
+
+cd $(dirname $0)/../..
+
+mkdir -p artifacts/
+cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=php,platform={windows,linux,macos}/artifacts/* artifacts/ || true
diff --git a/tools/run_tests/distribtest_targets.py b/tools/run_tests/distribtest_targets.py
index 261f44bc6d..0c02344d90 100644
--- a/tools/run_tests/distribtest_targets.py
+++ b/tools/run_tests/distribtest_targets.py
@@ -198,6 +198,33 @@ class RubyDistribTest(object):
return self.name
+class PHPDistribTest(object):
+ """Tests PHP package"""
+
+ def __init__(self, platform, arch, docker_suffix):
+ self.name = 'php_%s_%s_%s' % (platform, arch, docker_suffix)
+ self.platform = platform
+ self.arch = arch
+ self.docker_suffix = docker_suffix
+ self.labels = ['distribtest', 'php', platform, arch, docker_suffix]
+
+ def pre_build_jobspecs(self):
+ return []
+
+ def build_jobspec(self):
+ if not self.platform == 'linux':
+ raise Exception("Not supported yet.")
+
+ return create_docker_jobspec(self.name,
+ 'tools/dockerfile/distribtest/php_%s_%s' % (
+ self.docker_suffix,
+ self.arch),
+ 'test/distrib/php/run_distrib_test.sh')
+
+ def __str__(self):
+ return self.name
+
+
def targets():
"""Gets list of supported targets"""
return [CSharpDistribTest('linux', 'x64', 'wheezy'),
@@ -241,7 +268,9 @@ def targets():
RubyDistribTest('linux', 'x64', 'ubuntu1510'),
RubyDistribTest('linux', 'x64', 'ubuntu1604'),
NodeDistribTest('macos', 'x64', None, '4'),
- NodeDistribTest('linux', 'x86', 'jessie', '4')
+ NodeDistribTest('macos', 'x64', None, '5'),
+ NodeDistribTest('linux', 'x86', 'jessie', '4'),
+ PHPDistribTest('linux', 'x64', 'jessie'),
] + [
NodeDistribTest('linux', 'x64', os, version)
for os in ('wheezy', 'jessie', 'ubuntu1204', 'ubuntu1404',
diff --git a/tools/run_tests/package_targets.py b/tools/run_tests/package_targets.py
index 4ca8279f1b..87bc4865ce 100644
--- a/tools/run_tests/package_targets.py
+++ b/tools/run_tests/package_targets.py
@@ -139,9 +139,27 @@ class PythonPackage:
'tools/run_tests/build_package_python.sh')
+class PHPPackage:
+ """Copy PHP PECL package artifact"""
+
+ def __init__(self):
+ self.name = 'php_package'
+ self.labels = ['package', 'php', 'linux']
+
+ def pre_build_jobspecs(self):
+ return []
+
+ def build_jobspec(self):
+ return create_docker_jobspec(
+ self.name,
+ 'tools/dockerfile/grpc_artifact_linux_x64',
+ 'tools/run_tests/build_package_php.sh')
+
+
def targets():
"""Gets list of supported targets"""
return [CSharpPackage(),
NodePackage(),
RubyPackage(),
- PythonPackage()]
+ PythonPackage(),
+ PHPPackage()]
diff --git a/tools/run_tests/run_tests.py b/tools/run_tests/run_tests.py
index 0b3efa29e3..7b2bc53716 100755
--- a/tools/run_tests/run_tests.py
+++ b/tools/run_tests/run_tests.py
@@ -55,8 +55,8 @@ import report_utils
import watch_dirs
-ROOT = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '../..'))
-os.chdir(ROOT)
+_ROOT = os.path.abspath(os.path.join(os.path.dirname(sys.argv[0]), '../..'))
+os.chdir(_ROOT)
_FORCE_ENVIRON_FOR_WRAPPERS = {}
@@ -118,6 +118,16 @@ def get_c_tests(travis, test_lang) :
not (travis and tgt['flaky'])]
+def _check_compiler(compiler, supported_compilers):
+ if compiler not in supported_compilers:
+ raise Exception('Compiler %s not supported.' % compiler)
+
+
+def _is_use_docker_child():
+ """Returns True if running running as a --use_docker child."""
+ return True if os.getenv('RUN_TESTS_COMMAND') else False
+
+
class CLanguage(object):
def __init__(self, make_target, test_lang):
@@ -125,44 +135,55 @@ class CLanguage(object):
self.platform = platform_string()
self.test_lang = test_lang
- def test_specs(self, config, args):
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ if self.platform == 'windows':
+ self._make_options = [_windows_toolset_option(self.args.compiler),
+ _windows_arch_option(self.args.arch)]
+ else:
+ self._make_options = []
+ self._docker_distro = self._get_docker_distro(self.args.use_docker,
+ self.args.compiler)
+
+ def test_specs(self):
out = []
- binaries = get_c_tests(args.travis, self.test_lang)
+ binaries = get_c_tests(self.args.travis, self.test_lang)
for target in binaries:
- if config.build_config in target['exclude_configs']:
+ if self.config.build_config in target['exclude_configs']:
continue
if self.platform == 'windows':
binary = 'vsprojects/%s%s/%s.exe' % (
- 'x64/' if args.arch == 'x64' else '',
- _WINDOWS_CONFIG[config.build_config],
+ 'x64/' if self.args.arch == 'x64' else '',
+ _MSBUILD_CONFIG[self.config.build_config],
target['name'])
else:
- binary = 'bins/%s/%s' % (config.build_config, target['name'])
+ binary = 'bins/%s/%s' % (self.config.build_config, target['name'])
if os.path.isfile(binary):
cmdline = [binary] + target['args']
- out.append(config.job_spec(cmdline, [binary],
- shortname=' '.join(cmdline),
- cpu_cost=target['cpu_cost'],
- environ={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
- os.path.abspath(os.path.dirname(
- sys.argv[0]) + '/../../src/core/tsi/test_creds/ca.pem')}))
- elif args.regex == '.*' or platform_string() == 'windows':
+ out.append(self.config.job_spec(cmdline, [binary],
+ shortname=' '.join(cmdline),
+ cpu_cost=target['cpu_cost'],
+ environ={'GRPC_DEFAULT_SSL_ROOTS_FILE_PATH':
+ _ROOT + '/src/core/tsi/test_creds/ca.pem'}))
+ elif self.args.regex == '.*' or self.platform == 'windows':
print '\nWARNING: binary not found, skipping', binary
return sorted(out)
- def make_targets(self, test_regex):
- if platform_string() != 'windows' and test_regex != '.*':
+ def make_targets(self):
+ test_regex = self.args.regex
+ if self.platform != 'windows' and self.args.regex != '.*':
# use the regex to minimize the number of things to build
return [os.path.basename(target['name'])
for target in get_c_tests(False, self.test_lang)
if re.search(test_regex, '/' + target['name'])]
- if platform_string() == 'windows':
+ if self.platform == 'windows':
# don't build tools on windows just yet
return ['buildtests_%s' % self.make_target]
return ['buildtests_%s' % self.make_target, 'tools_%s' % self.make_target]
def make_options(self):
- return []
+ return self._make_options;
def pre_build_steps(self):
if self.platform == 'windows':
@@ -182,11 +203,24 @@ class CLanguage(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return True
+ def _get_docker_distro(self, use_docker, compiler):
+ if _is_use_docker_child():
+ return "already_under_docker"
+ if not use_docker:
+ _check_compiler(compiler, ['default'])
+
+ if compiler == 'gcc4.9' or compiler == 'default':
+ return 'jessie'
+ elif compiler == 'gcc4.4':
+ return 'squeeze'
+ elif compiler == 'gcc5.3':
+ return 'ubuntu1604'
+ else:
+ raise Exception('Compiler %s not supported.' % compiler)
- def dockerfile_dir(self, config, arch):
- return 'tools/dockerfile/test/cxx_jessie_%s' % _docker_arch_suffix(arch)
+ def dockerfile_dir(self):
+ return 'tools/dockerfile/test/cxx_%s_%s' % (self._docker_distro,
+ _docker_arch_suffix(self.args.arch))
def __str__(self):
return self.make_target
@@ -198,13 +232,18 @@ class NodeLanguage(object):
self.platform = platform_string()
self.node_version = '0.12'
- def test_specs(self, config, args):
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ _check_compiler(self.args.compiler, ['default'])
+
+ def test_specs(self):
if self.platform == 'windows':
- return [config.job_spec(['tools\\run_tests\\run_node.bat'], None)]
+ return [self.config.job_spec(['tools\\run_tests\\run_node.bat'], None)]
else:
- return [config.job_spec(['tools/run_tests/run_node.sh', self.node_version],
- None,
- environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+ return [self.config.job_spec(['tools/run_tests/run_node.sh', self.node_version],
+ None,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
def pre_build_steps(self):
if self.platform == 'windows':
@@ -212,7 +251,7 @@ class NodeLanguage(object):
else:
return [['tools/run_tests/pre_build_node.sh', self.node_version]]
- def make_targets(self, test_regex):
+ def make_targets(self):
return []
def make_options(self):
@@ -230,11 +269,8 @@ class NodeLanguage(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return False
-
- def dockerfile_dir(self, config, arch):
- return 'tools/dockerfile/test/node_jessie_%s' % _docker_arch_suffix(arch)
+ def dockerfile_dir(self):
+ return 'tools/dockerfile/test/node_jessie_%s' % _docker_arch_suffix(self.args.arch)
def __str__(self):
return 'node'
@@ -242,14 +278,19 @@ class NodeLanguage(object):
class PhpLanguage(object):
- def test_specs(self, config, args):
- return [config.job_spec(['src/php/bin/run_tests.sh'], None,
- environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ _check_compiler(self.args.compiler, ['default'])
+
+ def test_specs(self):
+ return [self.config.job_spec(['src/php/bin/run_tests.sh'], None,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
def pre_build_steps(self):
return []
- def make_targets(self, test_regex):
+ def make_targets(self):
return ['static_c', 'shared_c']
def make_options(self):
@@ -264,11 +305,8 @@ class PhpLanguage(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return False
-
- def dockerfile_dir(self, config, arch):
- return 'tools/dockerfile/test/php_jessie_%s' % _docker_arch_suffix(arch)
+ def dockerfile_dir(self):
+ return 'tools/dockerfile/test/php_jessie_%s' % _docker_arch_suffix(self.args.arch)
def __str__(self):
return 'php'
@@ -280,10 +318,15 @@ class PythonLanguage(object):
self._build_python_versions = ['2.7']
self._has_python_versions = []
- def test_specs(self, config, args):
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ _check_compiler(self.args.compiler, ['default'])
+
+ def test_specs(self):
environment = dict(_FORCE_ENVIRON_FOR_WRAPPERS)
environment['PYVER'] = '2.7'
- return [config.job_spec(
+ return [self.config.job_spec(
['tools/run_tests/run_python.sh'],
None,
environ=environment,
@@ -294,7 +337,7 @@ class PythonLanguage(object):
def pre_build_steps(self):
return []
- def make_targets(self, test_regex):
+ def make_targets(self):
return ['static_c', 'grpc_python_plugin', 'shared_c']
def make_options(self):
@@ -320,11 +363,8 @@ class PythonLanguage(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return False
-
- def dockerfile_dir(self, config, arch):
- return 'tools/dockerfile/test/python_jessie_%s' % _docker_arch_suffix(arch)
+ def dockerfile_dir(self):
+ return 'tools/dockerfile/test/python_jessie_%s' % _docker_arch_suffix(self.args.arch)
def __str__(self):
return 'python'
@@ -332,15 +372,20 @@ class PythonLanguage(object):
class RubyLanguage(object):
- def test_specs(self, config, args):
- return [config.job_spec(['tools/run_tests/run_ruby.sh'], None,
- timeout_seconds=10*60,
- environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ _check_compiler(self.args.compiler, ['default'])
+
+ def test_specs(self):
+ return [self.config.job_spec(['tools/run_tests/run_ruby.sh'], None,
+ timeout_seconds=10*60,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
def pre_build_steps(self):
return [['tools/run_tests/pre_build_ruby.sh']]
- def make_targets(self, test_regex):
+ def make_targets(self):
return []
def make_options(self):
@@ -355,27 +400,30 @@ class RubyLanguage(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return False
-
- def dockerfile_dir(self, config, arch):
- return 'tools/dockerfile/test/ruby_jessie_%s' % _docker_arch_suffix(arch)
+ def dockerfile_dir(self):
+ return 'tools/dockerfile/test/ruby_jessie_%s' % _docker_arch_suffix(self.args.arch)
def __str__(self):
return 'ruby'
class CSharpLanguage(object):
+
def __init__(self):
self.platform = platform_string()
- def test_specs(self, config, args):
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ _check_compiler(self.args.compiler, ['default'])
+
+ def test_specs(self):
with open('src/csharp/tests.json') as f:
tests_json = json.load(f)
assemblies = tests_json['assemblies']
tests = tests_json['tests']
- msbuild_config = _WINDOWS_CONFIG[config.build_config]
+ msbuild_config = _MSBUILD_CONFIG[self.config.build_config]
assembly_files = ['%s/bin/%s/%s.dll' % (a, msbuild_config, a)
for a in assemblies]
@@ -387,13 +435,13 @@ class CSharpLanguage(object):
else:
script_name = 'tools/run_tests/run_csharp.sh'
- if config.build_config == 'gcov':
+ if self.config.build_config == 'gcov':
# On Windows, we only collect C# code coverage.
# On Linux, we only collect coverage for native extension.
# For code coverage all tests need to run as one suite.
- return [config.job_spec([script_name] + extra_args, None,
- shortname='csharp.coverage',
- environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+ return [self.config.job_spec([script_name] + extra_args, None,
+ shortname='csharp.coverage',
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
else:
specs = []
for test in tests:
@@ -402,9 +450,9 @@ class CSharpLanguage(object):
# use different output directory for each test to prevent
# TestResult.xml clash between parallel test runs.
cmdline += ['-work=test-result/%s' % uuid.uuid4()]
- specs.append(config.job_spec(cmdline, None,
- shortname='csharp.%s' % test,
- environ=_FORCE_ENVIRON_FOR_WRAPPERS))
+ specs.append(self.config.job_spec(cmdline, None,
+ shortname='csharp.%s' % test,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS))
return specs
def pre_build_steps(self):
@@ -413,7 +461,7 @@ class CSharpLanguage(object):
else:
return [['tools/run_tests/pre_build_csharp.sh']]
- def make_targets(self, test_regex):
+ def make_targets(self):
# For Windows, this target doesn't really build anything,
# everything is build by buildall script later.
if self.platform == 'windows':
@@ -440,11 +488,8 @@ class CSharpLanguage(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return False
-
- def dockerfile_dir(self, config, arch):
- return 'tools/dockerfile/test/csharp_jessie_%s' % _docker_arch_suffix(arch)
+ def dockerfile_dir(self):
+ return 'tools/dockerfile/test/csharp_jessie_%s' % _docker_arch_suffix(self.args.arch)
def __str__(self):
return 'csharp'
@@ -452,14 +497,19 @@ class CSharpLanguage(object):
class ObjCLanguage(object):
- def test_specs(self, config, args):
- return [config.job_spec(['src/objective-c/tests/run_tests.sh'], None,
- environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ _check_compiler(self.args.compiler, ['default'])
+
+ def test_specs(self):
+ return [self.config.job_spec(['src/objective-c/tests/run_tests.sh'], None,
+ environ=_FORCE_ENVIRON_FOR_WRAPPERS)]
def pre_build_steps(self):
return []
- def make_targets(self, test_regex):
+ def make_targets(self):
return ['grpc_objective_c_plugin', 'interop_server']
def make_options(self):
@@ -474,10 +524,7 @@ class ObjCLanguage(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return False
-
- def dockerfile_dir(self, config, arch):
+ def dockerfile_dir(self):
return None
def __str__(self):
@@ -486,18 +533,23 @@ class ObjCLanguage(object):
class Sanity(object):
- def test_specs(self, config, args):
+ def configure(self, config, args):
+ self.config = config
+ self.args = args
+ _check_compiler(self.args.compiler, ['default'])
+
+ def test_specs(self):
import yaml
with open('tools/run_tests/sanity/sanity_tests.yaml', 'r') as f:
- return [config.job_spec(cmd['script'].split(), None,
- timeout_seconds=None, environ={'TEST': 'true'},
- cpu_cost=cmd.get('cpu_cost', 1))
+ return [self.config.job_spec(cmd['script'].split(), None,
+ timeout_seconds=None, environ={'TEST': 'true'},
+ cpu_cost=cmd.get('cpu_cost', 1))
for cmd in yaml.load(f)]
def pre_build_steps(self):
return []
- def make_targets(self, test_regex):
+ def make_targets(self):
return ['run_dep_checks']
def make_options(self):
@@ -512,55 +564,18 @@ class Sanity(object):
def makefile_name(self):
return 'Makefile'
- def supports_multi_config(self):
- return False
-
- def dockerfile_dir(self, config, arch):
+ def dockerfile_dir(self):
return 'tools/dockerfile/test/sanity'
def __str__(self):
return 'sanity'
-class Build(object):
-
- def test_specs(self, config, args):
- return []
-
- def pre_build_steps(self):
- return []
-
- def make_targets(self, test_regex):
- return ['static']
-
- def make_options(self):
- return []
-
- def build_steps(self):
- return []
-
- def post_tests_steps(self):
- return []
-
- def makefile_name(self):
- return 'Makefile'
-
- def supports_multi_config(self):
- return True
-
- def dockerfile_dir(self, config, arch):
- return None
-
- def __str__(self):
- return self.make_target
-
-
# different configurations we can run under
with open('tools/run_tests/configs.json') as f:
_CONFIGS = dict((cfg['config'], Config(**cfg)) for cfg in ast.literal_eval(f.read()))
-_DEFAULT = ['opt']
_LANGUAGES = {
'c++': CLanguage('cxx', 'c++'),
'c': CLanguage('c', 'c'),
@@ -570,11 +585,11 @@ _LANGUAGES = {
'ruby': RubyLanguage(),
'csharp': CSharpLanguage(),
'objc' : ObjCLanguage(),
- 'sanity': Sanity(),
- 'build': Build(),
+ 'sanity': Sanity()
}
-_WINDOWS_CONFIG = {
+
+_MSBUILD_CONFIG = {
'dbg': 'Debug',
'opt': 'Release',
'gcov': 'Debug',
@@ -651,14 +666,6 @@ def _docker_arch_suffix(arch):
sys.exit(1)
-def _get_dockerfile_dir(language, cfg, arch):
- """Returns dockerfile to use"""
- custom = language.dockerfile_dir(cfg, arch)
- if custom:
- return custom
- else:
- return 'tools/dockerfile/grpc_tests_multilang_%s' % _docker_arch_suffix(arch)
-
def runs_per_test_type(arg_str):
"""Auxilary function to parse the "runs_per_test" flag.
@@ -682,9 +689,8 @@ def runs_per_test_type(arg_str):
# parse command line
argp = argparse.ArgumentParser(description='Run grpc tests.')
argp.add_argument('-c', '--config',
- choices=['all'] + sorted(_CONFIGS.keys()),
- nargs='+',
- default=_DEFAULT)
+ choices=sorted(_CONFIGS.keys()),
+ default='opt')
argp.add_argument('-n', '--runs_per_test', default=1, type=runs_per_test_type,
help='A positive integer or "inf". If "inf", all tests will run in an '
'infinite loop. Especially useful in combination with "-f"')
@@ -728,9 +734,11 @@ argp.add_argument('--arch',
default='default',
help='Selects architecture to target. For some platforms "default" is the only supported choice.')
argp.add_argument('--compiler',
- choices=['default', 'vs2010', 'vs2013', 'vs2015'],
+ choices=['default',
+ 'gcc4.4', 'gcc4.9', 'gcc5.3',
+ 'vs2010', 'vs2013', 'vs2015'],
default='default',
- help='Selects compiler to use. For some platforms "default" is the only supported choice.')
+ help='Selects compiler to use. Allowed values depend on the platform and language.')
argp.add_argument('--build_only',
default=False,
action='store_const',
@@ -776,11 +784,8 @@ if need_to_regenerate_projects:
# grab config
-run_configs = set(_CONFIGS[cfg]
- for cfg in itertools.chain.from_iterable(
- _CONFIGS.iterkeys() if x == 'all' else [x]
- for x in args.config))
-build_configs = set(cfg.build_config for cfg in run_configs)
+run_config = _CONFIGS[args.config]
+build_config = run_config.build_config
if args.travis:
_FORCE_ENVIRON_FOR_WRAPPERS = {'GRPC_TRACE': 'api'}
@@ -791,17 +796,13 @@ else:
lang_list = args.language
# We don't support code coverage on some languages
if 'gcov' in args.config:
- for bad in ['objc', 'sanity', 'build']:
+ for bad in ['objc', 'sanity']:
if bad in lang_list:
lang_list.remove(bad)
languages = set(_LANGUAGES[l] for l in lang_list)
-
-if len(build_configs) > 1:
- for language in languages:
- if not language.supports_multi_config():
- print language, 'does not support multiple build configurations'
- sys.exit(1)
+for l in languages:
+ l.configure(run_config, args)
language_make_options=[]
if any(language.make_options() for language in languages):
@@ -811,10 +812,6 @@ if any(language.make_options() for language in languages):
else:
language_make_options = next(iter(languages)).make_options()
-if len(languages) != 1 or len(build_configs) != 1:
- print 'Multi-language and multi-config testing is not supported.'
- sys.exit(1)
-
if args.use_docker:
if not args.travis:
print 'Seen --use_docker flag, will run tests under docker.'
@@ -824,14 +821,18 @@ if args.use_docker:
print 'copied to the docker environment.'
time.sleep(5)
+ dockerfile_dirs = set([l.dockerfile_dir() for l in languages])
+ if len(dockerfile_dirs) > 1:
+ print 'Languages to be tested require running under different docker images.'
+ sys.exit(1)
+ dockerfile_dir = next(iter(dockerfile_dirs))
+
child_argv = [ arg for arg in sys.argv if not arg == '--use_docker' ]
run_tests_cmd = 'python tools/run_tests/run_tests.py %s' % ' '.join(child_argv[1:])
env = os.environ.copy()
env['RUN_TESTS_COMMAND'] = run_tests_cmd
- env['DOCKERFILE_DIR'] = _get_dockerfile_dir(next(iter(languages)),
- next(iter(build_configs)),
- args.arch)
+ env['DOCKERFILE_DIR'] = dockerfile_dir
env['DOCKER_RUN_SCRIPT'] = 'tools/jenkins/docker_run_tests.sh'
if args.xml_report:
env['XML_REPORT'] = args.xml_report
@@ -843,10 +844,6 @@ if args.use_docker:
env=env)
sys.exit(0)
-if platform_string() != 'windows' and args.compiler != 'default':
- print 'Compiler %s not supported on current platform.' % args.compiler
- sys.exit(1)
-
_check_arch_option(args.arch)
def make_jobspec(cfg, targets, makefile='Makefile'):
@@ -861,9 +858,7 @@ def make_jobspec(cfg, targets, makefile='Makefile'):
return [
jobset.JobSpec([_windows_build_bat(args.compiler),
'vsprojects\\%s.sln' % target,
- '/p:Configuration=%s' % _WINDOWS_CONFIG[cfg],
- _windows_toolset_option(args.compiler),
- _windows_arch_option(args.arch)] +
+ '/p:Configuration=%s' % _MSBUILD_CONFIG[cfg]] +
extra_args +
language_make_options,
shell=True, timeout_seconds=None)
@@ -886,32 +881,29 @@ make_targets = {}
for l in languages:
makefile = l.makefile_name()
make_targets[makefile] = make_targets.get(makefile, set()).union(
- set(l.make_targets(args.regex)))
+ set(l.make_targets()))
def build_step_environ(cfg):
environ = {'CONFIG': cfg}
- msbuild_cfg = _WINDOWS_CONFIG.get(cfg)
+ msbuild_cfg = _MSBUILD_CONFIG.get(cfg)
if msbuild_cfg:
environ['MSBUILD_CONFIG'] = msbuild_cfg
return environ
build_steps = list(set(
- jobset.JobSpec(cmdline, environ=build_step_environ(cfg), flake_retries=5)
- for cfg in build_configs
+ jobset.JobSpec(cmdline, environ=build_step_environ(build_config), flake_retries=5)
for l in languages
for cmdline in l.pre_build_steps()))
if make_targets:
- make_commands = itertools.chain.from_iterable(make_jobspec(cfg, list(targets), makefile) for cfg in build_configs for (makefile, targets) in make_targets.iteritems())
+ make_commands = itertools.chain.from_iterable(make_jobspec(build_config, list(targets), makefile) for (makefile, targets) in make_targets.iteritems())
build_steps.extend(set(make_commands))
build_steps.extend(set(
- jobset.JobSpec(cmdline, environ=build_step_environ(cfg), timeout_seconds=None)
- for cfg in build_configs
+ jobset.JobSpec(cmdline, environ=build_step_environ(build_config), timeout_seconds=None)
for l in languages
for cmdline in l.build_steps()))
post_tests_steps = list(set(
- jobset.JobSpec(cmdline, environ=build_step_environ(cfg))
- for cfg in build_configs
+ jobset.JobSpec(cmdline, environ=build_step_environ(build_config))
for l in languages
for cmdline in l.post_tests_steps()))
runs_per_test = args.runs_per_test
@@ -1024,7 +1016,7 @@ def _start_port_server(port_server_port):
print 'last ditch attempt to contact port server succeeded'
break
except:
- traceback.print_exc();
+ traceback.print_exc()
port_log = open(logfile, 'r').read()
print port_log
sys.exit(1)
@@ -1044,7 +1036,7 @@ def _start_port_server(port_server_port):
time.sleep(1)
waits += 1
except:
- traceback.print_exc();
+ traceback.print_exc()
port_server.kill()
raise
@@ -1102,9 +1094,8 @@ def _build_and_run(
infinite_runs = runs_per_test == 0
one_run = set(
spec
- for config in run_configs
for language in languages
- for spec in language.test_specs(config, args)
+ for spec in language.test_specs()
if re.search(args.regex, spec.shortname))
# When running on travis, we want out test runs to be as similar as possible
# for reproducibility purposes.
diff --git a/tools/run_tests/sanity/check_submodules.sh b/tools/run_tests/sanity/check_submodules.sh
index c08b382638..3c6dbb9ea1 100755
--- a/tools/run_tests/sanity/check_submodules.sh
+++ b/tools/run_tests/sanity/check_submodules.sh
@@ -44,7 +44,7 @@ cat << EOF | awk '{ print $1 }' | sort > $want_submodules
9f897b25800d2f54f5c442ef01a60721aeca6d87 third_party/boringssl (version_for_cocoapods_1.0-67-g9f897b2)
05b155ff59114735ec8cd089f669c4c3d8f59029 third_party/gflags (v2.1.0-45-g05b155f)
c99458533a9b4c743ed51537e25989ea55944908 third_party/googletest (release-1.7.0)
- 5497a1dfc91a86965383cdd1652e348345400435 third_party/nanopb (nanopb-0.3.3-10-g5497a1d)
+ f8ac463766281625ad710900479130c7fcb4d63b third_party/nanopb (nanopb-0.3.4-29-gf8ac463)
d5fb408ddc281ffcadeb08699e65bb694656d0bd third_party/protobuf (v3.0.0-beta-2)
50893291621658f355bc5b4d450a8d06a563053d third_party/zlib (v1.2.8)
EOF