homebrew_bootsnap: various improvements.
- Add `HOMEBREW_NO_BOOTSNAP` as well as `HOMEBREW_BOOTSNAP` - Guard the whole file rather than `raise` on inclusion. - Use `HOMEBREW_CACHE` instead of `HOMEBREW_TEMP` - Don't try to use Bootsnap with macOS portable ruby
This commit is contained in:
parent
a1c6d39792
commit
7912b1e043
@ -3,33 +3,37 @@
|
|||||||
|
|
||||||
# TODO: make this `typed: true` when HOMEBREW_BOOTSNAP is enabled by
|
# TODO: make this `typed: true` when HOMEBREW_BOOTSNAP is enabled by
|
||||||
# default and/or we vendor bootsnap and the RBI file.
|
# 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
|
Dir.chdir(HOMEBREW_LIBRARY_PATH) do
|
||||||
require "bootsnap"
|
system "bundle", "install", "--standalone"
|
||||||
rescue LoadError
|
end
|
||||||
raise if ENV["HOMEBREW_BOOTSNAP_RETRY"]
|
|
||||||
|
|
||||||
Dir.chdir(HOMEBREW_LIBRARY_PATH) do
|
ENV["HOMEBREW_BOOTSNAP_RETRY"] = "1"
|
||||||
system "bundle", "install", "--standalone"
|
exec ENV["HOMEBREW_BREW_FILE"], *ARGV
|
||||||
end
|
end
|
||||||
|
|
||||||
ENV["HOMEBREW_BOOTSNAP_RETRY"] = "1"
|
ENV.delete("HOMEBREW_BOOTSNAP_RETRY")
|
||||||
exec ENV["HOMEBREW_BREW_FILE"], *ARGV
|
|
||||||
|
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
|
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,
|
|
||||||
)
|
|
||||||
|
|||||||
@ -8,10 +8,9 @@ HOMEBREW_LIBRARY_PATH = Pathname(__dir__).realpath.freeze
|
|||||||
$LOAD_PATH.push HOMEBREW_LIBRARY_PATH.to_s
|
$LOAD_PATH.push HOMEBREW_LIBRARY_PATH.to_s
|
||||||
|
|
||||||
require "vendor/bundle/bundler/setup"
|
require "vendor/bundle/bundler/setup"
|
||||||
|
require "homebrew_bootsnap"
|
||||||
|
|
||||||
if ENV["HOMEBREW_BOOTSNAP"]
|
unless defined?(Bootsnap)
|
||||||
require "homebrew_bootsnap"
|
|
||||||
else
|
|
||||||
$LOAD_PATH.select! { |d| Pathname(d).directory? }
|
$LOAD_PATH.select! { |d| Pathname(d).directory? }
|
||||||
$LOAD_PATH.uniq!
|
$LOAD_PATH.uniq!
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user