rake-compiler 1.1.3 → 1.1.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/History.md +25 -2
- data/lib/rake/baseextensiontask.rb +3 -0
- data/lib/rake/extensiontask.rb +42 -19
- data/lib/rake/javaextensiontask.rb +17 -9
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02cad822f10b4321127ce0c91ecb9ce1b7465897be75cb63864598f67a0862f9
|
4
|
+
data.tar.gz: e892ced800adc8b779b7a248f726590d2a9967c6efb95817778af4b51f650d4a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b773ca5038495c9301561f7f093dd292a90c8987d71964234359e742e159e3dcceba66762a12c161a79b60c0d8eb55b2fc1d65dfb186a64b8905ea75148090f5
|
7
|
+
data.tar.gz: 281a93c3f8e00a01ede2150bff92f8898406fef693192d1a83710eb7e40c07e53229f91aeee8c661489a4901e81c702e8d55f667858f59ddeb47f8f93da75ab3
|
data/History.md
CHANGED
@@ -1,7 +1,30 @@
|
|
1
|
-
### 1.1.
|
1
|
+
### 1.1.7 / 2022-01-04
|
2
2
|
|
3
3
|
* Fixes:
|
4
|
-
* Fix
|
4
|
+
* Fix binary paths for staging and clobber.
|
5
|
+
[#197](https://github.com/rake-compiler/rake-compiler/issues/197) [Patch by konsolebox]
|
6
|
+
|
7
|
+
### 1.1.6 / 2021-12-12
|
8
|
+
|
9
|
+
* Fixes:
|
10
|
+
* Fix a regression bug that `Symbol` can't be used for `name` of `Rake::ExtensionTask.new`.
|
11
|
+
|
12
|
+
### 1.1.5 / 2021-12-12
|
13
|
+
|
14
|
+
* Fixes:
|
15
|
+
* Fix a regression bug that wrong install location is used when name that includes `/` is specified to `Rake::ExtensionTask.new`.
|
16
|
+
[#196](https://github.com/rake-compiler/rake-compiler/issues/196) [Reported by konsolebox]
|
17
|
+
|
18
|
+
### 1.1.4 / 2021-12-11
|
19
|
+
|
20
|
+
* Fixes:
|
21
|
+
* Fix a regression bug that installed gem can't be found on cross compile.
|
22
|
+
[#195](https://github.com/rake-compiler/rake-compiler/issues/195) [Reported by Mike Dalessio]
|
23
|
+
|
24
|
+
### 1.1.3 / 2021-12-08
|
25
|
+
|
26
|
+
* Fixes:
|
27
|
+
* Fix a regression bug that wrong install location is used.
|
5
28
|
[#194](https://github.com/rake-compiler/rake-compiler/issues/194) [Reported by Andrew Kane]
|
6
29
|
|
7
30
|
### 1.1.2 / 2021-12-07
|
@@ -40,6 +40,9 @@ 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.to_s) != "."
|
44
|
+
@lib_dir += "/#{File.dirname(@name.to_s)}"
|
45
|
+
end
|
43
46
|
@config_options = []
|
44
47
|
@extra_options = ARGV.select { |i| i =~ /\A--?/ }
|
45
48
|
end
|
data/lib/rake/extensiontask.rb
CHANGED
@@ -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 ==
|
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
|
113
|
-
|
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}/#{
|
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(
|
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
|
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}" => [
|
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 !=
|
179
|
-
cp
|
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
|
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}/#{
|
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?(
|
339
|
-
file
|
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}/#{
|
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}"]
|
@@ -397,6 +404,9 @@ Java extension should be preferred.
|
|
397
404
|
# lib_path
|
398
405
|
lib_path = lib_dir
|
399
406
|
|
407
|
+
# lib_binary_path
|
408
|
+
lib_binary_path = "#{lib_path}/#{File.basename(binary(for_platform))}"
|
409
|
+
|
400
410
|
unless rbconfig_file = config_file["rbconfig-#{for_platform}-#{ruby_ver}"] then
|
401
411
|
warn "no configuration section for specified version of Ruby (rbconfig-#{for_platform}-#{ruby_ver})"
|
402
412
|
return
|
@@ -416,8 +426,21 @@ Java extension should be preferred.
|
|
416
426
|
# genearte fake.rb for different ruby versions
|
417
427
|
file "#{tmp_path}/fake.rb" => [rbconfig_file] do |t|
|
418
428
|
File.open(t.name, 'w') do |f|
|
419
|
-
|
420
|
-
|
429
|
+
# Keep the original RbConfig::CONFIG["ENABLE_SHARED"] to use
|
430
|
+
# the same RubyGems extension directory. See also
|
431
|
+
# Gem::BasicSpecificaion#extenions_dir and
|
432
|
+
# Gem.extension_api_version.
|
433
|
+
#
|
434
|
+
# if RbConfig::CONFIG["ENABLE_SHARED"] == "no"
|
435
|
+
# "extensions/x86_64-linux/2.5.0-static"
|
436
|
+
# else
|
437
|
+
# "extensions/x86_64-linux/2.5.0"
|
438
|
+
# end
|
439
|
+
f.puts("require 'rbconfig'")
|
440
|
+
f.puts("original_enable_shared = RbConfig::CONFIG['ENABLE_SHARED']")
|
441
|
+
f.puts(fake_rb(for_platform, ruby_ver))
|
442
|
+
f.puts(File.read(t.prerequisites.first))
|
443
|
+
f.puts("RbConfig::CONFIG['ENABLE_SHARED'] = original_enable_shared")
|
421
444
|
end
|
422
445
|
end
|
423
446
|
|
@@ -450,12 +473,12 @@ Java extension should be preferred.
|
|
450
473
|
|
451
474
|
# clear lib/binary dependencies and trigger cross platform ones
|
452
475
|
# check if lib/binary is defined (damn bundle versus so versus dll)
|
453
|
-
if Rake::Task.task_defined?(
|
454
|
-
Rake::Task[
|
476
|
+
if Rake::Task.task_defined?(lib_binary_path) then
|
477
|
+
Rake::Task[lib_binary_path].prerequisites.clear
|
455
478
|
end
|
456
479
|
|
457
480
|
# FIXME: targeting multiple platforms copies the file twice
|
458
|
-
file
|
481
|
+
file lib_binary_path => ["copy:#{@name}:#{for_platform}:#{ruby_ver}"]
|
459
482
|
|
460
483
|
# if everything for native task is in place
|
461
484
|
if @gem_spec && @gem_spec.platform == 'ruby' then
|
@@ -53,15 +53,20 @@ module Rake
|
|
53
53
|
# platform usage
|
54
54
|
platf = for_platform || platform
|
55
55
|
|
56
|
+
binary_path = binary(platf)
|
57
|
+
|
56
58
|
# lib_path
|
57
59
|
lib_path = lib_dir
|
58
60
|
|
61
|
+
# lib_binary_path
|
62
|
+
lib_binary_path = "#{lib_path}/#{File.basename(binary_path)}"
|
63
|
+
|
59
64
|
# tmp_path
|
60
65
|
tmp_path = "#{@tmp_dir}/#{platf}/#{@name}"
|
61
66
|
|
62
67
|
# cleanup and clobbering
|
63
68
|
CLEAN.include(tmp_path)
|
64
|
-
CLOBBER.include(
|
69
|
+
CLOBBER.include(lib_binary_path)
|
65
70
|
CLOBBER.include("#{@tmp_dir}")
|
66
71
|
|
67
72
|
# directories we need
|
@@ -70,11 +75,11 @@ module Rake
|
|
70
75
|
|
71
76
|
# copy binary from temporary location to final lib
|
72
77
|
# tmp/extension_name/extension_name.{so,bundle} => lib/
|
73
|
-
task "copy:#{@name}:#{platf}" => [lib_path, "#{tmp_path}/#{
|
74
|
-
install "#{tmp_path}/#{
|
78
|
+
task "copy:#{@name}:#{platf}" => [lib_path, "#{tmp_path}/#{binary_path}"] do
|
79
|
+
install "#{tmp_path}/#{binary_path}", lib_binary_path
|
75
80
|
end
|
76
81
|
|
77
|
-
file "#{tmp_path}/#{
|
82
|
+
file "#{tmp_path}/#{binary_path}" => "#{tmp_path}/.build" do
|
78
83
|
|
79
84
|
class_files = FileList["#{tmp_path}/**/*.class"].
|
80
85
|
gsub("#{tmp_path}/", '')
|
@@ -86,7 +91,7 @@ module Rake
|
|
86
91
|
["-C #{tmp_path}", path]
|
87
92
|
}.flatten
|
88
93
|
|
89
|
-
sh "jar cf #{tmp_path}/#{
|
94
|
+
sh "jar cf #{tmp_path}/#{binary_path} #{args.join(' ')}"
|
90
95
|
end
|
91
96
|
|
92
97
|
file "#{tmp_path}/.build" => [tmp_path] + source_files do
|
@@ -137,7 +142,7 @@ execute the Rake compilation task using the JRuby interpreter.
|
|
137
142
|
# platform matches the indicated one.
|
138
143
|
if platf == RUBY_PLATFORM then
|
139
144
|
# ensure file is always copied
|
140
|
-
file
|
145
|
+
file lib_binary_path => ["copy:#{name}:#{platf}"]
|
141
146
|
|
142
147
|
task "compile:#{@name}" => ["compile:#{@name}:#{platf}"]
|
143
148
|
task "compile" => ["compile:#{platf}"]
|
@@ -184,12 +189,15 @@ execute the Rake compilation task using the JRuby interpreter.
|
|
184
189
|
end
|
185
190
|
end
|
186
191
|
|
192
|
+
# lib_binary_path
|
193
|
+
lib_binary_path = "#{lib_path}/#{File.basename(binary(platform))}"
|
194
|
+
|
187
195
|
# add binaries to the dependency chain
|
188
|
-
task "java:#{@gem_spec.name}" => [
|
196
|
+
task "java:#{@gem_spec.name}" => [lib_binary_path]
|
189
197
|
|
190
198
|
# ensure the extension get copied
|
191
|
-
unless Rake::Task.task_defined?(
|
192
|
-
file
|
199
|
+
unless Rake::Task.task_defined?(lib_binary_path) then
|
200
|
+
file lib_binary_path => ["copy:#{name}:#{platform}"]
|
193
201
|
end
|
194
202
|
|
195
203
|
task 'java' => ["java:#{@gem_spec.name}"]
|
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.
|
4
|
+
version: 1.1.7
|
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:
|
12
|
+
date: 2022-01-03 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.
|
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.
|