rake-compiler 1.1.5 → 1.1.9

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dc1a9473b798baedf27b268735d3a4ca35899fa524d39311e39085903902c176
4
- data.tar.gz: 740e10b92d44ef53ec07ff512b8fafff7b013ea01f096caf3829141a406b30b9
3
+ metadata.gz: 3dac2b65206bc383a7e2f5bca57d0ef5f6b2e0a79d94af9cfefac60f9b91577a
4
+ data.tar.gz: 4e7592c9bd0bfa0a2bdcdb8bfe0a67ccff6d0ce47d4d51b68b3c17156083c9dd
5
5
  SHA512:
6
- metadata.gz: 20809270e0c37bd854462309eeebcb312e04c270a4f6ceff0bff6b6d1ff9bfe48e8d54d53f6aae63f52628b3267b5bda00357dd162b7a8e1f16259c12252e2c9
7
- data.tar.gz: 348d0b64112854c43519814ff20b077972ae1fd8e6acce966f287e89e09b25ca4c11f7e7db7b12bd4960780e052047a0cff7665427eec60ae0114fe63ad8e8e9
6
+ metadata.gz: dc0df40a879127c77bc137af890bd8880395963ce6b133e4ac4c3b2ec207d42503dc67a04856f0d07410161ebd5bd4401dad049afdf2ce9fa8abcaeee9a61df8
7
+ data.tar.gz: bd91ba1ed6881011a69870933873cd5112a5c6af3ee4fc2977992201e403deb2ffdc31eea874f1b7f32bd3b515b06b7e474fc5bb943f1e381c99d25dfd216205
data/History.md CHANGED
@@ -1,3 +1,27 @@
1
+ ### 1.1.9 / 2022-01-22
2
+
3
+ * Enhancements:
4
+ * Add support for `--release` option to build JRuby extension.
5
+ [#200](https://github.com/rake-compiler/rake-compiler/issues/200) [Reported by Pavel Rosický]
6
+ [#201](https://github.com/rake-compiler/rake-compiler/issues/201) [Patch by Satoshi Tagomori]
7
+
8
+ ### 1.1.8 / 2022-01-18
9
+
10
+ * Fixes:
11
+ * Fix wrong `required_ruby_version` when some `RUBY_CC_VERSION`s are missing.
12
+ [#198](https://github.com/rake-compiler/rake-compiler/issues/198) [Patch by Lars Kanis]
13
+
14
+ ### 1.1.7 / 2022-01-04
15
+
16
+ * Fixes:
17
+ * Fix binary paths for staging and clobber.
18
+ [#197](https://github.com/rake-compiler/rake-compiler/issues/197) [Patch by konsolebox]
19
+
20
+ ### 1.1.6 / 2021-12-12
21
+
22
+ * Fixes:
23
+ * Fix a regression bug that `Symbol` can't be used for `name` of `Rake::ExtensionTask.new`.
24
+
1
25
  ### 1.1.5 / 2021-12-12
2
26
 
3
27
  * Fixes:
@@ -40,8 +40,8 @@ module Rake
40
40
  @tmp_dir = 'tmp'
41
41
  @ext_dir = "ext/#{@name}"
42
42
  @lib_dir = 'lib'
43
- if @name and File.dirname(@name) != "."
44
- @lib_dir += "/#{File.dirname(@name)}"
43
+ if @name and File.dirname(@name.to_s) != "."
44
+ @lib_dir += "/#{File.dirname(@name.to_s)}"
45
45
  end
46
46
  @config_options = []
47
47
  @extra_options = ARGV.select { |i| i =~ /\A--?/ }
@@ -82,9 +82,12 @@ module Rake
82
82
  private
83
83
  # copy other gem files to staging directory
84
84
  def define_staging_file_tasks(files, lib_path, stage_path, platf, ruby_ver)
85
+ # lib_binary_path
86
+ lib_binary_path = "#{lib_path}/#{File.basename(binary(platf))}"
87
+
85
88
  files.each do |gem_file|
86
89
  # ignore directories and the binary extension
87
- next if File.directory?(gem_file) || gem_file == "#{lib_path}/#{binary(platf)}"
90
+ next if File.directory?(gem_file) || gem_file == lib_binary_path
88
91
  stage_file = "#{stage_path}/#{gem_file}"
89
92
 
90
93
  # copy each file from base to stage directory
@@ -105,12 +108,13 @@ module Rake
105
108
  platf = for_platform || platform
106
109
 
107
110
  binary_path = binary(platf)
111
+ binary_base_name = File.basename(binary_path)
108
112
 
109
113
  # lib_path
110
114
  lib_path = lib_dir
111
115
 
112
- lib_binary_path = "#{lib_path}/#{binary_path}"
113
- lib_binary_dir_path = File.dirname(lib_binary_path)
116
+ # lib_binary_path
117
+ lib_binary_path = "#{lib_path}/#{binary_base_name}"
114
118
 
115
119
  # tmp_path
116
120
  tmp_path = "#{@tmp_dir}/#{platf}/#{@name}/#{ruby_ver}"
@@ -119,19 +123,19 @@ module Rake
119
123
  siteconf_path = "#{tmp_path}/.rake-compiler-siteconf.rb"
120
124
  tmp_binary_path = "#{tmp_path}/#{binary_path}"
121
125
  tmp_binary_dir_path = File.dirname(tmp_binary_path)
122
- stage_binary_path = "#{stage_path}/#{lib_path}/#{binary_path}"
126
+ stage_binary_path = "#{stage_path}/#{lib_binary_path}"
123
127
  stage_binary_dir_path = File.dirname(stage_binary_path)
124
128
 
125
129
  # cleanup and clobbering
126
130
  CLEAN.include(tmp_path)
127
131
  CLEAN.include(stage_path)
128
- CLOBBER.include("#{lib_path}/#{binary(platf)}")
132
+ CLOBBER.include(lib_binary_path)
129
133
  CLOBBER.include("#{@tmp_dir}")
130
134
 
131
135
  # directories we need
132
136
  directory tmp_path
133
137
  directory tmp_binary_dir_path
134
- directory lib_binary_dir_path
138
+ directory lib_path
135
139
  directory stage_binary_dir_path
136
140
 
137
141
  directory File.dirname(siteconf_path)
@@ -150,7 +154,7 @@ module Rake
150
154
 
151
155
  # copy binary from temporary location to final lib
152
156
  # tmp/extension_name/extension_name.{so,bundle} => lib/
153
- task "copy:#{@name}:#{platf}:#{ruby_ver}" => [lib_binary_dir_path, tmp_binary_path, "#{tmp_path}/Makefile"] do
157
+ task "copy:#{@name}:#{platf}:#{ruby_ver}" => [lib_path, tmp_binary_path, "#{tmp_path}/Makefile"] do
154
158
  # install in lib for native platform only
155
159
  unless for_platform
156
160
  sh "#{make} install target_prefix=", chdir: tmp_path
@@ -175,8 +179,8 @@ Java extension should be preferred.
175
179
 
176
180
  chdir tmp_path do
177
181
  sh make
178
- if binary_path != File.basename(binary_path)
179
- cp File.basename(binary_path), binary_path
182
+ if binary_path != binary_base_name
183
+ cp binary_base_name, binary_path
180
184
  end
181
185
  end
182
186
  end
@@ -237,7 +241,7 @@ Java extension should be preferred.
237
241
  # platform matches the indicated one.
238
242
  if platf == RUBY_PLATFORM then
239
243
  # ensure file is always copied
240
- file "#{lib_path}/#{binary_path}" => ["copy:#{name}:#{platf}:#{ruby_ver}"]
244
+ file lib_binary_path => ["copy:#{name}:#{platf}:#{ruby_ver}"]
241
245
 
242
246
  task "compile:#{@name}" => ["compile:#{@name}:#{platf}"]
243
247
  task "compile" => ["compile:#{platf}"]
@@ -253,6 +257,9 @@ Java extension should be preferred.
253
257
  # lib_path
254
258
  lib_path = lib_dir
255
259
 
260
+ # lib_binary_path
261
+ lib_binary_path = "#{lib_path}/#{File.basename(binary(platf))}"
262
+
256
263
  # Update compiled platform/version combinations
257
264
  @ruby_versions_per_platform[platf] << ruby_ver
258
265
 
@@ -332,13 +339,13 @@ Java extension should be preferred.
332
339
  end
333
340
 
334
341
  # add binaries to the dependency chain
335
- task "native:#{@gem_spec.name}:#{platf}" => ["#{stage_path}/#{lib_path}/#{binary(platf)}"]
342
+ task "native:#{@gem_spec.name}:#{platf}" => ["#{stage_path}/#{lib_binary_path}"]
336
343
 
337
344
  # ensure the extension get copied
338
- unless Rake::Task.task_defined?("#{lib_path}/#{binary(platf)}") then
339
- file "#{lib_path}/#{binary(platf)}" => ["copy:#{@name}:#{platf}:#{ruby_ver}"]
345
+ unless Rake::Task.task_defined?(lib_binary_path) then
346
+ file lib_binary_path => ["copy:#{@name}:#{platf}:#{ruby_ver}"]
340
347
  end
341
- file "#{stage_path}/#{lib_dir}/#{binary(platf)}" => ["copy:#{@name}:#{platf}:#{ruby_ver}"]
348
+ file "#{stage_path}/#{lib_binary_path}" => ["copy:#{@name}:#{platf}:#{ruby_ver}"]
342
349
 
343
350
  # Allow segmented packaging by platform (open door for 'cross compile')
344
351
  task "native:#{platf}" => ["native:#{@gem_spec.name}:#{platf}"]
@@ -370,9 +377,6 @@ Java extension should be preferred.
370
377
  @lib_dir = "#{@lib_dir}/#{$1}"
371
378
  end
372
379
 
373
- # Update cross compiled platform/version combinations
374
- @ruby_versions_per_platform[for_platform] << version
375
-
376
380
  define_cross_platform_tasks_with_version(for_platform, version)
377
381
 
378
382
  # restore lib_dir
@@ -397,6 +401,9 @@ Java extension should be preferred.
397
401
  # lib_path
398
402
  lib_path = lib_dir
399
403
 
404
+ # lib_binary_path
405
+ lib_binary_path = "#{lib_path}/#{File.basename(binary(for_platform))}"
406
+
400
407
  unless rbconfig_file = config_file["rbconfig-#{for_platform}-#{ruby_ver}"] then
401
408
  warn "no configuration section for specified version of Ruby (rbconfig-#{for_platform}-#{ruby_ver})"
402
409
  return
@@ -463,12 +470,12 @@ Java extension should be preferred.
463
470
 
464
471
  # clear lib/binary dependencies and trigger cross platform ones
465
472
  # check if lib/binary is defined (damn bundle versus so versus dll)
466
- if Rake::Task.task_defined?("#{lib_path}/#{binary(for_platform)}") then
467
- Rake::Task["#{lib_path}/#{binary(for_platform)}"].prerequisites.clear
473
+ if Rake::Task.task_defined?(lib_binary_path) then
474
+ Rake::Task[lib_binary_path].prerequisites.clear
468
475
  end
469
476
 
470
477
  # FIXME: targeting multiple platforms copies the file twice
471
- file "#{lib_path}/#{binary(for_platform)}" => ["copy:#{@name}:#{for_platform}:#{ruby_ver}"]
478
+ file lib_binary_path => ["copy:#{@name}:#{for_platform}:#{ruby_ver}"]
472
479
 
473
480
  # if everything for native task is in place
474
481
  if @gem_spec && @gem_spec.platform == 'ruby' then
@@ -17,6 +17,9 @@ module Rake
17
17
  # Generate class files for specific VM version
18
18
  attr_accessor :target_version
19
19
 
20
+ # Compile for oldeer platform version
21
+ attr_accessor :release
22
+
20
23
  attr_accessor :encoding
21
24
 
22
25
  # Specify lint option
@@ -37,6 +40,7 @@ module Rake
37
40
  @debug = false
38
41
  @source_version = '1.7'
39
42
  @target_version = '1.7'
43
+ @release = nil
40
44
  @encoding = nil
41
45
  @java_compiling = nil
42
46
  @lint_option = nil
@@ -53,15 +57,20 @@ module Rake
53
57
  # platform usage
54
58
  platf = for_platform || platform
55
59
 
60
+ binary_path = binary(platf)
61
+
56
62
  # lib_path
57
63
  lib_path = lib_dir
58
64
 
65
+ # lib_binary_path
66
+ lib_binary_path = "#{lib_path}/#{File.basename(binary_path)}"
67
+
59
68
  # tmp_path
60
69
  tmp_path = "#{@tmp_dir}/#{platf}/#{@name}"
61
70
 
62
71
  # cleanup and clobbering
63
72
  CLEAN.include(tmp_path)
64
- CLOBBER.include("#{lib_path}/#{binary(platf)}")
73
+ CLOBBER.include(lib_binary_path)
65
74
  CLOBBER.include("#{@tmp_dir}")
66
75
 
67
76
  # directories we need
@@ -70,11 +79,11 @@ module Rake
70
79
 
71
80
  # copy binary from temporary location to final lib
72
81
  # tmp/extension_name/extension_name.{so,bundle} => lib/
73
- task "copy:#{@name}:#{platf}" => [lib_path, "#{tmp_path}/#{binary(platf)}"] do
74
- install "#{tmp_path}/#{binary(platf)}", "#{lib_path}/#{binary(platf)}"
82
+ task "copy:#{@name}:#{platf}" => [lib_path, "#{tmp_path}/#{binary_path}"] do
83
+ install "#{tmp_path}/#{binary_path}", lib_binary_path
75
84
  end
76
85
 
77
- file "#{tmp_path}/#{binary(platf)}" => "#{tmp_path}/.build" do
86
+ file "#{tmp_path}/#{binary_path}" => "#{tmp_path}/.build" do
78
87
 
79
88
  class_files = FileList["#{tmp_path}/**/*.class"].
80
89
  gsub("#{tmp_path}/", '')
@@ -86,7 +95,7 @@ module Rake
86
95
  ["-C #{tmp_path}", path]
87
96
  }.flatten
88
97
 
89
- sh "jar cf #{tmp_path}/#{binary(platf)} #{args.join(' ')}"
98
+ sh "jar cf #{tmp_path}/#{binary_path} #{args.join(' ')}"
90
99
  end
91
100
 
92
101
  file "#{tmp_path}/.build" => [tmp_path] + source_files do
@@ -101,8 +110,7 @@ execute the Rake compilation task using the JRuby interpreter.
101
110
 
102
111
  javac_command_line = [
103
112
  "javac",
104
- "-target", @target_version,
105
- "-source", @source_version,
113
+ *java_target_args,
106
114
  java_lint_arg,
107
115
  "-d", tmp_path,
108
116
  ]
@@ -137,7 +145,7 @@ execute the Rake compilation task using the JRuby interpreter.
137
145
  # platform matches the indicated one.
138
146
  if platf == RUBY_PLATFORM then
139
147
  # ensure file is always copied
140
- file "#{lib_path}/#{binary(platf)}" => ["copy:#{name}:#{platf}"]
148
+ file lib_binary_path => ["copy:#{name}:#{platf}"]
141
149
 
142
150
  task "compile:#{@name}" => ["compile:#{@name}:#{platf}"]
143
151
  task "compile" => ["compile:#{platf}"]
@@ -184,12 +192,15 @@ execute the Rake compilation task using the JRuby interpreter.
184
192
  end
185
193
  end
186
194
 
195
+ # lib_binary_path
196
+ lib_binary_path = "#{lib_path}/#{File.basename(binary(platform))}"
197
+
187
198
  # add binaries to the dependency chain
188
- task "java:#{@gem_spec.name}" => ["#{lib_path}/#{binary(platform)}"]
199
+ task "java:#{@gem_spec.name}" => [lib_binary_path]
189
200
 
190
201
  # ensure the extension get copied
191
- unless Rake::Task.task_defined?("#{lib_path}/#{binary(platform)}") then
192
- file "#{lib_path}/#{binary(platform)}" => ["copy:#{name}:#{platform}"]
202
+ unless Rake::Task.task_defined?(lib_binary_path) then
203
+ file lib_binary_path => ["copy:#{name}:#{platform}"]
193
204
  end
194
205
 
195
206
  task 'java' => ["java:#{@gem_spec.name}"]
@@ -200,6 +211,14 @@ execute the Rake compilation task using the JRuby interpreter.
200
211
  end
201
212
  end
202
213
 
214
+ def java_target_args
215
+ if @release
216
+ ["--release=#{@release}"]
217
+ else
218
+ ["-target", @target_version, "-source", @source_version]
219
+ end
220
+ end
221
+
203
222
  #
204
223
  # Discover Java Extension Directories and build an extdirs arguments
205
224
  #
@@ -456,14 +456,17 @@ describe Rake::ExtensionTask do
456
456
 
457
457
  it "should set required_ruby_version from RUBY_CC_VERSION, set platform, clear extensions but keep metadata" do
458
458
  platforms = ["x86-mingw32", "x64-mingw32"]
459
- ruby_cc_versions = ["1.8.6", "2.1.10", "2.2.6", "2.3.3", "2.10.1"]
459
+ ruby_cc_versions = ["1.8.6", "2.1.10", "2.2.6", "2.3.3", "2.10.1", "2.11.0"]
460
460
  ENV["RUBY_CC_VERSION"] = ruby_cc_versions.join(":")
461
461
  config = Hash.new
462
462
  ruby_cc_versions.each do |ruby_cc_version|
463
463
  platforms.each do |platform|
464
+ unless platform == "x64-mingw32" && ruby_cc_version == "2.11.0"
465
+ rbconf = "/rubies/#{ruby_cc_version}/rbconfig.rb"
466
+ end
464
467
  allow(config).to receive(:[]).
465
468
  with("rbconfig-#{platform}-#{ruby_cc_version}").
466
- and_return("/rubies/#{ruby_cc_version}/rbconfig.rb")
469
+ and_return(rbconf)
467
470
  end
468
471
  end
469
472
  allow(YAML).to receive(:load_file).and_return(config)
@@ -490,7 +493,7 @@ describe Rake::ExtensionTask do
490
493
  end
491
494
 
492
495
  expected_required_ruby_versions = [
493
- Gem::Requirement.new([">= 1.8", "< 2.11.dev"]),
496
+ Gem::Requirement.new([">= 1.8", "< 2.12.dev"]),
494
497
  Gem::Requirement.new([">= 1.8", "< 2.11.dev"]),
495
498
  ]
496
499
  cross_specs.collect(&:required_ruby_version).should == expected_required_ruby_versions
@@ -175,11 +175,13 @@ describe Rake::JavaExtensionTask do
175
175
  let(:extension) do
176
176
  Rake::JavaExtensionTask.new('extension_two') do |ext|
177
177
  ext.lint_option = lint_option if lint_option
178
+ ext.release = release if release
178
179
  end
179
180
  end
180
181
 
181
182
  context 'without a specified lint option' do
182
183
  let(:lint_option) { nil }
184
+ let(:release) { nil }
183
185
 
184
186
  it 'should honor the lint option' do
185
187
  (extension.lint_option).should be_falsey
@@ -189,12 +191,35 @@ describe Rake::JavaExtensionTask do
189
191
 
190
192
  context "with a specified lint option of 'deprecated'" do
191
193
  let(:lint_option) { 'deprecated'.freeze }
194
+ let(:release) { nil }
192
195
 
193
196
  it 'should honor the lint option' do
194
197
  (extension.lint_option).should eq lint_option
195
198
  (extension.send :java_lint_arg).should eq '-Xlint:deprecated'
196
199
  end
197
200
  end
201
+
202
+ context "without release option" do
203
+ let(:lint_option) { nil }
204
+ let(:release) { nil }
205
+
206
+ it 'should generate -target and -source build options' do
207
+ extension.target_version = "1.8"
208
+ extension.source_version = "1.8"
209
+ (extension.send :java_target_args).should eq ["-target", "1.8", "-source", "1.8"]
210
+ end
211
+ end
212
+
213
+ context "with release option" do
214
+ let(:lint_option) { nil }
215
+ let(:release) { '8' }
216
+
217
+ it 'should generate --release option even with target_version/source_version' do
218
+ extension.target_version = "1.8"
219
+ extension.source_version = "1.8"
220
+ (extension.send :java_target_args).should eq ["--release=8"]
221
+ end
222
+ end
198
223
  end
199
224
  end
200
225
  private
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rake-compiler
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.5
4
+ version: 1.1.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kouhei Sutou
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2021-12-11 00:00:00.000000000 Z
12
+ date: 2022-01-22 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -145,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
145
145
  - !ruby/object:Gem::Version
146
146
  version: 1.8.23
147
147
  requirements: []
148
- rubygems_version: 3.3.0.dev
148
+ rubygems_version: 3.4.0.dev
149
149
  signing_key:
150
150
  specification_version: 4
151
151
  summary: Rake-based Ruby Extension (C, Java) task generator.