11require 'bundler/setup'
22require 'rspec/core/rake_task'
33require 'tmpdir'
4+ require 'rubygems/package'
45
56Bundler ::GemHelper . install_tasks
67RSpec ::Core ::RakeTask . new :spec
@@ -20,9 +21,20 @@ DISTRIBUTIONS = [
2021module Helpers
2122 module_function
2223 def binary_gemspec ( platform = Gem ::Platform . local )
23- gemspec = eval ( File . read 'libv8.gemspec' )
24- gemspec . platform = platform
25- gemspec
24+ eval ( File . read 'libv8.gemspec' ) . tap do |gemspec |
25+ gemspec . platform = platform
26+ gemspec . extensions . clear
27+
28+ # We don't need most things for the binary
29+ gemspec . files = [ ]
30+ gemspec . files += [ 'lib/libv8.rb' , 'lib/libv8/version.rb' ]
31+ gemspec . files += [ 'ext/libv8/location.rb' , 'ext/libv8/paths.rb' ]
32+ gemspec . files += [ 'ext/libv8/.location.yml' ]
33+
34+ # V8
35+ gemspec . files += Dir [ 'vendor/v8/include/**/*.h' ]
36+ gemspec . files += Dir [ 'vendor/v8/out.gn/**/*.a' ]
37+ end
2638 end
2739
2840 def binary_gem_name ( platform = Gem ::Platform . local )
3850desc "build a binary gem #{ Helpers . binary_gem_name } "
3951task :binary => :compile do
4052 gemspec = Helpers . binary_gemspec
41- gemspec . extensions . clear
42-
43- # We don't need most things for the binary
44- gemspec . files = [ ]
45- gemspec . files += [ 'lib/libv8.rb' , 'lib/libv8/version.rb' ]
46- gemspec . files += [ 'ext/libv8/location.rb' , 'ext/libv8/paths.rb' ]
47- gemspec . files += [ 'ext/libv8/.location.yml' ]
48-
49- # V8
50- gemspec . files += Dir [ 'vendor/v8/include/**/*.h' ]
51- gemspec . files += Dir [ 'vendor/v8/out.gn/**/*.a' ]
5253
5354 FileUtils . chmod 0644 , gemspec . files
5455 FileUtils . mkdir_p 'pkg'
5556
56- package = if Gem ::VERSION < '2.0.0'
57- Gem ::Builder . new ( gemspec ) . build
58- else
59- require 'rubygems/package'
60- Gem ::Package . build gemspec
61- end
62-
57+ package = Gem ::Package . build gemspec
6358 FileUtils . mv package , 'pkg'
6459end
6560
@@ -110,22 +105,19 @@ end
110105task :default => [ :compile , :spec ]
111106task :build => [ :clean ]
112107
113- task :repack , [ :gemfile , :new_arch ] do |t , args |
114- dir = Dir ::mktmpdir
115-
116- begin
117- sh "gem unpack #{ args [ :gemfile ] } --target=#{ dir } "
118- sh "gem spec #{ args [ :gemfile ] } --ruby > #{ dir } /repack.gemspec"
119- Dir . chdir ( dir ) do
120- sh "sed -iorig 's/^ s.platform = .*$/ s.platform = \" #{ args [ :new_arch ] } \" .freeze/' repack.gemspec"
121- Dir . chdir ( Dir . glob ( "libv8-*/" ) . first ) do
122- sh 'mv ../repack.gemspec ./'
123- sh 'gem build repack.gemspec'
124- end
125- end
108+ desc 'Generate OSX varient platform names. Requires `compile` to already have been run.'
109+ task :osx_varients do
110+ gemspec = Helpers . binary_gemspec
111+ next unless gemspec . platform . os == 'osx'
112+
113+ %w( x86_64 universal ) . each do |cpu |
114+ platform = gemspec . platform . dup
115+ next unless platform . cpu != cpu
116+
117+ platform . cpu = cpu
118+ gemspec . platform = platform
126119
127- sh "mv #{ dir } /*/*.gem ./pkg/"
128- ensure
129- FileUtils . remove_entry_secure dir
120+ package = Gem ::Package . build gemspec
121+ FileUtils . mv package , 'pkg'
130122 end
131123end
0 commit comments