Merge pull request #10481 from MikeMcQuaid/bootsnap-improvements

bootsnap: various improvements.
This commit is contained in:
Mike McQuaid 2021-02-02 12:58:42 +00:00 committed by GitHub
commit a31d0f85d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
14 changed files with 608 additions and 66 deletions

View File

@ -355,7 +355,7 @@ Layout/LineLength:
' name "', ' name "',
' pkg "', ' pkg "',
' pkgutil: "', ' pkgutil: "',
' sha256 cellar: ', " sha256 cellar: ",
"#{language}", "#{language}",
"#{version.", "#{version.",
' "/Library/Application Support/', ' "/Library/Application Support/',
@ -373,7 +373,6 @@ Sorbet/FalseSigil:
- "/**/{Formula,Casks}/*.rb" - "/**/{Formula,Casks}/*.rb"
- "**/{Formula,Casks}/*.rb" - "**/{Formula,Casks}/*.rb"
- "Homebrew/test/**/Casks/**/*.rb" - "Homebrew/test/**/Casks/**/*.rb"
- "Homebrew/homebrew_bootsnap.rb"
Sorbet/StrictSigil: Sorbet/StrictSigil:
Enabled: true Enabled: true

View File

@ -3,7 +3,7 @@
source "https://rubygems.org" source "https://rubygems.org"
# installed gems (should all be require: false) # installed gems (should all be require: false)
gem "bootsnap", require: false if ENV["HOMEBREW_BOOTSNAP"] gem "bootsnap", require: false
gem "byebug", require: false gem "byebug", require: false
gem "codecov", require: false gem "codecov", require: false
gem "nokogiri", require: false gem "nokogiri", require: false

View File

@ -9,6 +9,8 @@ GEM
zeitwerk (~> 2.3) zeitwerk (~> 2.3)
ast (2.4.2) ast (2.4.2)
bindata (2.4.8) bindata (2.4.8)
bootsnap (1.7.0)
msgpack (~> 1.0)
byebug (11.1.3) byebug (11.1.3)
codecov (0.4.2) codecov (0.4.2)
simplecov (>= 0.15, < 0.22) simplecov (>= 0.15, < 0.22)
@ -46,6 +48,7 @@ GEM
mime-types-data (3.2020.1104) mime-types-data (3.2020.1104)
mini_portile2 (2.5.0) mini_portile2 (2.5.0)
minitest (5.14.3) minitest (5.14.3)
msgpack (1.4.2)
mustache (1.1.1) mustache (1.1.1)
net-http-digest_auth (1.4.1) net-http-digest_auth (1.4.1)
net-http-persistent (4.0.1) net-http-persistent (4.0.1)
@ -169,6 +172,7 @@ PLATFORMS
DEPENDENCIES DEPENDENCIES
activesupport activesupport
bootsnap
byebug byebug
codecov codecov
concurrent-ruby concurrent-ruby

View File

