From 6417332a3a8f60507e0997c8b0ea10be51ebe156 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Tue, 24 Jul 2018 09:20:50 +0100 Subject: [PATCH] Change Mojave bottle behaviour Rather than relying on a `HOMEBREW_FORCE_BOTTLE` variable (which ends up doing silly things like forcing bottle usage even when options are provided) instead handle this at the `or_later` bottle detection level so on prerelease versions of macOS any bottle looks like an `or_later` bottle (unless various environment variables are set). Fixes issues noted in: https://github.com/Homebrew/brew/pull/4520#issuecomment-407229605 --- Library/Homebrew/brew.sh | 8 -------- Library/Homebrew/extend/ARGV.rb | 3 +-- Library/Homebrew/extend/os/mac/utils/bottles.rb | 12 ++++++++++++ Library/Homebrew/manpages/brew.1.md.erb | 6 ------ docs/Manpage.md | 6 ------ manpages/brew.1 | 4 ---- 6 files changed, 13 insertions(+), 26 deletions(-) diff --git a/Library/Homebrew/brew.sh b/Library/Homebrew/brew.sh index a0671cd944..d60da9db99 100644 --- a/Library/Homebrew/brew.sh +++ b/Library/Homebrew/brew.sh @@ -262,14 +262,6 @@ then # Don't allow non-developers to customise Ruby warnings. unset HOMEBREW_RUBY_WARNINGS - - # Default non-developers to bottles on prerelease versions of macOS - # in default prefix. - if [[ "$HOMEBREW_PREFIX" = "/usr/local" && - "$HOMEBREW_MACOS_VERSION_NUMERIC" -ge "101400" ]] - then - export HOMEBREW_FORCE_BOTTLE="1" - fi fi if [[ -z "$HOMEBREW_RUBY_WARNINGS" ]] diff --git a/Library/Homebrew/extend/ARGV.rb b/Library/Homebrew/extend/ARGV.rb index b626c3e59c..3385ff5a00 100644 --- a/Library/Homebrew/extend/ARGV.rb +++ b/Library/Homebrew/extend/ARGV.rb @@ -262,8 +262,7 @@ module HomebrewArgvExtension end def force_bottle? - return false if ENV["HOMEBREW_NO_FORCE_BOTTLE"] - include?("--force-bottle") || !ENV["HOMEBREW_FORCE_BOTTLE"].nil? + include?("--force-bottle") end def fetch_head? diff --git a/Library/Homebrew/extend/os/mac/utils/bottles.rb b/Library/Homebrew/extend/os/mac/utils/bottles.rb index 80d6afe78a..4344adb8dc 100644 --- a/Library/Homebrew/extend/os/mac/utils/bottles.rb +++ b/Library/Homebrew/extend/os/mac/utils/bottles.rb @@ -54,9 +54,21 @@ module Utils MacOS::Version.from_symbol(later_tag) <= tag_version elsif ARGV.force_bottle? true + # Allow prerelease versions to act as if all bottles are `_or_later` + # so that they don't need to wait for us to bottle everything for the + # new release. + elsif install_older_prerelease_bottles? + true end end end + + def install_older_prerelease_bottles? + return false unless OS::Mac.prerelease? + return true if ENV["HOMEBREW_INSTALL_OLDER_PRERELEASE_BOTTLES"] + return false if ENV["HOMEBREW_NO_INSTALL_OLDER_PRERELEASE_BOTTLES"] + !ARGV.homebrew_developer? + end end end end diff --git a/Library/Homebrew/manpages/brew.1.md.erb b/Library/Homebrew/manpages/brew.1.md.erb index 2c25995d41..902d6bde5b 100644 --- a/Library/Homebrew/manpages/brew.1.md.erb +++ b/Library/Homebrew/manpages/brew.1.md.erb @@ -170,12 +170,6 @@ Note that environment variables must have a value set to be detected. For exampl directories. TextMate can handle this correctly in project mode, but many editors will do strange things in this case. - * `HOMEBREW_FORCE_BOTTLE`: - If set, Homebrew will install from a bottle if it exists for the - current or newest version of macOS, even if it would not normally be used - for installation. Please do not file issues if you encounter errors when - using this environment variable. - * `HOMEBREW_FORCE_BREWED_CURL`: If set, Homebrew will use a Homebrew-installed `curl` rather than the system version. diff --git a/docs/Manpage.md b/docs/Manpage.md index 8b79152b3a..6455b3a47f 100644 --- a/docs/Manpage.md +++ b/docs/Manpage.md @@ -1170,12 +1170,6 @@ Note that environment variables must have a value set to be detected. For exampl directories. TextMate can handle this correctly in project mode, but many editors will do strange things in this case. - * `HOMEBREW_FORCE_BOTTLE`: - If set, Homebrew will install from a bottle if it exists for the - current or newest version of macOS, even if it would not normally be used - for installation. Please do not file issues if you encounter errors when - using this environment variable. - * `HOMEBREW_FORCE_BREWED_CURL`: If set, Homebrew will use a Homebrew-installed `curl` rather than the system version. diff --git a/manpages/brew.1 b/manpages/brew.1 index b13753248b..8bddceea9c 100644 --- a/manpages/brew.1 +++ b/manpages/brew.1 @@ -1112,10 +1112,6 @@ If set, Homebrew will use this editor when editing a single formula, or several \fINote:\fR \fBbrew edit\fR will open all of Homebrew as discontinuous files and directories\. TextMate can handle this correctly in project mode, but many editors will do strange things in this case\. . .TP -\fBHOMEBREW_FORCE_BOTTLE\fR -If set, Homebrew will install from a bottle if it exists for the current or newest version of macOS, even if it would not normally be used for installation\. Please do not file issues if you encounter errors when using this environment variable\. -. -.TP \fBHOMEBREW_FORCE_BREWED_CURL\fR If set, Homebrew will use a Homebrew\-installed \fBcurl\fR rather than the system version\. .