rubyswig 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore ADDED
@@ -0,0 +1,18 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ swig/
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in rubyswig.gemspec
4
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,22 @@
1
+ Copyright (c) 2012 Brian Wong
2
+
3
+ MIT License
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,82 @@
1
+ # Rubyswig
2
+
3
+ Builds [SWIG](http://www.swig.org) (Simplified Wrapper Interface Generator) from source with minimal dependencies,
4
+ then installs it as a rubygem executable, allowing it to be versioned with rvm gemsets.
5
+
6
+ More importantly, makes installing SWIG dead-easy, and allows you to use Gemfiles and
7
+ Bundler to specify dependencies against it.
8
+
9
+ Tested with Ruby 1.9.3 on Ubuntu 12.04, OSX Snow Leopard (10.6), and Windows 7 (x86-64) with [Devkit](http://rubyinstaller.org/add-ons/devkit/).
10
+
11
+ ## Prerequisites
12
+
13
+ ### All
14
+
15
+ Ruby and an environment that can build native gems.
16
+
17
+ ### Windows
18
+
19
+ If you're starting your Ruby environment from scratch, I recommend the [RailsInstaller](http://railsinstaller.org/), which includes Devkit. You can also install Devkit [manually](https://github.com/oneclick/rubyinstaller/wiki/Development-Kit), but there are more steps involved.
20
+
21
+ ## Installation
22
+
23
+ Add this line to your application's Gemfile:
24
+
25
+ gem 'rubyswig'
26
+
27
+ And then execute:
28
+
29
+ $ bundle
30
+
31
+ Or install it yourself as:
32
+
33
+ $ gem install rubyswig
34
+
35
+ ## Usage
36
+
37
+ Once SWIG is installed, use it as normal. See <http://www.swig.org>. Remember that if you use rvm gemsets that the executable is tied to the gemset in which you installed it.
38
+
39
+ If you have gems that need to create SWIG wrappers, you can add rubyswig as a dependency of your gem.
40
+
41
+ ## Makefiles and extconf.rb
42
+
43
+ You can include swig in your extconf.rb to automatically generate and compile wrappers from the .i interface file. Example:
44
+
45
+ ```ruby
46
+ require 'mkmf'
47
+
48
+ dir_config('ois', '/usr/include/OIS', '/usr/lib')
49
+
50
+ # Identify SWIG interface files as source files
51
+ SRC_EXT.concat %w[i]
52
+
53
+ # make dependency file for SWIG wrappers
54
+ open("depend", "w") do |f|
55
+ f.puts("SWIG = #{find_executable('swig')}")
56
+ f.puts("SWIGFLAGS = -D__GNUC__=4 -D__GNUC_MINOR__=6 -D__GNUC_PATCHLEVEL__=3 -ruby -Wall -c++ -minherit")
57
+ f.puts(".i.cxx:")
58
+ f.puts("\t$(ECHO) wrapping $(<)")
59
+ f.puts("\t$(SWIG) $(SWIGFLAGS) $(INCFLAGS) $(CPPFLAGS) -o $@ $(<)")
60
+
61
+ have_library('OIS')
62
+
63
+ create_makefile('ois')
64
+ ```
65
+
66
+ Note that SWIG does not define the same symbols as, say, GCC, so you need to define them yourself for platform-specific compilation.
67
+
68
+ ## Contributing
69
+
70
+ 1. Fork it
71
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
72
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
73
+ 4. Push to the branch (`git push origin my-new-feature`)
74
+ 5. Create new Pull Request
75
+
76
+ ## Additional Credits
77
+
78
+ Jon Maken for download.rb (https://gist.github.com/2202048)
79
+
80
+ ## Alternatives
81
+
82
+ [Rice](http://rice.rubyforge.org/) is a C++ wrapper interface to the Ruby API. It's easier to use but is specific to Ruby.
data/Rakefile ADDED
@@ -0,0 +1,2 @@
1
+ #!/usr/bin/env rake
2
+ require "bundler/gem_tasks"
data/bin/ccache-swig ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # Wrapper to call the binary executable.
3
+ PROJECT_ROOT=File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
+ executable_path=File.join(PROJECT_ROOT, "swig", "bin", "ccache-swig")
5
+ exec "#{executable_path}", *ARGV
data/bin/swig ADDED
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+ # Wrapper to call the binary executable.
3
+ PROJECT_ROOT=File.expand_path(File.join(File.dirname(__FILE__), '..'))
4
+ executable_path=File.join(PROJECT_ROOT, "swig", "bin", "swig")
5
+ exec "#{executable_path}", *ARGV
data/ext/Rakefile ADDED
@@ -0,0 +1,174 @@
1
+ require 'fileutils'
2
+ require 'parallel'
3
+ require 'rbconfig'
4
+ require File.expand_path(File.join(File.dirname(__FILE__), 'download'))
5
+
6
+ module RubySwig
7
+ SWIG_VERSION='2.0.7'
8
+ PCRE_VERSION='8.30'
9
+ IS_WINDOWS = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
10
+ if (IS_WINDOWS)
11
+ begin
12
+ # Setup devkit path so we have access to bash and tar.
13
+ require 'devkit'
14
+ rescue LoadError
15
+ puts "Devkit is required on Windows to build SWIG from source."
16
+ end
17
+ end
18
+
19
+ PROJECT_ROOT=File.expand_path(File.join(File.dirname(__FILE__), '..'))
20
+ EXT_ROOT=File.expand_path(File.dirname(__FILE__))
21
+ SOURCE_DIR=File.join(EXT_ROOT, "swig-#{SWIG_VERSION}")
22
+ INSTALL_DIR=File.join(PROJECT_ROOT, "swig")
23
+ PWD=FileUtils.pwd
24
+ GEMDIR=`gem env gemdir`.chomp
25
+ GEM_CACHE_DIR=File.join(GEMDIR, 'cache')
26
+ # Windows VC++: download http://prdownloads.sourceforge.net/swig/swigwin-2.0.7.zip
27
+
28
+ class SwigBuilder
29
+ def initialize
30
+ if `bash -c "which bsdtar"`.empty?
31
+ @tar_cmd='tar'
32
+ else
33
+ @tar_cmd='bsdtar'
34
+ end
35
+ end
36
+
37
+ def bsd_tar?
38
+ @tar_cmd=='bsdtar'
39
+ end
40
+
41
+ def system!(*args)
42
+ system(*args)
43
+ return_code=$?
44
+ if return_code != 0 then
45
+ raise RuntimeError.new("Failed to run #{args}. Return code: #{return_code}")
46
+ end
47
+ end
48
+
49
+ def link(src, dest, options={})
50
+ if IS_WINDOWS
51
+ begin
52
+ FileUtils.cp(src, dest)
53
+ rescue Errno::EEXIST
54
+ puts "File #{src} already exists, skipping file copy"
55
+ end
56
+ else
57
+ begin
58
+ FileUtils.ln_s(src, dest, options)
59
+ rescue Errno::EEXIST
60
+ puts "File #{src} already exists, skipping symlink"
61
+ end
62
+ end
63
+ end
64
+
65
+ def run_script!(command)
66
+ if IS_WINDOWS
67
+ system "bash -c '#{command}'"
68
+ else
69
+ system! command
70
+ end
71
+ end
72
+
73
+ # Detect existing pcre library.
74
+ def pcre_installed?
75
+ system "gcc -c #{EXT_ROOT}/findpcre.c -o /dev/null"
76
+ $? == 0
77
+ end
78
+
79
+ # Download and build local version of pcre.
80
+ def install_pcre
81
+ pcre_filename = "pcre-#{PCRE_VERSION}.tar.gz"
82
+ pcre_download_path = File.join(GEM_CACHE_DIR, pcre_filename)
83
+ pcre_url = "http://sourceforge.net/projects/pcre/files/pcre/#{PCRE_VERSION}/#{pcre_filename}"
84
+
85
+ FileUtils.chdir(SOURCE_DIR)
86
+ if not File.exists?(pcre_download_path) then
87
+ Downloader.download_file(pcre_url, pcre_download_path)
88
+ # system! "curl -L -o #{pcre_download_path} #{pcre_url}"
89
+ # system! "wget -P #{GEM_CACHE_DIR} #{pcre_url}"
90
+ end
91
+ link(pcre_download_path, pcre_filename)
92
+ if bsd_tar?
93
+ FileUtils.cp(File.join(EXT_ROOT, 'bsdtar-pcre-build.sh'), '.')
94
+ run_script! './bsdtar-pcre-build.sh'
95
+ else
96
+ run_script! 'Tools/pcre-build.sh'
97
+ end
98
+ end
99
+
100
+ def install_manpages(dest)
101
+ begin
102
+ FileUtils.chdir(INSTALL_DIR)
103
+ Dir.glob(File.join('share', 'man', '**', '*')).each do |file|
104
+ dest_file = File.join(dest, file)
105
+ FileUtils.mkdir_p(File.dirname(file))
106
+ link(File.expand_path(file), dest_file, :force => true)
107
+ end
108
+ rescue Errno::EACCES
109
+ puts "Warning: man pages are not installed. To install locally:"
110
+ puts "cd #{PROJECT_ROOT}; sudo rake install_manpages"
111
+ rescue Errno::EEXIST
112
+ puts "Man pages already installed."
113
+ rescue => e
114
+ puts "Rescuing #{e.class}"
115
+ puts e.inspect
116
+ raise
117
+ ensure
118
+ FileUtils.chdir(PWD)
119
+ end
120
+ end
121
+
122
+ def build_swig
123
+ swig_filename = "swig-#{SWIG_VERSION}.tar.gz"
124
+ swig_download_path = File.join(GEM_CACHE_DIR, swig_filename)
125
+ swig_url = "http://downloads.sourceforge.net/project/swig/swig/swig-#{SWIG_VERSION}/#{swig_filename}"
126
+
127
+ FileUtils.chdir(EXT_ROOT)
128
+ if not File.exists?(swig_download_path) then
129
+ Downloader.download_file(swig_url, swig_download_path)
130
+ # system! "curl -L -o #{swig_download_path} #{swig_url}"
131
+ # system! "wget -P #{GEM_CACHE_DIR} #{swig_url}"
132
+ end
133
+ link(swig_download_path, swig_filename)
134
+ system! "#{@tar_cmd} -xf swig-#{SWIG_VERSION}.tar.gz"
135
+ FileUtils.chdir(SOURCE_DIR)
136
+
137
+ # Requirement: pcre.
138
+ if not pcre_installed? then
139
+ install_pcre
140
+ end
141
+
142
+ system! "make distclean" if File.exists?('Makefile')
143
+ run_script! "./configure --prefix=#{INSTALL_DIR}"
144
+
145
+ processors = Parallel.processor_count
146
+ if processors > 1
147
+ system! "make -j#{processors}"
148
+ else
149
+ system! 'make'
150
+ end
151
+ FileUtils.chdir(PWD)
152
+ end
153
+
154
+ def install_swig
155
+ FileUtils.chdir(SOURCE_DIR)
156
+ system! 'make install'
157
+ FileUtils.chdir(PWD)
158
+ end
159
+ end
160
+ end
161
+
162
+ task :default => [:build_swig]
163
+
164
+ task :build_swig do
165
+ builder = RubySwig::SwigBuilder.new
166
+ builder.build_swig
167
+ builder.install_swig
168
+ builder.install_manpages('/usr/local')
169
+ end
170
+
171
+ task :install_manpages do
172
+ RubySwig::SwigBuilder.new.install_manpages('/usr/local')
173
+ end
174
+
@@ -0,0 +1,8 @@
1
+ #!/bin/sh
2
+
3
+ function tar ()
4
+ {
5
+ bsdtar $*
6
+ }
7
+
8
+ . Tools/pcre-build.sh
data/ext/build_swig ADDED
@@ -0,0 +1,41 @@
1
+ #!/bin/bash
2
+ pushd `dirname $0/..`
3
+ PROJECT_ROOT=$PWD
4
+
5
+ wget http://downloads.sourceforge.net/project/swig/swig/swig-2.0.7/swig-2.0.7.tar.gz
6
+ tar -zxsf swig-2.0.7.tar.gz
7
+ cd swig-2.0.7
8
+
9
+ # Requirement: pcre.
10
+ # Detect existing pcre library.
11
+ gcc -c findpcre.c -o /dev/null
12
+ if ! $?; then
13
+ # Download and build local version of pcre.
14
+ wget http://sourceforge.net/projects/pcre/files/pcre/8.30/pcre-8.30.tar.gz
15
+ Tools/pcre-build.sh
16
+ fi
17
+
18
+ # This works for both rvm and non-rvm installations (as opposed to $GEM_PATH)
19
+ GEMDIR=`gem env gemdir`
20
+ # When running from extconf.rb, use $PROJECT_ROOT. Then swig will be in the bin folder.
21
+ ./configure --prefix=$GEMDIR
22
+ processor_count=`ruby -r 'parallel' -e 'puts Parallel.processor_count'`
23
+ make -j${processor_count:-1}
24
+ make install
25
+
26
+ # This is optional.
27
+ # Add share/man page for ccache-swig
28
+ sudo mkdir -p /usr/local/share/man/man1
29
+ # ln -s $GEMDIR/share/man/man1/ccache-swig.1 /usr/local/share/man/man1/
30
+ for manpage in $GEMDIR/share/man/man1/*; do
31
+ page=`basename $manpage`
32
+ if ! [ -f /usr/local/share/man/man1/$page ]; then
33
+ if [ -h /usr/local/share/man/man1/$page ]; then
34
+ # Remove stale link
35
+ sudo rm /usr/local/share/man/man1/$page
36
+ fi
37
+ sudo ln -s $manpage /usr/local/share/man/man1/$page
38
+ fi
39
+ done
40
+
41
+ popd
data/ext/download.rb ADDED
@@ -0,0 +1,204 @@
1
+ #!/usr/bin/env ruby
2
+ # An HTTP/HTTPS/FTP file downloader library/CLI based upon MiniPortile's
3
+ # HTTP implementation.
4
+ #
5
+ # Author: Jon Maken
6
+ # License: 3-clause BSD
7
+ # Revision: 2012-03-25 23:01:19 -0600
8
+
9
+ require 'net/http'
10
+ require 'net/https' if RUBY_VERSION < '1.9'
11
+ require 'net/ftp'
12
+ require 'fileutils'
13
+ require 'tempfile'
14
+
15
+ class Downloader
16
+
17
+ VERSION = '0.1.0'
18
+
19
+ # class attributes
20
+ class << self
21
+ attr_accessor :logger, :max_ca_verify_depth, :ftp_data_chunk_size
22
+ end
23
+
24
+ @logger = STDOUT.binmode
25
+ @max_ca_verify_depth = 5
26
+ @ftp_data_chunk_size = 8192
27
+
28
+
29
+ def self.download_file(url, full_path, count = 3)
30
+ return if File.exist?(full_path)
31
+
32
+ uri = URI.parse(url)
33
+ case uri.scheme.downcase
34
+ when /ftp/
35
+ ftp_download(uri, full_path)
36
+ when /http|https/
37
+ http_download(url, full_path, count)
38
+ end
39
+ end
40
+
41
+
42
+ private
43
+ def self.message(text)
44
+ @logger.print text
45
+ @logger.flush
46
+ end
47
+
48
+ def self.output(text = '')
49
+ @logger.puts text
50
+ @logger.flush
51
+ end
52
+
53
+ def self.http_download(url, full_path, count)
54
+
55
+ begin
56
+ uri = URI.parse(url)
57
+ filename = File.basename(uri.path)
58
+
59
+ if ENV['HTTP_PROXY']
60
+ protocol, userinfo, proxy_host, proxy_port = URI::split(ENV['HTTP_PROXY'])
61
+ proxy_user, proxy_pass = userinfo.split(/:/) if userinfo
62
+ http = Net::HTTP.new(uri.host, uri.port, proxy_host, proxy_port, proxy_user, proxy_pass)
63
+ else
64
+ http = Net::HTTP.new(uri.host, uri.port)
65
+ end
66
+
67
+ if uri.scheme.downcase == 'https'
68
+ http.use_ssl = true
69
+ if ENV['CA_CERT_FILE']
70
+ cert_file = ENV['CA_CERT_FILE'].dup
71
+ cert_file.gsub!(File::ALT_SEPARATOR, File::SEPARATOR) if File::ALT_SEPARATOR
72
+ end
73
+ if cert_file && File.exists?(cert_file)
74
+ http.ca_file = cert_file
75
+ http.verify_mode = OpenSSL::SSL::VERIFY_PEER
76
+ http.verify_depth = @max_ca_verify_depth
77
+ else
78
+ raise <<-EOT
79
+ To download using HTTPS you must first set the CA_CERT_FILE
80
+ environment variable to the path of a valid CA certificate file.
81
+ A file of bundled public CA certs may be downloaded from:
82
+
83
+ http://curl.haxx.se/ca/cacert.pem
84
+
85
+ EOT
86
+ end
87
+ end
88
+
89
+ http.request_get(uri.path) do |response|
90
+ case response
91
+ when Net::HTTPNotFound
92
+ output "404 - Not Found"
93
+ return false
94
+
95
+ when Net::HTTPClientError
96
+ output "Error: Client Error: #{response.inspect}"
97
+ return false
98
+
99
+ when Net::HTTPRedirection
100
+ raise "Too many redirections for the original URL, halting." if count <= 0
101
+ url = response["location"]
102
+ return http_download(url, full_path, count - 1)
103
+
104
+ when Net::HTTPOK
105
+ temp_file = Tempfile.new("download-#{filename}")
106
+ temp_file.binmode
107
+
108
+ size = 0
109
+ progress = 0
110
+ total = response.header["Content-Length"].to_i
111
+
112
+ response.read_body do |chunk|
113
+ temp_file << chunk
114
+ size += chunk.size
115
+ new_progress = (size * 100) / total
116
+ unless new_progress == progress
117
+ message "\rDownloading %s (%3d%%) " % [filename, new_progress]
118
+ end
119
+ progress = new_progress
120
+ end
121
+
122
+ output
123
+
124
+ temp_file.close
125
+ File.unlink full_path if File.exists?(full_path)
126
+ FileUtils.mkdir_p File.dirname(full_path)
127
+ FileUtils.mv temp_file.path, full_path, :force => true
128
+ end
129
+ end
130
+
131
+ rescue Exception => e
132
+ File.unlink full_path if File.exists?(full_path)
133
+ output "ERROR: #{e.message}"
134
+ raise "Failed to download file"
135
+ end
136
+ end
137
+
138
+ def self.ftp_download(parsed_uri, full_path)
139
+ filename = File.basename(parsed_uri.path)
140
+
141
+ begin
142
+ temp_file = Tempfile.new("download-#{filename}")
143
+ temp_file.binmode
144
+
145
+ size = 0
146
+ progress = 0
147
+
148
+ # TODO add user/pw support
149
+ Net::FTP.open(parsed_uri.host) do |ftp|
150
+ ftp.passive = true
151
+ ftp.login
152
+ remote_dir = File.dirname(parsed_uri.path)
153
+ ftp.chdir(remote_dir) unless remote_dir == '.'
154
+
155
+ total = ftp.size(filename)
156
+
157
+ ftp.getbinaryfile(filename, nil, @ftp_data_chunk_size) do |chunk|
158
+ temp_file << chunk
159
+ size += chunk.size
160
+ new_progress = (size * 100) / total
161
+ unless new_progress == progress
162
+ message "\rDownloading %s (%3d%%) " % [filename, new_progress]
163
+ end
164
+ progress = new_progress
165
+ end
166
+ end
167
+
168
+ output
169
+
170
+ temp_file.close
171
+ File.unlink full_path if File.exists?(full_path)
172
+ FileUtils.mkdir_p File.dirname(full_path)
173
+ FileUtils.mv temp_file.path, full_path, :force => true
174
+
175
+ rescue Exception => e
176
+ File.unlink full_path if File.exists?(full_path)
177
+ output "ERROR: #{e.message}"
178
+ raise "Failed to download file"
179
+ end
180
+ end
181
+
182
+ end # Downloader
183
+
184
+
185
+ if __FILE__ == $0
186
+ usage = <<-EOU
187
+
188
+ HTTP/HTTPS/FTP File Downloader, v#{Downloader::VERSION}
189
+ Usage: ruby download.rb URL FILE
190
+
191
+ URL http/https/ftp location of the file to download
192
+ FILE full local path at which to save downloaded file
193
+
194
+
195
+ influential environment variables:
196
+
197
+ HTTP_PROXY url to http proxy
198
+ CA_CERT_FILE full path to CA certificate file
199
+ EOU
200
+
201
+ abort usage if ARGV.length != 2
202
+
203
+ Downloader.download_file(ARGV[0], ARGV[1])
204
+ end
data/ext/findpcre.c ADDED
@@ -0,0 +1 @@
1
+ #include "pcre.h"
data/lib/rubyswig.rb ADDED
@@ -0,0 +1,5 @@
1
+ require "rubyswig/version"
2
+
3
+ module Rubyswig
4
+ # Your code goes here...
5
+ end
@@ -0,0 +1,3 @@
1
+ module Rubyswig
2
+ VERSION = "0.0.1"
3
+ end
data/rubyswig.gemspec ADDED
@@ -0,0 +1,25 @@
1
+ # -*- encoding: utf-8 -*-
2
+ require File.expand_path('../lib/rubyswig/version', __FILE__)
3
+
4
+ Gem::Specification.new do |gem|
5
+ gem.authors = ["Brian Wong"]
6
+ gem.email = ["bdwong.net@gmail.com"]
7
+ gem.description = %q{Builds SWIG (Simplified Wrapper Interface Generator) from source with minimal dependencies,
8
+ then installs it as a rubygem executable, allowing it to be versioned with rvm gemsets.
9
+ More importantly, makes installing SWIG dead-easy, and allows you to use Gemfiles and
10
+ Bundler to specify dependencies against it.
11
+ }
12
+ gem.summary = %q{Build and install SWIG from source for Ruby}
13
+ gem.homepage = ""
14
+
15
+ gem.extensions << "ext/Rakefile"
16
+ gem.files = `git ls-files`.split($\)
17
+ #gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
18
+ gem.executables = ['swig', 'ccache-swig']
19
+ gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
20
+ gem.name = "rubyswig"
21
+ gem.require_paths = ["lib"]
22
+ gem.version = Rubyswig::VERSION
23
+ gem.bindir = "bin"
24
+ gem.add_dependency "parallel"
25
+ end
metadata ADDED
@@ -0,0 +1,83 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubyswig
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Brian Wong
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2012-08-09 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: parallel
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ description: ! "Builds SWIG (Simplified Wrapper Interface Generator) from source with
31
+ minimal dependencies,\n then installs it as a rubygem executable,
32
+ allowing it to be versioned with rvm gemsets.\n More importantly,
33
+ makes installing SWIG dead-easy, and allows you to use Gemfiles and\n Bundler
34
+ to specify dependencies against it.\n "
35
+ email:
36
+ - bdwong.net@gmail.com
37
+ executables:
38
+ - swig
39
+ - ccache-swig
40
+ extensions:
41
+ - ext/Rakefile
42
+ extra_rdoc_files: []
43
+ files:
44
+ - .gitignore
45
+ - Gemfile
46
+ - LICENSE
47
+ - README.md
48
+ - Rakefile
49
+ - bin/ccache-swig
50
+ - bin/swig
51
+ - ext/Rakefile
52
+ - ext/bsdtar-pcre-build.sh
53
+ - ext/build_swig
54
+ - ext/download.rb
55
+ - ext/findpcre.c
56
+ - lib/rubyswig.rb
57
+ - lib/rubyswig/version.rb
58
+ - rubyswig.gemspec
59
+ homepage: ''
60
+ licenses: []
61
+ post_install_message:
62
+ rdoc_options: []
63
+ require_paths:
64
+ - lib
65
+ required_ruby_version: !ruby/object:Gem::Requirement
66
+ none: false
67
+ requirements:
68
+ - - ! '>='
69
+ - !ruby/object:Gem::Version
70
+ version: '0'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ none: false
73
+ requirements:
74
+ - - ! '>='
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ requirements: []
78
+ rubyforge_project:
79
+ rubygems_version: 1.8.21
80
+ signing_key:
81
+ specification_version: 3
82
+ summary: Build and install SWIG from source for Ruby
83
+ test_files: []