rake-compiler 0.9.4 → 0.9.5

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d86422ea8e6f06022d2fd7e29b4733f90797246e
4
- data.tar.gz: e82204ee926ce75345943ab08dd5cfe4908ba72e
3
+ metadata.gz: 27afa23965c11369d4a99dfb0bff5050e481a184
4
+ data.tar.gz: 2a7b657c3e7d72e18521f1104a2bf13eca469062
5
5
  SHA512:
6
- metadata.gz: 902c6c4a62d86b44174ec90c36cfa644b715ad7e65575c629a2cd056634c3eea0714f65e83987ef50c62ebcb066169ff2e0428a23e849648030b9ebfe542f056
7
- data.tar.gz: 00f6496d251ba859103f2aded902662bd77ec98fa043ef5591fece0f4cbe56a4a6503a568ff753e0af4fe9e80c4d78b729333dbdb46e08d6158edcc74dafe4a7
6
+ metadata.gz: 63d63315f3b86beca6b95293f84aaab057d4bb35658e0b62db7269eeb46fffdfc1d999003a3346f9ff495fc28abd91cd465adc573fcbb0b807c5ba7478ce519d
7
+ data.tar.gz: b19295ad94ad980d2b2046558c376657e4b5f7bdeb811c0eb5638aba76148519d3aa5decf80394e64076edfa3ae93f00c20052e000f8008f8629aaaf4ced3a0f
@@ -1,3 +1,9 @@
1
+ === 0.9.5 / 2015-01-03
2
+
3
+ * Enhancements
4
+ * Support adding bundled files in cross_compiling block.
5
+ Closes #100 [Patch by Aaron Stone]
6
+
1
7
  === 0.9.4 / 2014-12-28
2
8
 
3
9
  * Notes:
@@ -390,7 +390,7 @@ So, what if I show you some examples?
390
390
  Check our wiki with links to the proper rake files used by many developers and
391
391
  projects and how they use rake-compiler.
392
392
 
393
- http://github.com/luislavena/rake-compiler/wiki/projects-using-rake-compiler
393
+ http://github.com/rake-compiler/rake-compiler/wiki/projects-using-rake-compiler
394
394
 
395
395
  == Future
396
396
 
@@ -399,11 +399,10 @@ during the development of it! (and contributions too!)
399
399
 
400
400
  You can find more information about rake-compiler:
401
401
 
402
- * GitHub: https://github.com/luislavena/rake-compiler
403
- * Issues: https://github.com/luislavena/rake-compiler/issues
404
- * Blog: http://blog.mmediasys.com
402
+ * GitHub: https://github.com/rake-compiler/rake-compiler
403
+ * Issues: https://github.com/rake-compiler/rake-compiler/issues
405
404
  * Docs: http://rubydoc.info/gems/rake-compiler
406
- * Wiki: https://github.com/luislavena/rake-compiler/wiki
405
+ * Wiki: https://github.com/rake-compiler/rake-compiler/wiki
407
406
 
408
407
  == Disclaimer
409
408
 
@@ -87,6 +87,26 @@ Rerun `rake` under MRI Ruby 1.8.x/1.9.x to cross/native compile.
87
87
  end
88
88
 
89
89
  private
90
+ # copy other gem files to staging directory
91
+ def define_staging_file_tasks(files, lib_path, stage_path, platf, ruby_ver)
92
+ files.each do |gem_file|
93
+ # ignore directories and the binary extension
94
+ next if File.directory?(gem_file) || gem_file == "#{lib_path}/#{binary(platf)}"
95
+ stage_file = "#{stage_path}/#{gem_file}"
96
+
97
+ # copy each file from base to stage directory
98
+ unless Rake::Task.task_defined?(stage_file) then
99
+ directory File.dirname(stage_file)
100
+ file stage_file => [File.dirname(stage_file), gem_file] do
101
+ cp gem_file, stage_file
102
+ end
103
+ end
104
+
105
+ # append each file to the copy task
106
+ task "copy:#{@name}:#{platf}:#{ruby_ver}" => [stage_file]
107
+ end
108
+ end
109
+
90
110
  def define_compile_tasks(for_platform = nil, ruby_ver = RUBY_VERSION)
91
111
  # platform usage
92
112
  platf = for_platform || platform
@@ -120,24 +140,7 @@ Rerun `rake` under MRI Ruby 1.8.x/1.9.x to cross/native compile.
120
140
  end
121
141
 
122
142
  # copy other gem files to staging directory
