gem-compiler 0.4.0 → 0.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/History.md +9 -0
- data/README.md +21 -18
- data/lib/rubygems/commands/compile_command.rb +4 -0
- data/lib/rubygems/compiler.rb +76 -38
- data/lib/rubygems/compiler/version.rb +1 -1
- data/test/rubygems/test_gem_compiler.rb +160 -0
- metadata +14 -14
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 76146eae5124b2c492cddca593c27b5af3595b2b
|
4
|
+
data.tar.gz: c39f906cd91e03f5ffb85019b2a581ed19508c9b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75ba4bcbe505d08fc603da2836b6120e46e66bb06c34892356f87777c5eb6d63dbd797d5d92acd2d7c3e10a39c1f6a54eba04d453a4c39cbbf455c7ee0762efa
|
7
|
+
data.tar.gz: 5b697f3f4a943c76ee58b620ffa7d3babb94e4b6af64f8d05cc25c1fde8b479fd495c103114d8ff436481e79651f4928130f9e7604185a8d246e870caf63b302
|
data/History.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# gem-compiler
|
2
2
|
|
3
|
+
## 0.5.0 (2016-04-24)
|
4
|
+
|
5
|
+
- Drop support for any Ruby version prior to 2.0.0
|
6
|
+
- Workaround shortname directories on Windows. Thanks to @mbland (#17 & #19)
|
7
|
+
- Validate both Ruby and RubyGems versions defined in gemspec
|
8
|
+
- Ensure any RubyGems' `pre_install` hooks are run at extension compilation (#18)
|
9
|
+
- Lock compile gems to Ruby's ABI version which can be disabled using
|
10
|
+
`--no-abi-lock` option (#11)
|
11
|
+
|
3
12
|
## 0.4.0 (2015-07-18)
|
4
13
|
|
5
14
|
- Introduce `--prune` option to cleanup gemspecs. Thanks to @androbtech [#13]
|
data/README.md
CHANGED
@@ -2,10 +2,10 @@
|
|
2
2
|
|
3
3
|
A RubyGems plugin that generates binary (pre-compiled) gems.
|
4
4
|
|
5
|
-
[![Gem Version](https://
|
6
|
-
[![Travis status](https://
|
7
|
-
[![AppVeyor status](https://
|
8
|
-
[![Code Climate](
|
5
|
+
[![Gem Version](https://img.shields.io/gem/v/gem-compiler.svg)](https://rubygems.org/gems/gem-compiler)
|
6
|
+
[![Travis status](https://img.shields.io/travis/luislavena/gem-compiler/master.svg)](https://travis-ci.org/luislavena/gem-compiler)
|
7
|
+
[![AppVeyor status](https://img.shields.io/appveyor/ci/luislavena/gem-compiler/master.svg)](https://ci.appveyor.com/project/luislavena/gem-compiler)
|
8
|
+
[![Code Climate](https://img.shields.io/codeclimate/github/luislavena/gem-compiler.svg)](https://codeclimate.com/github/luislavena/gem-compiler)
|
9
9
|
|
10
10
|
- [home](https://github.com/luislavena/gem-compiler)
|
11
11
|
- [bugs](https://github.com/luislavena/gem-compiler/issues)
|
@@ -94,6 +94,23 @@ process:
|
|
94
94
|
Successfully installed nokogiri-1.6.6.2-x86_64-darwin-12
|
95
95
|
1 gem installed
|
96
96
|
|
97
|
+
#### Restrictions of binaries
|
98
|
+
|
99
|
+
Gems compiled with `gem-compiler` will be lock to the version of Ruby used
|
100
|
+
to compile them.
|
101
|
+
|
102
|
+
This means that a gem compiled under Ruby 2.2 could only be installed under
|
103
|
+
Ruby 2.2.
|
104
|
+
|
105
|
+
You can disable this by using `--no-abi-lock` option during compilation:
|
106
|
+
|
107
|
+
$ gem compile yajl-ruby-1.1.0.gem --no-abi-lock
|
108
|
+
|
109
|
+
**Warning**: this is not recommended since different versions of Ruby might
|
110
|
+
expose different options on the API. The binary might be expecting specific
|
111
|
+
features not present in the version of Ruby you're installing the binary gem
|
112
|
+
into.
|
113
|
+
|
97
114
|
### Compiling from Rake
|
98
115
|
|
99
116
|
Most of the times, as gem developer, you would like to generate both kind of
|
@@ -160,20 +177,6 @@ While the ideal scenario is using a tool like rake-compiler that endorses
|
|
160
177
|
*convention over configuration*, is not humanly possible change all the
|
161
178
|
projects by snapping your fingers :wink:
|
162
179
|
|
163
|
-
## What is missing
|
164
|
-
|
165
|
-
The following are the list of features I would like to implement at some
|
166
|
-
point:
|
167
|
-
|
168
|
-
- Cross compile gems to any platform that Ruby can run
|
169
|
-
(e.g. from Linux/OSX to Windows, x86 to x64, x86 Linux to ARM Linux, etc)
|
170
|
-
|
171
|
-
- Create multiple gems from the same build
|
172
|
-
(e.g. target both x86-mswin32-60 and x86-mingw32)
|
173
|
-
|
174
|
-
- Ability to build fat-binaries targeting both Ruby 1.8 and 1.9.x,
|
175
|
-
placing automatic stubs to handle extension loading.
|
176
|
-
|
177
180
|
## License
|
178
181
|
|
179
182
|
[The MIT License](LICENSE)
|
@@ -8,6 +8,10 @@ class Gem::Commands::CompileCommand < Gem::Command
|
|
8
8
|
add_option "--prune", "Clean non-existing files during re-packaging" do |value, options|
|
9
9
|
options[:prune] = true
|
10
10
|
end
|
11
|
+
|
12
|
+
add_option "-N", "--no-abi-lock", "Do not lock compiled Gem to Ruby's ABI" do |value, options|
|
13
|
+
options[:no_abi_lock] = true
|
14
|
+
end
|
11
15
|
end
|
12
16
|
|
13
17
|
def arguments
|
data/lib/rubygems/compiler.rb
CHANGED
@@ -26,18 +26,24 @@ class Gem::Compiler
|
|
26
26
|
def compile
|
27
27
|
unpack
|
28
28
|
|
29
|
-
|
30
|
-
installer.build_extensions
|
31
|
-
|
32
|
-
# determine build artifacts from require_paths
|
33
|
-
dlext = RbConfig::CONFIG["DLEXT"]
|
34
|
-
lib_dirs = installer.spec.require_paths.join(",")
|
29
|
+
build_extensions
|
35
30
|
|
36
|
-
artifacts =
|
31
|
+
artifacts = collect_artifacts
|
37
32
|
|
38
33
|
# build a new gemspec from the original one
|
39
34
|
gemspec = installer.spec.dup
|
40
35
|
|
36
|
+
adjust_gemspec_files gemspec, artifacts
|
37
|
+
|
38
|
+
# generate new gem and return new path to it
|
39
|
+
repackage gemspec
|
40
|
+
ensure
|
41
|
+
cleanup
|
42
|
+
end
|
43
|
+
|
44
|
+
private
|
45
|
+
|
46
|
+
def adjust_gemspec_files(gemspec, artifacts)
|
41
47
|
# remove any non-existing files
|
42
48
|
if @options[:prune]
|
43
49
|
gemspec.files.reject! { |f| !File.exist?("#{target_dir}/#{f}") }
|
@@ -46,45 +52,35 @@ class Gem::Compiler
|
|
46
52
|
# add discovered artifacts
|
47
53
|
artifacts.each do |path|
|
48
54
|
# path needs to be relative to target_dir
|
49
|
-
file = path.
|
55
|
+
file = path.sub("#{target_dir}/", "")
|
50
56
|
|
51
57
|
debug "Adding '#{file}' to gemspec"
|
52
58
|
gemspec.files.push file
|
53
59
|
end
|
60
|
+
end
|
54
61
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
# adjust platform
|
59
|
-
gemspec.platform = Gem::Platform::CURRENT
|
60
|
-
|
61
|
-
# build new gem
|
62
|
-
output_gem = nil
|
62
|
+
def build_extensions
|
63
|
+
# run pre_install hooks
|
63
64
|
|
64
|
-
|
65
|
-
|
66
|
-
Gem::Builder.new(gemspec).build
|
67
|
-
else
|
68
|
-
Gem::Package.build(gemspec)
|
69
|
-
end
|
65
|
+
if installer.respond_to?(:run_pre_install_hooks)
|
66
|
+
installer.run_pre_install_hooks
|
70
67
|
end
|
71
68
|
|
72
|
-
|
73
|
-
|
74
|
-
"There was a problem building the gem."
|
75
|
-
end
|
69
|
+
installer.build_extensions
|
70
|
+
end
|
76
71
|
|
77
|
-
|
78
|
-
FileUtils.
|
72
|
+
def cleanup
|
73
|
+
FileUtils.rm_rf tmp_dir
|
74
|
+
end
|
79
75
|
|
80
|
-
|
76
|
+
def collect_artifacts
|
77
|
+
# determine build artifacts from require_paths
|
78
|
+
dlext = RbConfig::CONFIG["DLEXT"]
|
79
|
+
lib_dirs = installer.spec.require_paths.join(",")
|
81
80
|
|
82
|
-
#
|
83
|
-
output_gem
|
81
|
+
Dir.glob("#{target_dir}/{#{lib_dirs}}/**/*.#{dlext}")
|
84
82
|
end
|
85
83
|
|
86
|
-
private
|
87
|
-
|
88
84
|
def info(msg)
|
89
85
|
say msg if Gem.configuration.verbose
|
90
86
|
end
|
@@ -104,6 +100,16 @@ class Gem::Compiler
|
|
104
100
|
installer.spec.extension_dir = File.join(@target_dir, "lib")
|
105
101
|
end
|
106
102
|
|
103
|
+
# Ensure Ruby version is met
|
104
|
+
if installer.respond_to?(:ensure_required_ruby_version_met)
|
105
|
+
installer.ensure_required_ruby_version_met
|
106
|
+
end
|
107
|
+
|
108
|
+
# Check version of RubyGems (just in case)
|
109
|
+
if installer.respond_to?(:ensure_required_rubygems_version_met)
|
110
|
+
installer.ensure_required_rubygems_version_met
|
111
|
+
end
|
112
|
+
|
107
113
|
# Hmm, gem already compiled?
|
108
114
|
if installer.spec.platform != Gem::Platform::RUBY
|
109
115
|
raise CompilerError,
|
@@ -119,8 +125,44 @@ class Gem::Compiler
|
|
119
125
|
@installer = installer
|
120
126
|
end
|
121
127
|
|
128
|
+
def repackage(gemspec)
|
129
|
+
# clear out extensions from gemspec
|
130
|
+
gemspec.extensions.clear
|
131
|
+
|
132
|
+
# adjust platform
|
133
|
+
gemspec.platform = Gem::Platform::CURRENT
|
134
|
+
|
135
|
+
# adjust version of Ruby
|
136
|
+
unless @options[:no_abi_lock]
|
137
|
+
ruby_abi = RbConfig::CONFIG["ruby_version"]
|
138
|
+
gemspec.required_ruby_version = "~> #{ruby_abi}"
|
139
|
+
end
|
140
|
+
|
141
|
+
# build new gem
|
142
|
+
output_gem = nil
|
143
|
+
|
144
|
+
Dir.chdir target_dir do
|
145
|
+
output_gem = if defined?(Gem::Builder)
|
146
|
+
Gem::Builder.new(gemspec).build
|
147
|
+
else
|
148
|
+
Gem::Package.build(gemspec)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
unless output_gem
|
153
|
+
raise CompilerError,
|
154
|
+
"There was a problem building the gem."
|
155
|
+
end
|
156
|
+
|
157
|
+
# move the built gem to the original output directory
|
158
|
+
FileUtils.mv File.join(target_dir, output_gem), @output_dir
|
159
|
+
|
160
|
+
# return the path of the gem
|
161
|
+
output_gem
|
162
|
+
end
|
163
|
+
|
122
164
|
def tmp_dir
|
123
|
-
@tmp_dir ||= Dir.mktmpdir
|
165
|
+
@tmp_dir ||= Dir.glob(Dir.mktmpdir).first
|
124
166
|
end
|
125
167
|
|
126
168
|
def unpack
|
@@ -132,8 +174,4 @@ class Gem::Compiler
|
|
132
174
|
info "Unpacking gem: '#{basename}' in temporary directory..."
|
133
175
|
installer.unpack(@target_dir)
|
134
176
|
end
|
135
|
-
|
136
|
-
def cleanup
|
137
|
-
FileUtils.rm_rf tmp_dir
|
138
|
-
end
|
139
177
|
end
|
@@ -38,6 +38,60 @@ class TestGemCompiler < Gem::TestCase
|
|
38
38
|
assert_equal "The gem file seems to be compiled already.", e.message
|
39
39
|
end
|
40
40
|
|
41
|
+
def test_compile_pre_install_hooks
|
42
|
+
util_reset_arch
|
43
|
+
|
44
|
+
artifact = "foo.#{RbConfig::CONFIG["DLEXT"]}"
|
45
|
+
|
46
|
+
gem_file = util_bake_gem("foo") { |s|
|
47
|
+
util_fake_extension s, "foo", util_custom_configure(artifact)
|
48
|
+
}
|
49
|
+
|
50
|
+
hook_run = false
|
51
|
+
|
52
|
+
Gem.pre_install do |installer|
|
53
|
+
hook_run = true
|
54
|
+
true
|
55
|
+
end
|
56
|
+
|
57
|
+
compiler = Gem::Compiler.new(gem_file, :output => @output_dir)
|
58
|
+
|
59
|
+
use_ui @ui do
|
60
|
+
compiler.compile
|
61
|
+
end
|
62
|
+
|
63
|
+
assert hook_run, "pre_install hook not run"
|
64
|
+
end
|
65
|
+
|
66
|
+
def test_compile_required_ruby
|
67
|
+
gem_file = util_bake_gem("old_required") { |s| s.required_ruby_version = "= 1.4.6" }
|
68
|
+
|
69
|
+
compiler = Gem::Compiler.new(gem_file, :output => @output_dir)
|
70
|
+
|
71
|
+
e = assert_raises Gem::InstallError do
|
72
|
+
use_ui @ui do
|
73
|
+
compiler.compile
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
assert_equal "old_required requires Ruby version = 1.4.6.", e.message
|
78
|
+
end
|
79
|
+
|
80
|
+
def test_compile_required_rubygems
|
81
|
+
gem_file = util_bake_gem("old_rubygems") { |s| s.required_rubygems_version = "< 0" }
|
82
|
+
|
83
|
+
compiler = Gem::Compiler.new(gem_file, :output => @output_dir)
|
84
|
+
|
85
|
+
e = assert_raises Gem::InstallError do
|
86
|
+
use_ui @ui do
|
87
|
+
compiler.compile
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
assert_equal "old_rubygems requires RubyGems version < 0. " +
|
92
|
+
"Try 'gem update --system' to update RubyGems itself.", e.message
|
93
|
+
end
|
94
|
+
|
41
95
|
def test_compile_succeed
|
42
96
|
util_set_arch "i386-mingw32"
|
43
97
|
|
@@ -109,6 +163,112 @@ class TestGemCompiler < Gem::TestCase
|
|
109
163
|
assert_includes spec.files, "lib/#{artifact}"
|
110
164
|
end
|
111
165
|
|
166
|
+
# We need to check that tempdir paths that contain spaces as are handled
|
167
|
+
# properly on Windows. In some cases, Dir.tmpdir may returned shortened
|
168
|
+
# versions of these components, e.g. "C:/Users/JOHNDO~1/AppData/Local/Temp"
|
169
|
+
# for "C:/Users/John Doe/AppData/Local/Temp".
|
170
|
+
def test_compile_bundle_artifacts_path_with_spaces
|
171
|
+
skip("only necessary to test on Windows") unless Gem.win_platform?
|
172
|
+
old_tempdir = @tempdir
|
173
|
+
old_output_dir = @output_dir
|
174
|
+
|
175
|
+
old_tmp = ENV["TMP"]
|
176
|
+
old_temp = ENV["TEMP"]
|
177
|
+
old_tmpdir = ENV["TMPDIR"]
|
178
|
+
|
179
|
+
# We want to make sure Dir.tmpdir returns the path containing "DIRWIT~1"
|
180
|
+
# so that we're testing whether the compiler expands the path properly. To
|
181
|
+
# do this, "dir with spaces" must not be the last path component.
|
182
|
+
#
|
183
|
+
# This is because Dir.tmpdir calls File.expand_path on ENV[TMPDIR] (or
|
184
|
+
# ENV[TEMP], etc.). When "DIRWIT~1" is the last component,
|
185
|
+
# File.expand_path will expand this to "dir with spaces". When it's not
|
186
|
+
# the last component, it will leave "DIRWIT~1" as-is.
|
187
|
+
@tempdir = File.join(@tempdir, "dir with spaces", "tmp")
|
188
|
+
FileUtils.mkdir_p(@tempdir)
|
189
|
+
@tempdir = File.join(old_tempdir, "DIRWIT~1", "tmp")
|
190
|
+
|
191
|
+
@output_dir = File.join(@tempdir, "output")
|
192
|
+
FileUtils.mkdir_p(@output_dir)
|
193
|
+
|
194
|
+
["TMP", "TEMP", "TMPDIR"].each { |varname| ENV[varname] = @tempdir }
|
195
|
+
|
196
|
+
util_reset_arch
|
197
|
+
|
198
|
+
artifact = "foo.#{RbConfig::CONFIG["DLEXT"]}"
|
199
|
+
|
200
|
+
gem_file = util_bake_gem("foo") { |s|
|
201
|
+
util_fake_extension s, "foo", util_custom_configure(artifact)
|
202
|
+
}
|
203
|
+
|
204
|
+
compiler = Gem::Compiler.new(gem_file, :output => @output_dir)
|
205
|
+
output_gem = nil
|
206
|
+
|
207
|
+
use_ui @ui do
|
208
|
+
output_gem = compiler.compile
|
209
|
+
end
|
210
|
+
|
211
|
+
assert_path_exists File.join(@output_dir, output_gem)
|
212
|
+
spec = util_read_spec File.join(@output_dir, output_gem)
|
213
|
+
|
214
|
+
assert_includes spec.files, "lib/#{artifact}"
|
215
|
+
ensure
|
216
|
+
if Gem.win_platform?
|
217
|
+
FileUtils.rm_rf @tempdir
|
218
|
+
|
219
|
+
ENV["TMP"] = old_tmp
|
220
|
+
ENV["TEMP"] = old_temp
|
221
|
+
ENV["TMPDIR"] = old_tmpdir
|
222
|
+
|
223
|
+
@tempdir = old_tempdir
|
224
|
+
@output_dir = old_output_dir
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
def test_compile_lock_ruby_abi
|
229
|
+
util_reset_arch
|
230
|
+
|
231
|
+
ruby_abi = RbConfig::CONFIG["ruby_version"]
|
232
|
+
artifact = "foo.#{RbConfig::CONFIG["DLEXT"]}"
|
233
|
+
|
234
|
+
gem_file = util_bake_gem("foo") { |s|
|
235
|
+
util_fake_extension s, "foo", util_custom_configure(artifact)
|
236
|
+
}
|
237
|
+
|
238
|
+
compiler = Gem::Compiler.new(gem_file, :output => @output_dir)
|
239
|
+
output_gem = nil
|
240
|
+
|
241
|
+
use_ui @ui do
|
242
|
+
output_gem = compiler.compile
|
243
|
+
end
|
244
|
+
|
245
|
+
spec = util_read_spec File.join(@output_dir, output_gem)
|
246
|
+
|
247
|
+
assert_equal spec.required_ruby_version, Gem::Requirement.new("~> #{ruby_abi}")
|
248
|
+
end
|
249
|
+
|
250
|
+
def test_compile_no_lock_ruby_abi
|
251
|
+
util_reset_arch
|
252
|
+
|
253
|
+
ruby_abi = RbConfig::CONFIG["ruby_version"]
|
254
|
+
artifact = "foo.#{RbConfig::CONFIG["DLEXT"]}"
|
255
|
+
|
256
|
+
gem_file = util_bake_gem("foo") { |s|
|
257
|
+
util_fake_extension s, "foo", util_custom_configure(artifact)
|
258
|
+
}
|
259
|
+
|
260
|
+
compiler = Gem::Compiler.new(gem_file, :output => @output_dir, :no_abi_lock => true)
|
261
|
+
output_gem = nil
|
262
|
+
|
263
|
+
use_ui @ui do
|
264
|
+
output_gem = compiler.compile
|
265
|
+
end
|
266
|
+
|
267
|
+
spec = util_read_spec File.join(@output_dir, output_gem)
|
268
|
+
|
269
|
+
assert_equal spec.required_ruby_version, Gem::Requirement.new(">= 0")
|
270
|
+
end
|
271
|
+
|
112
272
|
##
|
113
273
|
# Reset RubyGems platform to original one. Useful when testing platform
|
114
274
|
# specific features (like compiled extensions)
|
metadata
CHANGED
@@ -1,43 +1,43 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-compiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luis Lavena
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-04-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: 0.9.2.2
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: 0.9.2.2
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '5.8'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '5.8'
|
41
41
|
description: |
|
42
42
|
A RubyGems plugin that helps generates binary gems from already existing
|
43
43
|
ones without altering the original source code. It compiles Ruby C
|
@@ -47,12 +47,12 @@ executables: []
|
|
47
47
|
extensions: []
|
48
48
|
extra_rdoc_files: []
|
49
49
|
files:
|
50
|
-
- README.md
|
51
50
|
- History.md
|
51
|
+
- README.md
|
52
52
|
- Rakefile
|
53
53
|
- lib/rubygems/commands/compile_command.rb
|
54
|
-
- lib/rubygems/compiler/version.rb
|
55
54
|
- lib/rubygems/compiler.rb
|
55
|
+
- lib/rubygems/compiler/version.rb
|
56
56
|
- lib/rubygems_plugin.rb
|
57
57
|
- test/rubygems/test_gem_commands_compile_command.rb
|
58
58
|
- test/rubygems/test_gem_compiler.rb
|
@@ -66,17 +66,17 @@ require_paths:
|
|
66
66
|
- lib
|
67
67
|
required_ruby_version: !ruby/object:Gem::Requirement
|
68
68
|
requirements:
|
69
|
-
- -
|
69
|
+
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version:
|
71
|
+
version: 2.0.0
|
72
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
|
-
- -
|
74
|
+
- - ">="
|
75
75
|
- !ruby/object:Gem::Version
|
76
76
|
version: 1.8.24
|
77
77
|
requirements: []
|
78
78
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.
|
79
|
+
rubygems_version: 2.4.5.1
|
80
80
|
signing_key:
|
81
81
|
specification_version: 4
|
82
82
|
summary: A RubyGems plugin that generates binary gems.
|