gem-compiler 0.5.0 → 0.6.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 +0 -3
- data/Rakefile +12 -4
- data/lib/rubygems/commands/compile_command.rb +1 -1
- data/lib/rubygems/compiler.rb +20 -13
- data/lib/rubygems/compiler/version.rb +1 -1
- data/test/rubygems/test_gem_commands_compile_command.rb +1 -1
- data/test/rubygems/test_gem_compiler.rb +6 -4
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ae2be2c71e44ef97d540eeba1f926ff4aadddc00
|
4
|
+
data.tar.gz: 6f4bea5bc8c090ec4158e47260810032c2920a69
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c85477e45ef9912d6dd81fb77e4cb3a3e1aef35f309d122b1418910d115244b661b42b6ff38a6eccadaf91fa666796963ef61589c0291976c31e0ab219ed91f2
|
7
|
+
data.tar.gz: 7b4fb2ca8ccb0f9a186e9872420f8f438c21b87b13d61bdd1e9c1ea7071c6ba0d4c000865295fe424b4bd0b9baf11e63de97fc404c054ce9abcc012457c68d53
|
data/History.md
CHANGED
@@ -1,5 +1,14 @@
|
|
1
1
|
# gem-compiler
|
2
2
|
|
3
|
+
## Unreleased
|
4
|
+
|
5
|
+
## 0.6.0 (2017-06-25)
|
6
|
+
|
7
|
+
- Drop support for any Ruby version prior to 2.1.0
|
8
|
+
- Solve RubyGems 2.5 deprecation warnings
|
9
|
+
- Use Travis to automate new releases
|
10
|
+
- CI: Update test matrix (Travis and AppVeyor)
|
11
|
+
|
3
12
|
## 0.5.0 (2016-04-24)
|
4
13
|
|
5
14
|
- Drop support for any Ruby version prior to 2.0.0
|
data/README.md
CHANGED
@@ -76,12 +76,10 @@ gems. To workaround this problem you have the option to *prune* the package
|
|
76
76
|
process:
|
77
77
|
|
78
78
|
$ gem fetch nokogiri --platform=ruby
|
79
|
-
|
80
79
|
Fetching: nokogiri-1.6.6.2.gem (100%)
|
81
80
|
Downloaded nokogiri-1.6.6.2
|
82
81
|
|
83
82
|
$ gem compile nokogiri-1.6.6.2.gem --prune
|
84
|
-
|
85
83
|
Unpacking gem: 'nokogiri-1.6.6.2' in temporary directory...
|
86
84
|
Building native extensions. This could take a while...
|
87
85
|
Successfully built RubyGem
|
@@ -90,7 +88,6 @@ process:
|
|
90
88
|
File: nokogiri-1.6.6.2-x86_64-darwin-12.gem
|
91
89
|
|
92
90
|
$ gem install --local nokogiri-1.6.6.2-x86_64-darwin-12.gem
|
93
|
-
|
94
91
|
Successfully installed nokogiri-1.6.6.2-x86_64-darwin-12
|
95
92
|
1 gem installed
|
96
93
|
|
data/Rakefile
CHANGED
@@ -26,11 +26,19 @@ task :info do
|
|
26
26
|
end
|
27
27
|
|
28
28
|
desc "Run tests"
|
29
|
-
task :
|
29
|
+
task test: [:info] do
|
30
30
|
lib_dirs = ["lib", "test"].join(File::PATH_SEPARATOR)
|
31
|
-
test_files = FileList["test/**/test*.rb"].gsub("test/", "")
|
32
31
|
|
33
|
-
|
32
|
+
filters = (ENV["FILTER"] || ENV["TESTOPTS"] || "").dup
|
33
|
+
filters << " -n #{ENV["N"]}" if ENV["N"]
|
34
|
+
|
35
|
+
test_files = ["rubygems"]
|
36
|
+
test_files << "minitest/autorun"
|
37
|
+
test_files << FileList["test/**/test_*.rb"].gsub("test/", "")
|
38
|
+
test_files.flatten!
|
39
|
+
test_files.map! { |f| %(require "#{f}") }
|
40
|
+
|
41
|
+
ruby "-w -I#{lib_dirs} --disable-gems -e '#{test_files.join("; ")}' -- #{filters}"
|
34
42
|
end
|
35
43
|
|
36
|
-
task :
|
44
|
+
task default: [:test]
|
@@ -3,7 +3,7 @@ require "rubygems/command"
|
|
3
3
|
class Gem::Commands::CompileCommand < Gem::Command
|
4
4
|
def initialize
|
5
5
|
super "compile", "Create binary pre-compiled gem",
|
6
|
-
|
6
|
+
output: Dir.pwd
|
7
7
|
|
8
8
|
add_option "--prune", "Clean non-existing files during re-packaging" do |value, options|
|
9
9
|
options[:prune] = true
|
data/lib/rubygems/compiler.rb
CHANGED
@@ -15,12 +15,12 @@ class Gem::Compiler
|
|
15
15
|
# raise when there is a error
|
16
16
|
class CompilerError < Gem::InstallError; end
|
17
17
|
|
18
|
-
attr_reader :
|
18
|
+
attr_reader :target_dir, :options
|
19
19
|
|
20
20
|
def initialize(gemfile, _options = {})
|
21
|
-
@gemfile
|
21
|
+
@gemfile = gemfile
|
22
22
|
@output_dir = _options.delete(:output)
|
23
|
-
@options
|
23
|
+
@options = _options
|
24
24
|
end
|
25
25
|
|
26
26
|
def compile
|
@@ -61,7 +61,6 @@ class Gem::Compiler
|
|
61
61
|
|
62
62
|
def build_extensions
|
63
63
|
# run pre_install hooks
|
64
|
-
|
65
64
|
if installer.respond_to?(:run_pre_install_hooks)
|
66
65
|
installer.run_pre_install_hooks
|
67
66
|
end
|
@@ -75,7 +74,7 @@ class Gem::Compiler
|
|
75
74
|
|
76
75
|
def collect_artifacts
|
77
76
|
# determine build artifacts from require_paths
|
78
|
-
dlext
|
77
|
+
dlext = RbConfig::CONFIG["DLEXT"]
|
79
78
|
lib_dirs = installer.spec.require_paths.join(",")
|
80
79
|
|
81
80
|
Dir.glob("#{target_dir}/{#{lib_dirs}}/**/*.#{dlext}")
|
@@ -90,9 +89,17 @@ class Gem::Compiler
|
|
90
89
|
end
|
91
90
|
|
92
91
|
def installer
|
93
|
-
|
92
|
+
@installer ||= prepare_installer
|
93
|
+
end
|
94
94
|
|
95
|
-
|
95
|
+
def prepare_installer
|
96
|
+
# RubyGems 2.5 specifics
|
97
|
+
unpack_options = options.dup.merge(unpack: true)
|
98
|
+
if Gem::Installer.respond_to?(:at)
|
99
|
+
installer = Gem::Installer.at(@gemfile, unpack_options)
|
100
|
+
else
|
101
|
+
installer = Gem::Installer.new(@gemfile, options.dup.merge(unpack: true))
|
102
|
+
end
|
96
103
|
|
97
104
|
# RubyGems 2.2 specifics
|
98
105
|
if installer.spec.respond_to?(:full_gem_path=)
|
@@ -122,7 +129,7 @@ class Gem::Compiler
|
|
122
129
|
"There are no extensions to build on this gem file."
|
123
130
|
end
|
124
131
|
|
125
|
-
|
132
|
+
installer
|
126
133
|
end
|
127
134
|
|
128
135
|
def repackage(gemspec)
|
@@ -143,10 +150,10 @@ class Gem::Compiler
|
|
143
150
|
|
144
151
|
Dir.chdir target_dir do
|
145
152
|
output_gem = if defined?(Gem::Builder)
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
153
|
+
Gem::Builder.new(gemspec).build
|
154
|
+
else
|
155
|
+
Gem::Package.build(gemspec)
|
156
|
+
end
|
150
157
|
end
|
151
158
|
|
152
159
|
unless output_gem
|
@@ -166,7 +173,7 @@ class Gem::Compiler
|
|
166
173
|
end
|
167
174
|
|
168
175
|
def unpack
|
169
|
-
basename
|
176
|
+
basename = File.basename(@gemfile, ".gem")
|
170
177
|
@target_dir = File.join(tmp_dir, basename)
|
171
178
|
|
172
179
|
# unpack gem sources into target_dir
|
@@ -5,6 +5,9 @@ class TestGemCompiler < Gem::TestCase
|
|
5
5
|
def setup
|
6
6
|
super
|
7
7
|
|
8
|
+
# unset GEM_PATH so `rake` is found during compilation of extensions
|
9
|
+
ENV.delete("GEM_PATH")
|
10
|
+
|
8
11
|
@output_dir = File.join @tempdir, 'output'
|
9
12
|
FileUtils.mkdir_p @output_dir
|
10
13
|
end
|
@@ -21,7 +24,7 @@ class TestGemCompiler < Gem::TestCase
|
|
21
24
|
end
|
22
25
|
|
23
26
|
assert_equal "There are no extensions to build on this gem file.",
|
24
|
-
|
27
|
+
e.message
|
25
28
|
end
|
26
29
|
|
27
30
|
def test_compile_non_ruby
|
@@ -89,7 +92,7 @@ class TestGemCompiler < Gem::TestCase
|
|
89
92
|
end
|
90
93
|
|
91
94
|
assert_equal "old_rubygems requires RubyGems version < 0. " +
|
92
|
-
|
95
|
+
"Try 'gem update --system' to update RubyGems itself.", e.message
|
93
96
|
end
|
94
97
|
|
95
98
|
def test_compile_succeed
|
@@ -108,7 +111,7 @@ class TestGemCompiler < Gem::TestCase
|
|
108
111
|
out = @ui.output.split "\n"
|
109
112
|
|
110
113
|
assert_match %r|Unpacking gem: 'a-1' in temporary directory...|,
|
111
|
-
|
114
|
+
out.shift
|
112
115
|
|
113
116
|
assert_path_exists File.join(@output_dir, "a-1-x86-mingw32.gem")
|
114
117
|
end
|
@@ -250,7 +253,6 @@ class TestGemCompiler < Gem::TestCase
|
|
250
253
|
def test_compile_no_lock_ruby_abi
|
251
254
|
util_reset_arch
|
252
255
|
|
253
|
-
ruby_abi = RbConfig::CONFIG["ruby_version"]
|
254
256
|
artifact = "foo.#{RbConfig::CONFIG["DLEXT"]}"
|
255
257
|
|
256
258
|
gem_file = util_bake_gem("foo") { |s|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-compiler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.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: 2017-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '4.7'
|
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: '4.7'
|
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
|
@@ -68,7 +68,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
68
68
|
requirements:
|
69
69
|
- - ">="
|
70
70
|
- !ruby/object:Gem::Version
|
71
|
-
version: 2.
|
71
|
+
version: 2.1.0
|
72
72
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
73
73
|
requirements:
|
74
74
|
- - ">="
|
@@ -76,7 +76,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
76
76
|
version: 1.8.24
|
77
77
|
requirements: []
|
78
78
|
rubyforge_project:
|
79
|
-
rubygems_version: 2.4.5
|
79
|
+
rubygems_version: 2.4.5
|
80
80
|
signing_key:
|
81
81
|
specification_version: 4
|
82
82
|
summary: A RubyGems plugin that generates binary gems.
|