rake-compiler 0.9.4 → 0.9.5

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: 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