Skip to content
This repository has been archived by the owner on Dec 4, 2023. It is now read-only.

Commit

Permalink
Revamp Travis configuration files for automatic deployment
Browse files Browse the repository at this point in the history
We now build against three darwin versions (Sierra, High Sierra and Catalina)
to match Ruby core. We continue to build against 3 ruby versions on Linux, but
we only deploy the ruby 2.7 builds (since they should all be identical).
  • Loading branch information
nightpool committed Jul 17, 2020
1 parent 43902f0 commit 818cc4e
Show file tree
Hide file tree
Showing 4 changed files with 36 additions and 47 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -15,4 +15,5 @@ lib/libv8/VERSION
/release/**/.scaleway
/vendor/.gclient
/vendor/.gclient_entries
/vendor/.cipd
/vendor/v8/
18 changes: 11 additions & 7 deletions .travis.yml
Expand Up @@ -7,10 +7,12 @@ rvm:
- 2.5
matrix:
include:
- rvm: 2.6
os: osx
osx_image: xcode9.4.1
fast_finish: true
- os: osx
osx_image: xcode12
- os: osx
osx_image: xcode11.3
- os: osx
osx_image: xcode10.1
addons:
apt:
packages:
Expand All @@ -25,19 +27,21 @@ before_install:
- if [ "$TRAVIS_OS_NAME" == "osx" -a "$TRAVIS_RUBY_VERSION" != "system" ]; then gem update bundler; fi
script:
- git submodule update --init
- bundle exec rake spec binary --trace
- bundle exec rake spec binary osx_varients --trace
deploy:
provider: releases
file: $(git ls-files -o pkg | head -1)
file_glob: true
file: pkg/*.gem
api_key:
secure: OMCBceg89uRnU+FIPAPbeOK2pISvV4Cz62r9iTRIGXQCOOXX8M40i77/3DmtkMtc9FEuNyAu1+CH886PL2WtZZPK4CmEU3HuqXz1a5VsCI+zcAZL1tevKvblXOVQ3MG+B/SZRC3rEzGwjk4027WtzCCGoGCLUu4TFJP05+/8XN4=
skip_cleanup: true
on:
tags: true
# condition: $TRAVIS_OS_NAME = osx
rvm: '2.7' # Only deploy 1 of each platform
cache:
bundler: true
notifications:
recipients:
- cowboyd@thefrontside.net
- bordjukov@gmail.com
- nightpool@cybre.space
3 changes: 0 additions & 3 deletions README.md
Expand Up @@ -26,9 +26,6 @@ platforms.
* x86_64-darwin-19
* x86_64-darwin-18
* x86_64-darwin-17
* x86_64-darwin-16
* x86_64-darwin-15
* x86_64-darwin-14
* x86_64-linux
* x86-linux

Expand Down
61 changes: 24 additions & 37 deletions Rakefile
Expand Up @@ -20,9 +20,20 @@ DISTRIBUTIONS = [
module Helpers
module_function
def binary_gemspec(platform = Gem::Platform.local)
gemspec = eval(File.read 'libv8.gemspec')
gemspec.platform = platform
gemspec
eval(File.read 'libv8.gemspec').tap do |gemspec|
gemspec.platform = platform
gemspec.extensions.clear

# We don't need most things for the binary
gemspec.files = []
gemspec.files += ['lib/libv8.rb', 'lib/libv8/version.rb']
gemspec.files += ['ext/libv8/location.rb', 'ext/libv8/paths.rb']
gemspec.files += ['ext/libv8/.location.yml']

# V8
gemspec.files += Dir['vendor/v8/include/**/*.h']
gemspec.files += Dir['vendor/v8/out.gn/**/*.a']
end
end

def binary_gem_name(platform = Gem::Platform.local)
Expand All @@ -37,29 +48,14 @@ end

desc "build a binary gem #{Helpers.binary_gem_name}"
task :binary => :compile do
gemspec = Helpers.binary_gemspec
gemspec.extensions.clear

# We don't need most things for the binary
gemspec.files = []
gemspec.files += ['lib/libv8.rb', 'lib/libv8/version.rb']
gemspec.files += ['ext/libv8/location.rb', 'ext/libv8/paths.rb']
gemspec.files += ['ext/libv8/.location.yml']
require 'rubygems/package'

# V8
gemspec.files += Dir['vendor/v8/include/**/*.h']
gemspec.files += Dir['vendor/v8/out.gn/**/*.a']
gemspec = Helpers.binary_gemspec

FileUtils.chmod 0644, gemspec.files
FileUtils.mkdir_p 'pkg'

package = if Gem::VERSION < '2.0.0'
Gem::Builder.new(gemspec).build
else
require 'rubygems/package'
Gem::Package.build gemspec
end

package = Gem::Package.build gemspec
FileUtils.mv package, 'pkg'
end

Expand Down Expand Up @@ -110,22 +106,13 @@ end
task :default => [:compile, :spec]
task :build => [:clean]

task :repack, [:gemfile, :new_arch] do |t, args|
dir = Dir::mktmpdir

begin
sh "gem unpack #{args[:gemfile]} --target=#{dir}"
sh "gem spec #{args[:gemfile]} --ruby > #{dir}/repack.gemspec"
Dir.chdir(dir) do
sh "sed -iorig 's/^ s.platform = .*$/ s.platform = \"#{args[:new_arch]}\".freeze/' repack.gemspec"
Dir.chdir(Dir.glob("libv8-*/").first) do
sh 'mv ../repack.gemspec ./'
sh 'gem build repack.gemspec'
end
end
desc 'Generate OSX varient platform names'
task :osx_varients => [:compile] do
gemspec = binary_gemspec
return unless gemspec.platform == 'osx'

sh "mv #{dir}/*/*.gem ./pkg/"
ensure
FileUtils.remove_entry_secure dir
%w(x86_64 universal).each do |cpu|
gemspec.platform.cpu = cpu
Gem::Package.build gemspec
end
end

0 comments on commit 818cc4e

Please sign in to comment.