diff --git a/Library/Homebrew/homebrew_bootsnap.rb b/Library/Homebrew/homebrew_bootsnap.rb index fff14b8d54..c79d11fec6 100644 --- a/Library/Homebrew/homebrew_bootsnap.rb +++ b/Library/Homebrew/homebrew_bootsnap.rb @@ -3,33 +3,37 @@ # TODO: make this `typed: true` when HOMEBREW_BOOTSNAP is enabled by # default and/or we vendor bootsnap and the RBI file. +if !ENV["HOMEBREW_NO_BOOTSNAP"] && + ENV["HOMEBREW_BOOTSNAP"] && + # portable ruby doesn't play nice with bootsnap + !ENV["HOMEBREW_FORCE_VENDOR_RUBY"] && + (!ENV["HOMEBREW_MACOS_VERSION"] || ENV["HOMEBREW_MACOS_SYSTEM_RUBY_NEW_ENOUGH"]) -raise "Needs HOMEBREW_BOOTSNAP!" unless ENV["HOMEBREW_BOOTSNAP"] + require "rubygems" -require "rubygems" + begin + require "bootsnap" + rescue LoadError + raise if ENV["HOMEBREW_BOOTSNAP_RETRY"] -begin - require "bootsnap" -rescue LoadError - raise if ENV["HOMEBREW_BOOTSNAP_RETRY"] + Dir.chdir(HOMEBREW_LIBRARY_PATH) do + system "bundle", "install", "--standalone" + end - Dir.chdir(HOMEBREW_LIBRARY_PATH) do - system "bundle", "install", "--standalone" + ENV["HOMEBREW_BOOTSNAP_RETRY"] = "1" + exec ENV["HOMEBREW_BREW_FILE"], *ARGV end - ENV["HOMEBREW_BOOTSNAP_RETRY"] = "1" - exec ENV["HOMEBREW_BREW_FILE"], *ARGV + ENV.delete("HOMEBREW_BOOTSNAP_RETRY") + + cache = ENV["HOMEBREW_CACHE"] || ENV["HOMEBREW_DEFAULT_CACHE"] + # Can't use .blank? here because we haven't required active_support yet. + raise "Needs HOMEBREW_CACHE or HOMEBREW_DEFAULT_CACHE!" if cache.nil? || cache.empty? # rubocop:disable Rails/Blank + + Bootsnap.setup( + cache_dir: cache, + load_path_cache: true, + compile_cache_iseq: true, + compile_cache_yaml: true, + ) end - -ENV.delete("HOMEBREW_BOOTSNAP_RETRY") - -tmp = ENV["HOMEBREW_TEMP"] || ENV["HOMEBREW_DEFAULT_TEMP"] -raise "Needs HOMEBREW_TEMP or HOMEBREW_DEFAULT_TEMP!" unless tmp - -Bootsnap.setup( - cache_dir: "#{tmp}/homebrew-bootsnap", - development_mode: false, # TODO: use ENV["HOMEBREW_DEVELOPER"]?, - load_path_cache: true, - compile_cache_iseq: true, - compile_cache_yaml: true, -) diff --git a/Library/Homebrew/load_path.rb b/Library/Homebrew/load_path.rb index 9745b7348f..10aa74784c 100644 --- a/Library/Homebrew/load_path.rb +++ b/Library/Homebrew/load_path.rb @@ -8,10 +8,9 @@ HOMEBREW_LIBRARY_PATH = Pathname(__dir__).realpath.freeze $LOAD_PATH.push HOMEBREW_LIBRARY_PATH.to_s require "vendor/bundle/bundler/setup" +require "homebrew_bootsnap" -if ENV["HOMEBREW_BOOTSNAP"] - require "homebrew_bootsnap" -else +unless defined?(Bootsnap) $LOAD_PATH.select! { |d| Pathname(d).directory? } $LOAD_PATH.uniq! end