From 3b293253d41627e3816167ef8ec3cf9bd0dcc48f Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 29 Apr 2016 11:36:57 -0700 Subject: [PATCH 1/7] Created grpc-tools ruby gem for distributing protoc and the plugin --- src/ruby/tools/README.md | 12 +++++ src/ruby/tools/bin/protoc.rb | 46 +++++++++++++++++++ src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb | 46 +++++++++++++++++++ src/ruby/tools/grpc-tools.gemspec | 20 ++++++++ src/ruby/tools/os_check.rb | 45 ++++++++++++++++++ src/ruby/tools/version.rb | 34 ++++++++++++++ templates/src/ruby/tools/version.rb.template | 36 +++++++++++++++ 7 files changed, 239 insertions(+) create mode 100644 src/ruby/tools/README.md create mode 100755 src/ruby/tools/bin/protoc.rb create mode 100644 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb create mode 100644 src/ruby/tools/grpc-tools.gemspec create mode 100644 src/ruby/tools/os_check.rb create mode 100644 src/ruby/tools/version.rb create mode 100644 templates/src/ruby/tools/version.rb.template diff --git a/src/ruby/tools/README.md b/src/ruby/tools/README.md new file mode 100644 index 00000000000..e43f223c893 --- /dev/null +++ b/src/ruby/tools/README.md @@ -0,0 +1,12 @@ +# Ruby gRPC Tools + +This package distributes protoc and the Ruby gRPC protoc plugin for Windows, Linux, and Mac. + +Before this package is published, the following directories should be filled with the corresponding `protoc` and `grpc_ruby_plugin` executables. + + - `bin/x86-linux` + - `bin/x86_64-linux` + - `bin/x86-macos` + - `bin/x86_64-macos` + - `bin/x86-windows` + - `bin/x86_64-windows` diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/protoc.rb new file mode 100755 index 00000000000..68cbc852fd6 --- /dev/null +++ b/src/ruby/tools/bin/protoc.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby +# 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. + +require 'rbconfig' + +require_relative '../os_check' + +protoc_name = case OS.os_name + when 'windows' + 'protoc.exe' + else + 'protoc' + end + +protoc_path = File.join(File.dirname(__FILE__), + RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name, + protoc_name) + +exec([ protoc_path, protoc_path ], *ARGV) diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb new file mode 100644 index 00000000000..04cf435b58b --- /dev/null +++ b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb @@ -0,0 +1,46 @@ +#!/usr/bin/env ruby +# 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. + +require 'rbconfig' + +require_relative '../os_check' + +plugin_name = 'grpc_ruby_plugin' + case OS.os_name + when 'windows' + '.exe' + else + '' + end + +plugin_path = File.join(File.dirname(__FILE__), + RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name, + plugin_name) + +exec([ plugin_path, plugin_path ], *ARGV) diff --git a/src/ruby/tools/grpc-tools.gemspec b/src/ruby/tools/grpc-tools.gemspec new file mode 100644 index 00000000000..f56f2f58ceb --- /dev/null +++ b/src/ruby/tools/grpc-tools.gemspec @@ -0,0 +1,20 @@ +# -*- ruby -*- +# encoding: utf-8 +require_relative 'version.rb' +Gem::Specification.new do |s| + s.name = 'grpc-tools' + s.version = GRPC::Tools::VERSION + s.homepage = 'https://github.com/google/grpc/tree/master/src/ruby/tools' + s.summary = 'Development tools for Ruby gRPC' + s.description = 'protoc and the Ruby gRPC protoc plugin' + s.license = 'BSD-3-Clause' + + s.files = %w( version.rb os_check.rb README.md ) + s.files += Dir.glob('bin/**/*') + + s.bindir = 'bin' + + s.platform = Gem::Platform::RUBY + + s.executables = %w( protoc.rb protoc_grpc_ruby_plugin.rb ) +end diff --git a/src/ruby/tools/os_check.rb b/src/ruby/tools/os_check.rb new file mode 100644 index 00000000000..2677306457b --- /dev/null +++ b/src/ruby/tools/os_check.rb @@ -0,0 +1,45 @@ +# 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. + +# This is based on http://stackoverflow.com/a/171011/159388 by Aaron Hinni + +require 'rbconfig' + +module OS + def OS.os_name + case RbConfig::CONFIG['host_os'] + when /cygwin|mswin|mingw|bccwin|wince|emx/ + 'windows' + when /darwin/ + 'macos' + else + 'linux' + end + end +end diff --git a/src/ruby/tools/version.rb b/src/ruby/tools/version.rb new file mode 100644 index 00000000000..12ad21b80eb --- /dev/null +++ b/src/ruby/tools/version.rb @@ -0,0 +1,34 @@ +# Copyright 2015, 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. + +module GRPC + module Tools + VERSION = '0.14.0.dev' + end +end diff --git a/templates/src/ruby/tools/version.rb.template b/templates/src/ruby/tools/version.rb.template new file mode 100644 index 00000000000..dbc5f48cf51 --- /dev/null +++ b/templates/src/ruby/tools/version.rb.template @@ -0,0 +1,36 @@ +%YAML 1.2 +--- | + # Copyright 2015, 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. + + module GRPC + module Tools + VERSION = '${settings.ruby_version.ruby()}' + end + end From f238194b25549cd97d19f8c785347e2d2f3d3c89 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 29 Apr 2016 11:37:21 -0700 Subject: [PATCH 2/7] Updated build_package_ruby to build the grpc-tools gem --- tools/run_tests/build_package_ruby.sh | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/tools/run_tests/build_package_ruby.sh b/tools/run_tests/build_package_ruby.sh index 1a5b94348d8..cde05181c7b 100755 --- a/tools/run_tests/build_package_ruby.sh +++ b/tools/run_tests/build_package_ruby.sh @@ -32,6 +32,8 @@ set -ex cd $(dirname $0)/../.. +base=$(pwd) + mkdir -p artifacts/ # All the ruby packages have been built in the artifact phase already @@ -41,3 +43,25 @@ cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=ruby,platform={windows, # TODO: all the artifact builder configurations generate a grpc-VERSION.gem # source distribution package, and only one of them will end up # in the artifacts/ directory. They should be all equivalent though. + +for arch in {x86,x64}; do + case arch in + x64) + ruby_arch=x86_64 + ;; + *) + ruby_arch=$arch + ;; + esac + for plat in {windows,linux,macos}; do + input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts" + output_dir="$base/src/ruby/tools/bin/${ruby_arch}-${plat}" + mkdir -p output_dir + cp $input_dir/protoc* output_dir/ + cp $input_dir/grpc_ruby_plugin* output_dir/ + done +done + +cd $base/src/ruby/tools +gem build grpc-tools.gemspec +cp ./grpc-tools*.gem $base/artifacts/ From faf3bfca82c88b1bf08995fdfb26a152c90bf0a5 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 29 Apr 2016 12:39:05 -0700 Subject: [PATCH 3/7] Fixed grpc-tools.gemspec --- src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb | 0 src/ruby/tools/grpc-tools.gemspec | 2 ++ 2 files changed, 2 insertions(+) mode change 100644 => 100755 src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb old mode 100644 new mode 100755 diff --git a/src/ruby/tools/grpc-tools.gemspec b/src/ruby/tools/grpc-tools.gemspec index f56f2f58ceb..af904de4a91 100644 --- a/src/ruby/tools/grpc-tools.gemspec +++ b/src/ruby/tools/grpc-tools.gemspec @@ -4,6 +4,8 @@ require_relative 'version.rb' Gem::Specification.new do |s| s.name = 'grpc-tools' s.version = GRPC::Tools::VERSION + s.authors = ['grpc Authors'] + s.email = 'grpc-io@googlegroups.com' s.homepage = 'https://github.com/google/grpc/tree/master/src/ruby/tools' s.summary = 'Development tools for Ruby gRPC' s.description = 'protoc and the Ruby gRPC protoc plugin' From f897fec0dbd8814b3717b88058cdcaf6965a2d50 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 29 Apr 2016 12:43:19 -0700 Subject: [PATCH 4/7] Fixed build_package_ruby's use of variables --- tools/run_tests/build_package_ruby.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tools/run_tests/build_package_ruby.sh b/tools/run_tests/build_package_ruby.sh index cde05181c7b..5725a19e62d 100755 --- a/tools/run_tests/build_package_ruby.sh +++ b/tools/run_tests/build_package_ruby.sh @@ -56,9 +56,9 @@ for arch in {x86,x64}; do for plat in {windows,linux,macos}; do input_dir="$EXTERNAL_GIT_ROOT/architecture=$arch,language=protoc,platform=$plat/artifacts" output_dir="$base/src/ruby/tools/bin/${ruby_arch}-${plat}" - mkdir -p output_dir - cp $input_dir/protoc* output_dir/ - cp $input_dir/grpc_ruby_plugin* output_dir/ + mkdir -p $output_dir + cp $input_dir/protoc* $output_dir/ + cp $input_dir/grpc_ruby_plugin* $output_dir/ done done From 8cb5f2f413853829f75bc256ee93fec812d357a1 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Fri, 29 Apr 2016 12:55:28 -0700 Subject: [PATCH 5/7] Fixed build_package_ruby's use of variables --- tools/run_tests/build_package_ruby.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/run_tests/build_package_ruby.sh b/tools/run_tests/build_package_ruby.sh index 5725a19e62d..e44428bf7e3 100755 --- a/tools/run_tests/build_package_ruby.sh +++ b/tools/run_tests/build_package_ruby.sh @@ -45,7 +45,7 @@ cp -r $EXTERNAL_GIT_ROOT/architecture={x86,x64},language=ruby,platform={windows, # in the artifacts/ directory. They should be all equivalent though. for arch in {x86,x64}; do - case arch in + case $arch in x64) ruby_arch=x86_64 ;; From edb8b76ac2dc5f1b9bdaf97e69a21e3c59bfb775 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 2 May 2016 10:43:04 -0700 Subject: [PATCH 6/7] Simplified Ruby tools extension checking --- src/ruby/tools/bin/protoc.rb | 9 +--- src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb | 9 +--- src/ruby/tools/os_check.rb | 45 ------------------- 3 files changed, 2 insertions(+), 61 deletions(-) delete mode 100644 src/ruby/tools/os_check.rb diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/protoc.rb index 68cbc852fd6..728a88b0071 100755 --- a/src/ruby/tools/bin/protoc.rb +++ b/src/ruby/tools/bin/protoc.rb @@ -30,14 +30,7 @@ require 'rbconfig' -require_relative '../os_check' - -protoc_name = case OS.os_name - when 'windows' - 'protoc.exe' - else - 'protoc' - end +protoc_name = 'protoc' + RbConfig::CONFIG['EXEEXT'] protoc_path = File.join(File.dirname(__FILE__), RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name, diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb index 04cf435b58b..814aef24465 100755 --- a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb +++ b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb @@ -30,14 +30,7 @@ require 'rbconfig' -require_relative '../os_check' - -plugin_name = 'grpc_ruby_plugin' + case OS.os_name - when 'windows' - '.exe' - else - '' - end +plugin_name = 'grpc_ruby_plugin' + RbConfig::CONFIG['EXEEXT'] plugin_path = File.join(File.dirname(__FILE__), RbConfig::CONFIG['host_cpu'] + '-' + OS.os_name, diff --git a/src/ruby/tools/os_check.rb b/src/ruby/tools/os_check.rb deleted file mode 100644 index 2677306457b..00000000000 --- a/src/ruby/tools/os_check.rb +++ /dev/null @@ -1,45 +0,0 @@ -# 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. - -# This is based on http://stackoverflow.com/a/171011/159388 by Aaron Hinni - -require 'rbconfig' - -module OS - def OS.os_name - case RbConfig::CONFIG['host_os'] - when /cygwin|mswin|mingw|bccwin|wince|emx/ - 'windows' - when /darwin/ - 'macos' - else - 'linux' - end - end -end From 8e4512ba482f03887f15ac7b978bffd8eb3b9840 Mon Sep 17 00:00:00 2001 From: murgatroid99 Date: Mon, 2 May 2016 11:26:46 -0700 Subject: [PATCH 7/7] Reversed premature removal of a file --- src/ruby/tools/bin/protoc.rb | 2 + src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb | 2 + src/ruby/tools/os_check.rb | 45 +++++++++++++++++++ 3 files changed, 49 insertions(+) create mode 100644 src/ruby/tools/os_check.rb diff --git a/src/ruby/tools/bin/protoc.rb b/src/ruby/tools/bin/protoc.rb index 728a88b0071..3a2a5b8dc96 100755 --- a/src/ruby/tools/bin/protoc.rb +++ b/src/ruby/tools/bin/protoc.rb @@ -30,6 +30,8 @@ require 'rbconfig' +require_relative '../os_check' + protoc_name = 'protoc' + RbConfig::CONFIG['EXEEXT'] protoc_path = File.join(File.dirname(__FILE__), diff --git a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb index 814aef24465..4b296dedc75 100755 --- a/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb +++ b/src/ruby/tools/bin/protoc_grpc_ruby_plugin.rb @@ -30,6 +30,8 @@ require 'rbconfig' +require_relative '../os_check' + plugin_name = 'grpc_ruby_plugin' + RbConfig::CONFIG['EXEEXT'] plugin_path = File.join(File.dirname(__FILE__), diff --git a/src/ruby/tools/os_check.rb b/src/ruby/tools/os_check.rb new file mode 100644 index 00000000000..2677306457b --- /dev/null +++ b/src/ruby/tools/os_check.rb @@ -0,0 +1,45 @@ +# 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. + +# This is based on http://stackoverflow.com/a/171011/159388 by Aaron Hinni + +require 'rbconfig' + +module OS + def OS.os_name + case RbConfig::CONFIG['host_os'] + when /cygwin|mswin|mingw|bccwin|wince|emx/ + 'windows' + when /darwin/ + 'macos' + else + 'linux' + end + end +end