@ -209,6 +209,7 @@ module Homebrew
return if periodic return if periodic
cleanup_portable_ruby cleanup_portable_ruby
cleanup_bootsnap
else else
args.each do |arg| args.each do |arg|
formula = begin formula = begin
@ -399,6 +400,17 @@ module Homebrew
FileUtils.rm_rf portable_rubies_to_remove FileUtils.rm_rf portable_rubies_to_remove
end end
def cleanup_bootsnap
bootsnap = cache/"bootsnap"
return unless bootsnap.exist?
if dry_run?
puts "Would remove: #{bootsnap} (#{bootsnap.abv})"
else
FileUtils.rm_rf bootsnap
end
end
def cleanup_cache_db(rack = nil) def cleanup_cache_db(rack = nil)
FileUtils.rm_rf [ FileUtils.rm_rf [
cache/"desc_cache.json", cache/"desc_cache.json",

View File

@ -39,6 +39,10 @@ module Homebrew
HOMEBREW_BINTRAY_USER: { HOMEBREW_BINTRAY_USER: {
description: "Use this username when accessing the Bintray API (where bottles are stored).", description: "Use this username when accessing the Bintray API (where bottles are stored).",
}, },
HOMEBREW_BOOTSNAP: {
description: "If set, use Bootsnap to speed up repeated `brew` calls.",
boolean: true,
},
HOMEBREW_BOTTLE_DOMAIN: { HOMEBREW_BOTTLE_DOMAIN: {
description: "Use this URL as the download mirror for bottles. " \ description: "Use this URL as the download mirror for bottles. " \
"For example, `HOMEBREW_BOTTLE_DOMAIN=http://localhost:8080` will cause all bottles to " \ "For example, `HOMEBREW_BOTTLE_DOMAIN=http://localhost:8080` will cause all bottles to " \
@ -203,6 +207,10 @@ module Homebrew
"`brew install`, `brew upgrade` or `brew tap`.", "`brew install`, `brew upgrade` or `brew tap`.",
boolean: true, boolean: true,
}, },
HOMEBREW_NO_BOOTSNAP: {
description: "If set, do not use Bootsnap to speed up repeated `brew` calls.",
boolean: true,
},
HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: { HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK: {
description: "If set, fail on the failure of installation from a bottle rather than " \ description: "If set, fail on the failure of installation from a bottle rather than " \
"falling back to building from source.", "falling back to building from source.",

View File

@ -1,35 +1,37 @@
# typed: ignore # typed: false
# frozen_string_literal: true # frozen_string_literal: true
# TODO: make this `typed: true` when HOMEBREW_BOOTSNAP is enabled by if !ENV["HOMEBREW_NO_BOOTSNAP"] &&
# default and/or we vendor bootsnap and the RBI file. 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,
)

View File

@ -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

View File

@ -0,0 +1,8 @@
# DO NOT EDIT MANUALLY
# This is an autogenerated file for types exported from the `bootsnap` gem.
# Please instead update this file by running `tapioca sync`.
# typed: true
# THIS IS AN EMPTY RBI FILE.
# see https://github.com/Shopify/tapioca/blob/master/README.md#manual-gem-requires

View File

@ -0,0 +1,7 @@
# DO NOT EDIT MANUALLY
# This is an autogenerated file for types exported from the `msgpack` gem.
# Please instead update this file by running `tapioca sync`.
# typed: true
Bignum = Integer

View File

@ -532,6 +532,14 @@ class ActiveSupport::CurrentAttributes
def _reset_callbacks(); end def _reset_callbacks(); end
def _run_reset_callbacks(&block); end def _run_reset_callbacks(&block); end
def attributes(); end
def attributes=(attributes); end
def reset(); end
def set(set_attributes); end
end end
class ActiveSupport::CurrentAttributes class ActiveSupport::CurrentAttributes
@ -553,9 +561,17 @@ class ActiveSupport::CurrentAttributes
def self.before_reset(&block); end def self.before_reset(&block); end
def self.clear_all(); end
def self.instance(); end def self.instance(); end
def self.reset(*args, &block); end
def self.reset_all(); end
def self.resets(&block); end def self.resets(&block); end
def self.set(*args, &block); end
end end
module ActiveSupport::Dependencies module ActiveSupport::Dependencies
@ -2690,6 +2706,7 @@ class Addrinfo
end end
class Array class Array
include ::MessagePack::CoreExt
def compact_blank!(); end def compact_blank!(); end
def extract_options!(); end def extract_options!(); end
@ -2794,6 +2811,376 @@ class Bintray
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
end end
module Bootsnap
def bundler?(); end
VERSION = ::T.let(nil, ::T.untyped)
end
module Bootsnap::CompileCache
end
class Bootsnap::CompileCache::Error
end
class Bootsnap::CompileCache::Error
end
module Bootsnap::CompileCache::ISeq
end
module Bootsnap::CompileCache::ISeq::InstructionSequenceMixin
def compile_option=(hash); end
def load_iseq(path); end
end
module Bootsnap::CompileCache::ISeq::InstructionSequenceMixin
end
module Bootsnap::CompileCache::ISeq
def self.cache_dir(); end
def self.cache_dir=(cache_dir); end
def self.compile_option_updated(); end
def self.fetch(path, cache_dir: T.unsafe(nil)); end
def self.input_to_output(_data, _kwargs); end
def self.input_to_storage(_, path); end
def self.install!(cache_dir); end
def self.precompile(path, cache_dir: T.unsafe(nil)); end
def self.storage_to_output(binary, _args); end
end
module Bootsnap::CompileCache::Native
end
module Bootsnap::CompileCache::Native
def self.compile_option_crc32=(compile_option_crc32); end
def self.coverage_running?(); end
def self.fetch(_, _1, _2, _3); end
def self.precompile(_, _1, _2); end
end
class Bootsnap::CompileCache::PermissionError
end
class Bootsnap::CompileCache::PermissionError
end
class Bootsnap::CompileCache::Uncompilable
end
class Bootsnap::CompileCache::Uncompilable
end
module Bootsnap::CompileCache::YAML
end
module Bootsnap::CompileCache::YAML::Patch
def load_file(path, *args); end
end
module Bootsnap::CompileCache::YAML::Patch
end
module Bootsnap::CompileCache::YAML
def self.cache_dir(); end
def self.cache_dir=(cache_dir); end
def self.init!(); end
def self.input_to_output(data, kwargs); end
def self.input_to_storage(contents, _); end
def self.install!(cache_dir); end
def self.msgpack_factory(); end
def self.msgpack_factory=(msgpack_factory); end
def self.precompile(path, cache_dir: T.unsafe(nil)); end
def self.storage_to_output(data, kwargs); end
def self.supported_options(); end
def self.supported_options=(supported_options); end
end
module Bootsnap::CompileCache
def self.permission_error(path); end
def self.setup(cache_dir:, iseq:, yaml:); end
def self.supported?(); end
end
module Bootsnap::ExplicitRequire
ARCHDIR = ::T.let(nil, ::T.untyped)
DLEXT = ::T.let(nil, ::T.untyped)
RUBYLIBDIR = ::T.let(nil, ::T.untyped)
end
module Bootsnap::ExplicitRequire
def self.from_archdir(feature); end
def self.from_rubylibdir(feature); end
def self.from_self(feature); end
def self.with_gems(*gems); end
end
class Bootsnap::InvalidConfiguration
end
class Bootsnap::InvalidConfiguration
end
module Bootsnap::LoadPathCache
CACHED_EXTENSIONS = ::T.let(nil, ::T.untyped)
DLEXT = ::T.let(nil, ::T.untyped)
DLEXT2 = ::T.let(nil, ::T.untyped)
DL_EXTENSIONS = ::T.let(nil, ::T.untyped)
DOT_RB = ::T.let(nil, ::T.untyped)
DOT_SO = ::T.let(nil, ::T.untyped)
ERROR_TAG_IVAR = ::T.let(nil, ::T.untyped)
SLASH = ::T.let(nil, ::T.untyped)
end
class Bootsnap::LoadPathCache::Cache
def absolute_path?(path); end
def find(feature); end
def initialize(store, path_obj, development_mode: T.unsafe(nil)); end
def load_dir(dir); end
def push_paths(sender, *paths); end
def reinitialize(path_obj=T.unsafe(nil)); end
def unshift_paths(sender, *paths); end
AGE_THRESHOLD = ::T.let(nil, ::T.untyped)
BUILTIN_FEATURES = ::T.let(nil, ::T.untyped)
end
class Bootsnap::LoadPathCache::Cache
end
module Bootsnap::LoadPathCache::ChangeObserver
end
module Bootsnap::LoadPathCache::ChangeObserver::ArrayMixin
def <<(entry); end
def []=(*args, &block); end
def clear(*args, &block); end
def collect!(*args, &block); end
def compact!(*args, &block); end
def concat(entries); end
def delete(*args, &block); end
def delete_at(*args, &block); end
def delete_if(*args, &block); end
def fill(*args, &block); end
def flatten!(*args, &block); end
def insert(*args, &block); end
def keep_if(*args, &block); end
def map!(*args, &block); end
def pop(*args, &block); end
def push(*entries); end
def reject!(*args, &block); end
def replace(*args, &block); end
def reverse!(*args, &block); end
def rotate!(*args, &block); end
def select!(*args, &block); end
def shift(*args, &block); end
def shuffle!(*args, &block); end
def slice!(*args, &block); end
def sort!(*args, &block); end
def sort_by!(*args, &block); end
def uniq!(*args); end
def unshift(*entries); end
end
module Bootsnap::LoadPathCache::ChangeObserver::ArrayMixin
end
module Bootsnap::LoadPathCache::ChangeObserver
def self.register(observer, arr); end
end
module Bootsnap::LoadPathCache::CoreExt
end
module Bootsnap::LoadPathCache::CoreExt
def self.make_load_error(path); end
end
class Bootsnap::LoadPathCache::FallbackScan
end
class Bootsnap::LoadPathCache::FallbackScan
end
class Bootsnap::LoadPathCache::LoadedFeaturesIndex
def key?(feature); end
def purge(feature); end
def purge_multi(features); end
def register(short, long=T.unsafe(nil)); end
end
class Bootsnap::LoadPathCache::LoadedFeaturesIndex
end
class Bootsnap::LoadPathCache::Path
def entries_and_dirs(store); end
def expanded_path(); end
def initialize(path); end
def non_directory?(); end
def path(); end
def relative?(); end
def stable?(); end
def volatile?(); end
RUBY_LIBDIR = ::T.let(nil, ::T.untyped)
RUBY_SITEDIR = ::T.let(nil, ::T.untyped)
STABLE = ::T.let(nil, ::T.untyped)
VOLATILE = ::T.let(nil, ::T.untyped)
end
class Bootsnap::LoadPathCache::Path
end
module Bootsnap::LoadPathCache::PathScanner
ALTERNATIVE_NATIVE_EXTENSIONS_PATTERN = ::T.let(nil, ::T.untyped)
BUNDLE_PATH = ::T.let(nil, ::T.untyped)
NORMALIZE_NATIVE_EXTENSIONS = ::T.let(nil, ::T.untyped)
REQUIRABLE_EXTENSIONS = ::T.let(nil, ::T.untyped)
end
module Bootsnap::LoadPathCache::PathScanner
def self.call(path); end
def self.walk(absolute_dir_path, relative_dir_path, &block); end
end
class Bootsnap::LoadPathCache::RealpathCache
def call(*key); end
end
class Bootsnap::LoadPathCache::RealpathCache
end
class Bootsnap::LoadPathCache::ReturnFalse
end
class Bootsnap::LoadPathCache::ReturnFalse
end
class Bootsnap::LoadPathCache::Store
def fetch(key); end
def get(key); end
def initialize(store_path); end
def set(key, value); end
def transaction(); end
end
class Bootsnap::LoadPathCache::Store::NestedTransactionError
end
class Bootsnap::LoadPathCache::Store::NestedTransactionError
end
class Bootsnap::LoadPathCache::Store::SetOutsideTransactionNotAllowed
end
class Bootsnap::LoadPathCache::Store::SetOutsideTransactionNotAllowed
end
class Bootsnap::LoadPathCache::Store
end
module Bootsnap::LoadPathCache
def self.load_path_cache(); end
def self.loaded_features_index(); end
def self.realpath_cache(); end
def self.setup(cache_path:, development_mode:); end
def self.supported?(); end
end
module Bootsnap
extend ::Bootsnap
def self._instrument(event, path); end
def self.default_setup(); end
def self.instrumentation=(callback); end
def self.log!(); end
def self.logger(); end
def self.logger=(logger); end
def self.setup(cache_dir:, development_mode: T.unsafe(nil), load_path_cache: T.unsafe(nil), autoload_paths_cache: T.unsafe(nil), disable_trace: T.unsafe(nil), compile_cache_iseq: T.unsafe(nil), compile_cache_yaml: T.unsafe(nil)); end
end
class BottleSpecification class BottleSpecification
extend ::T::Private::Methods::MethodHooks extend ::T::Private::Methods::MethodHooks
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
@ -5288,6 +5675,15 @@ module Cask::Caskroom
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
end end
class Cask::Cmd::AbstractCommand
include ::Homebrew::Search::Extension
end
class Cask::Cmd::AbstractCommand
extend ::T::Private::Methods::MethodHooks
extend ::T::Private::Methods::SingletonMethodHooks
end
class Cask::Config class Cask::Config
def appdir(); end def appdir(); end
@ -6730,8 +7126,6 @@ end
class Errno::EBADRPC class Errno::EBADRPC
end end
Errno::ECAPMODE = Errno::NOERROR
Errno::EDEADLOCK = Errno::NOERROR Errno::EDEADLOCK = Errno::NOERROR
class Errno::EDEVERR class Errno::EDEVERR
@ -6752,13 +7146,6 @@ end
Errno::EIPSEC = Errno::NOERROR Errno::EIPSEC = Errno::NOERROR
class Errno::ELAST
Errno = ::T.let(nil, ::T.untyped)
end
class Errno::ELAST
end
class Errno::ENEEDAUTH class Errno::ENEEDAUTH
Errno = ::T.let(nil, ::T.untyped) Errno = ::T.let(nil, ::T.untyped)
end end
@ -6780,8 +7167,6 @@ end
class Errno::ENOPOLICY class Errno::ENOPOLICY
end end
Errno::ENOTCAPABLE = Errno::NOERROR
class Errno::ENOTSUP class Errno::ENOTSUP
Errno = ::T.let(nil, ::T.untyped) Errno = ::T.let(nil, ::T.untyped)
end end
@ -6824,7 +7209,12 @@ end
class Errno::EPWROFF class Errno::EPWROFF
end end
Errno::EQFULL = Errno::ELAST class Errno::EQFULL
Errno = ::T.let(nil, ::T.untyped)
end
class Errno::EQFULL
end
class Errno::ERPCMISMATCH class Errno::ERPCMISMATCH
Errno = ::T.let(nil, ::T.untyped) Errno = ::T.let(nil, ::T.untyped)
@ -6956,6 +7346,10 @@ class ExternalPatch
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
end end
class FalseClass
include ::MessagePack::CoreExt
end
class Fiber class Fiber
def transfer(*_); end def transfer(*_); end
end end
@ -7017,6 +7411,10 @@ module FileUtils
extend ::FileUtils::StreamUtils_ extend ::FileUtils::StreamUtils_
end end
class Float
include ::MessagePack::CoreExt
end
module FormulaCellarChecks module FormulaCellarChecks
extend ::T::Private::Methods::MethodHooks extend ::T::Private::Methods::MethodHooks
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
@ -7701,6 +8099,7 @@ module Hardware
end end
class Hash class Hash
include ::MessagePack::CoreExt
def assert_valid_keys(*valid_keys); end def assert_valid_keys(*valid_keys); end
def compact_blank!(); end def compact_blank!(); end
@ -7789,6 +8188,8 @@ module Homebrew::EnvConfig
def self.bintray_user(); end def self.bintray_user(); end
def self.bootsnap?(); end
def self.bottle_domain(); end def self.bottle_domain(); end
def self.brew_git_remote(); end def self.brew_git_remote(); end
@ -7857,6 +8258,8 @@ module Homebrew::EnvConfig
def self.no_auto_update?(); end def self.no_auto_update?(); end
def self.no_bootsnap?(); end
def self.no_bottle_source_fallback?(); end def self.no_bottle_source_fallback?(); end
def self.no_color?(); end def self.no_color?(); end
@ -7947,6 +8350,14 @@ module Homebrew::Livecheck
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
end end
module Homebrew::MissingFormula
extend ::T::Private::Methods::SingletonMethodHooks
end
module Homebrew::Search
include ::Homebrew::Search::Extension
end
module Homebrew::Settings module Homebrew::Settings
extend ::T::Private::Methods::MethodHooks extend ::T::Private::Methods::MethodHooks
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
@ -9234,6 +9645,7 @@ module IRB
end end
class Integer class Integer
include ::MessagePack::CoreExt
def to_bn(); end def to_bn(); end
end end
@ -9302,11 +9714,13 @@ module Kernel
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
def self.at_exit(); end def self.at_exit(); end
def self.autoload(_, _1); end
def self.fork(); end def self.fork(); end
def self.gem(dep, *reqs); end def self.gem(dep, *reqs); end
def self.load(*_); end def self.load(path, wrap=T.unsafe(nil)); end
def self.require(path); end def self.require(path); end
end end
@ -10672,6 +11086,52 @@ end
Markdown = RDiscount Markdown = RDiscount
module MessagePack
DEFAULT_EMPTY_PARAMS = ::T.let(nil, ::T.untyped)
end
class MessagePack::Packer
def write_bin(_); end
def write_bin_header(_); end
end
module MessagePack::Time
Packer = ::T.let(nil, ::T.untyped)
TIME_AT_3_AVAILABLE = ::T.let(nil, ::T.untyped)
Unpacker = ::T.let(nil, ::T.untyped)
end
module MessagePack::Time
end
class MessagePack::Timestamp
def ==(other); end
def initialize(sec, nsec); end
def nsec(); end
def sec(); end
def to_msgpack_ext(); end
TIMESTAMP32_MAX_SEC = ::T.let(nil, ::T.untyped)
TIMESTAMP64_MAX_SEC = ::T.let(nil, ::T.untyped)
TYPE = ::T.let(nil, ::T.untyped)
end
class MessagePack::Timestamp
def self.from_msgpack_ext(data); end
def self.to_msgpack_ext(sec, nsec); end
end
class MessagePack::Unpacker
def feed_reference(_); end
def freeze?(); end
end
class Messages class Messages
extend ::T::Private::Methods::MethodHooks extend ::T::Private::Methods::MethodHooks
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
@ -11570,6 +12030,8 @@ class Module
def anonymous?(); end def anonymous?(); end
def autoload_without_bootsnap(_, _1); end
def context(*a, &b); end def context(*a, &b); end
def deprecate(*method_names); end def deprecate(*method_names); end
@ -12029,6 +12491,7 @@ class Net::WriteTimeout
end end
class NilClass class NilClass
include ::MessagePack::CoreExt
def to_d(); end def to_d(); end
def try(_method_name=T.unsafe(nil), *_); end def try(_method_name=T.unsafe(nil), *_); end
@ -12161,6 +12624,7 @@ class Object
def to_query(key); end def to_query(key); end
def to_yaml(options=T.unsafe(nil)); end def to_yaml(options=T.unsafe(nil)); end
APPLE_GEM_HOME = ::T.let(nil, ::T.untyped)
ARGF = ::T.let(nil, ::T.untyped) ARGF = ::T.let(nil, ::T.untyped)
ARGV = ::T.let(nil, ::T.untyped) ARGV = ::T.let(nil, ::T.untyped)
BUG_REPORTS_URL = ::T.let(nil, ::T.untyped) BUG_REPORTS_URL = ::T.let(nil, ::T.untyped)
@ -12225,6 +12689,8 @@ class Object
RUBY_DESCRIPTION = ::T.let(nil, ::T.untyped) RUBY_DESCRIPTION = ::T.let(nil, ::T.untyped)
RUBY_ENGINE = ::T.let(nil, ::T.untyped) RUBY_ENGINE = ::T.let(nil, ::T.untyped)
RUBY_ENGINE_VERSION = ::T.let(nil, ::T.untyped) RUBY_ENGINE_VERSION = ::T.let(nil, ::T.untyped)
RUBY_FRAMEWORK = ::T.let(nil, ::T.untyped)
RUBY_FRAMEWORK_VERSION = ::T.let(nil, ::T.untyped)
RUBY_PATCHLEVEL = ::T.let(nil, ::T.untyped) RUBY_PATCHLEVEL = ::T.let(nil, ::T.untyped)
RUBY_PATH = ::T.let(nil, ::T.untyped) RUBY_PATH = ::T.let(nil, ::T.untyped)
RUBY_PLATFORM = ::T.let(nil, ::T.untyped) RUBY_PLATFORM = ::T.let(nil, ::T.untyped)
@ -12277,11 +12743,7 @@ class OpenSSL::KDF::KDFError
end end
module OpenSSL::KDF module OpenSSL::KDF
def self.hkdf(*_); end
def self.pbkdf2_hmac(*_); end def self.pbkdf2_hmac(*_); end
def self.scrypt(*_); end
end end
class OpenSSL::OCSP::Request class OpenSSL::OCSP::Request
@ -12290,29 +12752,20 @@ end
OpenSSL::PKCS7::Signer = OpenSSL::PKCS7::SignerInfo OpenSSL::PKCS7::Signer = OpenSSL::PKCS7::SignerInfo
class OpenSSL::PKey::EC
EXPLICIT_CURVE = ::T.let(nil, ::T.untyped)
end
class OpenSSL::PKey::EC::Point class OpenSSL::PKey::EC::Point
def to_octet_string(_); end def to_octet_string(_); end
end end
module OpenSSL::SSL module OpenSSL::SSL
OP_ALLOW_NO_DHE_KEX = ::T.let(nil, ::T.untyped)
OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION = ::T.let(nil, ::T.untyped) OP_ALLOW_UNSAFE_LEGACY_RENEGOTIATION = ::T.let(nil, ::T.untyped)
OP_CRYPTOPRO_TLSEXT_BUG = ::T.let(nil, ::T.untyped) OP_CRYPTOPRO_TLSEXT_BUG = ::T.let(nil, ::T.untyped)
OP_LEGACY_SERVER_CONNECT = ::T.let(nil, ::T.untyped) OP_LEGACY_SERVER_CONNECT = ::T.let(nil, ::T.untyped)
OP_NO_ENCRYPT_THEN_MAC = ::T.let(nil, ::T.untyped)
OP_NO_RENEGOTIATION = ::T.let(nil, ::T.untyped)
OP_NO_TLSv1_3 = ::T.let(nil, ::T.untyped)
OP_SAFARI_ECDHE_ECDSA_BUG = ::T.let(nil, ::T.untyped) OP_SAFARI_ECDHE_ECDSA_BUG = ::T.let(nil, ::T.untyped)
OP_TLSEXT_PADDING = ::T.let(nil, ::T.untyped) OP_TLSEXT_PADDING = ::T.let(nil, ::T.untyped)
SSL2_VERSION = ::T.let(nil, ::T.untyped) SSL2_VERSION = ::T.let(nil, ::T.untyped)
SSL3_VERSION = ::T.let(nil, ::T.untyped) SSL3_VERSION = ::T.let(nil, ::T.untyped)
TLS1_1_VERSION = ::T.let(nil, ::T.untyped) TLS1_1_VERSION = ::T.let(nil, ::T.untyped)
TLS1_2_VERSION = ::T.let(nil, ::T.untyped) TLS1_2_VERSION = ::T.let(nil, ::T.untyped)
TLS1_3_VERSION = ::T.let(nil, ::T.untyped)
TLS1_VERSION = ::T.let(nil, ::T.untyped) TLS1_VERSION = ::T.let(nil, ::T.untyped)
end end
@ -16821,6 +17274,7 @@ module Psych
end end
module Psych module Psych
extend ::Bootsnap::CompileCache::YAML::Patch
def self.add_builtin_type(type_tag, &block); end def self.add_builtin_type(type_tag, &block); end
def self.add_domain_type(domain, type_tag, &block); end def self.add_domain_type(domain, type_tag, &block); end
@ -18824,6 +19278,8 @@ module RSpec::Core::HashImitatable
def to_hash(*args, &block); end def to_hash(*args, &block); end
def to_msgpack(*args, &block); end
def to_plist(*args, &block); end def to_plist(*args, &block); end
def to_proc(*args, &block); end def to_proc(*args, &block); end
@ -26352,6 +26808,8 @@ module RuboCop::AST::CollectionNode
def pluck(*args, &block); end def pluck(*args, &block); end
def to_msgpack(*args, &block); end
def without(*args, &block); end def without(*args, &block); end
end end
@ -27586,6 +28044,10 @@ class RubyVM::AbstractSyntaxTree::Node
def pretty_print_children(q, names=T.unsafe(nil)); end def pretty_print_children(q, names=T.unsafe(nil)); end
end end
class RubyVM::InstructionSequence
extend ::Bootsnap::CompileCache::ISeq::InstructionSequenceMixin
end
module RubyVM::MJIT module RubyVM::MJIT
end end
@ -28475,6 +28937,7 @@ class Socket
IPV6_PATHMTU = ::T.let(nil, ::T.untyped) IPV6_PATHMTU = ::T.let(nil, ::T.untyped)
IPV6_RECVPATHMTU = ::T.let(nil, ::T.untyped) IPV6_RECVPATHMTU = ::T.let(nil, ::T.untyped)
IPV6_USE_MIN_MTU = ::T.let(nil, ::T.untyped) IPV6_USE_MIN_MTU = ::T.let(nil, ::T.untyped)
IP_DONTFRAG = ::T.let(nil, ::T.untyped)
IP_PORTRANGE = ::T.let(nil, ::T.untyped) IP_PORTRANGE = ::T.let(nil, ::T.untyped)
IP_RECVDSTADDR = ::T.let(nil, ::T.untyped) IP_RECVDSTADDR = ::T.let(nil, ::T.untyped)
IP_RECVIF = ::T.let(nil, ::T.untyped) IP_RECVIF = ::T.let(nil, ::T.untyped)
@ -28566,6 +29029,7 @@ module Socket::Constants
IPV6_PATHMTU = ::T.let(nil, ::T.untyped) IPV6_PATHMTU = ::T.let(nil, ::T.untyped)
IPV6_RECVPATHMTU = ::T.let(nil, ::T.untyped) IPV6_RECVPATHMTU = ::T.let(nil, ::T.untyped)
IPV6_USE_MIN_MTU = ::T.let(nil, ::T.untyped) IPV6_USE_MIN_MTU = ::T.let(nil, ::T.untyped)
IP_DONTFRAG = ::T.let(nil, ::T.untyped)
IP_PORTRANGE = ::T.let(nil, ::T.untyped) IP_PORTRANGE = ::T.let(nil, ::T.untyped)
IP_RECVDSTADDR = ::T.let(nil, ::T.untyped) IP_RECVDSTADDR = ::T.let(nil, ::T.untyped)
IP_RECVIF = ::T.let(nil, ::T.untyped) IP_RECVIF = ::T.let(nil, ::T.untyped)
@ -28793,6 +29257,7 @@ class Spoom::Timeline
end end
class String class String
include ::MessagePack::CoreExt
def black(); end def black(); end
def blink(); end def blink(); end
@ -28963,6 +29428,15 @@ module Superenv
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
end end
class Symbol
include ::MessagePack::CoreExt
def to_msgpack_ext(); end
end
class Symbol
def self.from_msgpack_ext(data); end
end
class SystemCommand::Result class SystemCommand::Result
extend ::T::Private::Methods::MethodHooks extend ::T::Private::Methods::MethodHooks
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
@ -29248,6 +29722,10 @@ class TracePoint
def parameters(); end def parameters(); end
end end
class TrueClass
include ::MessagePack::CoreExt
end
module Tty module Tty
extend ::T::Private::Methods::SingletonMethodHooks extend ::T::Private::Methods::SingletonMethodHooks
def self.blue(); end def self.blue(); end

View File

@ -29,12 +29,15 @@ module Utils
error error
end end
def self.safe_fork(&_block) def self.safe_fork
Dir.mktmpdir("homebrew", HOMEBREW_TEMP) do |tmpdir| Dir.mktmpdir("homebrew", HOMEBREW_TEMP) do |tmpdir|
UNIXServer.open("#{tmpdir}/socket") do |server| UNIXServer.open("#{tmpdir}/socket") do |server|
read, write = IO.pipe read, write = IO.pipe
pid = fork do pid = fork do
# bootsnap doesn't like these forked processes
ENV["HOMEBREW_NO_BOOTSNAP"] = "1"
ENV["HOMEBREW_ERROR_PIPE"] = server.path ENV["HOMEBREW_ERROR_PIPE"] = server.path
server.close server.close
read.close read.close
@ -56,7 +59,7 @@ module Utils
write.close write.close
exit! exit!
else # rubocop:disable Layout/ElseAlignment else
exit!(true) exit!(true)
end end

View File

@ -11,8 +11,12 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/zeitwerk-2.4.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/activesupport-6.1.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/activesupport-6.1.1/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ast-2.4.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ast-2.4.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/bindata-2.4.8/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/bindata-2.4.8/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/universal-darwin-20/2.6.0/msgpack-1.4.2"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/msgpack-1.4.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/universal-darwin-20/2.6.0/bootsnap-1.7.0"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/bootsnap-1.7.0/lib"
$:.unshift "#{path}/" $:.unshift "#{path}/"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-14/2.6.0-static/byebug-11.1.3" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/universal-darwin-20/2.6.0/byebug-11.1.3"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/byebug-11.1.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/byebug-11.1.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/docile-1.3.5/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/docile-1.3.5/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/simplecov-html-0.12.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/simplecov-html-0.12.3/lib"
@ -25,12 +29,12 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/highline-2.0.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/commander-4.5.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/commander-4.5.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/connection_pool-2.2.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/connection_pool-2.2.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/diff-lcs-1.4.4/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/diff-lcs-1.4.4/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-14/2.6.0-static/unf_ext-0.0.7.7" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/universal-darwin-20/2.6.0/unf_ext-0.0.7.7"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unf_ext-0.0.7.7/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unf_ext-0.0.7.7/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unf-0.1.4/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/unf-0.1.4/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/domain_name-0.5.20190701/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/domain_name-0.5.20190701/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/elftools-1.1.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/elftools-1.1.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-14/2.6.0-static/hpricot-0.8.6" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/universal-darwin-20/2.6.0/hpricot-0.8.6"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/hpricot-0.8.6/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/hpricot-0.8.6/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/http-cookie-1.0.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/http-cookie-1.0.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/mime-types-data-3.2020.1104/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/mime-types-data-3.2020.1104/lib"
@ -38,7 +42,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/mime-types-3.3.1/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/net-http-digest_auth-1.4.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/net-http-digest_auth-1.4.1/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/net-http-persistent-4.0.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/net-http-persistent-4.0.1/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/mini_portile2-2.5.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/mini_portile2-2.5.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-14/2.6.0-static/racc-1.5.2" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/universal-darwin-20/2.6.0/racc-1.5.2"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/racc-1.5.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/racc-1.5.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/nokogiri-1.11.1-x86_64-darwin/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/nokogiri-1.11.1-x86_64-darwin/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ntlm-http-0.1.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/ntlm-http-0.1.1/lib"
@ -57,7 +61,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/patchelf-1.3.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/plist-3.6.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/plist-3.6.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/pry-0.13.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/pry-0.13.1/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rack-2.2.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rack-2.2.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/x86_64-darwin-14/2.6.0-static/rdiscount-2.2.0.2" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/extensions/universal-darwin-20/2.6.0/rdiscount-2.2.0.2"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rdiscount-2.2.0.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rdiscount-2.2.0.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/regexp_parser-2.0.3/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/regexp_parser-2.0.3/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rexml-3.2.4/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rexml-3.2.4/lib"
@ -70,7 +74,7 @@ $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-3.10.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-github-2.3.1/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-github-2.3.1/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-its-1.3.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-its-1.3.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-retry-0.6.2/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-retry-0.6.2/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-static-0.5.6259-universal-darwin-14/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-static-0.5.6259-universal-darwin-20/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-0.5.6259/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/sorbet-0.5.6259/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-sorbet-1.8.0/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-sorbet-1.8.0/lib"
$:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-wait-0.0.9/lib" $:.unshift "#{path}/../#{ruby_engine}/#{ruby_version}/gems/rspec-wait-0.0.9/lib"

View File

@ -1707,6 +1707,9 @@ example, run `export HOMEBREW_NO_INSECURE_REDIRECT=1` rather than just
- `HOMEBREW_BINTRAY_USER` - `HOMEBREW_BINTRAY_USER`
<br>Use this username when accessing the Bintray API (where bottles are stored). <br>Use this username when accessing the Bintray API (where bottles are stored).
- `HOMEBREW_BOOTSNAP`
<br>If set, use Bootsnap to speed up repeated `brew` calls.
- `HOMEBREW_BOTTLE_DOMAIN` - `HOMEBREW_BOTTLE_DOMAIN`
<br>Use this URL as the download mirror for bottles. For example, `HOMEBREW_BOTTLE_DOMAIN=http://localhost:8080` will cause all bottles to download from the prefix `http://localhost:8080/`. <br>Use this URL as the download mirror for bottles. For example, `HOMEBREW_BOTTLE_DOMAIN=http://localhost:8080` will cause all bottles to download from the prefix `http://localhost:8080/`.
@ -1839,6 +1842,9 @@ example, run `export HOMEBREW_NO_INSECURE_REDIRECT=1` rather than just
- `HOMEBREW_NO_AUTO_UPDATE` - `HOMEBREW_NO_AUTO_UPDATE`
<br>If set, do not automatically update before running `brew install`, `brew upgrade` or `brew tap`. <br>If set, do not automatically update before running `brew install`, `brew upgrade` or `brew tap`.
- `HOMEBREW_NO_BOOTSNAP`
<br>If set, do not use Bootsnap to speed up repeated `brew` calls.
- `HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK` - `HOMEBREW_NO_BOTTLE_SOURCE_FALLBACK`
<br>If set, fail on the failure of installation from a bottle rather than falling back to building from source. <br>If set, fail on the failure of installation from a bottle rather than falling back to building from source.

View File

@ -2376,6 +2376,12 @@ Use this API key when accessing the Bintray API (where bottles are stored)\.
Use this username when accessing the Bintray API (where bottles are stored)\. Use this username when accessing the Bintray API (where bottles are stored)\.
. .
.TP .TP
\fBHOMEBREW_BOOTSNAP\fR
.
.br
If set, use Bootsnap to speed up repeated \fBbrew\fR calls\.
.
.TP
\fBHOMEBREW_BOTTLE_DOMAIN\fR \fBHOMEBREW_BOTTLE_DOMAIN\fR
. .
.br .br
@ -2622,6 +2628,12 @@ If set, do not send analytics\. For more information, see: \fIhttps://docs\.brew
If set, do not automatically update before running \fBbrew install\fR, \fBbrew upgrade\fR or \fBbrew tap\fR\. If set, do not automatically update before running \fBbrew install\fR, \fBbrew upgrade\fR or \fBbrew tap\fR\.
. .
.TP .TP
\fBHOMEBREW_NO_BOOTSNAP\fR
.
.br
If set, do not use Bootsnap to speed up repeated \fBbrew\fR calls\.
.
.TP
\fBHOMEBREW_NO_BOTTLE_SOURCE_FALLBACK\fR \fBHOMEBREW_NO_BOTTLE_SOURCE_FALLBACK\fR
. .
.br .br