homebrew_bootsnap: fail more gracefully.

If `bootsnap` isn't available then print out an error message rather
than failing all of Homebrew.
This commit is contained in:
Mike McQuaid 2021-02-05 15:43:55 +00:00
parent 28fb4ff643
commit cdbc1d43a6
No known key found for this signature in database
GPG Key ID: 48A898132FD8EE70

View File

@ -14,25 +14,29 @@ if !ENV["HOMEBREW_NO_BOOTSNAP"] &&
begin begin
require "bootsnap" require "bootsnap"
rescue LoadError rescue LoadError
raise if ENV["HOMEBREW_BOOTSNAP_RETRY"] unless ENV["HOMEBREW_BOOTSNAP_RETRY"]
require "utils/gems"
Homebrew.install_bundler_gems!
require "utils/gems" ENV["HOMEBREW_BOOTSNAP_RETRY"] = "1"
Homebrew.install_bundler_gems! exec ENV["HOMEBREW_BREW_FILE"], *ARGV
end
ENV["HOMEBREW_BOOTSNAP_RETRY"] = "1"
exec ENV["HOMEBREW_BREW_FILE"], *ARGV
end end
ENV.delete("HOMEBREW_BOOTSNAP_RETRY") ENV.delete("HOMEBREW_BOOTSNAP_RETRY")
cache = ENV["HOMEBREW_CACHE"] || ENV["HOMEBREW_DEFAULT_CACHE"] if defined?(Bootsnap)
# Can't use .blank? here because we haven't required active_support yet. cache = ENV["HOMEBREW_CACHE"] || ENV["HOMEBREW_DEFAULT_CACHE"]
raise "Needs HOMEBREW_CACHE or HOMEBREW_DEFAULT_CACHE!" if cache.nil? || cache.empty? # rubocop:disable Rails/Blank # 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( Bootsnap.setup(
cache_dir: cache, cache_dir: cache,
load_path_cache: true, load_path_cache: true,
compile_cache_iseq: true, compile_cache_iseq: true,
compile_cache_yaml: true, compile_cache_yaml: true,
) )
else
$stderr.puts "Error: HOMEBREW_BOOTSNAP could not `require \"bootsnap\"`!\n\n"
end
end end