commit
cc2ca6e88b
47 changed files with 773 additions and 291 deletions
@ -0,0 +1,91 @@ |
||||
# Copyright 2016, Google Inc. |
||||
# All rights reserved. |
||||
# |
||||
# Redistribution and use in source and binary forms, with or without |
||||
# modification, are permitted provided that the following conditions are |
||||
# met: |
||||
# |
||||
# * Redistributions of source code must retain the above copyright |
||||
# notice, this list of conditions and the following disclaimer. |
||||
# * Redistributions in binary form must reproduce the above |
||||
# copyright notice, this list of conditions and the following disclaimer |
||||
# in the documentation and/or other materials provided with the |
||||
# distribution. |
||||
# * Neither the name of Google Inc. nor the names of its |
||||
# contributors may be used to endorse or promote products derived from |
||||
# this software without specific prior written permission. |
||||
# |
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
# OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
||||
|
||||
import os |
||||
import os.path |
||||
import shutil |
||||
import sys |
||||
import tempfile |
||||
|
||||
from distutils import errors |
||||
|
||||
import commands |
||||
|
||||
|
||||
C_PYTHON_DEV = """ |
||||
#include <Python.h> |
||||
int main(int argc, char **argv) { return 0; } |
||||
""" |
||||
C_PYTHON_DEV_ERROR_MESSAGE = """ |
||||
Could not find <Python.h>. This could mean the following: |
||||
* You're on Ubuntu and haven't `apt-get install`ed `python-dev`. |
||||
* You're on Mac OS X and the usual Python framework was somehow corrupted |
||||
(check your environment variables or try re-installing?) |
||||
* You're on Windows and your Python installation was somehow corrupted |
||||
(check your environment variables or try re-installing?) |
||||
* Note: Windows users should look into installing `vcpython27`. |
||||
""" |
||||
|
||||
C_CHECKS = { |
||||
C_PYTHON_DEV: C_PYTHON_DEV_ERROR_MESSAGE, |
||||
} |
||||
|
||||
def _compile(compiler, source_string): |
||||
tempdir = tempfile.mkdtemp() |
||||
cpath = os.path.join(tempdir, 'a.c') |
||||
with open(cpath, 'w') as cfile: |
||||
cfile.write(source_string) |
||||
try: |
||||
compiler.compile([cpath]) |
||||
except errors.CompileError as error: |
||||
return error |
||||
finally: |
||||
shutil.rmtree(tempdir) |
||||
|
||||
def _expect_compile(compiler, source_string, error_message): |
||||
if _compile(compiler, source_string) is not None: |
||||
sys.stderr.write(error_message) |
||||
raise commands.CommandError( |
||||
"Diagnostics found a compilation environment issue:\n{}" |
||||
.format(error_message)) |
||||
|
||||
def diagnose_build_ext_error(build_ext, error): |
||||
{ |
||||
errors.CompileError: diagnose_compile_error |
||||
}[type(error)](build_ext, error) |
||||
|
||||
def diagnose_compile_error(build_ext, error): |
||||
"""Attempt to run a few test files through the compiler to see if we can |
||||
diagnose the reason for the compile failure.""" |
||||
for c_check, message in C_CHECKS.items(): |
||||
_expect_compile(build_ext.compiler, c_check, message) |
||||
raise commands.CommandError( |
||||
"\n\nWe could not diagnose your build failure. Please file an issue at " |
||||
"http://www.github.com/grpc/grpc with `[Python install]` in the title.") |
@ -0,0 +1,48 @@ |
||||
%YAML 1.2 |
||||
--- | |
||||
#region Copyright notice and license |
||||
|
||||
// Copyright 2015-2016, Google Inc. |
||||
// All rights reserved. |
||||
// |
||||
// Redistribution and use in source and binary forms, with or without |
||||
// modification, are permitted provided that the following conditions are |
||||
// met: |
||||
// |
||||
// * Redistributions of source code must retain the above copyright |
||||
// notice, this list of conditions and the following disclaimer. |
||||
// * Redistributions in binary form must reproduce the above |
||||
// copyright notice, this list of conditions and the following disclaimer |
||||
// in the documentation and/or other materials provided with the |
||||
// distribution. |
||||
// * Neither the name of Google Inc. nor the names of its |
||||
// contributors may be used to endorse or promote products derived from |
||||
// this software without specific prior written permission. |
||||
// |
||||
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
||||
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
||||
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
||||
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
||||
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
||||
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
||||
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
||||
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
||||
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
||||
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
||||
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
||||
|
||||
#endregion |
||||
|
||||
namespace Grpc.Core |
||||
{ |
||||
/// <summary> |
||||
/// Provides info about current version of gRPC. |
||||
/// </summary> |
||||
public static class VersionInfo |
||||
{ |
||||
/// <summary> |
||||
/// Current version of gRPC C# |
||||
/// </summary> |
||||
public const string CurrentVersion = "${settings.version.major}.${settings.version.minor}.${settings.version.micro}"; |
||||
} |
||||
} |
@ -0,0 +1,58 @@ |
||||
%YAML 1.2 |
||||
--- | |
||||
@rem Builds gRPC NuGet packages |
||||
|
||||
@rem Current package versions |
||||
set VERSION=${settings.version.major}.${settings.version.minor}.${settings.version.micro} |
||||
set PROTOBUF_VERSION=3.0.0-beta2 |
||||
|
||||
@rem Packages that depend on prerelease packages (like Google.Protobuf) need to have prerelease suffix as well. |
||||
set VERSION_WITH_BETA=%VERSION%-beta |
||||
|
||||
@rem Adjust the location of nuget.exe |
||||
set NUGET=C:\nuget\nuget.exe |
||||
|
||||
@rem Collect the artifacts built by the previous build step if running on Jenkins |
||||
@rem TODO(jtattermusch): is there a better way to do this? |
||||
xcopy /Y /I ..\..\architecture=x86,language=csharp,platform=windows\artifacts\* grpc.native.csharp\windows_x86${"\\"} |
||||
xcopy /Y /I ..\..\architecture=x64,language=csharp,platform=windows\artifacts\* grpc.native.csharp\windows_x64${"\\"} |
||||
xcopy /Y /I ..\..\architecture=x86,language=csharp,platform=linux\artifacts\* grpc.native.csharp\linux_x86${"\\"} |
||||
xcopy /Y /I ..\..\architecture=x64,language=csharp,platform=linux\artifacts\* grpc.native.csharp\linux_x64${"\\"} |
||||
xcopy /Y /I ..\..\architecture=x86,language=csharp,platform=macos\artifacts\* grpc.native.csharp\macosx_x86${"\\"} |
||||
xcopy /Y /I ..\..\architecture=x64,language=csharp,platform=macos\artifacts\* grpc.native.csharp\macosx_x64${"\\"} |
||||
|
||||
@rem Fetch all dependencies |
||||
%%NUGET% restore ..\..\vsprojects\grpc_csharp_ext.sln || goto :error |
||||
%%NUGET% restore Grpc.sln || goto :error |
||||
|
||||
setlocal |
||||
|
||||
@call "%VS120COMNTOOLS%\..\..\vc\vcvarsall.bat" x86 |
||||
|
||||
@rem We won't use the native libraries from this step, but without this Grpc.sln will fail. |
||||
msbuild ..\..\vsprojects\grpc_csharp_ext.sln /p:Configuration=Release /p:PlatformToolset=v120 || goto :error |
||||
|
||||
msbuild Grpc.sln /p:Configuration=ReleaseSigned || goto :error |
||||
|
||||
endlocal |
||||
|
||||
@rem TODO(jtattermusch): re-enable protoc plugin building |
||||
@rem @call ..\..\vsprojects\build_plugins.bat || goto :error |
||||
|
||||
%%NUGET% pack grpc.native.csharp\grpc.native.csharp.nuspec -Version %VERSION% || goto :error |
||||
%%NUGET% pack Grpc.Auth\Grpc.Auth.nuspec -Symbols -Version %VERSION% || goto :error |
||||
%%NUGET% pack Grpc.Core\Grpc.Core.nuspec -Symbols -Version %VERSION% || goto :error |
||||
%%NUGET% pack Grpc.HealthCheck\Grpc.HealthCheck.nuspec -Symbols -Version %VERSION_WITH_BETA% -Properties ProtobufVersion=%PROTOBUF_VERSION% || goto :error |
||||
%%NUGET% pack Grpc.nuspec -Version %VERSION% || goto :error |
||||
|
||||
@rem TODO(jtattermusch): re-enable building Grpc.Tools package |
||||
@rem %NUGET% pack Grpc.Tools.nuspec -Version %VERSION% || goto :error |
||||
|
||||
@rem copy resulting nuget packages to artifacts directory |
||||
xcopy /Y /I *.nupkg ..\..\artifacts${"\\"} |
||||
|
||||
goto :EOF |
||||
|
||||
:error |
||||
echo Failed! |
||||
exit /b %errorlevel% |
Loading…
Reference in new issue