rake-compiler 1.0.2 → 1.0.3

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
  SHA1:
3
- metadata.gz: 03252eb82e9f149d8b0595c6d4d706b57b12162b
4
- data.tar.gz: d044f1b61816c1e7a46bc0591969b553cff2bfee
3
+ metadata.gz: 4f72eedd0e2aa8b6e09dff6eaf2a4b5d64b3b47d
4
+ data.tar.gz: ccdcaf324ce4011c959c278cd04a3552d4ca2156
5
5
  SHA512:
6
- metadata.gz: ffd3beb651811d3f616652dbd952f85f029d30ced44e5dfa4f7a8de06844617602a19558600cc07f956d0e0694b6855ac8976c02763d58ee3e222e54997c0e84
7
- data.tar.gz: a443ea8df5261473b0058e69d3047771ff8b8c4f53349cfb77292684be046c829e9dfc5f65a340dbbdff3d8c328247c2c37da04a5963991446710459f4625678
6
+ metadata.gz: c2c14d6ef462ae69a1b80b7239da013fe9d3c7e80af0582df6bb09f1f1d0327acda0edbccab15881a158cc17a8b3c3baf8ca9988f56e5c370f85279ecda482de
7
+ data.tar.gz: 7a72083b3c95e41af61f5552ce39fbca484db1383e171b45d87577a72084be67999911b550747a59d04f5211ba9f3bdac4c06deb357a7800dfcc6ebb66ddc6ef
@@ -1,3 +1,9 @@
1
+ === 1.0.3 / 2016-12-02
2
+
3
+ * Enhancements:
4
+ * Support specifying required Ruby versions.
5
+ #137 [Patch by Lars Kanis]
6
+
1
7
  === 1.0.2 / 2016-11-13
2
8
 
3
9
  * Bugfixes:
@@ -25,6 +25,7 @@ module Rake
25
25
  @cross_compiling = nil
26
26
  @no_native = false
27
27
  @config_includes = []
28
+ @ruby_versions_per_platform = Hash.new([])
28
29
  end
29
30
 
30
31
  def cross_platform
@@ -253,6 +254,13 @@ Java extension should be preferred.
253
254
  # adjust to specified platform
254
255
  spec.platform = Gem::Platform.new(platf)
255
256
 
257
+ # set ruby version constraints
258
+ cross_rubies = @ruby_versions_per_platform[platf]
259
+ spec.required_ruby_version = [
260
+ ">= #{version_ary2str( cross_rubies.min[0,2] )}",
261
+ "< #{version_ary2str( cross_rubies.max[0,2].succ )}"
262
+ ]
263
+
256
264
  # clear the extensions defined in the specs
257
265
  spec.extensions.clear
258
266
 
@@ -346,6 +354,9 @@ Java extension should be preferred.
346
354
  @lib_dir = "#{@lib_dir}/#{$1}"
347
355
  end
348
356
 
357
+ # Update cross compiled platform/version combinations
358
+ @ruby_versions_per_platform[for_platform] << version_str2ary(version)
359
+
349
360
  define_cross_platform_tasks_with_version(for_platform, version)
350
361
 
351
362
  # restore lib_dir
@@ -497,6 +508,14 @@ Java extension should be preferred.
497
508
  [*@cross_platform].map { |p| "native:#{p}" }
498
509
  end
499
510
 
511
+ def version_str2ary(version_string)
512
+ version_string[/\A[^-]+/].split(".").map(&:to_i).pack("C*")
513
+ end
514
+
515
+ def version_ary2str(version_ary)
516
+ version_ary.unpack("C*").join(".")
517
+ end
518
+
500
519
  def fake_rb(platform, version)
501
520
  <<-FAKE_RB
502
521
  # Pre-load resolver library before faking, in order to avoid error
@@ -454,6 +454,46 @@ describe Rake::ExtensionTask do
454
454
  end
455
455
  end
456
456
 
457
+ it "should set required_ruby_version from RUBY_CC_VERSION" do
458
+ platforms = ["x86-mingw32", "x64-mingw32"]
459
+ ruby_cc_versions = ["2.1.10", "2.2.6", "2.3.3"]
460
+ ENV["RUBY_CC_VERSION"] = ruby_cc_versions.join(":")
461
+ config = mock(Hash)
462
+ ruby_cc_versions.each do |ruby_cc_version|
463
+ platforms.each do |platform|
464
+ config.stub!(:[]).
465
+ with("rbconfig-#{platform}-#{ruby_cc_version}").
466
+ and_return("/rubies/#{ruby_cc_version}/rbconfig.rb")
467
+ end
468
+ end
469
+ YAML.stub!(:load_file).and_return(config)
470
+
471
+ Gem.stub_chain(:configuration, :verbose=).and_return(true)
472
+
473
+ spec = Gem::Specification.new do |s|
474
+ s.name = 'my_gem'
475
+ s.platform = Gem::Platform::RUBY
476
+ end
477
+
478
+ cross_specs = []
479
+ Rake::ExtensionTask.new("extension_one", spec) do |ext|
480
+ ext.cross_platform = platforms
481
+ ext.cross_compile = true
482
+ ext.cross_compiling do |cross_spec|
483
+ cross_specs << cross_spec
484
+ end
485
+ end
486
+ platforms.each do |platform|
487
+ Rake::Task["native:my_gem:#{platform}"].execute
488
+ end
489
+
490
+ expected_required_ruby_versions = [
491
+ Gem::Requirement.new([">= 2.1", "< 2.4"]),
492
+ Gem::Requirement.new([">= 2.1", "< 2.4"]),
493
+ ]
494
+ cross_specs.collect(&:required_ruby_version).should == expected_required_ruby_versions
495
+ end
496
+
457
497
  after :each do
458
498
  ENV.delete('RUBY_CC_VERSION')
459
499
  end
@@ -3,7 +3,7 @@ require 'rubygems/package_task'
3
3
  GEM_SPEC = Gem::Specification.new do |s|
4
4
  # basic information
5
5
  s.name = "rake-compiler"
6
- s.version = "1.0.2"
6
+ s.version = "1.0.3"
7
7
  s.platform = Gem::Platform::RUBY
8
8
 
9
9
  # description and details
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.0.2
4
+ version: 1.0.3
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: 2016-11-13 00:00:00.000000000 Z
12
+ date: 2016-12-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -134,7 +134,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
134
134
  version: 1.8.23
135
135
  requirements: []
136
136
  rubyforge_project: rake-compiler
137
- rubygems_version: 2.5.1
137
+ rubygems_version: 2.5.2
138
138
  signing_key:
139
139
  specification_version: 4
140
140
  summary: Rake-based Ruby Extension (C, Java) task generator.