From 620ef3b8ebabd5d6fc2e73e20b0f62159795c9cf Mon Sep 17 00:00:00 2001 From: Alexande B Date: Fri, 24 Mar 2023 21:41:19 +0100 Subject: [PATCH] #17 build native extesion independent of ruby version --- .gitignore | 6 ++++-- Rakefile | 14 +++++++++++--- lib/extract_ttc.rb | 7 +------ 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/.gitignore b/.gitignore index 8756e0d..8aa9991 100644 --- a/.gitignore +++ b/.gitignore @@ -8,8 +8,10 @@ /spec/reports/ /tmp/ /Gemfile.lock -**/*.so -**/*.o + +/lib/*.so +/lib/*.bundle +/ext/*.o # remote file cache .rubocop-* diff --git a/Rakefile b/Rakefile index 9f38b52..37ecc94 100644 --- a/Rakefile +++ b/Rakefile @@ -20,7 +20,9 @@ rescue LoadError end # -- Allow rake-compiler-dock configuration without dev. dependencies -R_CC_V = "RUBY_CC_VERSION=3.1.0:3.0.0:2.7.0".freeze +# Keep only one version in R_CC_V because libstripttc doesn depende on libruby +# we don't need different variation per each minor version of ruby +R_CC_V = "RUBY_CC_VERSION=2.7.0".freeze bundler_ver = ENV["BUNDLER_VER"] || "2.3.22" task default: :spec @@ -28,8 +30,14 @@ task spec: :compile spec = Gem::Specification.load("extract_ttc.gemspec") -ext_thru_rc_dock = %w[x86_64-linux aarch64-linux] + - %w[x64-mingw32 x64-mingw-ucrt x86_64-darwin arm64-darwin] +ext_thru_rc_dock = %w[ + x86_64-linux + aarch64-linux + x64-mingw32 + x64-mingw-ucrt + x86_64-darwin + arm64-darwin +] ext_thru_musl_cc = %w[x86_64-linux-musl aarch64-linux-musl] diff --git a/lib/extract_ttc.rb b/lib/extract_ttc.rb index f400c7a..6c4efec 100644 --- a/lib/extract_ttc.rb +++ b/lib/extract_ttc.rb @@ -16,13 +16,8 @@ class UnknownResultError < Error; end extend FFI::Library # NOTE: ffi doesn't support bundles out of box https://github.com/ffi/ffi/issues/42#issuecomment-750031554 # NOTE: rake-compiler doesn't support dylib generation https://github.com/rake-compiler/rake-compiler/issues/183 - lib_subdir = RUBY_VERSION.split(".").first(2).join(".") macos_binary = "stripttc.bundle" - lib_name = if File.exist?( - File.join(File.dirname(__FILE__), lib_subdir, macos_binary), - ) - File.join(lib_subdir, macos_binary) - elsif File.exist?(File.join(File.dirname(__FILE__), macos_binary)) + lib_name = if File.exist?(File.join(File.dirname(__FILE__), macos_binary)) macos_binary else "stripttc.so"