123
- if @gem_spec
124
- @gem_spec.files.each do |gem_file|
125
- # ignore directories and the binary extension
126
- next if File.directory?(gem_file) || gem_file == "#{lib_path}/#{binary(platf)}"
127
- stage_file = "#{stage_path}/#{gem_file}"
128
-
129
- # copy each file from base to stage directory
130
- unless Rake::Task.task_defined?(stage_file) then
131
- directory File.dirname(stage_file)
132
- file stage_file => [File.dirname(stage_file), gem_file] do
133
- cp gem_file, stage_file
134
- end
135
- end
136
-
137
- # append each file to the copy task
138
- task "copy:#{@name}:#{platf}:#{ruby_ver}" => [stage_file]
139
- end
140
- end
143
+ define_staging_file_tasks(@gem_spec.files, lib_path, stage_path, platf, ruby_ver) if @gem_spec
141
144
 
142
145
  # binary in temporary folder depends on makefile and source files
143
146
  # tmp/extension_name/extension_name.{so,bundle}
@@ -253,9 +256,7 @@ Java extension should be preferred.
253
256
  spec.files += ext_files
254
257
 
255
258
  # expose gem specification for customization
256
- if callback
257
- callback.call(spec)
258
- end
259
+ callback.call(spec) if callback
259
260
 
260
261
  # Generate a package for this gem
261
262
  pkg = Gem::PackageTask.new(spec) do |pkg|
@@ -266,6 +267,9 @@ Java extension should be preferred.
266
267
  pkg.package_files.clear
267
268
  end
268
269
 
270
+ # copy other gem files to staging directory if added by the callback
271
+ define_staging_file_tasks(spec.files, lib_path, stage_path, platf, ruby_ver)
272
+
269
273
  # Copy from staging directory to gem package directory.
270
274
  # This is derived from the code of Gem::PackageTask
271
275
  # but uses stage_path as source directory.
@@ -338,6 +338,36 @@ describe Rake::ExtensionTask do
338
338
  }.should_not raise_error
339
339
  end
340
340
 
341
+ it 'should generate additional rake tasks if files are added when cross compiling' do
342
+ config = mock(Hash)
343
+ config.stub!(:[]).and_return('/rubies/1.9.1/rbconfig.rb')
344
+ YAML.stub!(:load_file).and_return(config)
345
+
346
+ # Use a real spec instead of a mock because define_native_tasks dups and
347
+ # calls methods on Gem::Specification, which is more than mock can do.
348
+ spec = Gem::Specification.new do |s|
349
+ s.name = 'my_gem'
350
+ s.platform = Gem::Platform::RUBY
351
+ end
352
+
353
+ # Gem::PackageTask calls Rake::PackageTask which sets Gem.configuration.verbose,
354
+ # which initializes Gem::ConfigFile,
355
+ # which gets mad if it cannot find `sysconfdir`/gemrc
356
+ Gem.stub_chain(:configuration, :verbose=).and_return(true)
357
+
358
+ ENV['RUBY_CC_VERSION'] = '1.9.1'
359
+ Rake::ExtensionTask.new('extension_one', spec) do |ext|
360
+ ext.cross_compile = true
361
+ ext.cross_platform = 'universal-unknown'
362
+ ext.cross_compiling do |gem_spec|
363
+ gem_spec.files << 'somedir/somefile'
364
+ end
365
+ end
366
+ Rake::Task['native:my_gem:universal-unknown'].execute
367
+ Rake::Task.should have_defined("tmp/universal-unknown/stage/somedir")
368
+ Rake::Task.should have_defined("tmp/universal-unknown/stage/somedir/somefile")
369
+ end
370
+
341
371
  it 'should allow usage of RUBY_CC_VERSION to indicate a different version of ruby' do
342
372
  config = mock(Hash)
343
373
  config.should_receive(:[]).with("rbconfig-i386-mingw32-1.9.1").and_return('/rubies/1.9.1/rbconfig.rb')
@@ -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 = "0.9.4"
6
+ s.version = "0.9.5"
7
7
  s.platform = Gem::Platform::RUBY
8
8
 
9
9
  # description and details
@@ -4,6 +4,6 @@ rescue LoadError => e
4
4
  warn "RSpec gem is required, please install it (gem install rspec)."
5
5
  end
6
6
 
7
- # if defined?(RSpec::Core::RakeTask)
8
- # RSpec::Core::RakeTask.new(:spec)
9
- # end
7
+ if defined?(RSpec::Core::RakeTask)
8
+ RSpec::Core::RakeTask.new(:spec)
9
+ end
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: 0.9.4
4
+ version: 0.9.5
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: 2014-12-28 00:00:00.000000000 Z
12
+ date: 2015-01-03 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake