Merge branch 'master' into rq-threads

pull/16081/head
Sree Kuchibhotla 6 years ago
commit 404d4f3a4d
  1. 4
      BUILD
  2. 3
      CMakeLists.txt
  3. 9
      Makefile
  4. 2
      README.md
  5. 6
      build.yaml
  6. 3
      doc/g_stands_for.md
  7. 4
      gRPC-C++.podspec
  8. 2
      gRPC-Core.podspec
  9. 2
      gRPC-ProtoRPC.podspec
  10. 2
      gRPC-RxLibrary.podspec
  11. 2
      gRPC.podspec
  12. 1
      grpc.gyp
  13. 4
      package.xml
  14. 2
      src/core/lib/channel/channel_stack.h
  15. 78
      src/core/lib/gpr/arena.cc
  16. 3
      src/core/lib/surface/call.cc
  17. 2
      src/core/lib/surface/version.cc
  18. 2
      src/cpp/common/version_cc.cc
  19. 12
      src/csharp/Grpc.Core/Grpc.Core.csproj
  20. 17
      src/csharp/Grpc.Core/Internal/PlatformApis.cs
  21. 2
      src/csharp/Grpc.Core/Version.csproj.include
  22. 4
      src/csharp/Grpc.Core/VersionInfo.cs
  23. 15
      src/csharp/Grpc.Core/build/Xamarin.iOS/Grpc.Core.targets
  24. 2
      src/csharp/build_packages_dotnetcli.bat
  25. 6
      src/csharp/build_packages_dotnetcli.sh
  26. 3
      src/csharp/experimental/build_native_ext_for_android.sh
  27. 62
      src/csharp/experimental/build_native_ext_for_ios.sh
  28. 2
      src/objective-c/!ProtoCompiler-gRPCPlugin.podspec
  29. 2
      src/objective-c/GRPCClient/private/version.h
  30. 2
      src/objective-c/tests/version.h
  31. 2
      src/php/composer.json
  32. 2
      src/php/ext/grpc/version.h
  33. 9
      src/php/lib/Grpc/BaseStub.php
  34. 2
      src/python/grpcio/grpc/_grpcio_metadata.py
  35. 2
      src/python/grpcio/grpc_version.py
  36. 2
      src/python/grpcio_health_checking/grpc_version.py
  37. 2
      src/python/grpcio_reflection/grpc_version.py
  38. 2
      src/python/grpcio_testing/grpc_version.py
  39. 2
      src/python/grpcio_tests/grpc_version.py
  40. 2
      src/ruby/lib/grpc/version.rb
  41. 2
      src/ruby/tools/version.rb
  42. 10
      templates/Makefile.template
  43. 6
      test/cpp/qps/BUILD
  44. 45
      test/cpp/qps/qps_server_builder.cc
  45. 46
      test/cpp/qps/qps_server_builder.h
  46. 9
      test/cpp/qps/qps_worker.cc
  47. 13
      test/cpp/qps/server_async.cc
  48. 11
      test/cpp/qps/server_sync.cc
  49. 2
      third_party/toolchains/BUILD
  50. 2
      tools/distrib/python/grpcio_tools/grpc_version.py
  51. 2
      tools/doxygen/Doxyfile.c++
  52. 2
      tools/doxygen/Doxyfile.c++.internal
  53. 26
      tools/internal_ci/linux/grpc_build_artifacts_extra_release.cfg
  54. 100
      tools/internal_ci/linux/grpc_publish_packages.sh
  55. 1
      tools/package_hosting/404.html
  56. 114
      tools/package_hosting/build-201807.xsl
  57. 16
      tools/package_hosting/dirindex.css
  58. 86
      tools/package_hosting/home.xsl
  59. 76
      tools/package_hosting/style.css
  60. 30
      tools/package_hosting/upload_web_assets.sh
  61. 6
      tools/run_tests/artifacts/artifact_targets.py
  62. 23
      tools/run_tests/artifacts/build_artifact_csharp_ios.sh
  63. 3
      tools/run_tests/generated/sources_and_headers.json

@ -64,11 +64,11 @@ config_setting(
) )
# This should be updated along with build.yaml # This should be updated along with build.yaml
g_stands_for = "gladiolus" g_stands_for = "glider"
core_version = "6.0.0-dev" core_version = "6.0.0-dev"
version = "1.14.0-dev" version = "1.15.0-dev"
GPR_PUBLIC_HDRS = [ GPR_PUBLIC_HDRS = [
"include/grpc/support/alloc.h", "include/grpc/support/alloc.h",

@ -24,7 +24,7 @@
cmake_minimum_required(VERSION 2.8) cmake_minimum_required(VERSION 2.8)
set(PACKAGE_NAME "grpc") set(PACKAGE_NAME "grpc")
set(PACKAGE_VERSION "1.14.0-dev") set(PACKAGE_VERSION "1.15.0-dev")
set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}")
set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}") set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}")
set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/") set(PACKAGE_BUGREPORT "https://github.com/grpc/grpc/issues/")
@ -5164,6 +5164,7 @@ add_library(qps
test/cpp/qps/client_sync.cc test/cpp/qps/client_sync.cc
test/cpp/qps/driver.cc test/cpp/qps/driver.cc
test/cpp/qps/parse_json.cc test/cpp/qps/parse_json.cc
test/cpp/qps/qps_server_builder.cc
test/cpp/qps/qps_worker.cc test/cpp/qps/qps_worker.cc
test/cpp/qps/report.cc test/cpp/qps/report.cc
test/cpp/qps/server_async.cc test/cpp/qps/server_async.cc

@ -437,8 +437,8 @@ Q = @
endif endif
CORE_VERSION = 6.0.0-dev CORE_VERSION = 6.0.0-dev
CPP_VERSION = 1.14.0-dev CPP_VERSION = 1.15.0-dev
CSHARP_VERSION = 1.14.0-dev CSHARP_VERSION = 1.15.0-dev
CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES)) CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES))
CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS) CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS)
@ -1381,6 +1381,8 @@ static_c: pc_c pc_c_unsecure cache.mk $(LIBDIR)/$(CONFIG)/libaddress_sorting.a
static_cxx: pc_cxx pc_cxx_unsecure cache.mk $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBDIR)/$(CONFIG)/libgrpc++_reflection.a $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpcpp_channelz.a static_cxx: pc_cxx pc_cxx_unsecure cache.mk $(LIBDIR)/$(CONFIG)/libgrpc++.a $(LIBDIR)/$(CONFIG)/libgrpc++_cronet.a $(LIBDIR)/$(CONFIG)/libgrpc++_error_details.a $(LIBDIR)/$(CONFIG)/libgrpc++_reflection.a $(LIBDIR)/$(CONFIG)/libgrpc++_unsecure.a $(LIBDIR)/$(CONFIG)/libgrpcpp_channelz.a
static_csharp: static_c $(LIBDIR)/$(CONFIG)/libgrpc_csharp_ext.a
shared: shared_c shared_cxx shared: shared_c shared_cxx
shared_c: pc_c pc_c_unsecure cache.mk $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)address_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) shared_c: pc_c pc_c_unsecure cache.mk $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)address_sorting$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)gpr$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_cronet$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE) $(LIBDIR)/$(CONFIG)/$(SHARED_PREFIX)grpc_unsecure$(SHARED_VERSION_CORE).$(SHARED_EXT_CORE)
@ -7438,6 +7440,7 @@ LIBQPS_SRC = \
test/cpp/qps/client_sync.cc \ test/cpp/qps/client_sync.cc \
test/cpp/qps/driver.cc \ test/cpp/qps/driver.cc \
test/cpp/qps/parse_json.cc \ test/cpp/qps/parse_json.cc \
test/cpp/qps/qps_server_builder.cc \
test/cpp/qps/qps_worker.cc \ test/cpp/qps/qps_worker.cc \
test/cpp/qps/report.cc \ test/cpp/qps/report.cc \
test/cpp/qps/server_async.cc \ test/cpp/qps/server_async.cc \
@ -7493,6 +7496,7 @@ $(OBJDIR)/$(CONFIG)/test/cpp/qps/client_async.o: $(GENDIR)/src/proto/grpc/testin
$(OBJDIR)/$(CONFIG)/test/cpp/qps/client_sync.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc $(OBJDIR)/$(CONFIG)/test/cpp/qps/client_sync.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc
$(OBJDIR)/$(CONFIG)/test/cpp/qps/driver.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc $(OBJDIR)/$(CONFIG)/test/cpp/qps/driver.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc
$(OBJDIR)/$(CONFIG)/test/cpp/qps/parse_json.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc $(OBJDIR)/$(CONFIG)/test/cpp/qps/parse_json.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc
$(OBJDIR)/$(CONFIG)/test/cpp/qps/qps_server_builder.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc
$(OBJDIR)/$(CONFIG)/test/cpp/qps/qps_worker.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc $(OBJDIR)/$(CONFIG)/test/cpp/qps/qps_worker.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc
$(OBJDIR)/$(CONFIG)/test/cpp/qps/report.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc $(OBJDIR)/$(CONFIG)/test/cpp/qps/report.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc
$(OBJDIR)/$(CONFIG)/test/cpp/qps/server_async.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc $(OBJDIR)/$(CONFIG)/test/cpp/qps/server_async.o: $(GENDIR)/src/proto/grpc/testing/messages.pb.cc $(GENDIR)/src/proto/grpc/testing/messages.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.pb.cc $(GENDIR)/src/proto/grpc/testing/payloads.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.pb.cc $(GENDIR)/src/proto/grpc/testing/stats.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/control.pb.cc $(GENDIR)/src/proto/grpc/testing/control.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.pb.cc $(GENDIR)/src/proto/grpc/testing/benchmark_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.pb.cc $(GENDIR)/src/proto/grpc/testing/report_qps_scenario_service.grpc.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.pb.cc $(GENDIR)/src/proto/grpc/testing/worker_service.grpc.pb.cc
@ -24691,6 +24695,7 @@ test/cpp/qps/client_async.cc: $(OPENSSL_DEP)
test/cpp/qps/client_sync.cc: $(OPENSSL_DEP) test/cpp/qps/client_sync.cc: $(OPENSSL_DEP)
test/cpp/qps/driver.cc: $(OPENSSL_DEP) test/cpp/qps/driver.cc: $(OPENSSL_DEP)
test/cpp/qps/parse_json.cc: $(OPENSSL_DEP) test/cpp/qps/parse_json.cc: $(OPENSSL_DEP)
test/cpp/qps/qps_server_builder.cc: $(OPENSSL_DEP)
test/cpp/qps/qps_worker.cc: $(OPENSSL_DEP) test/cpp/qps/qps_worker.cc: $(OPENSSL_DEP)
test/cpp/qps/report.cc: $(OPENSSL_DEP) test/cpp/qps/report.cc: $(OPENSSL_DEP)
test/cpp/qps/server_async.cc: $(OPENSSL_DEP) test/cpp/qps/server_async.cc: $(OPENSSL_DEP)

