Jorge Canizales | 6eade6d | 2016-07-11 00:34:14 -0700 | [diff] [blame^] | 1 | # Proto Compiler CocoaPods podspec |
Jorge Canizales | 3e53e1a | 2016-06-29 12:57:44 -0700 | [diff] [blame] | 2 | |
Jorge Canizales | 6eade6d | 2016-07-11 00:34:14 -0700 | [diff] [blame^] | 3 | # Copyright 2016, Google Inc. |
Jorge Canizales | 3e53e1a | 2016-06-29 12:57:44 -0700 | [diff] [blame] | 4 | # All rights reserved. |
| 5 | # |
| 6 | # Redistribution and use in source and binary forms, with or without |
| 7 | # modification, are permitted provided that the following conditions are |
| 8 | # met: |
| 9 | # |
| 10 | # * Redistributions of source code must retain the above copyright |
| 11 | # notice, this list of conditions and the following disclaimer. |
| 12 | # * Redistributions in binary form must reproduce the above |
| 13 | # copyright notice, this list of conditions and the following disclaimer |
| 14 | # in the documentation and/or other materials provided with the |
| 15 | # distribution. |
| 16 | # * Neither the name of Google Inc. nor the names of its |
| 17 | # contributors may be used to endorse or promote products derived from |
| 18 | # this software without specific prior written permission. |
| 19 | # |
| 20 | # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| 21 | # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| 22 | # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| 23 | # A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| 24 | # OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| 25 | # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| 26 | # LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| 27 | # DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| 28 | # THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 29 | # (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 30 | # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 31 | |
| 32 | Pod::Spec.new do |s| |
Jorge Canizales | 6eade6d | 2016-07-11 00:34:14 -0700 | [diff] [blame^] | 33 | # This pod is only a utility that will be used by other pods _at install time_ (not at compile |
| 34 | # time). Other pods can access it in their `prepare_command` script, under <pods_root>/<pod name>. |
| 35 | # Because CocoaPods installs pods in alphabetical order, beginning this pod's name with an |
| 36 | # exclamation mark ensures that other "regular" pods will be able to find it as it'll be installed |
| 37 | # before them. |
| 38 | s.name = '!ProtoCompiler' |
Jorge Canizales | 3e53e1a | 2016-06-29 12:57:44 -0700 | [diff] [blame] | 39 | v = '3.0.0-beta-3.1' |
| 40 | s.version = v |
| 41 | s.summary = 'The Protobuf Compiler (protoc) generates Objective-C files from .proto files' |
| 42 | s.description = <<-DESC |
| 43 | This podspec only downloads protoc so that local pods generating protos can execute it as part |
| 44 | of their prepare_command. |
| 45 | The generated code will have a dependency on the Protobuf Objective-C runtime of the same |
| 46 | version. The runtime can be obtained as the "Protobuf" pod. |
| 47 | DESC |
| 48 | s.homepage = 'https://github.com/google/protobuf' |
| 49 | s.license = 'New BSD' |
| 50 | # "The name and email addresses of the library maintainers, not the Podspec maintainer." |
| 51 | s.authors = { 'The Protocol Buffers contributors' => 'protobuf@googlegroups.com' } |
| 52 | |
Jorge Canizales | 6eade6d | 2016-07-11 00:34:14 -0700 | [diff] [blame^] | 53 | repo = 'google/protobuf' |
| 54 | release = "v#{v}" |
| 55 | file = "protoc-#{v}-osx-x86_64.zip" |
Jorge Canizales | 3e53e1a | 2016-06-29 12:57:44 -0700 | [diff] [blame] | 56 | s.source = { |
Jorge Canizales | 6eade6d | 2016-07-11 00:34:14 -0700 | [diff] [blame^] | 57 | :http => "https://github.com/#{repo}/releases/download/#{release}/#{file}", |
Jorge Canizales | 3e53e1a | 2016-06-29 12:57:44 -0700 | [diff] [blame] | 58 | # TODO(jcanizales): Add sha1 or sha256 |
| 59 | # :sha1 => '??', |
| 60 | } |
| 61 | |
| 62 | s.preserve_paths = 'protoc', |
| 63 | 'google/**/*.proto' # Well-known protobuf types |
Jorge Canizales | 6eade6d | 2016-07-11 00:34:14 -0700 | [diff] [blame^] | 64 | |
| 65 | # Restrict the protobuf runtime version to the one supported by this version of protoc. |
| 66 | s.dependency 'Protobuf', v |
| 67 | |
| 68 | # This is only for local development of protoc: If the Podfile brings this pod from a local |
| 69 | # directory using `:path`, CocoaPods won't download the zip file and so the compiler won't be |
| 70 | # present in this pod's directory. We use that knowledge to check for the existence of the file |
| 71 | # and, if absent, build it from the local sources. |
| 72 | repo_root = '../..' |
| 73 | plugin = 'grpc_objective_c_plugin' |
| 74 | s.prepare_command = <<-CMD |
| 75 | if [ ! -f protoc ]; then |
| 76 | cd #{repo_root} |
| 77 | # This will build protoc from the Protobuf submodule of gRPC, and put it in |
| 78 | # #{repo_root}/bins/opt/protobuf. |
| 79 | # |
| 80 | # TODO(jcanizales): Make won't build protoc from sources if one's locally installed, which |
| 81 | # _we do not want_. Find a way for this to always build from source. |
| 82 | make #{plugin} |
| 83 | cd - |
| 84 | fi |
| 85 | CMD |
| 86 | |
Jorge Canizales | 3e53e1a | 2016-06-29 12:57:44 -0700 | [diff] [blame] | 87 | end |