From 029ecbc319db38df5717834db20643c655f4497a Mon Sep 17 00:00:00 2001 From: DongHun Kwak Date: Mon, 1 Feb 2021 15:17:54 +0900 Subject: [PATCH] Imported Upstream version 1.34.1 --- BUILD | 2 +- CMakeLists.txt | 6 +- Makefile | 4 +- build_handwritten.yaml | 2 +- gRPC-C++.podspec | 2 +- gRPC-Core.podspec | 2 +- gRPC-ProtoRPC.podspec | 2 +- gRPC-RxLibrary.podspec | 2 +- gRPC.podspec | 2 +- package.xml | 6 +- src/cpp/common/version_cc.cc | 2 +- src/csharp/Grpc.Auth/Grpc.Auth.csproj | 1 - .../Grpc.Core.Api/Properties/AssemblyInfo.cs | 8 -- src/csharp/Grpc.Core.Api/VersionInfo.cs | 4 +- src/csharp/Grpc.Core/Properties/AssemblyInfo.cs | 7 -- .../Grpc.HealthCheck/Properties/AssemblyInfo.cs | 4 - src/csharp/Grpc.Tools/Grpc.Tools.csproj | 2 - src/csharp/build/common.props | 2 - src/csharp/build/dependencies.props | 2 +- .../!ProtoCompiler-gRPCCppPlugin.podspec | 2 +- src/objective-c/!ProtoCompiler-gRPCPlugin.podspec | 2 +- src/objective-c/GRPCClient/version.h | 2 +- src/objective-c/tests/version.h | 2 +- src/php/composer.json | 2 +- src/php/ext/grpc/version.h | 2 +- src/python/grpcio/grpc/_grpcio_metadata.py | 2 +- src/python/grpcio/grpc/_runtime_protos.py | 90 +++++++++------------- src/python/grpcio/grpc_version.py | 2 +- src/python/grpcio_channelz/grpc_version.py | 2 +- src/python/grpcio_health_checking/grpc_version.py | 2 +- src/python/grpcio_reflection/grpc_version.py | 2 +- src/python/grpcio_status/grpc_version.py | 2 +- src/python/grpcio_testing/grpc_version.py | 2 +- src/python/grpcio_tests/grpc_version.py | 2 +- src/ruby/lib/grpc/version.rb | 2 +- src/ruby/tools/version.rb | 2 +- tools/distrib/python/grpc_version.py | 2 +- tools/distrib/python/grpcio_tools/grpc_version.py | 2 +- tools/distrib/python/grpcio_tools/setup.py | 28 +++++++ tools/doxygen/Doxyfile.c++ | 2 +- tools/doxygen/Doxyfile.c++.internal | 2 +- tools/doxygen/Doxyfile.objc | 2 +- tools/doxygen/Doxyfile.objc.internal | 2 +- tools/doxygen/Doxyfile.php | 2 +- .../helper_scripts/prepare_build_macos_rc | 87 ++++++++++----------- tools/internal_ci/macos/grpc_basictests_php.cfg | 2 +- tools/internal_ci/macos/grpc_basictests_php.sh | 19 +++++ tools/internal_ci/macos/grpc_build_artifacts.sh | 1 + tools/internal_ci/macos/grpc_distribtests.sh | 1 + .../macos/pull_request/grpc_basictests_php.cfg | 2 +- tools/run_tests/artifacts/artifact_targets.py | 3 +- tools/run_tests/artifacts/build_package_ruby.sh | 5 ++ 52 files changed, 180 insertions(+), 166 deletions(-) create mode 100644 tools/internal_ci/macos/grpc_basictests_php.sh diff --git a/BUILD b/BUILD index 1354433..6601b27 100644 --- a/BUILD +++ b/BUILD @@ -84,7 +84,7 @@ g_stands_for = "gauntlet" core_version = "14.0.0" -version = "1.34.0" +version = "1.34.1" GPR_PUBLIC_HDRS = [ "include/grpc/support/alloc.h", diff --git a/CMakeLists.txt b/CMakeLists.txt index de5e000..d610331 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -25,12 +25,12 @@ cmake_minimum_required(VERSION 3.5.1) set(PACKAGE_NAME "grpc") -set(PACKAGE_VERSION "1.34.0") +set(PACKAGE_VERSION "1.34.1") set(gRPC_CORE_VERSION "14.0.0") set(gRPC_CORE_SOVERSION "14") -set(gRPC_CPP_VERSION "1.34.0") +set(gRPC_CPP_VERSION "1.34.1") set(gRPC_CPP_SOVERSION "1") -set(gRPC_CSHARP_VERSION "2.34.0") +set(gRPC_CSHARP_VERSION "2.34.1") set(gRPC_CSHARP_SOVERSION "2") set(PACKAGE_STRING "${PACKAGE_NAME} ${PACKAGE_VERSION}") set(PACKAGE_TARNAME "${PACKAGE_NAME}-${PACKAGE_VERSION}") diff --git a/Makefile b/Makefile index f746995..e5e1338 100644 --- a/Makefile +++ b/Makefile @@ -456,8 +456,8 @@ Q = @ endif CORE_VERSION = 14.0.0 -CPP_VERSION = 1.34.0 -CSHARP_VERSION = 2.34.0 +CPP_VERSION = 1.34.1 +CSHARP_VERSION = 2.34.1 CPPFLAGS_NO_ARCH += $(addprefix -I, $(INCLUDES)) $(addprefix -D, $(DEFINES)) CPPFLAGS += $(CPPFLAGS_NO_ARCH) $(ARCH_FLAGS) diff --git a/build_handwritten.yaml b/build_handwritten.yaml index b7c1070..e3ee527 100644 --- a/build_handwritten.yaml +++ b/build_handwritten.yaml @@ -15,7 +15,7 @@ settings: core_version: 14.0.0 csharp_major_version: 2 g_stands_for: gauntlet - version: 1.34.0 + version: 1.34.1 targets: - name: check_epollexclusive build: tool diff --git a/gRPC-C++.podspec b/gRPC-C++.podspec index 9b8ea77..002be7c 100644 --- a/gRPC-C++.podspec +++ b/gRPC-C++.podspec @@ -22,7 +22,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-C++' # TODO (mxyan): use version that match gRPC version when pod is stabilized - version = '1.34.0' + version = '1.34.1' s.version = version s.summary = 'gRPC C++ library' s.homepage = 'https://grpc.io' diff --git a/gRPC-Core.podspec b/gRPC-Core.podspec index 8c6673f..f264e35 100644 --- a/gRPC-Core.podspec +++ b/gRPC-Core.podspec @@ -21,7 +21,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-Core' - version = '1.34.0' + version = '1.34.1' s.version = version s.summary = 'Core cross-platform gRPC library, written in C' s.homepage = 'https://grpc.io' diff --git a/gRPC-ProtoRPC.podspec b/gRPC-ProtoRPC.podspec index 1008b8e..dae9811 100644 --- a/gRPC-ProtoRPC.podspec +++ b/gRPC-ProtoRPC.podspec @@ -21,7 +21,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-ProtoRPC' - version = '1.34.0' + version = '1.34.1' s.version = version s.summary = 'RPC library for Protocol Buffers, based on gRPC' s.homepage = 'https://grpc.io' diff --git a/gRPC-RxLibrary.podspec b/gRPC-RxLibrary.podspec index 095ae3a..157c84d 100644 --- a/gRPC-RxLibrary.podspec +++ b/gRPC-RxLibrary.podspec @@ -21,7 +21,7 @@ Pod::Spec.new do |s| s.name = 'gRPC-RxLibrary' - version = '1.34.0' + version = '1.34.1' s.version = version s.summary = 'Reactive Extensions library for iOS/OSX.' s.homepage = 'https://grpc.io' diff --git a/gRPC.podspec b/gRPC.podspec index 38367c8..73fd9dc 100644 --- a/gRPC.podspec +++ b/gRPC.podspec @@ -20,7 +20,7 @@ Pod::Spec.new do |s| s.name = 'gRPC' - version = '1.34.0' + version = '1.34.1' s.version = version s.summary = 'gRPC client library for iOS/OSX' s.homepage = 'https://grpc.io' diff --git a/package.xml b/package.xml index 416bc76..0513028 100644 --- a/package.xml +++ b/package.xml @@ -13,8 +13,8 @@ 2019-09-24 - 1.34.0 - 1.34.0 + 1.34.1 + 1.34.1 stable @@ -22,7 +22,7 @@ Apache 2.0 -- gRPC Core 1.34.0 update +- gRPC Core 1.34.1 update diff --git a/src/cpp/common/version_cc.cc b/src/cpp/common/version_cc.cc index f8315d6..e12f0fc 100644 --- a/src/cpp/common/version_cc.cc +++ b/src/cpp/common/version_cc.cc @@ -22,5 +22,5 @@ #include namespace grpc { -std::string Version() { return "1.34.0"; } +std::string Version() { return "1.34.1"; } } // namespace grpc diff --git a/src/csharp/Grpc.Auth/Grpc.Auth.csproj b/src/csharp/Grpc.Auth/Grpc.Auth.csproj index dcc9d56..af3d723 100755 --- a/src/csharp/Grpc.Auth/Grpc.Auth.csproj +++ b/src/csharp/Grpc.Auth/Grpc.Auth.csproj @@ -12,7 +12,6 @@ net45;netstandard1.5;netstandard2.0 - $(DefineConstants);SIGNED true true diff --git a/src/csharp/Grpc.Core.Api/Properties/AssemblyInfo.cs b/src/csharp/Grpc.Core.Api/Properties/AssemblyInfo.cs index ad38569..5d0b5e2 100644 --- a/src/csharp/Grpc.Core.Api/Properties/AssemblyInfo.cs +++ b/src/csharp/Grpc.Core.Api/Properties/AssemblyInfo.cs @@ -28,7 +28,6 @@ using System.Runtime.CompilerServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -#if SIGNED [assembly: InternalsVisibleTo("Grpc.Core,PublicKey=" + "00240000048000009400000006020000002400005253413100040000010001002f5797a92c6fcde81bd4098f43" + "0442bb8e12768722de0b0cb1b15e955b32a11352740ee59f2c94c48edc8e177d1052536b8ac651bce11ce5da3a" + @@ -54,10 +53,3 @@ using System.Runtime.CompilerServices; "0442bb8e12768722de0b0cb1b15e955b32a11352740ee59f2c94c48edc8e177d1052536b8ac651bce11ce5da3a" + "27fc95aff3dc604a6971417453f9483c7b5e836756d5b271bf8f2403fe186e31956148c03d804487cf642f8cc0" + "71394ee9672dfe5b55ea0f95dfd5a7f77d22c962ccf51320d3")] -#else -[assembly: InternalsVisibleTo("Grpc.Core")] -[assembly: InternalsVisibleTo("Grpc.Core.Tests")] -[assembly: InternalsVisibleTo("Grpc.Core.Testing")] -[assembly: InternalsVisibleTo("Grpc.IntegrationTesting")] -[assembly: InternalsVisibleTo("Grpc.Microbenchmarks")] -#endif diff --git a/src/csharp/Grpc.Core.Api/VersionInfo.cs b/src/csharp/Grpc.Core.Api/VersionInfo.cs index e727bf9..8986fd1 100644 --- a/src/csharp/Grpc.Core.Api/VersionInfo.cs +++ b/src/csharp/Grpc.Core.Api/VersionInfo.cs @@ -33,11 +33,11 @@ namespace Grpc.Core /// /// Current AssemblyFileVersion of gRPC C# assemblies /// - public const string CurrentAssemblyFileVersion = "2.34.0.0"; + public const string CurrentAssemblyFileVersion = "2.34.1.0"; /// /// Current version of gRPC C# /// - public const string CurrentVersion = "2.34.0"; + public const string CurrentVersion = "2.34.1"; } } diff --git a/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs b/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs index 2aade08..505f545 100644 --- a/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs +++ b/src/csharp/Grpc.Core/Properties/AssemblyInfo.cs @@ -28,7 +28,6 @@ using System.Runtime.CompilerServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -#if SIGNED [assembly: InternalsVisibleTo("Grpc.Core.Tests,PublicKey=" + "00240000048000009400000006020000002400005253413100040000010001002f5797a92c6fcde81bd4098f43" + "0442bb8e12768722de0b0cb1b15e955b32a11352740ee59f2c94c48edc8e177d1052536b8ac651bce11ce5da3a" + @@ -49,9 +48,3 @@ using System.Runtime.CompilerServices; "0442bb8e12768722de0b0cb1b15e955b32a11352740ee59f2c94c48edc8e177d1052536b8ac651bce11ce5da3a" + "27fc95aff3dc604a6971417453f9483c7b5e836756d5b271bf8f2403fe186e31956148c03d804487cf642f8cc0" + "71394ee9672dfe5b55ea0f95dfd5a7f77d22c962ccf51320d3")] -#else -[assembly: InternalsVisibleTo("Grpc.Core.Tests")] -[assembly: InternalsVisibleTo("Grpc.Core.Testing")] -[assembly: InternalsVisibleTo("Grpc.IntegrationTesting")] -[assembly: InternalsVisibleTo("Grpc.Microbenchmarks")] -#endif diff --git a/src/csharp/Grpc.HealthCheck/Properties/AssemblyInfo.cs b/src/csharp/Grpc.HealthCheck/Properties/AssemblyInfo.cs index 01eee37..73895fd 100644 --- a/src/csharp/Grpc.HealthCheck/Properties/AssemblyInfo.cs +++ b/src/csharp/Grpc.HealthCheck/Properties/AssemblyInfo.cs @@ -28,12 +28,8 @@ using System.Runtime.CompilerServices; [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -#if SIGNED [assembly: InternalsVisibleTo("Grpc.HealthCheck.Tests,PublicKey=" + "00240000048000009400000006020000002400005253413100040000010001002f5797a92c6fcde81bd4098f43" + "0442bb8e12768722de0b0cb1b15e955b32a11352740ee59f2c94c48edc8e177d1052536b8ac651bce11ce5da3a" + "27fc95aff3dc604a6971417453f9483c7b5e836756d5b271bf8f2403fe186e31956148c03d804487cf642f8cc0" + "71394ee9672dfe5b55ea0f95dfd5a7f77d22c962ccf51320d3")] -#else -[assembly: InternalsVisibleTo("Grpc.HealthCheck.Tests")] -#endif diff --git a/src/csharp/Grpc.Tools/Grpc.Tools.csproj b/src/csharp/Grpc.Tools/Grpc.Tools.csproj index 3923a8c..752d865 100644 --- a/src/csharp/Grpc.Tools/Grpc.Tools.csproj +++ b/src/csharp/Grpc.Tools/Grpc.Tools.csproj @@ -62,7 +62,6 @@ Linux and MacOS. Managed runtime is supplied separately in the Grpc.Core package <_Asset PackagePath="tools/windows_x64/" Include="$(Assets_ProtoCompiler)windows_x64/protoc.exe" /> <_Asset PackagePath="tools/linux_x86/" Include="$(Assets_ProtoCompiler)linux_x86/protoc" /> <_Asset PackagePath="tools/linux_x64/" Include="$(Assets_ProtoCompiler)linux_x64/protoc" /> - <_Asset PackagePath="tools/macosx_x86/" Include="$(Assets_ProtoCompiler)macos_x86/protoc" /> <_Asset PackagePath="tools/macosx_x64/" Include="$(Assets_ProtoCompiler)macos_x64/protoc" /> @@ -70,7 +69,6 @@ Linux and MacOS. Managed runtime is supplied separately in the Grpc.Core package <_Asset PackagePath="tools/windows_x64/" Include="$(Assets_GrpcPlugins)protoc_windows_x64/grpc_csharp_plugin.exe" /> <_Asset PackagePath="tools/linux_x86/" Include="$(Assets_GrpcPlugins)protoc_linux_x86/grpc_csharp_plugin" /> <_Asset PackagePath="tools/linux_x64/" Include="$(Assets_GrpcPlugins)protoc_linux_x64/grpc_csharp_plugin" /> - <_Asset PackagePath="tools/macosx_x86/" Include="$(Assets_GrpcPlugins)protoc_macos_x86/grpc_csharp_plugin" /> <_Asset PackagePath="tools/macosx_x64/" Include="$(Assets_GrpcPlugins)protoc_macos_x64/grpc_csharp_plugin" /> diff --git a/src/csharp/build/common.props b/src/csharp/build/common.props index 40abd03..6a06970 100644 --- a/src/csharp/build/common.props +++ b/src/csharp/build/common.props @@ -13,10 +13,8 @@ - $(DefineConstants);SIGNED ../keys/Grpc.snk true - true diff --git a/src/csharp/build/dependencies.props b/src/csharp/build/dependencies.props index 9db8145..bbe42f6 100644 --- a/src/csharp/build/dependencies.props +++ b/src/csharp/build/dependencies.props @@ -1,7 +1,7 @@ - 2.34.0 + 2.34.1 3.13.0 diff --git a/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec b/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec index 9241a3f..34778bc 100644 --- a/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec +++ b/src/objective-c/!ProtoCompiler-gRPCCppPlugin.podspec @@ -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 # before them. s.name = '!ProtoCompiler-gRPCCppPlugin' - v = '1.34.0' + v = '1.34.1' s.version = v s.summary = 'The gRPC ProtoC plugin generates C++ files from .proto services.' s.description = <<-DESC diff --git a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec index 46f2fa1..4f38e7d 100644 --- a/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec +++ b/src/objective-c/!ProtoCompiler-gRPCPlugin.podspec @@ -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 # before them. s.name = '!ProtoCompiler-gRPCPlugin' - v = '1.34.0' + v = '1.34.1' s.version = v s.summary = 'The gRPC ProtoC plugin generates Objective-C files from .proto services.' s.description = <<-DESC diff --git a/src/objective-c/GRPCClient/version.h b/src/objective-c/GRPCClient/version.h index f704b8b..66f34b6 100644 --- a/src/objective-c/GRPCClient/version.h +++ b/src/objective-c/GRPCClient/version.h @@ -22,4 +22,4 @@ // instead. This file can be regenerated from the template by running // `tools/buildgen/generate_projects.sh`. -#define GRPC_OBJC_VERSION_STRING @"1.34.0" +#define GRPC_OBJC_VERSION_STRING @"1.34.1" diff --git a/src/objective-c/tests/version.h b/src/objective-c/tests/version.h index f868683..f7168ba 100644 --- a/src/objective-c/tests/version.h +++ b/src/objective-c/tests/version.h @@ -22,5 +22,5 @@ // instead. This file can be regenerated from the template by running // `tools/buildgen/generate_projects.sh`. -#define GRPC_OBJC_VERSION_STRING @"1.34.0" +#define GRPC_OBJC_VERSION_STRING @"1.34.1" #define GRPC_C_VERSION_STRING @"14.0.0" diff --git a/src/php/composer.json b/src/php/composer.json index cf9ffad..328ae04 100644 --- a/src/php/composer.json +++ b/src/php/composer.json @@ -2,7 +2,7 @@ "name": "grpc/grpc-dev", "description": "gRPC library for PHP - for Development use only", "license": "Apache-2.0", - "version": "1.34.0", + "version": "1.34.1", "require": { "php": ">=7.0.0", "google/protobuf": "^v3.3.0" diff --git a/src/php/ext/grpc/version.h b/src/php/ext/grpc/version.h index 7dece7b..92efe17 100644 --- a/src/php/ext/grpc/version.h +++ b/src/php/ext/grpc/version.h @@ -20,6 +20,6 @@ #ifndef VERSION_H #define VERSION_H -#define PHP_GRPC_VERSION "1.34.0" +#define PHP_GRPC_VERSION "1.34.1" #endif /* VERSION_H */ diff --git a/src/python/grpcio/grpc/_grpcio_metadata.py b/src/python/grpcio/grpc/_grpcio_metadata.py index ec26a4f..5bbd2a1 100644 --- a/src/python/grpcio/grpc/_grpcio_metadata.py +++ b/src/python/grpcio/grpc/_grpcio_metadata.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc/_grpcio_metadata.py.template`!!! -__version__ = """1.34.0""" +__version__ = """1.34.1""" diff --git a/src/python/grpcio/grpc/_runtime_protos.py b/src/python/grpcio/grpc/_runtime_protos.py index 7f555cc..2a3e1d4 100644 --- a/src/python/grpcio/grpc/_runtime_protos.py +++ b/src/python/grpcio/grpc/_runtime_protos.py @@ -15,41 +15,49 @@ import sys _REQUIRED_SYMBOLS = ("_protos", "_services", "_protos_and_services") +_MINIMUM_VERSION = (3, 5, 0) +_UNINSTALLED_TEMPLATE = "Install the grpcio-tools package (1.32.0+) to use the {} function." +_VERSION_ERROR_TEMPLATE = "The {} function is only on available on Python 3.X interpreters." -def _uninstalled_protos(*args, **kwargs): - raise NotImplementedError( - "Install the grpcio-tools package (1.32.0+) to use the protos function." - ) +def _has_runtime_proto_symbols(mod): + return all(hasattr(mod, sym) for sym in _REQUIRED_SYMBOLS) -def _uninstalled_services(*args, **kwargs): - raise NotImplementedError( - "Install the grpcio-tools package (1.32.0+) to use the services function." - ) - -def _uninstalled_protos_and_services(*args, **kwargs): - raise NotImplementedError( - "Install the grpcio-tools package (1.32.0+) to use the protos_and_services function." - ) - - -def _interpreter_version_protos(*args, **kwargs): - raise NotImplementedError( - "The protos function is only on available on Python 3.X interpreters.") +def _is_grpc_tools_importable(): + try: + import grpc_tools # pylint: disable=unused-import + return True + except ImportError as e: + # NOTE: It's possible that we're encountering a transitive ImportError, so + # we check for that and re-raise if so. + if "grpc_tools" not in e.args[0]: + raise + return False -def _interpreter_version_services(*args, **kwargs): - raise NotImplementedError( - "The services function is only on available on Python 3.X interpreters." - ) +def _call_with_lazy_import(fn_name, protobuf_path): + """Calls one of the three functions, lazily importing grpc_tools. + Args: + fn_name: The name of the function to import from grpc_tools.protoc. + protobuf_path: The path to import. -def _interpreter_version_protos_and_services(*args, **kwargs): - raise NotImplementedError( - "The protos_and_services function is only on available on Python 3.X interpreters." - ) + Returns: + The appropriate module object. + """ + if sys.version_info < _MINIMUM_VERSION: + raise NotImplementedError(_VERSION_ERROR_TEMPLATE.format(fn_name)) + else: + if not _is_grpc_tools_importable(): + raise NotImplementedError(_UNINSTALLED_TEMPLATE.format(fn_name)) + import grpc_tools.protoc + if _has_runtime_proto_symbols(grpc_tools.protoc): + fn = getattr(grpc_tools.protoc, '_' + fn_name) + return fn(protobuf_path) + else: + raise NotImplementedError(_UNINSTALLED_TEMPLATE.format(fn_name)) def protos(protobuf_path): # pylint: disable=unused-argument @@ -85,6 +93,7 @@ def protos(protobuf_path): # pylint: disable=unused-argument A module object corresponding to the message code for the indicated .proto file. Equivalent to a generated _pb2.py file. """ + return _call_with_lazy_import("protos", protobuf_path) def services(protobuf_path): # pylint: disable=unused-argument @@ -121,6 +130,7 @@ def services(protobuf_path): # pylint: disable=unused-argument A module object corresponding to the stub/service code for the indicated .proto file. Equivalent to a generated _pb2_grpc.py file. """ + return _call_with_lazy_import("services", protobuf_path) def protos_and_services(protobuf_path): # pylint: disable=unused-argument @@ -142,30 +152,4 @@ def protos_and_services(protobuf_path): # pylint: disable=unused-argument Returns: A 2-tuple of module objects corresponding to (protos(path), services(path)). """ - - -if sys.version_info < (3, 5, 0): - protos = _interpreter_version_protos - services = _interpreter_version_services - protos_and_services = _interpreter_version_protos_and_services -else: - try: - import grpc_tools # pylint: disable=unused-import - except ImportError as e: - # NOTE: It's possible that we're encountering a transitive ImportError, so - # we check for that and re-raise if so. - if "grpc_tools" not in e.args[0]: - raise - protos = _uninstalled_protos - services = _uninstalled_services - protos_and_services = _uninstalled_protos_and_services - else: - import grpc_tools.protoc # pylint: disable=unused-import - if all(hasattr(grpc_tools.protoc, sym) for sym in _REQUIRED_SYMBOLS): - from grpc_tools.protoc import _protos as protos # pylint: disable=unused-import - from grpc_tools.protoc import _services as services # pylint: disable=unused-import - from grpc_tools.protoc import _protos_and_services as protos_and_services # pylint: disable=unused-import - else: - protos = _uninstalled_protos - services = _uninstalled_services - protos_and_services = _uninstalled_protos_and_services + return _call_with_lazy_import("protos_and_services", protobuf_path) diff --git a/src/python/grpcio/grpc_version.py b/src/python/grpcio/grpc_version.py index f0f9260..5ceeea6 100644 --- a/src/python/grpcio/grpc_version.py +++ b/src/python/grpcio/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/src/python/grpcio_channelz/grpc_version.py b/src/python/grpcio_channelz/grpc_version.py index 5d6c098..f018884 100644 --- a/src/python/grpcio_channelz/grpc_version.py +++ b/src/python/grpcio_channelz/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_channelz/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/src/python/grpcio_health_checking/grpc_version.py b/src/python/grpcio_health_checking/grpc_version.py index da98bb1..96a3baf 100644 --- a/src/python/grpcio_health_checking/grpc_version.py +++ b/src/python/grpcio_health_checking/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_health_checking/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/src/python/grpcio_reflection/grpc_version.py b/src/python/grpcio_reflection/grpc_version.py index 9e1d451..a9c9796 100644 --- a/src/python/grpcio_reflection/grpc_version.py +++ b/src/python/grpcio_reflection/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_reflection/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/src/python/grpcio_status/grpc_version.py b/src/python/grpcio_status/grpc_version.py index e8b4daa..e0148a9 100644 --- a/src/python/grpcio_status/grpc_version.py +++ b/src/python/grpcio_status/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_status/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/src/python/grpcio_testing/grpc_version.py b/src/python/grpcio_testing/grpc_version.py index 8a91836..963724f 100644 --- a/src/python/grpcio_testing/grpc_version.py +++ b/src/python/grpcio_testing/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_testing/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/src/python/grpcio_tests/grpc_version.py b/src/python/grpcio_tests/grpc_version.py index 6291be5..753c98f 100644 --- a/src/python/grpcio_tests/grpc_version.py +++ b/src/python/grpcio_tests/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/src/python/grpcio_tests/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/src/ruby/lib/grpc/version.rb b/src/ruby/lib/grpc/version.rb index 319b760..e329dd7 100644 --- a/src/ruby/lib/grpc/version.rb +++ b/src/ruby/lib/grpc/version.rb @@ -14,5 +14,5 @@ # GRPC contains the General RPC module. module GRPC - VERSION = '1.34.0' + VERSION = '1.34.1' end diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb index 7e52e6e..28c7970 100644 --- a/src/ruby/tools/version.rb +++ b/src/ruby/tools/version.rb @@ -14,6 +14,6 @@ module GRPC module Tools - VERSION = '1.34.0' + VERSION = '1.34.1' end end diff --git a/tools/distrib/python/grpc_version.py b/tools/distrib/python/grpc_version.py index 3390ab8..4c97607 100644 --- a/tools/distrib/python/grpc_version.py +++ b/tools/distrib/python/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/tools/distrib/python/grpcio_tools/grpc_version.py b/tools/distrib/python/grpcio_tools/grpc_version.py index ca32d96..9304f1e 100644 --- a/tools/distrib/python/grpcio_tools/grpc_version.py +++ b/tools/distrib/python/grpcio_tools/grpc_version.py @@ -14,4 +14,4 @@ # AUTO-GENERATED FROM `$REPO_ROOT/templates/tools/distrib/python/grpcio_tools/grpc_version.py.template`!!! -VERSION = '1.34.0' +VERSION = '1.34.1' diff --git a/tools/distrib/python/grpcio_tools/setup.py b/tools/distrib/python/grpcio_tools/setup.py index 164088b..a316038 100644 --- a/tools/distrib/python/grpcio_tools/setup.py +++ b/tools/distrib/python/grpcio_tools/setup.py @@ -44,6 +44,12 @@ import _parallel_compile_patch import protoc_lib_deps import grpc_version +_EXT_INIT_SYMBOL = None +if sys.version_info[0] == 2: + _EXT_INIT_SYMBOL = "init_protoc_compiler" +else: + _EXT_INIT_SYMBOL = "PyInit__protoc_compiler" + _parallel_compile_patch.monkeypatch_compile_maybe() CLASSIFIERS = [ @@ -118,6 +124,28 @@ if EXTRA_ENV_COMPILE_ARGS is None: EXTRA_ENV_COMPILE_ARGS += ' -fno-wrapv -frtti' if EXTRA_ENV_LINK_ARGS is None: EXTRA_ENV_LINK_ARGS = '' + # NOTE(rbellevi): Clang on Mac OS will make all static symbols (both + # variables and objects) global weak symbols. When a process loads the + # protobuf wheel's shared object library before loading *this* C extension, + # the runtime linker will prefer the protobuf module's version of symbols. + # This results in the process using a mixture of symbols from the protobuf + # wheel and this wheel, which may be using different versions of + # libprotobuf. In the case that they *are* using different versions of + # libprotobuf *and* there has been a change in data layout (or in other + # invariants) segfaults, data corruption, or "bad things" may happen. + # + # This flag ensures that on Mac, the only global symbol is the one loaded by + # the Python interpreter. The problematic global weak symbols become local + # weak symbols. This is not required on Linux since the compiler does not + # produce global weak symbols. This is not required on Windows as our ".pyd" + # file does not contain any symbols. + # + # Finally, the leading underscore here is part of the Mach-O ABI. Unlike + # more modern ABIs (ELF et al.), Mach-O prepends an underscore to the names + # of C functions. + if "darwin" in sys.platform: + EXTRA_ENV_LINK_ARGS += ' -Wl,-exported_symbol,_{}'.format( + _EXT_INIT_SYMBOL) if "linux" in sys.platform or "darwin" in sys.platform: EXTRA_ENV_LINK_ARGS += ' -lpthread' if check_linker_need_libatomic(): diff --git a/tools/doxygen/Doxyfile.c++ b/tools/doxygen/Doxyfile.c++ index eafa49e..39d42bc 100644 --- a/tools/doxygen/Doxyfile.c++ +++ b/tools/doxygen/Doxyfile.c++ @@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.34.0 +PROJECT_NUMBER = 1.34.1 # 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 diff --git a/tools/doxygen/Doxyfile.c++.internal b/tools/doxygen/Doxyfile.c++.internal index 2a278bb..73f32b1 100644 --- a/tools/doxygen/Doxyfile.c++.internal +++ b/tools/doxygen/Doxyfile.c++.internal @@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC C++" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.34.0 +PROJECT_NUMBER = 1.34.1 # 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 diff --git a/tools/doxygen/Doxyfile.objc b/tools/doxygen/Doxyfile.objc index 0dc39d5..6b018c2 100644 --- a/tools/doxygen/Doxyfile.objc +++ b/tools/doxygen/Doxyfile.objc @@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Objective-C" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.34.0 +PROJECT_NUMBER = 1.34.1 # 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 diff --git a/tools/doxygen/Doxyfile.objc.internal b/tools/doxygen/Doxyfile.objc.internal index 1225e47..bd231f8 100644 --- a/tools/doxygen/Doxyfile.objc.internal +++ b/tools/doxygen/Doxyfile.objc.internal @@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC Objective-C" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.34.0 +PROJECT_NUMBER = 1.34.1 # 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 diff --git a/tools/doxygen/Doxyfile.php b/tools/doxygen/Doxyfile.php index 8913214..406a597 100644 --- a/tools/doxygen/Doxyfile.php +++ b/tools/doxygen/Doxyfile.php @@ -40,7 +40,7 @@ PROJECT_NAME = "GRPC PHP" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.34.0 +PROJECT_NUMBER = 1.34.1 # 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 diff --git a/tools/internal_ci/helper_scripts/prepare_build_macos_rc b/tools/internal_ci/helper_scripts/prepare_build_macos_rc index a8851cc..e7528f2 100644 --- a/tools/internal_ci/helper_scripts/prepare_build_macos_rc +++ b/tools/internal_ci/helper_scripts/prepare_build_macos_rc @@ -25,6 +25,15 @@ ulimit -a # - try adding a dependency under a language-specific section first (reduces latency and increases build stability) # - only add stuff that you absolutely need for your builds to work (add comment to explain why its needed) +# Disable HOMEBREW update to avoid new updates which potentially have problems. +# Brew packages installed when Kokoro image was built tend to have less conflict. +export HOMEBREW_NO_AUTO_UPDATE=1 + +# Dump the brew configuration for debugging just in case. Check "Core tap HEAD" field +# because it should be the same as below unless it's been updated. +# - Kokoro MacOS Mojave: 27fa87c94a6cf7be40fc8f8fc96bc7c387b7781e +brew config + # Add GCP credentials for BQ access pip install --user google-api-python-client oauth2client six==1.15.0 export GOOGLE_APPLICATION_CREDENTIALS=${KOKORO_GFILE_DIR}/GrpcTesting-d0eeee2db331.json @@ -36,34 +45,8 @@ fi if [ "${PREPARE_BUILD_INSTALL_DEPS_RUBY}" == "true" ] then - brew update - - # The latest gnupg version removes support for macos high sierra which would break ruby installation, - # so we need to pin a version before that. Unfortunately Homebrew is one of the most pathetic package - # managers out there and there is simply no way to install a specific version of gnupg. - # Instead, we force homebrew to use a slightly old version of the homebrew-core - # formula repository (before things got broken for us), so the homebrew formulas installed later - # will still work with MacOS high-sierra. - # Also https://github.com/Homebrew/homebrew-core/blob/07f2f9aab198ce369e24621b7c7224f63ffd27fb/Formula/gnupg.rb - # TODO(jtattermusch): migrate to MacOS mojave as soon as possible to avoid this ugly hack. - (cd /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core; git checkout 07f2f9aab198ce369e24621b7c7224f63ffd27fb) - # disable automatic brew update on "brew install" (which would ruin our explicit checkout) - export HOMEBREW_NO_AUTO_UPDATE=1 - # special case fix for https://github.com/grpc/grpc/issues/23027 - rm -f /usr/local/bin/gpg - rm -f /usr/local/bin/gpgconf - rm -f /usr/local/bin/gpgsm - # end https://github.com/grpc/grpc/issues/23027 - brew cleanup - - set +ex source $HOME/.rvm/scripts/rvm - set -ex for RUBY_VERSION in 2.5.0 2.7.0; do - # TODO(jtattermusch): find a better way of installing ruby, as the current way installs a huge number - # of completely unnecessary brew packages which 1. takes long time 2. is very prone to errors - # 3. generates a ton of logs making it super hard to debug when it breaks. - rvm --debug requirements "ruby-${RUBY_VERSION}" time rvm install "$RUBY_VERSION" time gem install bundler -v 1.17.3 --no-document time gem install rake-compiler --no-document @@ -104,21 +87,29 @@ then time pip install --user virtualenv time pip install --user --upgrade Mako tox setuptools==44.1.1 twisted pyyaml pyjwt cryptography requests - # make sure md5sum is available (requires coreutils 8.31+) - brew update-reset - brew upgrade coreutils - - # Install Python 3.7, 3.8, 3.9 - time curl -O https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.9.pkg - time curl -O https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg - time curl -O https://www.python.org/ftp/python/3.9.0/python-3.9.0-macosx10.9.pkg - echo "ae0717a02efea3b0eb34aadc680dc498 python-3.7.0-macosx10.9.pkg" > /tmp/python_installer_checksum.md5 - echo "f5f9ae9f416170c6355cab7256bb75b5 python-3.8.0-macosx10.9.pkg" >> /tmp/python_installer_checksum.md5 - echo "16ca86fa3467e75bade26b8a9703c27f python-3.9.0-macosx10.9.pkg" >> /tmp/python_installer_checksum.md5 - md5sum -c /tmp/python_installer_checksum.md5 - time sudo installer -pkg ./python-3.7.0-macosx10.9.pkg -target / - time sudo installer -pkg ./python-3.8.0-macosx10.9.pkg -target / - time sudo installer -pkg ./python-3.9.0-macosx10.9.pkg -target / + # Install Python 3.7 if it doesn't exist + if [ ! -f "/usr/local/bin/python3.7" ]; then + time curl -O https://www.python.org/ftp/python/3.7.0/python-3.7.0-macosx10.9.pkg + echo "ee4ad46ab8cd226ffc8df56d48acfdf7daa2714a9c51e6dc6262fc0b25519578 python-3.7.0-macosx10.9.pkg" > /tmp/python_installer_checksum.sha256 + shasum -c /tmp/python_installer_checksum.sha256 + time sudo installer -pkg ./python-3.7.0-macosx10.9.pkg -target / + fi + + # Install Python 3.8 if it doesn't exist + if [ ! -f "/usr/local/bin/python3.8" ]; then + time curl -O https://www.python.org/ftp/python/3.8.0/python-3.8.0-macosx10.9.pkg + echo "30961fe060da9dc5afdc4e789a57fe9bcc0d20244474e9f095d7bfc89d2e1869 python-3.8.0-macosx10.9.pkg" > /tmp/python_installer_checksum.sha256 + shasum -c /tmp/python_installer_checksum.sha256 + time sudo installer -pkg ./python-3.8.0-macosx10.9.pkg -target / + fi + + # Install Python 3.9 if it doesn't exist + if [ ! -f "/usr/local/bin/python3.9" ]; then + time curl -O https://www.python.org/ftp/python/3.9.0/python-3.9.0-macosx10.9.pkg + echo "dadee1d10c1a8ed58bb64ec7409a48c9fe38599791eaaea29303ee59fb95dfeb python-3.9.0-macosx10.9.pkg" > /tmp/python_installer_checksum.sha256 + shasum -c /tmp/python_installer_checksum.sha256 + time sudo installer -pkg ./python-3.9.0-macosx10.9.pkg -target / + fi fi if [ "${PREPARE_BUILD_INSTALL_DEPS_CSHARP}" == "true" ] @@ -129,8 +120,18 @@ then export DOTNET_CLI_TELEMETRY_OPTOUT=true fi -# PHP tests currently require using an older version of PHPUnit -ln -sf /usr/local/bin/phpunit-5.7 /usr/local/bin/phpunit +if [ "${PREPARE_BUILD_INSTALL_DEPS_PHP}" == "true" ] +then + # Install PHP 7.2 explictly to address missing php header files and + # to work well with the pre-installed phpunit 8.4 + brew install php@7.2 + export LDFLAGS="-L/usr/local/opt/php@7.2/lib $(LDFLAGS)" + export CPPFLAGS="-I/usr/local/opt/php@7.2/include $(CPPFLAGS)" + export PATH="/usr/local/opt/php@7.2/bin:/usr/local/opt/php@7.2/sbin:$PATH" + + # Workaround for https://github.com/Homebrew/homebrew-core/issues/41081 + mkdir -p /usr/local/lib/php/pecl +fi # TODO(jtattermusch): better debugging of clock skew, remove once not needed date diff --git a/tools/internal_ci/macos/grpc_basictests_php.cfg b/tools/internal_ci/macos/grpc_basictests_php.cfg index 35caa84..b96bd03 100644 --- a/tools/internal_ci/macos/grpc_basictests_php.cfg +++ b/tools/internal_ci/macos/grpc_basictests_php.cfg @@ -15,7 +15,7 @@ # Config file for the internal CI (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc/tools/internal_ci/macos/grpc_run_tests_matrix.sh" +build_file: "grpc/tools/internal_ci/macos/grpc_basictests_php.sh" gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json" timeout_mins: 60 action { diff --git a/tools/internal_ci/macos/grpc_basictests_php.sh b/tools/internal_ci/macos/grpc_basictests_php.sh new file mode 100644 index 0000000..38fdbf3 --- /dev/null +++ b/tools/internal_ci/macos/grpc_basictests_php.sh @@ -0,0 +1,19 @@ +#!/bin/bash +# Copyright 2020 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 + +export PREPARE_BUILD_INSTALL_DEPS_PHP=true +$(dirname $0)/grpc_run_tests_matrix.sh diff --git a/tools/internal_ci/macos/grpc_build_artifacts.sh b/tools/internal_ci/macos/grpc_build_artifacts.sh index 76ff43d..02b2331 100755 --- a/tools/internal_ci/macos/grpc_build_artifacts.sh +++ b/tools/internal_ci/macos/grpc_build_artifacts.sh @@ -21,6 +21,7 @@ cd $(dirname $0)/../../.. export PREPARE_BUILD_INSTALL_DEPS_CSHARP=true export PREPARE_BUILD_INSTALL_DEPS_PYTHON=true export PREPARE_BUILD_INSTALL_DEPS_RUBY=true +export PREPARE_BUILD_INSTALL_DEPS_PHP=true source tools/internal_ci/helper_scripts/prepare_build_macos_rc # install cython for all python versions diff --git a/tools/internal_ci/macos/grpc_distribtests.sh b/tools/internal_ci/macos/grpc_distribtests.sh index ec51a51..cf2ba09 100644 --- a/tools/internal_ci/macos/grpc_distribtests.sh +++ b/tools/internal_ci/macos/grpc_distribtests.sh @@ -19,6 +19,7 @@ set -ex cd $(dirname $0)/../../.. export PREPARE_BUILD_INSTALL_DEPS_CSHARP=true +export PREPARE_BUILD_INSTALL_DEPS_PHP=true source tools/internal_ci/helper_scripts/prepare_build_macos_rc # Move packages generated by the previous step in the build chain. diff --git a/tools/internal_ci/macos/pull_request/grpc_basictests_php.cfg b/tools/internal_ci/macos/pull_request/grpc_basictests_php.cfg index fc81deb..880d8aa 100644 --- a/tools/internal_ci/macos/pull_request/grpc_basictests_php.cfg +++ b/tools/internal_ci/macos/pull_request/grpc_basictests_php.cfg @@ -15,7 +15,7 @@ # Config file for the internal CI (in protobuf text format) # Location of the continuous shell script in repository. -build_file: "grpc/tools/internal_ci/macos/grpc_run_tests_matrix.sh" +build_file: "grpc/tools/internal_ci/macos/grpc_basictests_php.sh" gfile_resources: "/bigstore/grpc-testing-secrets/gcp_credentials/GrpcTesting-d0eeee2db331.json" timeout_mins: 60 action { diff --git a/tools/run_tests/artifacts/artifact_targets.py b/tools/run_tests/artifacts/artifact_targets.py index fbbfcc8..215abce 100644 --- a/tools/run_tests/artifacts/artifact_targets.py +++ b/tools/run_tests/artifacts/artifact_targets.py @@ -95,7 +95,7 @@ def create_jobspec(name, return jobspec -_MACOS_COMPAT_FLAG = '-mmacosx-version-min=10.7' +_MACOS_COMPAT_FLAG = '-mmacosx-version-min=10.10' _ARCH_FLAG_MAP = {'x86': '-m32', 'x64': '-m64'} @@ -348,7 +348,6 @@ def targets(): ProtocArtifact('linux', 'x64'), ProtocArtifact('linux', 'x86'), ProtocArtifact('macos', 'x64'), - ProtocArtifact('macos', 'x86'), ProtocArtifact('windows', 'x64'), ProtocArtifact('windows', 'x86'), CSharpExtArtifact('linux', 'x64'), diff --git a/tools/run_tests/artifacts/build_package_ruby.sh b/tools/run_tests/artifacts/build_package_ruby.sh index bd62ec1..14faab4 100755 --- a/tools/run_tests/artifacts/build_package_ruby.sh +++ b/tools/run_tests/artifacts/build_package_ruby.sh @@ -41,6 +41,11 @@ for arch in {x86,x64}; do ;; esac for plat in {windows,linux,macos}; do + # skip non-existent macos x86 protoc artifact + if [[ "${plat}_${arch}" == "macos_x86" ]] + then + continue + fi input_dir="${EXTERNAL_GIT_ROOT}/input_artifacts/protoc_${plat}_${arch}" output_dir="$base/src/ruby/tools/bin/${ruby_arch}-${plat}" mkdir -p "$output_dir"/google/protobuf -- 2.7.4