From 6d15982ce70cee38e0d26e00d52191a4d8c156ac Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 19 Feb 2016 16:03:22 -0800 Subject: [PATCH 1/4] building protoc artifacts on windows --- tools/run_tests/artifact_targets.py | 15 ++++---- tools/run_tests/build_artifact_protoc.bat | 45 +++++++++++++++++++++++ 2 files changed, 53 insertions(+), 7 deletions(-) create mode 100644 tools/run_tests/build_artifact_protoc.bat diff --git a/tools/run_tests/artifact_targets.py b/tools/run_tests/artifact_targets.py index cf056ec9293..2a9f248d92e 100644 --- a/tools/run_tests/artifact_targets.py +++ b/tools/run_tests/artifact_targets.py @@ -266,7 +266,12 @@ class ProtocArtifact: ['tools/run_tests/build_artifact_protoc.sh'], environ=environ) else: - raise Exception('Not yet supported') + generator = 'Visual Studio 12 Win64' if self.arch == 'x64' else 'Visual Studio 12' + vcplatform = 'x64' if self.arch == 'x64' else 'Win32' + return create_jobspec(self.name, + ['tools\\run_tests\\build_artifact_protoc.bat'], + environ={'generator': generator, + 'Platform': vcplatform}) def __str__(self): return self.name @@ -275,7 +280,7 @@ class ProtocArtifact: def targets(): """Gets list of supported targets""" return ([Cls(platform, arch) - for Cls in (CSharpExtArtifact, NodeExtArtifact) + for Cls in (CSharpExtArtifact, NodeExtArtifact, ProtocArtifact) for platform in ('linux', 'macos', 'windows') for arch in ('x86', 'x64')] + [PythonArtifact('linux', 'x86'), @@ -283,8 +288,4 @@ def targets(): PythonArtifact('macos', 'x64'), RubyArtifact('linux', 'x86'), RubyArtifact('linux', 'x64'), - RubyArtifact('macos', 'x64'), - ProtocArtifact('linux', 'x86'), - ProtocArtifact('linux', 'x64'), - ProtocArtifact('macos', 'x86'), - ProtocArtifact('macos', 'x64')]) + RubyArtifact('macos', 'x64')]) diff --git a/tools/run_tests/build_artifact_protoc.bat b/tools/run_tests/build_artifact_protoc.bat new file mode 100644 index 00000000000..1fa7f6046ae --- /dev/null +++ b/tools/run_tests/build_artifact_protoc.bat @@ -0,0 +1,45 @@ +@rem Copyright 2016, Google Inc. +@rem All rights reserved. +@rem +@rem Redistribution and use in source and binary forms, with or without +@rem modification, are permitted provided that the following conditions are +@rem met: +@rem +@rem * Redistributions of source code must retain the above copyright +@rem notice, this list of conditions and the following disclaimer. +@rem * Redistributions in binary form must reproduce the above +@rem copyright notice, this list of conditions and the following disclaimer +@rem in the documentation and/or other materials provided with the +@rem distribution. +@rem * Neither the name of Google Inc. nor the names of its +@rem contributors may be used to endorse or promote products derived from +@rem this software without specific prior written permission. +@rem +@rem THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +@rem "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +@rem LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +@rem A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +@rem OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +@rem SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +@rem LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +@rem DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +@rem THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +@rem (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +@rem OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +mkdir artifacts + +setlocal +cd third_party/protobuf/cmake +cmake -G "%generator%" || goto :error +endlocal + +call vsprojects/build_plugins.bat || goto :error + +xcopy /Y third_party\protobuf\cmake\Release\protoc.exe artifacts\ || goto :error +xcopy /Y vsprojects\Release\*_plugin.exe artifacts\ || goto :error + +goto :EOF + +:error +exit /b 1 \ No newline at end of file From 4ad14db9960d62b57abc84723e58cd51b18f492b Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Fri, 19 Feb 2016 16:33:46 -0800 Subject: [PATCH 2/4] download and extract gmock --- tools/run_tests/build_artifact_protoc.bat | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/tools/run_tests/build_artifact_protoc.bat b/tools/run_tests/build_artifact_protoc.bat index 1fa7f6046ae..e1dc032188f 100644 --- a/tools/run_tests/build_artifact_protoc.bat +++ b/tools/run_tests/build_artifact_protoc.bat @@ -30,14 +30,20 @@ mkdir artifacts setlocal -cd third_party/protobuf/cmake +cd third_party/protobuf + +powershell -Command "Invoke-WebRequest https://googlemock.googlecode.com/files/gmock-1.7.0.zip -OutFile gmock.zip" +powershell -Command "Add-Type -Assembly 'System.IO.Compression.FileSystem'; [System.IO.Compression.ZipFile]::ExtractToDirectory('gmock.zip', '.');" +rename gmock-1.7.0 gmock + +cd cmake cmake -G "%generator%" || goto :error endlocal call vsprojects/build_plugins.bat || goto :error xcopy /Y third_party\protobuf\cmake\Release\protoc.exe artifacts\ || goto :error -xcopy /Y vsprojects\Release\*_plugin.exe artifacts\ || goto :error +xcopy /Y vsprojects\Release\*_plugin.exe artifacts\ || xcopy /Y vsprojects\x64\Release\*_plugin.exe artifacts\ || goto :error goto :EOF From 6611dde2615be4853bc3cc3b8405ba67aa9dc2dd Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 22 Feb 2016 08:48:02 -0800 Subject: [PATCH 3/4] enable 64bit windows compilation of protoc plugins --- build.yaml | 2 ++ templates/vsprojects/protoc.props.template | 3 +++ 2 files changed, 5 insertions(+) diff --git a/build.yaml b/build.yaml index b639b5d21e6..761e7d537d8 100644 --- a/build.yaml +++ b/build.yaml @@ -776,6 +776,8 @@ libs: - gpr_codegen secure: false vs_project_guid: '{B6E81D84-2ACB-41B8-8781-493A944C7817}' + vs_props: + - protoc - name: interop_client_helper build: private language: c++ diff --git a/templates/vsprojects/protoc.props.template b/templates/vsprojects/protoc.props.template index a869005daec..ced6028a4be 100644 --- a/templates/vsprojects/protoc.props.template +++ b/templates/vsprojects/protoc.props.template @@ -4,6 +4,9 @@ + + 4244;4267;%(DisableSpecificWarnings) + libprotoc.lib;%(AdditionalDependencies) $(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories) From a0d7ea6410d4006a23d472ad461ab0039846715d Mon Sep 17 00:00:00 2001 From: Jan Tattermusch Date: Mon, 22 Feb 2016 08:49:14 -0800 Subject: [PATCH 4/4] generated projects --- vsprojects/protoc.props | 2 +- .../vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/vsprojects/protoc.props b/vsprojects/protoc.props index ecaf248446e..1bdc07193bc 100644 --- a/vsprojects/protoc.props +++ b/vsprojects/protoc.props @@ -1 +1 @@ - libprotoc.lib;%(AdditionalDependencies) $(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories) \ No newline at end of file + 4244;4267;%(DisableSpecificWarnings) libprotoc.lib;%(AdditionalDependencies) $(SolutionDir)\..\third_party\protobuf\cmake\$(Configuration);%(AdditionalLibraryDirectories) \ No newline at end of file diff --git a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj index 89183902d74..a76c883903a 100644 --- a/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj +++ b/vsprojects/vcxproj/grpc_plugin_support/grpc_plugin_support.vcxproj @@ -53,6 +53,7 @@ +