From d7e226e74f5c10d64732e1ba16e80a1f55165359 Mon Sep 17 00:00:00 2001 From: Mark Lee <rust.ruby@lazymalevolence.com> Date: Sun, 9 Apr 2017 23:13:47 -0700 Subject: [PATCH] Add support for prebuilt static tarballs --- lib/thermite/config.rb | 11 ++++++++++- test/lib/thermite/config_test.rb | 33 ++++++++++++++++++++++++++++---- 2 files changed, 39 insertions(+), 5 deletions(-) diff --git a/lib/thermite/config.rb b/lib/thermite/config.rb index e6c8408..7104bbc 100644 --- a/lib/thermite/config.rb +++ b/lib/thermite/config.rb @@ -130,7 +130,9 @@ def shared_library # package `version`. # def tarball_filename(version) - "#{library_name}-#{version}-#{ruby_version}-#{target_os}-#{target_arch}.tar.gz" + static = static_extension? ? '-static' : '' + + "#{library_name}-#{version}-#{ruby_version}-#{target_os}-#{target_arch}#{static}.tar.gz" end # @@ -268,6 +270,13 @@ def dynamic_linker_flags @dynamic_linker_flags ||= RbConfig::CONFIG['DLDFLAGS'].strip end + # + # Whether to use a statically linked extension. + # + def static_extension? + ENV.key?('RUBY_STATIC') || RbConfig::CONFIG['ENABLE_SHARED'] == 'no' + end + private def dlext diff --git a/test/lib/thermite/config_test.rb b/test/lib/thermite/config_test.rb index a45c1c5..425ae6f 100644 --- a/test/lib/thermite/config_test.rb +++ b/test/lib/thermite/config_test.rb @@ -99,13 +99,15 @@ def test_cargo_shared_library_windows end def test_tarball_filename - config.stubs(:library_name).returns('foobar') - config.stubs(:ruby_version).returns('ruby12') - config.stubs(:target_os).returns('c64') - config.stubs(:target_arch).returns('z80') + stub_tarball_filename_params(false) assert_equal 'foobar-0.1.2-ruby12-c64-z80.tar.gz', config.tarball_filename('0.1.2') end + def test_tarball_filename_with_static_extension + stub_tarball_filename_params(true) + assert_equal 'foobar-0.1.2-ruby12-c64-z80-static.tar.gz', config.tarball_filename('0.1.2') + end + def test_default_ruby_toplevel_dir FileUtils.stubs(:pwd).returns('/tmp/foobar') assert_equal '/tmp/foobar', config.ruby_toplevel_dir @@ -194,6 +196,21 @@ def test_toml_config assert_equal expected, config(cargo_project_path: fixtures_path('config')).toml_config end + def test_static_extension_sans_env_var + ENV.stubs(:key?).with('RUBY_STATIC').returns(false) + RbConfig::CONFIG.stubs(:[]).with('ENABLE_SHARED').returns('yes') + refute config.static_extension? + + RbConfig::CONFIG.stubs(:[]).with('ENABLE_SHARED').returns('no') + assert config.static_extension? + end + + def test_static_extension_with_env_var + ENV.stubs(:key?).with('RUBY_STATIC').returns(true) + RbConfig::CONFIG.stubs(:[]).with('ENABLE_SHARED').returns('yes') + assert config.static_extension? + end + private def config(options = {}) @@ -203,5 +220,13 @@ def config(options = {}) def described_class Thermite::Config end + + def stub_tarball_filename_params(static_extension) + config.stubs(:library_name).returns('foobar') + config.stubs(:ruby_version).returns('ruby12') + config.stubs(:target_os).returns('c64') + config.stubs(:target_arch).returns('z80') + config.stubs(:static_extension?).returns(static_extension) + end end end