From 6edd65a080b156f1ce78fdcf57214c1644a049db Mon Sep 17 00:00:00 2001 From: Eugene Kenny Date: Wed, 24 Apr 2024 12:10:48 +0100 Subject: [PATCH] [Bug #20450] Remove rubyarchdir from bootsnap paths --- lib/bundled_gems.rb | 7 +++++-- tool/test_for_warn_bundled_gems/test.sh | 4 ++++ .../test_warn_bootsnap_rubyarchdir_gem.rb | 11 +++++++++++ 3 files changed, 20 insertions(+), 2 deletions(-) create mode 100644 tool/test_for_warn_bundled_gems/test_warn_bootsnap_rubyarchdir_gem.rb diff --git a/lib/bundled_gems.rb b/lib/bundled_gems.rb index 37ec2d942b..eea70ca19a 100644 --- a/lib/bundled_gems.rb +++ b/lib/bundled_gems.rb @@ -97,8 +97,11 @@ module Gem::BUNDLED_GEMS def self.warning?(name, specs: nil) # name can be a feature name or a file path with String or Pathname feature = File.path(name) - # bootsnap expand `require "csv"` to `require "#{LIBDIR}/csv.rb"` - name = feature.delete_prefix(LIBDIR).chomp(".rb").tr("/", "-") + # bootsnap expands `require "csv"` to `require "#{LIBDIR}/csv.rb"`, + # and `require "syslog"` to `require "#{ARCHDIR}/syslog.so"`. + name = feature.delete_prefix(ARCHDIR) + name.delete_prefix!(LIBDIR) + name.tr!("/", "-") name.sub!(LIBEXT, "") return if specs.include?(name) _t, path = $:.resolve_feature_path(feature) diff --git a/tool/test_for_warn_bundled_gems/test.sh b/tool/test_for_warn_bundled_gems/test.sh index 2404571daf..a14d5bcedc 100755 --- a/tool/test_for_warn_bundled_gems/test.sh +++ b/tool/test_for_warn_bundled_gems/test.sh @@ -32,6 +32,10 @@ echo "* Show warning with bootsnap" ruby test_warn_bootsnap.rb echo +echo "* Show warning with bootsnap for gem with native extension" +ruby test_warn_bootsnap_rubyarchdir_gem.rb +echo + echo "* Show warning with zeitwerk" ruby test_warn_zeitwerk.rb echo diff --git a/tool/test_for_warn_bundled_gems/test_warn_bootsnap_rubyarchdir_gem.rb b/tool/test_for_warn_bundled_gems/test_warn_bootsnap_rubyarchdir_gem.rb new file mode 100644 index 0000000000..477933f6f2 --- /dev/null +++ b/tool/test_for_warn_bundled_gems/test_warn_bootsnap_rubyarchdir_gem.rb @@ -0,0 +1,11 @@ +require "bundler/inline" + +gemfile do + source "https://rubygems.org" + gem "bootsnap", require: false +end + +require 'bootsnap' +Bootsnap.setup(cache_dir: 'tmp/cache') + +require 'syslog'