@ -37,6 +37,8 @@ For instructions on how to use the language-specific gRPC runtime in your projec
You can find per-language quickstart guides and tutorials in [Documentation section on grpc.io website](https://grpc.io/docs/). The code examples are available in the [examples](examples) directory. You can find per-language quickstart guides and tutorials in [Documentation section on grpc.io website](https://grpc.io/docs/). The code examples are available in the [examples](examples) directory.
Precompiled bleeding-edge package builds of gRPC `master` branch's `HEAD` are uploaded daily to [packages.grpc.io](https://packages.grpc.io).
# To start developing gRPC # To start developing gRPC
Contributions are welcome! Contributions are welcome!

@ -13,8 +13,8 @@ settings:
'#09': Per-language overrides are possible with (eg) ruby_version tag here '#09': Per-language overrides are possible with (eg) ruby_version tag here
'#10': See the expand_version.py for all the quirks here '#10': See the expand_version.py for all the quirks here
core_version: 6.0.0-dev core_version: 6.0.0-dev
g_stands_for: gladiolus g_stands_for: glider
version: 1.14.0-dev version: 1.15.0-dev
filegroups: filegroups:
- name: alts_proto - name: alts_proto
headers: headers:
@ -1963,6 +1963,7 @@ libs:
- test/cpp/qps/histogram.h - test/cpp/qps/histogram.h
- test/cpp/qps/interarrival.h - test/cpp/qps/interarrival.h
- test/cpp/qps/parse_json.h - test/cpp/qps/parse_json.h
- test/cpp/qps/qps_server_builder.h
- test/cpp/qps/qps_worker.h - test/cpp/qps/qps_worker.h
- test/cpp/qps/report.h - test/cpp/qps/report.h
- test/cpp/qps/server.h - test/cpp/qps/server.h
@ -1981,6 +1982,7 @@ libs:
- test/cpp/qps/client_sync.cc - test/cpp/qps/client_sync.cc
- test/cpp/qps/driver.cc - test/cpp/qps/driver.cc
- test/cpp/qps/parse_json.cc - test/cpp/qps/parse_json.cc
- test/cpp/qps/qps_server_builder.cc
- test/cpp/qps/qps_worker.cc - test/cpp/qps/qps_worker.cc
- test/cpp/qps/report.cc - test/cpp/qps/report.cc
- test/cpp/qps/server_async.cc - test/cpp/qps/server_async.cc

@ -13,4 +13,5 @@
- 1.11 'g' stands for ['gorgeous'](https://github.com/grpc/grpc/tree/v1.11.x) - 1.11 'g' stands for ['gorgeous'](https://github.com/grpc/grpc/tree/v1.11.x)
- 1.12 'g' stands for ['glorious'](https://github.com/grpc/grpc/tree/v1.12.x) - 1.12 'g' stands for ['glorious'](https://github.com/grpc/grpc/tree/v1.12.x)
- 1.13 'g' stands for ['gloriosa'](https://github.com/grpc/grpc/tree/v1.13.x) - 1.13 'g' stands for ['gloriosa'](https://github.com/grpc/grpc/tree/v1.13.x)
- 1.14 'g' stands for ['gladiolus'](https://github.com/grpc/grpc/tree/master) - 1.14 'g' stands for ['gladiolus'](https://github.com/grpc/grpc/tree/v1.14.x)
- 1.15 'g' stands for ['glider'](https://github.com/grpc/grpc/tree/master)

@ -23,7 +23,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-C++' s.name = 'gRPC-C++'
# TODO (mxyan): use version that match gRPC version when pod is stabilized # TODO (mxyan): use version that match gRPC version when pod is stabilized
# version = '1.14.0-dev' # version = '1.15.0-dev'
version = '0.0.3' version = '0.0.3'
s.version = version s.version = version
s.summary = 'gRPC C++ library' s.summary = 'gRPC C++ library'
@ -31,7 +31,7 @@ Pod::Spec.new do |s|
s.license = 'Apache License, Version 2.0' s.license = 'Apache License, Version 2.0'
s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' } s.authors = { 'The gRPC contributors' => 'grpc-packages@google.com' }
grpc_version = '1.14.0-dev' grpc_version = '1.15.0-dev'
s.source = { s.source = {
:git => 'https://github.com/grpc/grpc.git', :git => 'https://github.com/grpc/grpc.git',

@ -22,7 +22,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-Core' s.name = 'gRPC-Core'
version = '1.14.0-dev' version = '1.15.0-dev'
s.version = version s.version = version
s.summary = 'Core cross-platform gRPC library, written in C' s.summary = 'Core cross-platform gRPC library, written in C'
s.homepage = 'https://grpc.io' s.homepage = 'https://grpc.io'

@ -21,7 +21,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-ProtoRPC' s.name = 'gRPC-ProtoRPC'
version = '1.14.0-dev' version = '1.15.0-dev'
s.version = version s.version = version
s.summary = 'RPC library for Protocol Buffers, based on gRPC' s.summary = 'RPC library for Protocol Buffers, based on gRPC'
s.homepage = 'https://grpc.io' s.homepage = 'https://grpc.io'

@ -21,7 +21,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC-RxLibrary' s.name = 'gRPC-RxLibrary'
version = '1.14.0-dev' version = '1.15.0-dev'
s.version = version s.version = version
s.summary = 'Reactive Extensions library for iOS/OSX.' s.summary = 'Reactive Extensions library for iOS/OSX.'
s.homepage = 'https://grpc.io' s.homepage = 'https://grpc.io'

@ -20,7 +20,7 @@
Pod::Spec.new do |s| Pod::Spec.new do |s|
s.name = 'gRPC' s.name = 'gRPC'
version = '1.14.0-dev' version = '1.15.0-dev'
s.version = version s.version = version
s.summary = 'gRPC client library for iOS/OSX' s.summary = 'gRPC client library for iOS/OSX'
s.homepage = 'https://grpc.io' s.homepage = 'https://grpc.io'

@ -1718,6 +1718,7 @@
'test/cpp/qps/client_sync.cc', 'test/cpp/qps/client_sync.cc',
'test/cpp/qps/driver.cc', 'test/cpp/qps/driver.cc',
'test/cpp/qps/parse_json.cc', 'test/cpp/qps/parse_json.cc',
'test/cpp/qps/qps_server_builder.cc',
'test/cpp/qps/qps_worker.cc', 'test/cpp/qps/qps_worker.cc',
'test/cpp/qps/report.cc', 'test/cpp/qps/report.cc',
'test/cpp/qps/server_async.cc', 'test/cpp/qps/server_async.cc',

@ -13,8 +13,8 @@
<date>2018-01-19</date> <date>2018-01-19</date>
<time>16:06:07</time> <time>16:06:07</time>
<version> <version>
<release>1.14.0dev</release> <release>1.15.0dev</release>
<api>1.14.0dev</api> <api>1.15.0dev</api>
</version> </version>
<stability> <stability>
<release>beta</release> <release>beta</release>

@ -82,7 +82,7 @@ typedef struct {
typedef struct { typedef struct {
grpc_call_stats stats; grpc_call_stats stats;
grpc_status_code final_status; grpc_status_code final_status;
const char** error_string; const char* error_string;
} grpc_call_final_info; } grpc_call_final_info;
/* Channel filters specify: /* Channel filters specify:

@ -25,6 +25,7 @@
#include <grpc/support/alloc.h> #include <grpc/support/alloc.h>
#include <grpc/support/atm.h> #include <grpc/support/atm.h>
#include <grpc/support/log.h> #include <grpc/support/log.h>
#include <grpc/support/sync.h>
#include "src/core/lib/gpr/alloc.h" #include "src/core/lib/gpr/alloc.h"
@ -36,8 +37,6 @@
#ifdef SIMPLE_ARENA_FOR_DEBUGGING #ifdef SIMPLE_ARENA_FOR_DEBUGGING
#include <grpc/support/sync.h>
struct gpr_arena { struct gpr_arena {
gpr_mu mu; gpr_mu mu;
void** ptrs; void** ptrs;
@ -78,14 +77,17 @@ void* gpr_arena_alloc(gpr_arena* arena, size_t size) {
// would allow us to use the alignment actually needed by the caller. // would allow us to use the alignment actually needed by the caller.
typedef struct zone { typedef struct zone {
size_t size_begin; size_t size_begin; // All the space we have set aside for allocations up
size_t size_end; // until this zone.
gpr_atm next_atm; size_t size_end; // size_end = size_begin plus all the space we set aside for
// allocations in zone z itself.
zone* next;
} zone; } zone;
struct gpr_arena { struct gpr_arena {
gpr_atm size_so_far; gpr_atm size_so_far;
zone initial_zone; zone initial_zone;
gpr_mu arena_growth_mutex;
}; };
static void* zalloc_aligned(size_t size) { static void* zalloc_aligned(size_t size) {
@ -99,15 +101,17 @@ gpr_arena* gpr_arena_create(size_t initial_size) {
gpr_arena* a = static_cast<gpr_arena*>(zalloc_aligned( gpr_arena* a = static_cast<gpr_arena*>(zalloc_aligned(
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(gpr_arena)) + initial_size)); GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(gpr_arena)) + initial_size));
a->initial_zone.size_end = initial_size; a->initial_zone.size_end = initial_size;
gpr_mu_init(&a->arena_growth_mutex);
return a; return a;
} }
size_t gpr_arena_destroy(gpr_arena* arena) { size_t gpr_arena_destroy(gpr_arena* arena) {
gpr_mu_destroy(&arena->arena_growth_mutex);
gpr_atm size = gpr_atm_no_barrier_load(&arena->size_so_far); gpr_atm size = gpr_atm_no_barrier_load(&arena->size_so_far);
zone* z = (zone*)gpr_atm_no_barrier_load(&arena->initial_zone.next_atm); zone* z = arena->initial_zone.next;
gpr_free_aligned(arena); gpr_free_aligned(arena);
while (z) { while (z) {
zone* next_z = (zone*)gpr_atm_no_barrier_load(&z->next_atm); zone* next_z = z->next;
gpr_free_aligned(z); gpr_free_aligned(z);
z = next_z; z = next_z;
} }
@ -116,37 +120,55 @@ size_t gpr_arena_destroy(gpr_arena* arena) {
void* gpr_arena_alloc(gpr_arena* arena, size_t size) { void* gpr_arena_alloc(gpr_arena* arena, size_t size) {
size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(size); size = GPR_ROUND_UP_TO_ALIGNMENT_SIZE(size);
size_t start = static_cast<size_t>( size_t previous_size_of_arena_allocations = static_cast<size_t>(
gpr_atm_no_barrier_fetch_add(&arena->size_so_far, size)); gpr_atm_no_barrier_fetch_add(&arena->size_so_far, size));
size_t updated_size_of_arena_allocations =
previous_size_of_arena_allocations + size;
zone* z = &arena->initial_zone; zone* z = &arena->initial_zone;
while (start > z->size_end) { // Check to see if the allocation isn't able to end in the initial zone.
zone* next_z = (zone*)gpr_atm_acq_load(&z->next_atm); // This statement is true only in the uncommon case because of our arena
if (next_z == nullptr) { // sizing historesis (that is, most calls should have a large enough initial
size_t next_z_size = // zone and will not need to grow the arena).
static_cast<size_t>(gpr_atm_no_barrier_load(&arena->size_so_far)); if (updated_size_of_arena_allocations > z->size_end) {
next_z = static_cast<zone*>(zalloc_aligned( // Find a zone to fit this allocation
gpr_mu_lock(&arena->arena_growth_mutex);
while (updated_size_of_arena_allocations > z->size_end) {
if (z->next == nullptr) {
// Note that we do an extra increment of size_so_far to prevent multiple
// simultaneous callers from stepping on each other. However, this extra
// increment means some space in the arena is wasted.
// So whenever we need to allocate x bytes and there are x - n (where
// n > 0) remaining in the current zone, we will waste x bytes (x - n
// in the current zone and n in the new zone).
previous_size_of_arena_allocations = static_cast<size_t>(
gpr_atm_no_barrier_fetch_add(&arena->size_so_far, size));
updated_size_of_arena_allocations =
previous_size_of_arena_allocations + size;
size_t next_z_size = updated_size_of_arena_allocations;
z->next = static_cast<zone*>(zalloc_aligned(
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(zone)) + next_z_size)); GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(zone)) + next_z_size));
next_z->size_begin = z->size_end; z->next->size_begin = z->size_end;
next_z->size_end = z->size_end + next_z_size; z->next->size_end = z->size_end + next_z_size;
if (!gpr_atm_rel_cas(&z->next_atm, static_cast<gpr_atm>(NULL),
(gpr_atm)next_z)) {
gpr_free_aligned(next_z);
next_z = (zone*)gpr_atm_acq_load(&z->next_atm);
}
} }
z = next_z; z = z->next;
} }
if (start + size > z->size_end) { gpr_mu_unlock(&arena->arena_growth_mutex);
return gpr_arena_alloc(arena, size);
} }
GPR_ASSERT(start >= z->size_begin); GPR_ASSERT(previous_size_of_arena_allocations >= z->size_begin);
GPR_ASSERT(start + size <= z->size_end); GPR_ASSERT(updated_size_of_arena_allocations <= z->size_end);
char* ptr = (z == &arena->initial_zone) // Skip the first part of the zone, which just contains tracking information.
// For the initial zone, this is the gpr_arena struct and for any other zone,
// it's the zone struct.
char* start_of_allocation_space =
(z == &arena->initial_zone)
? reinterpret_cast<char*>(arena) + ? reinterpret_cast<char*>(arena) +
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(gpr_arena)) GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(gpr_arena))
: reinterpret_cast<char*>(z) + : reinterpret_cast<char*>(z) +
GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(zone)); GPR_ROUND_UP_TO_ALIGNMENT_SIZE(sizeof(zone));
return ptr + start - z->size_begin; // previous_size_of_arena_allocations - size_begin is how many bytes have been
// allocated into the current zone
return start_of_allocation_space + previous_size_of_arena_allocations -
z->size_begin;
} }
#endif // SIMPLE_ARENA_FOR_DEBUGGING #endif // SIMPLE_ARENA_FOR_DEBUGGING

@ -561,7 +561,7 @@ static void destroy_call(void* call, grpc_error* error) {
} }
get_final_status(c, set_status_value_directly, &c->final_info.final_status, get_final_status(c, set_status_value_directly, &c->final_info.final_status,
nullptr, c->final_info.error_string); nullptr, &(c->final_info.error_string));
c->final_info.stats.latency = c->final_info.stats.latency =
gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), c->start_time); gpr_time_sub(gpr_now(GPR_CLOCK_MONOTONIC), c->start_time);
@ -573,6 +573,7 @@ static void destroy_call(void* call, grpc_error* error) {
grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info, grpc_call_stack_destroy(CALL_STACK_FROM_CALL(c), &c->final_info,
GRPC_CLOSURE_INIT(&c->release_call, release_call, c, GRPC_CLOSURE_INIT(&c->release_call, release_call, c,
grpc_schedule_on_exec_ctx)); grpc_schedule_on_exec_ctx));
gpr_free(static_cast<void*>(const_cast<char*>(c->final_info.error_string)));
} }
void grpc_call_ref(grpc_call* c) { gpr_ref(&c->ext_ref); } void grpc_call_ref(grpc_call* c) { gpr_ref(&c->ext_ref); }

@ -25,4 +25,4 @@
const char* grpc_version_string(void) { return "6.0.0-dev"; } const char* grpc_version_string(void) { return "6.0.0-dev"; }
const char* grpc_g_stands_for(void) { return "gladiolus"; } const char* grpc_g_stands_for(void) { return "glider"; }

@ -22,5 +22,5 @@
#include <grpcpp/grpcpp.h> #include <grpcpp/grpcpp.h>
namespace grpc { namespace grpc {
grpc::string Version() { return "1.14.0-dev"; } grpc::string Version() { return "1.15.0-dev"; }
} // namespace grpc } // namespace grpc

@ -54,6 +54,14 @@
<PackagePath>runtimes/monoandroid/arm64-v8a/libgrpc_csharp_ext.so</PackagePath> <PackagePath>runtimes/monoandroid/arm64-v8a/libgrpc_csharp_ext.so</PackagePath>
<Pack>true</Pack> <Pack>true</Pack>
</Content> </Content>
<Content Include="..\nativelibs\csharp_ext_macos_ios\libgrpc_csharp_ext.a">
<PackagePath>runtimes/ios/native/libgrpc_csharp_ext.a</PackagePath>
<Pack>true</Pack>
</Content>
<Content Include="..\nativelibs\csharp_ext_macos_ios\libgrpc.a">
<PackagePath>runtimes/ios/native/libgrpc.a</PackagePath>
<Pack>true</Pack>
</Content>
<Content Include="build\net45\Grpc.Core.targets"> <Content Include="build\net45\Grpc.Core.targets">
<PackagePath>build/net45/</PackagePath> <PackagePath>build/net45/</PackagePath>
<Pack>true</Pack> <Pack>true</Pack>
@ -62,6 +70,10 @@
<PackagePath>build/MonoAndroid/</PackagePath> <PackagePath>build/MonoAndroid/</PackagePath>
<Pack>true</Pack> <Pack>true</Pack>
</Content> </Content>
<Content Include="build\Xamarin.iOS\Grpc.Core.targets">
<PackagePath>build/Xamarin.iOS/</PackagePath>
<Pack>true</Pack>
</Content>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>

@ -33,8 +33,9 @@ namespace Grpc.Core.Internal
internal static class PlatformApis internal static class PlatformApis
{ {
const string UnityEngineApplicationClassName = "UnityEngine.Application, UnityEngine"; const string UnityEngineApplicationClassName = "UnityEngine.Application, UnityEngine";
const string XamarinAndroidActivityClassName = "Android.App.Activity, Mono.Android"; const string XamarinAndroidObjectClassName = "Java.Lang.Object, Mono.Android";
const string XamariniOSEnumClassName = "Mono.CSharp.Enum, Mono.CSharp"; const string XamarinIOSObjectClassName = "Foundation.NSObject, Xamarin.iOS";
static readonly bool isLinux; static readonly bool isLinux;
static readonly bool isMacOSX; static readonly bool isMacOSX;
static readonly bool isWindows; static readonly bool isWindows;
@ -42,7 +43,7 @@ namespace Grpc.Core.Internal
static readonly bool isNetCore; static readonly bool isNetCore;
static readonly bool isUnity; static readonly bool isUnity;
static readonly bool isXamarin; static readonly bool isXamarin;
static readonly bool isXamariniOS; static readonly bool isXamarinIOS;
static readonly bool isXamarinAndroid; static readonly bool isXamarinAndroid;
static PlatformApis() static PlatformApis()
@ -63,9 +64,9 @@ namespace Grpc.Core.Internal
#endif #endif
isMono = Type.GetType("Mono.Runtime") != null; isMono = Type.GetType("Mono.Runtime") != null;
isUnity = Type.GetType(UnityEngineApplicationClassName) != null; isUnity = Type.GetType(UnityEngineApplicationClassName) != null;
isXamariniOS = Type.GetType(XamariniOSEnumClassName) != null; isXamarinIOS = Type.GetType(XamarinIOSObjectClassName) != null;
isXamarinAndroid = Type.GetType(XamarinAndroidActivityClassName) != null; isXamarinAndroid = Type.GetType(XamarinAndroidObjectClassName) != null;
isXamarin = isXamariniOS || isXamarinAndroid; isXamarin = isXamarinIOS || isXamarinAndroid;
} }
public static bool IsLinux public static bool IsLinux
@ -108,9 +109,9 @@ namespace Grpc.Core.Internal
/// <summary> /// <summary>
/// true if running on Xamarin.iOS, false otherwise. /// true if running on Xamarin.iOS, false otherwise.
/// </summary> /// </summary>
public static bool IsXamariniOS public static bool IsXamarinIOS
{ {
get { return isXamariniOS; } get { return isXamarinIOS; }
} }
/// <summary> /// <summary>

@ -1,7 +1,7 @@
<!-- This file is generated --> <!-- This file is generated -->
<Project> <Project>
<PropertyGroup> <PropertyGroup>
<GrpcCsharpVersion>1.14.0-dev</GrpcCsharpVersion> <GrpcCsharpVersion>1.15.0-dev</GrpcCsharpVersion>
<GoogleProtobufVersion>3.5.1</GoogleProtobufVersion> <GoogleProtobufVersion>3.5.1</GoogleProtobufVersion>
</PropertyGroup> </PropertyGroup>
</Project> </Project>

@ -33,11 +33,11 @@ namespace Grpc.Core
/// <summary> /// <summary>
/// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies /// Current <c>AssemblyFileVersion</c> of gRPC C# assemblies
/// </summary> /// </summary>
public const string CurrentAssemblyFileVersion = "1.14.0.0"; public const string CurrentAssemblyFileVersion = "1.15.0.0";
/// <summary> /// <summary>
/// Current version of gRPC C# /// Current version of gRPC C#
/// </summary> /// </summary>
public const string CurrentVersion = "1.14.0-dev"; public const string CurrentVersion = "1.15.0-dev";
} }
} }

@ -0,0 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<NativeReference Include="$(MSBuildThisFileDirectory)..\..\runtimes\ios\native\libgrpc_csharp_ext.a">
<Kind>Static</Kind>
<ForceLoad>True</ForceLoad>
</NativeReference>
<NativeReference Include="$(MSBuildThisFileDirectory)..\..\runtimes\ios\native\libgrpc.a">
<Kind>Static</Kind>
<ForceLoad>True</ForceLoad>
</NativeReference>
</ItemGroup>
</Project>

@ -13,7 +13,7 @@
@rem limitations under the License. @rem limitations under the License.
@rem Current package versions @rem Current package versions
set VERSION=1.14.0-dev set VERSION=1.15.0-dev
@rem Adjust the location of nuget.exe @rem Adjust the location of nuget.exe
set NUGET=C:\nuget\nuget.exe set NUGET=C:\nuget\nuget.exe

@ -45,8 +45,8 @@ dotnet pack --configuration Release Grpc.Auth --output ../../../artifacts
dotnet pack --configuration Release Grpc.HealthCheck --output ../../../artifacts dotnet pack --configuration Release Grpc.HealthCheck --output ../../../artifacts
dotnet pack --configuration Release Grpc.Reflection --output ../../../artifacts dotnet pack --configuration Release Grpc.Reflection --output ../../../artifacts
nuget pack Grpc.nuspec -Version "1.14.0-dev" -OutputDirectory ../../artifacts nuget pack Grpc.nuspec -Version "1.15.0-dev" -OutputDirectory ../../artifacts
nuget pack Grpc.Core.NativeDebug.nuspec -Version "1.14.0-dev" -OutputDirectory ../../artifacts nuget pack Grpc.Core.NativeDebug.nuspec -Version "1.15.0-dev" -OutputDirectory ../../artifacts
nuget pack Grpc.Tools.nuspec -Version "1.14.0-dev" -OutputDirectory ../../artifacts nuget pack Grpc.Tools.nuspec -Version "1.15.0-dev" -OutputDirectory ../../artifacts
(cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg) (cd ../../artifacts && zip csharp_nugets_dotnetcli.zip *.nupkg)

@ -36,6 +36,7 @@ cd build
# ANDROID_ABI in ('arm64-v8a', 'armeabi-v7a') # ANDROID_ABI in ('arm64-v8a', 'armeabi-v7a')
# e.g. ANDROID_ABI=armeabi-v7a # e.g. ANDROID_ABI=armeabi-v7a
# android-19 corresponds to Kitkat 4.4
${ANDROID_SDK_CMAKE} ../.. \ ${ANDROID_SDK_CMAKE} ../.. \
-DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake" \ -DCMAKE_TOOLCHAIN_FILE="${ANDROID_NDK_PATH}/build/cmake/android.toolchain.cmake" \
-DCMAKE_ANDROID_NDK="${ANDROID_NDK_PATH}" \ -DCMAKE_ANDROID_NDK="${ANDROID_NDK_PATH}" \
@ -44,7 +45,7 @@ ${ANDROID_SDK_CMAKE} ../.. \
-DRUN_HAVE_STD_REGEX=0 \ -DRUN_HAVE_STD_REGEX=0 \
-DRUN_HAVE_STEADY_CLOCK=0 \ -DRUN_HAVE_STEADY_CLOCK=0 \
-DCMAKE_BUILD_TYPE=Release \ -DCMAKE_BUILD_TYPE=Release \
-DANDROID_PLATFORM=android-28 \ -DANDROID_PLATFORM=android-19 \
-DANDROID_ABI="${ANDROID_ABI}" \ -DANDROID_ABI="${ANDROID_ABI}" \
-DANDROID_NDK="${ANDROID_NDK_PATH}" -DANDROID_NDK="${ANDROID_NDK_PATH}"

@ -0,0 +1,62 @@
#!/bin/sh
# Copyright 2018 The gRPC Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Helper script to crosscompile grpc_csharp_ext native extension for Android.
set -ex
cd "$(dirname "$0")/../../.."
# Usage: build <iphoneos|iphonesimulator> <arm64|x86_64|...>
function build {
SDK="$1"
ARCH="$2"
PATH_AR="$(xcrun --sdk $SDK --find ar)"
PATH_CC="$(xcrun --sdk $SDK --find clang)"
PATH_CXX="$(xcrun --sdk $SDK --find clang++)"
# TODO(jtattermusch): add -mios-version-min=6.0 and -Wl,ios_version_min=6.0
CPPFLAGS="-O2 -Wframe-larger-than=16384 -arch $ARCH -isysroot $(xcrun --sdk $SDK --show-sdk-path) -DPB_NO_PACKED_STRUCTS=1"
LDFLAGS="-arch $ARCH -isysroot $(xcrun --sdk $SDK --show-sdk-path)"
# TODO(jtattermusch): revisit the build arguments
make -j4 static_csharp \
VALID_CONFIG_ios_$ARCH="1" \
CC_ios_$ARCH="$PATH_CC" \
CXX_ios_$ARCH="$PATH_CXX" \
LD_ios_$ARCH="$PATH_CC" \
LDXX_ios_$ARCH="$PATH_CXX" \
CPPFLAGS_ios_$ARCH="$CPPFLAGS" \
LDFLAGS_ios_$ARCH="$LDFLAGS" \
DEFINES_ios_$ARCH="NDEBUG" \
CONFIG="ios_$ARCH"
}
# Usage: fatten <grpc_csharp_ext|...>
function fatten {
LIB_NAME="$1"
mkdir -p libs/ios
lipo -create -output libs/ios/lib$LIB_NAME.a \
libs/ios_arm64/lib$LIB_NAME.a \
libs/ios_x86_64/lib$LIB_NAME.a
}
build iphoneos arm64
build iphonesimulator x86_64
fatten grpc
fatten grpc_csharp_ext

@ -42,7 +42,7 @@ Pod::Spec.new do |s|
# exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed
# before them. # before them.
s.name = '!ProtoCompiler-gRPCPlugin' s.name = '!ProtoCompiler-gRPCPlugin'
v = '1.14.0-dev' v = '1.15.0-dev'
s.version = v s.version = v
s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.' s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.'
s.description = <<-DESC s.description = <<-DESC

@ -22,4 +22,4 @@
// instead. This file can be regenerated from the template by running // instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`. // `tools/buildgen/generate_projects.sh`.
#define GRPC_OBJC_VERSION_STRING @"1.14.0-dev" #define GRPC_OBJC_VERSION_STRING @"1.15.0-dev"

@ -22,5 +22,5 @@
// instead. This file can be regenerated from the template by running // instead. This file can be regenerated from the template by running
// `tools/buildgen/generate_projects.sh`. // `tools/buildgen/generate_projects.sh`.
#define GRPC_OBJC_VERSION_STRING @"1.14.0-dev" #define GRPC_OBJC_VERSION_STRING @"1.15.0-dev"
#define GRPC_C_VERSION_STRING @"6.0.0-dev" #define GRPC_C_VERSION_STRING @"6.0.0-dev"

@ -2,7 +2,7 @@
"name": "grpc/grpc-dev", "name": "grpc/grpc-dev",
"description": "gRPC library for PHP - for Developement use only", "description": "gRPC library for PHP - for Developement use only",
"license": "Apache-2.0", "license": "Apache-2.0",
"version": "1.14.0", "version": "1.15.0",
"require": { "require": {
"php": ">=5.5.0", "php": ">=5.5.0",
"google/protobuf": "^v3.3.0" "google/protobuf": "^v3.3.0"

@ -20,6 +20,6 @@
#ifndef VERSION_H #ifndef VERSION_H
#define VERSION_H #define VERSION_H
#define PHP_GRPC_VERSION "1.14.0dev" #define PHP_GRPC_VERSION "1.15.0dev"
#endif /* VERSION_H */ #endif /* VERSION_H */

@ -83,10 +83,11 @@ class BaseStub
} }
private static function updateOpts($opts) { private static function updateOpts($opts) {
$package_config = json_decode( if (!file_exists($composerFile = __DIR__.'/../../composer.json')) {
file_get_contents(dirname(__FILE__).'/../../composer.json'), // for grpc/grpc-php subpackage
true $composerFile = __DIR__.'/../composer.json';
); }
$package_config = json_decode(file_get_contents($composerFile), true);
if (!empty($opts['grpc.primary_user_agent'])) { if (!empty($opts['grpc.primary_user_agent'])) {
$opts['grpc.primary_user_agent'] .= ' '; $opts['grpc.primary_user_agent'] .= ' ';
} else { } else {

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!!
__version__ = """1.14.0.dev0""" __version__ = """1.15.0.dev0"""

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!!
VERSION = '1.14.0.dev0' VERSION = '1.15.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!!
VERSION = '1.14.0.dev0' VERSION = '1.15.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!!
VERSION = '1.14.0.dev0' VERSION = '1.15.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!!
VERSION = '1.14.0.dev0' VERSION = '1.15.0.dev0'

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!!
VERSION = '1.14.0.dev0' VERSION = '1.15.0.dev0'

@ -14,5 +14,5 @@
# GRPC contains the General RPC module. # GRPC contains the General RPC module.
module GRPC module GRPC
VERSION = '1.14.0.dev' VERSION = '1.15.0.dev'
end end

@ -14,6 +14,6 @@
module GRPC module GRPC
module Tools module Tools
VERSION = '1.14.0.dev' VERSION = '1.15.0.dev'
end end
end end

@ -921,6 +921,16 @@
% endfor % endfor
static_csharp: static_c \
% for lib in libs:
% if 'Makefile' in lib.get('build_system', ['Makefile']):
% if lib.build == 'all' and lib.language == 'csharp':
$(LIBDIR)/$(CONFIG)/lib${lib.name}.a\
% endif
% endif
% endfor
shared: shared_c shared_cxx shared: shared_c shared_cxx
shared_c: pc_c pc_c_unsecure cache.mk\ shared_c: pc_c pc_c_unsecure cache.mk\

@ -34,11 +34,13 @@ grpc_cc_library(
"qps_worker.cc", "qps_worker.cc",
"server_async.cc", "server_async.cc",
"server_sync.cc", "server_sync.cc",
"qps_server_builder.cc",
], ],
hdrs = [ hdrs = [
"client.h", "client.h",
"qps_worker.h", "qps_worker.h",
"server.h", "server.h",
"qps_server_builder.h",
], ],
deps = [ deps = [
":histogram", ":histogram",
@ -55,6 +57,10 @@ grpc_cc_library(
"//test/core/util:gpr_test_util", "//test/core/util:gpr_test_util",
"//test/core/util:grpc_test_util", "//test/core/util:grpc_test_util",
"//test/cpp/util:test_util", "//test/cpp/util:test_util",
"//test/cpp/util:test_config",
],
external_deps = [
"gflags",
], ],
) )

@ -0,0 +1,45 @@
/*
*
* Copyright 2016 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#include "qps_server_builder.h"
using grpc::ServerBuilder;
namespace grpc {
namespace testing {
namespace {
std::unique_ptr<ServerBuilder> DefaultCreateQpsServerBuilder() {
return std::unique_ptr<ServerBuilder>(new ServerBuilder());
}
std::function<std::unique_ptr<ServerBuilder>()> g_create_qps_server_builder =
DefaultCreateQpsServerBuilder;
} // namespace
std::unique_ptr<ServerBuilder> CreateQpsServerBuilder() {
return g_create_qps_server_builder();
}
void SetCreateQpsServerBuilderFunc(
std::function<std::unique_ptr<ServerBuilder>()> create_qps_server_builder) {
g_create_qps_server_builder = std::move(create_qps_server_builder);
}
} // namespace testing
} // namespace grpc

@ -0,0 +1,46 @@
/*
*
* Copyright 2016 gRPC authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
#ifndef GRPC_QPS_SERVER_BUILDER_H
#define GRPC_QPS_SERVER_BUILDER_H
#include <functional>
#include <memory>
#include <grpcpp/server_builder.h>
namespace grpc {
namespace testing {
// CreateQpsServerBuilder creates a new ServerBuilder.
// This uses the "create ServerBuilder" func that was set
// in SetCreateQpsServerBuilderFunc if one has been set,
// otherwise, this defaults to creating a new ServerBuilder
// with only its default constructor.
std::unique_ptr<ServerBuilder> CreateQpsServerBuilder();
// SetCreateQpsServerBuilderFunc sets a function to use to create new
// ServerBuilders in "CreateQpsServerBuilder". It can be used to modify options
// that the server is built with.
void SetCreateQpsServerBuilderFunc(
std::function<std::unique_ptr<ServerBuilder>()>);
} // namespace testing
} // namespace grpc
#endif // GRPC_QPS_SERVER_BUILDER_H

@ -39,6 +39,7 @@
#include "test/core/util/grpc_profiler.h" #include "test/core/util/grpc_profiler.h"
#include "test/core/util/histogram.h" #include "test/core/util/histogram.h"
#include "test/cpp/qps/client.h" #include "test/cpp/qps/client.h"
#include "test/cpp/qps/qps_server_builder.h"
#include "test/cpp/qps/server.h" #include "test/cpp/qps/server.h"
#include "test/cpp/util/create_test_channel.h" #include "test/cpp/util/create_test_channel.h"
#include "test/cpp/util/test_credentials_provider.h" #include "test/cpp/util/test_credentials_provider.h"
@ -272,18 +273,18 @@ QpsWorker::QpsWorker(int driver_port, int server_port,
impl_.reset(new WorkerServiceImpl(server_port, this)); impl_.reset(new WorkerServiceImpl(server_port, this));
gpr_atm_rel_store(&done_, static_cast<gpr_atm>(0)); gpr_atm_rel_store(&done_, static_cast<gpr_atm>(0));
ServerBuilder builder; std::unique_ptr<ServerBuilder> builder = CreateQpsServerBuilder();
if (driver_port >= 0) { if (driver_port >= 0) {
char* server_address = nullptr; char* server_address = nullptr;
gpr_join_host_port(&server_address, "::", driver_port); gpr_join_host_port(&server_address, "::", driver_port);
builder.AddListeningPort( builder->AddListeningPort(
server_address, server_address,
GetCredentialsProvider()->GetServerCredentials(credential_type)); GetCredentialsProvider()->GetServerCredentials(credential_type));
gpr_free(server_address); gpr_free(server_address);
} }
builder.RegisterService(impl_.get()); builder->RegisterService(impl_.get());
server_ = builder.BuildAndStart(); server_ = builder->BuildAndStart();
} }
QpsWorker::~QpsWorker() {} QpsWorker::~QpsWorker() {}

@ -38,6 +38,7 @@
#include "src/core/lib/surface/completion_queue.h" #include "src/core/lib/surface/completion_queue.h"
#include "src/proto/grpc/testing/benchmark_service.grpc.pb.h" #include "src/proto/grpc/testing/benchmark_service.grpc.pb.h"
#include "test/core/util/test_config.h" #include "test/core/util/test_config.h"
#include "test/cpp/qps/qps_server_builder.h"
#include "test/cpp/qps/server.h" #include "test/cpp/qps/server.h"
namespace grpc { namespace grpc {
@ -74,19 +75,19 @@ class AsyncQpsServerTest final : public grpc::testing::Server {
ResponseType*)> ResponseType*)>
process_rpc) process_rpc)
: Server(config) { : Server(config) {
ServerBuilder builder; std::unique_ptr<ServerBuilder> builder = CreateQpsServerBuilder();
auto port_num = port(); auto port_num = port();
// Negative port number means inproc server, so no listen port needed // Negative port number means inproc server, so no listen port needed
if (port_num >= 0) { if (port_num >= 0) {
char* server_address = nullptr; char* server_address = nullptr;
gpr_join_host_port(&server_address, "::", port_num); gpr_join_host_port(&server_address, "::", port_num);
builder.AddListeningPort(server_address, builder->AddListeningPort(server_address,
Server::CreateServerCredentials(config)); Server::CreateServerCredentials(config));
gpr_free(server_address); gpr_free(server_address);
} }
register_service(&builder, &async_service_); register_service(builder.get(), &async_service_);
int num_threads = config.async_server_threads(); int num_threads = config.async_server_threads();
if (num_threads <= 0) { // dynamic sizing if (num_threads <= 0) { // dynamic sizing
@ -97,15 +98,15 @@ class AsyncQpsServerTest final : public grpc::testing::Server {
int tpc = std::max(1, config.threads_per_cq()); // 1 if unspecified int tpc = std::max(1, config.threads_per_cq()); // 1 if unspecified
int num_cqs = (num_threads + tpc - 1) / tpc; // ceiling operator int num_cqs = (num_threads + tpc - 1) / tpc; // ceiling operator
for (int i = 0; i < num_cqs; i++) { for (int i = 0; i < num_cqs; i++) {
srv_cqs_.emplace_back(builder.AddCompletionQueue()); srv_cqs_.emplace_back(builder->AddCompletionQueue());
} }
for (int i = 0; i < num_threads; i++) { for (int i = 0; i < num_threads; i++) {
cq_.emplace_back(i % srv_cqs_.size()); cq_.emplace_back(i % srv_cqs_.size());
} }
ApplyConfigToBuilder(config, &builder); ApplyConfigToBuilder(config, builder.get());
server_ = builder.BuildAndStart(); server_ = builder->BuildAndStart();
auto process_rpc_bound = auto process_rpc_bound =
std::bind(process_rpc, config.payload_config(), std::placeholders::_1, std::bind(process_rpc, config.payload_config(), std::placeholders::_1,

@ -27,6 +27,7 @@
#include "src/core/lib/gpr/host_port.h" #include "src/core/lib/gpr/host_port.h"
#include "src/proto/grpc/testing/benchmark_service.grpc.pb.h" #include "src/proto/grpc/testing/benchmark_service.grpc.pb.h"
#include "test/cpp/qps/qps_server_builder.h"
#include "test/cpp/qps/server.h" #include "test/cpp/qps/server.h"
#include "test/cpp/qps/usage_timer.h" #include "test/cpp/qps/usage_timer.h"
@ -154,23 +155,23 @@ class BenchmarkServiceImpl final : public BenchmarkService::Service {
class SynchronousServer final : public grpc::testing::Server { class SynchronousServer final : public grpc::testing::Server {
public: public:
explicit SynchronousServer(const ServerConfig& config) : Server(config) { explicit SynchronousServer(const ServerConfig& config) : Server(config) {
ServerBuilder builder; std::unique_ptr<ServerBuilder> builder = CreateQpsServerBuilder();
auto port_num = port(); auto port_num = port();
// Negative port number means inproc server, so no listen port needed // Negative port number means inproc server, so no listen port needed
if (port_num >= 0) { if (port_num >= 0) {
char* server_address = nullptr; char* server_address = nullptr;
gpr_join_host_port(&server_address, "::", port_num); gpr_join_host_port(&server_address, "::", port_num);
builder.AddListeningPort(server_address, builder->AddListeningPort(server_address,
Server::CreateServerCredentials(config)); Server::CreateServerCredentials(config));
gpr_free(server_address); gpr_free(server_address);
} }
ApplyConfigToBuilder(config, &builder); ApplyConfigToBuilder(config, builder.get());
builder.RegisterService(&service_); builder->RegisterService(&service_);
impl_ = builder.BuildAndStart(); impl_ = builder->BuildAndStart();
} }
std::shared_ptr<Channel> InProcessChannel( std::shared_ptr<Channel> InProcessChannel(

@ -42,7 +42,7 @@ platform(
} }
properties: { properties: {
name: "gceMachineType" # Small machines for majority of tests. name: "gceMachineType" # Small machines for majority of tests.
value: "n1-standard-1" value: "n1-highmem-2"
} }
properties: { properties: {
name: "gceMachineType_LARGE" # Large machines for a small set of resource-consuming tests such as combiner_tests under TSAN. name: "gceMachineType_LARGE" # Large machines for a small set of resource-consuming tests such as combiner_tests under TSAN.

@ -14,4 +14,4 @@
# AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!! # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!!
VERSION = '1.14.0.dev0' VERSION = '1.15.0.dev0'

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.14.0-dev PROJECT_NUMBER = 1.15.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a

@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++"
# could be handy for archiving the generated documentation or if some version # could be handy for archiving the generated documentation or if some version
# control system is used. # control system is used.
PROJECT_NUMBER = 1.14.0-dev PROJECT_NUMBER = 1.15.0-dev
# Using the PROJECT_BRIEF tag one can provide an optional one line description # Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a # for a project that appears at the top of each page and should give viewer a

@ -0,0 +1,26 @@
# Copyright 2017 gRPC authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Config file for the internal CI (in protobuf text format)
# Location of the continuous shell script in repository.
build_file: "grpc/tools/internal_ci/linux/grpc_build_artifacts_extra.sh"
timeout_mins: 240
action {
define_artifacts {
regex: "**/*sponge_log.xml"
regex: "github/grpc/reports/**"
regex: "github/grpc/artifacts/**"
}
}

@ -39,30 +39,57 @@ mkdir -p "$LOCAL_BUILD_ROOT"
find "$INPUT_ARTIFACTS" -type f find "$INPUT_ARTIFACTS" -type f
# protoc Plugins
PROTOC_PLUGINS_ZIPPED_PACKAGES=$(mktemp -d)
for zip_dir in protoc_windows_{x86,x64}
do
zip -jr "$PROTOC_PLUGINS_ZIPPED_PACKAGES/$zip_dir.zip" "$INPUT_ARTIFACTS/$zip_dir/"*
done
for tar_dir in protoc_{linux,macos}_{x86,x64}
do
chmod +x "$INPUT_ARTIFACTS/$tar_dir"/*
tar -cvzf "$PROTOC_PLUGINS_ZIPPED_PACKAGES/$tar_dir.tar.gz" -C "$INPUT_ARTIFACTS/$tar_dir" .
done
PROTOC_PACKAGES=(
"$PROTOC_PLUGINS_ZIPPED_PACKAGES"/protoc_windows_{x86,x64}.zip
"$PROTOC_PLUGINS_ZIPPED_PACKAGES"/protoc_{linux,macos}_{x86,x64}.tar.gz
)
# C#
UNZIPPED_CSHARP_PACKAGES=$(mktemp -d) UNZIPPED_CSHARP_PACKAGES=$(mktemp -d)
unzip "$INPUT_ARTIFACTS/csharp_nugets_windows_dotnetcli.zip" -d "$UNZIPPED_CSHARP_PACKAGES" unzip "$INPUT_ARTIFACTS/csharp_nugets_windows_dotnetcli.zip" -d "$UNZIPPED_CSHARP_PACKAGES"
CSHARP_PACKAGES=( CSHARP_PACKAGES=(
"$UNZIPPED_CSHARP_PACKAGES"/* "$UNZIPPED_CSHARP_PACKAGES"/*
) )
PYTHON_PACKAGES=( # Python
PYTHON_GRPCIO_PACKAGES=(
"$INPUT_ARTIFACTS"/grpcio-[0-9]*.tar.gz "$INPUT_ARTIFACTS"/grpcio-[0-9]*.tar.gz
"$INPUT_ARTIFACTS"/grpcio-[0-9]*.whl "$INPUT_ARTIFACTS"/grpcio-[0-9]*.whl
"$INPUT_ARTIFACTS"/python_linux_extra_arm*/grpcio-[0-9]*.whl "$INPUT_ARTIFACTS"/python_linux_extra_arm*/grpcio-[0-9]*.whl
)
PYTHON_GRPCIO_TOOLS_PACKAGES=(
"$INPUT_ARTIFACTS"/grpcio-tools-[0-9]*.tar.gz "$INPUT_ARTIFACTS"/grpcio-tools-[0-9]*.tar.gz
"$INPUT_ARTIFACTS"/grpcio_tools-[0-9]*.whl "$INPUT_ARTIFACTS"/grpcio_tools-[0-9]*.whl
"$INPUT_ARTIFACTS"/python_linux_extra_arm*/grpcio_tools-[0-9]*.whl "$INPUT_ARTIFACTS"/python_linux_extra_arm*/grpcio_tools-[0-9]*.whl
)
PYTHON_GRPCIO_HEALTH_CHECKING_PACKAGES=(
"$INPUT_ARTIFACTS"/grpcio-health-checking-[0-9]*.tar.gz "$INPUT_ARTIFACTS"/grpcio-health-checking-[0-9]*.tar.gz
)
PYTHON_GRPCIO_REFLECTION_PACKAGES=(
"$INPUT_ARTIFACTS"/grpcio-reflection-[0-9]*.tar.gz "$INPUT_ARTIFACTS"/grpcio-reflection-[0-9]*.tar.gz
)
PYTHON_GRPCIO_TESTING_PACKAGES=(
"$INPUT_ARTIFACTS"/grpcio-testing-[0-9]*.tar.gz "$INPUT_ARTIFACTS"/grpcio-testing-[0-9]*.tar.gz
) )
# PHP
PHP_PACKAGES=( PHP_PACKAGES=(
"$INPUT_ARTIFACTS"/grpc-[0-9]*.tgz "$INPUT_ARTIFACTS"/grpc-[0-9]*.tgz
) )
# Ruby
RUBY_PACKAGES=( RUBY_PACKAGES=(
"$INPUT_ARTIFACTS"/grpc-[0-9]*.gem "$INPUT_ARTIFACTS"/grpc-[0-9]*.gem
"$INPUT_ARTIFACTS"/grpc-tools-[0-9]*.gem "$INPUT_ARTIFACTS"/grpc-tools-[0-9]*.gem
@ -71,17 +98,21 @@ RUBY_PACKAGES=(
function add_to_manifest() { function add_to_manifest() {
local artifact_type=$1 local artifact_type=$1
local artifact_file=$2 local artifact_file=$2
local artifact_prefix=$3
local artifact_name local artifact_name
artifact_name=$(basename "$artifact_file") artifact_name=$(basename "$artifact_file")
local artifact_size
artifact_size=$(stat -c%s "$artifact_file")
local artifact_sha256 local artifact_sha256
artifact_sha256=$(openssl sha256 -r "$artifact_file" | cut -d " " -f 1) artifact_sha256=$(openssl sha256 -r "$artifact_file" | cut -d " " -f 1)
local artifact_target=$LOCAL_BUILD_ROOT/$artifact_type local artifact_target=$LOCAL_BUILD_ROOT/$artifact_type/$artifact_prefix
mkdir -p "$artifact_target" mkdir -p "$artifact_target"
cp "$artifact_file" "$artifact_target" cp "$artifact_file" "$artifact_target"
cat <<EOF cat <<EOF
<artifact name='$artifact_name' <artifact name='$artifact_name'
type='$artifact_type' type='$artifact_type'
path='$artifact_type/$artifact_name' path='$artifact_type/$artifact_prefix$artifact_name'
size='$artifact_size'
sha256='$artifact_sha256' /> sha256='$artifact_sha256' />
EOF EOF
} }
@ -90,7 +121,7 @@ EOF
cat <<EOF cat <<EOF
<?xml version="1.0"?> <?xml version="1.0"?>
<?xml-stylesheet href="/web-assets/build-201807.xsl" type="text/xsl"?> <?xml-stylesheet href="/web-assets/build-201807.xsl" type="text/xsl"?>
<build id='$BUILD_ID' timestamp='$BUILD_TIMESTAMP'> <build id='$BUILD_ID' timestamp='$BUILD_TIMESTAMP' version="201807">
<metadata> <metadata>
<project>gRPC</project> <project>gRPC</project>
<repository>https://github.com/grpc/grpc</repository> <repository>https://github.com/grpc/grpc</repository>
@ -100,9 +131,14 @@ EOF
<artifacts> <artifacts>
EOF EOF
for pkg in "${PROTOC_PACKAGES[@]}"; do add_to_manifest protoc "$pkg"; done
for pkg in "${CSHARP_PACKAGES[@]}"; do add_to_manifest csharp "$pkg"; done for pkg in "${CSHARP_PACKAGES[@]}"; do add_to_manifest csharp "$pkg"; done
for pkg in "${PHP_PACKAGES[@]}"; do add_to_manifest php "$pkg"; done for pkg in "${PHP_PACKAGES[@]}"; do add_to_manifest php "$pkg"; done
for pkg in "${PYTHON_PACKAGES[@]}"; do add_to_manifest python "$pkg"; done for pkg in "${PYTHON_GRPCIO_PACKAGES[@]}"; do add_to_manifest python "$pkg" grpcio/; done
for pkg in "${PYTHON_GRPCIO_TOOLS_PACKAGES[@]}"; do add_to_manifest python "$pkg" grpcio-tools/; done
for pkg in "${PYTHON_GRPCIO_HEALTH_CHECKING_PACKAGES[@]}"; do add_to_manifest python "$pkg" grpcio-health-checking/; done
for pkg in "${PYTHON_GRPCIO_REFLECTION_PACKAGES[@]}"; do add_to_manifest python "$pkg" grpcio-reflection/; done
for pkg in "${PYTHON_GRPCIO_TESTING_PACKAGES[@]}"; do add_to_manifest python "$pkg" grpcio-testing/; done
for pkg in "${RUBY_PACKAGES[@]}"; do add_to_manifest ruby "$pkg"; done for pkg in "${RUBY_PACKAGES[@]}"; do add_to_manifest ruby "$pkg"; done
cat <<EOF cat <<EOF
@ -111,6 +147,7 @@ EOF
EOF EOF
}> "$LOCAL_BUILD_INDEX" }> "$LOCAL_BUILD_INDEX"
LOCAL_BUILD_INDEX_SIZE=$(stat -c%s "$LOCAL_BUILD_INDEX")
LOCAL_BUILD_INDEX_SHA256=$(openssl sha256 -r "$LOCAL_BUILD_INDEX" | cut -d " " -f 1) LOCAL_BUILD_INDEX_SHA256=$(openssl sha256 -r "$LOCAL_BUILD_INDEX" | cut -d " " -f 1)
OLD_INDEX=$(mktemp) OLD_INDEX=$(mktemp)
@ -133,12 +170,61 @@ gsutil cp "$GCS_INDEX" "$OLD_INDEX"
branch='$BUILD_BRANCH_NAME' branch='$BUILD_BRANCH_NAME'
commit='$BUILD_GIT_COMMIT' commit='$BUILD_GIT_COMMIT'
path='$GCS_ARCHIVE_PREFIX$BUILD_RELPATH$INDEX_FILENAME' path='$GCS_ARCHIVE_PREFIX$BUILD_RELPATH$INDEX_FILENAME'
size='$LOCAL_BUILD_INDEX_SIZE'
sha256='$LOCAL_BUILD_INDEX_SHA256' /> sha256='$LOCAL_BUILD_INDEX_SHA256' />
EOF EOF
tail --lines=+5 "$OLD_INDEX" tail --lines=+5 "$OLD_INDEX"
}> "$NEW_INDEX" }> "$NEW_INDEX"
function generate_directory_index()
{
local target_dir=$1
local current_directory_name
current_directory_name=$(basename "$target_dir")
cat <<EOF
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="" xml:lang="">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Index of $current_directory_name - packages.grpc.io</title>
<link rel="stylesheet" type="text/css" href="/web-assets/dirindex.css" />
</head>
<body>
<h1>Index of <a href="#"><code>$current_directory_name</code></a></h1>
<ul>
<li><a href="#">.</a></li>
<li><a href="..">..</a></li>
EOF
(
cd "$target_dir"
find * -maxdepth 0 -type d -print | sort | while read -r line
do
echo " <li><a href='$line/'>$line/</a></li>"
done
find * -maxdepth 0 -type f -print | sort | while read -r line
do
echo " <li><a href='$line'>$line</a></li>"
done
)
cat <<EOF
</ul>
</body>
</html>
EOF
}
# Upload the current build artifacts # Upload the current build artifacts
gsutil -m cp -r "$LOCAL_STAGING_TEMPDIR/${BUILD_RELPATH%%/*}" "$GCS_ARCHIVE_ROOT" gsutil -m cp -r "$LOCAL_STAGING_TEMPDIR/${BUILD_RELPATH%%/*}" "$GCS_ARCHIVE_ROOT"
# Upload directory indicies for subdirectories
(
cd "$LOCAL_BUILD_ROOT"
find * -type d | while read -r directory
do
generate_directory_index "$directory" | gsutil -h 'Content-Type:text/html' cp - "$GCS_ARCHIVE_ROOT$BUILD_RELPATH$directory/$INDEX_FILENAME"
done
)
# Upload the new /index.xml # Upload the new /index.xml
gsutil -h "Content-Type:application/xml" cp "$NEW_INDEX" "$GCS_INDEX" gsutil -h "Content-Type:application/xml" cp "$NEW_INDEX" "$GCS_INDEX"

@ -0,0 +1,114 @@
<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//build">
<html>
<head>
<title>Artifacts for gRPC Build <xsl:value-of select="@id"/> </title>
<link rel="stylesheet" type="text/css" href="/web-assets/style.css" />
<link rel="apple-touch-icon" href="/web-assets/favicons/apple-touch-icon.png" sizes="180x180" />
<link rel="icon" type="image/png" href="/web-assets/favicons/android-chrome-192x192.png" sizes="192x192" />
<link rel="icon" type="image/png" href="/web-assets/favicons/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/web-assets/favicons/favicon-16x16.png" sizes="16x16" />
<link rel="manifest" href="/web-assets/favicons/manifest.json" />
<link rel="mask-icon" href="/web-assets/favicons/safari-pinned-tab.svg" color="#2DA6B0" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="msapplication-TileImage" content="/web-assets/favicons/mstile-150x150.png" />
<meta name="og:title" content="gRPC Package Build"/>
<meta name="og:image" content="https://grpc.io/img/grpc_square_reverse_4x.png"/>
<meta name="og:description" content="gRPC Package Build"/>
</head>
<body bgcolor="#ffffff">
<div id="topbar">
<span class="title">Artifacts for gRPC Build <xsl:value-of select="@id"/></span>
</div>
<div id="main">
<div id="metadata">
<span class="fieldname">Build: </span> <a href='#'><xsl:value-of select="@id"/></a>
[<a href="https://source.cloud.google.com/results/invocations/{@id}">invocation</a>]<br />
<span class="fieldname">Timestamp: </span>
<xsl:value-of select="@timestamp"/> <br />
<span class="fieldname">Branch: </span>
<a href="https://github.com/grpc/grpc/tree/{./metadata/branch[text()]}">
<xsl:value-of select="./metadata/branch[text()]" />
</a><br />
<span class="fieldname">Commit: </span>
<a href="https://github.com/grpc/grpc/tree/{./metadata/commit[text()]}">
<xsl:value-of select="./metadata/commit[text()]" /><br /></a>
</div>
<xsl:apply-templates select="artifacts" />
<br />
<br />
<p class="description"><a href="https://grpc.io">gRPC</a> is a <a href="https://www.cncf.io" class="external">Cloud Native Computing Foundation</a> project. <a href="https://policies.google.com/privacy" class="external">Privacy Policy</a>.</p>
<p class="description">
Copyright &#169;&#160;<xsl:value-of select="substring(@timestamp, 1, 4)" />&#160;<a href="https://github.com/grpc/grpc/blob/{./metadata/commit[text()]}/AUTHORS">The gRPC Authors</a></p>
<br />
<br />
</div>
</body>
</html>
</xsl:template>
<xsl:template match="artifacts">
<h2> gRPC <code>protoc</code> Plugins </h2>
<table>
<xsl:apply-templates select="artifact[@type='protoc']">
<xsl:sort select="artifact/@name" />
</xsl:apply-templates>
</table>
<h2> C# </h2>
<table>
<xsl:apply-templates select="artifact[@type='csharp']">
<xsl:sort select="artifact/@name" />
</xsl:apply-templates>
</table>
<h2> PHP </h2>
<table>
<xsl:apply-templates select="artifact[@type='php']">
<xsl:sort select="artifact/@name" />
</xsl:apply-templates>
</table>
<h2> Python </h2>
<script type="text/javascript">
// <![CDATA[
var pythonRepoLink = document.createElement("a");
pythonRepoLink.href = './python';
var pythonRepo = pythonRepoLink.href;
document.write("<p><code>" +
"$ pip install --pre --upgrade --force-reinstall --extra-index-url \\<br />" +
"&nbsp;&nbsp;&nbsp;&nbsp;<a href='" + pythonRepo + "'>" + pythonRepo + "</a> \\<br />" +
"&nbsp;&nbsp;&nbsp;&nbsp;grpcio grpcio-{tools,health-checking,reflection,testing}</code></p>");
// ]]>
</script>
<table>
<xsl:apply-templates select="artifact[@type='python']">
<xsl:sort select="artifact/@name" />
</xsl:apply-templates>
</table>
<h2> Ruby </h2>
<table>
<xsl:apply-templates select="artifact[@type='ruby']">
<xsl:sort select="artifact/@name" />
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="artifact">
<tr>
<td class="name"> <a href="{@path}"><xsl:value-of select="@name" /></a> </td>
<td class="hash"> <xsl:value-of select="@sha256"/> </td>
</tr>
</xsl:template>
<xsl:template match="metadata">
</xsl:template>
</xsl:stylesheet>

@ -0,0 +1,16 @@
ul {
list-style-type: none;
}
a{
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
ul li a {
font-family: 'SF Mono', 'Menlo', 'Monaco', 'Consolas', 'Courier New', Courier, monospace
}
h1 {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif
}

@ -0,0 +1,86 @@
<?xml version="1.0"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="//packages">
<html>
<head>
<title>gRPC Packages</title>
<link rel="stylesheet" type="text/css" href="/web-assets/style.css" />
<link rel="apple-touch-icon" href="/web-assets/favicons/apple-touch-icon.png" sizes="180x180" />
<link rel="icon" type="image/png" href="/web-assets/favicons/android-chrome-192x192.png" sizes="192x192" />
<link rel="icon" type="image/png" href="/web-assets/favicons/favicon-32x32.png" sizes="32x32" />
<link rel="icon" type="image/png" href="/web-assets/favicons/favicon-16x16.png" sizes="16x16" />
<link rel="manifest" href="/web-assets/favicons/manifest.json" />
<link rel="mask-icon" href="/web-assets/favicons/safari-pinned-tab.svg" color="#2DA6B0" />
<meta name="msapplication-TileColor" content="#ffffff" />
<meta name="msapplication-TileImage" content="/web-assets/favicons/mstile-150x150.png" />
<meta name="og:title" content="gRPC Packages"/>
<meta name="og:image" content="https://grpc.io/img/grpc_square_reverse_4x.png"/>
<meta name="og:description" content="gRPC Packages"/>
</head>
<body bgcolor="#ffffff">
<div id="topbar">
<span class="title">gRPC Packages</span>
</div>
<div id="main">
<xsl:apply-templates select="releases" />
<xsl:apply-templates select="builds" />
<br />
<br />
<p class="description"><a href="https://grpc.io">gRPC</a> is a <a href="https://www.cncf.io" class="external">Cloud Native Computing Foundation</a> project. <a href="https://policies.google.com/privacy" class="external">Privacy Policy</a>.</p>
<p class="description">Copyright &#169; 2018 <a href="https://github.com/grpc/grpc/blob/master/AUTHORS">The gRPC Authors</a></p>
</div>
</body>
</html>
</xsl:template>
<xsl:template match="releases">
<h2>Official gRPC Releases</h2>
<p>Commits corresponding to <a href="https://github.com/grpc/grpc/releases">official gRPC release points and release candidates</a> are tagged on GitHub.</p>
<p>To maximize usability, gRPC supports the standard way of adding dependencies in your language of choice (if there is one).
In most languages, the gRPC runtime comes in form of a package available in your language's package manager.</p>
<p>For instructions on how to use the language-specific gRPC runtime in your project, please refer to the following:</p>
<ul>
<li><a href="https://github.com/grpc/grpc/blob/master/src/cpp">C++</a>: follow the instructions under the <a href="https://github.com/grpc/grpc/tree/master/src/cpp"><code>src/cpp</code> directory</a></li>
<li><a href="https://github.com/grpc/grpc/blob/master/src/csharp">C#</a>: NuGet package <code>Grpc</code></li>
<li><a href="https://github.com/grpc/grpc-dart">Dart</a>: pub package <code>grpc</code></li>
<li><a href="https://github.com/grpc/grpc-go">Go</a>: <code>go get google.golang.org/grpc</code></li>
<li><a href="https://github.com/grpc/grpc-java">Java</a>: Use JARs from <a href="https://mvnrepository.com/artifact/io.grpc">gRPC Maven Central Repository</a></li>
<li><a href="https://github.com/grpc/grpc-node">Node</a>: <code>npm install grpc</code></li>
<li><a href="https://github.com/grpc/grpc/blob/master/src/objective-c">Objective-C</a>: Add <code>gRPC-ProtoRPC</code> dependency to podspec</li>
<li><a href="https://github.com/grpc/grpc/blob/master/src/php">PHP</a>: <code>pecl install grpc</code></li>
<li><a href="https://github.com/grpc/grpc/blob/master/src/python/grpcio">Python</a>: <code>pip install grpcio</code></li>
<li><a href="https://github.com/grpc/grpc/blob/master/src/ruby">Ruby</a>: <code>gem install grpc</code></li>
<li><a href="https://github.com/grpc/grpc-web">WebJS</a>: follow the <a href="https://github.com/grpc/grpc-web">instructions in <code>grpc-web</code> repository</a></li>
</ul>
</xsl:template>
<xsl:template match="builds">
<h2> Daily Builds of <a href="https://github.com/grpc/grpc/tree/master"><code>master</code></a> Branch</h2>
<p>gRPC packages are built on a daily basis at the <code>HEAD</code> of <a href="https://github.com/grpc/grpc/tree/master">the <code>master</code> branch</a> and are archived here.</p>
<p>
<a href="#">The current document</a> (view source) is an XML feed pointing to the packages as they get built and uploaded.
You can subscribe to this feed and fetch, deploy, and test the precompiled packages with your continuous integration infrastructure.
</p>
<p>For stable release packages, please consult the above section and the common package manager for your language.</p>
<table style="border:solid black 1px">
<tr style="background-color:lightgray">
<td>Timestamp</td>
<td>Commit</td>
<td>Build ID</td>
</tr>
<xsl:apply-templates select="build[@branch='master']">
<xsl:sort select="@timestamp" data-type="text" order="descending" />
</xsl:apply-templates>
</table>
</xsl:template>
<xsl:template match="build">
<tr>
<td class="name"><xsl:value-of select="@timestamp" /></td>
<td class="name"> <a href="https://github.com/grpc/grpc/tree/{@commit}"><xsl:value-of select="@commit" /></a></td>
<td class="name"> <a href="{@path}"><xsl:value-of select="@id" /></a></td>
</tr>
</xsl:template>
</xsl:stylesheet>

@ -0,0 +1,76 @@
html, body
{
margin: 0;
font-family: sans-serif;
}
a, a:visited, a:link, a:active {
color: #2da6b0;
text-decoration: none;
}
a:hover {
color: #2da6b0;
text-decoration: underline;
}
#topbar {
background-color: #2da6b0;
height: 60px;
margin:auto;
}
#topbar .title {
position: relative;
top: 24px;
left: 24px;
color: white;
font-family: sans-serif;
font-weight: bold;
}
#main {
max-width:1100px;
margin:auto;
}
#main h2 {
text-align: left;
}
#main table {
width:100%;
border-collapse: collapse;
font-size: small;
font-family: 'SF Mono', 'Menlo', 'Monaco', 'Courier New', Courier, monospace;
}
#main table tr td {
border: solid black 1px;
padding: 5px;
}
#main table tr td.hash {
text-align: right;
border-left: none;
font-size: x-small;
}
#main table tr td.name {
text-align: left;
border-right: none;
}
p.description
{
font-size: smaller;
}
#metadata {
margin-top: 15px;
padding: 15px;
font-family: 'SF Mono', 'Menlo', 'Monaco', 'Courier New', Courier, monospace;
}
#metadata span.fieldname {
font-family: sans-serif;
}

@ -0,0 +1,30 @@
#!/bin/bash
# Copyright 2018 The gRPC Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -ex
cd "$(dirname "$0")"
GCS_WEB_ASSETS=gs://packages.grpc.io/web-assets/
WEB_ASSETS=(
404.html
build-201807.xsl
dirindex.css
home.xsl
style.css
)
gsutil -m cp "${WEB_ASSETS[@]}" "$GCS_WEB_ASSETS"

@ -234,6 +234,11 @@ class CSharpExtArtifact:
environ={ environ={
'ANDROID_ABI': self.arch_abi 'ANDROID_ABI': self.arch_abi
}) })
elif self.arch == 'ios':
return create_jobspec(
self.name,
['tools/run_tests/artifacts/build_artifact_csharp_ios.sh'],
use_workspace=True)
elif self.platform == 'windows': elif self.platform == 'windows':
cmake_arch_option = 'Win32' if self.arch == 'x86' else self.arch cmake_arch_option = 'Win32' if self.arch == 'x86' else self.arch
return create_jobspec( return create_jobspec(
@ -356,6 +361,7 @@ def targets():
] + [ ] + [
CSharpExtArtifact('linux', 'android', arch_abi='arm64-v8a'), CSharpExtArtifact('linux', 'android', arch_abi='arm64-v8a'),
CSharpExtArtifact('linux', 'android', arch_abi='armeabi-v7a'), CSharpExtArtifact('linux', 'android', arch_abi='armeabi-v7a'),
CSharpExtArtifact('macos', 'ios'),
PythonArtifact('linux', 'x86', 'cp27-cp27m'), PythonArtifact('linux', 'x86', 'cp27-cp27m'),
PythonArtifact('linux', 'x86', 'cp27-cp27mu'), PythonArtifact('linux', 'x86', 'cp27-cp27mu'),
PythonArtifact('linux', 'x86', 'cp34-cp34m'), PythonArtifact('linux', 'x86', 'cp34-cp34m'),

@ -0,0 +1,23 @@
#!/bin/bash
# Copyright 2018 The gRPC Authors
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
set -ex
cd "$(dirname "$0")/../../.."
src/csharp/experimental/build_native_ext_for_ios.sh
mkdir -p "${ARTIFACTS_OUT}"
cp libs/ios/libgrpc_csharp_ext.a libs/ios/libgrpc.a "${ARTIFACTS_OUT}"

@ -7761,6 +7761,7 @@
"test/cpp/qps/histogram.h", "test/cpp/qps/histogram.h",
"test/cpp/qps/interarrival.h", "test/cpp/qps/interarrival.h",
"test/cpp/qps/parse_json.h", "test/cpp/qps/parse_json.h",
"test/cpp/qps/qps_server_builder.h",
"test/cpp/qps/qps_worker.h", "test/cpp/qps/qps_worker.h",
"test/cpp/qps/report.h", "test/cpp/qps/report.h",
"test/cpp/qps/server.h", "test/cpp/qps/server.h",
@ -7782,6 +7783,8 @@
"test/cpp/qps/interarrival.h", "test/cpp/qps/interarrival.h",
"test/cpp/qps/parse_json.cc", "test/cpp/qps/parse_json.cc",
"test/cpp/qps/parse_json.h", "test/cpp/qps/parse_json.h",
"test/cpp/qps/qps_server_builder.cc",
"test/cpp/qps/qps_server_builder.h",
"test/cpp/qps/qps_worker.cc", "test/cpp/qps/qps_worker.cc",
"test/cpp/qps/qps_worker.h", "test/cpp/qps/qps_worker.h",
"test/cpp/qps/report.cc", "test/cpp/qps/report.cc",

Loading…
Cancel
Save