Drop Mavericks support.
Companion to https://github.com/Homebrew/brew/pull/7698. Provide better, `odeprecated` messaging for `depends_on :macos => :mavericks` and otherwise just fix up the code that relied on `:mavericks`.
This commit is contained in:
parent
266b051344
commit
b58fa4ebb1
@ -612,3 +612,12 @@ class ChildProcessError < RuntimeError
|
||||
set_backtrace inner["b"]
|
||||
end
|
||||
end
|
||||
|
||||
class MacOSVersionError < RuntimeError
|
||||
attr_reader :version
|
||||
|
||||
def initialize(version)
|
||||
@version = version
|
||||
super "unknown or unsupported macOS version: #{version.inspect}"
|
||||
end
|
||||
end
|
||||
|
@ -10,10 +10,6 @@ module FormulaCellarChecks
|
||||
end
|
||||
|
||||
return if formula.name&.match?(Version.formula_optionally_versioned_regex(:php))
|
||||
|
||||
return if MacOS.version < :mavericks && formula.name.start_with?("postgresql")
|
||||
return if MacOS.version < :yosemite && formula.name.start_with?("memcached")
|
||||
|
||||
return if formula.keg_only? || !formula.include.directory?
|
||||
|
||||
files = relative_glob(formula.include, "**/*.h")
|
||||
|
@ -30,13 +30,13 @@ module Utils
|
||||
def find_older_compatible_tag(tag)
|
||||
tag_version = begin
|
||||
MacOS::Version.from_symbol(tag)
|
||||
rescue ArgumentError
|
||||
rescue MacOSVersionError
|
||||
return
|
||||
end
|
||||
|
||||
keys.find do |key|
|
||||
MacOS::Version.from_symbol(key) <= tag_version
|
||||
rescue ArgumentError
|
||||
rescue MacOSVersionError
|
||||
false
|
||||
end
|
||||
end
|
||||
|
@ -2327,9 +2327,9 @@ class Formula
|
||||
# prefix "/opt/homebrew" # Optional HOMEBREW_PREFIX in which the bottles were built.
|
||||
# cellar "/opt/homebrew/Cellar" # Optional HOMEBREW_CELLAR in which the bottles were built.
|
||||
# rebuild 1 # Making the old bottle outdated without bumping the version/revision of the formula.
|
||||
# sha256 "4355a46b19d348dc2f57c046f8ef63d4538ebb936000f3c9ee954a27460dd865" => :el_capitan
|
||||
# sha256 "53c234e5e8472b6ac51c1ae1cab3fe06fad053beb8ebfd8977b010655bfdd3c3" => :yosemite
|
||||
# sha256 "1121cfccd5913f0a63fec40a6ffd44ea64f9dc135c66634ba001d10bcf4302a2" => :mavericks
|
||||
# sha256 "ef65c759c5097a36323fa9c77756468649e8d1980a3a4e05695c05e39568967c" => :catalina
|
||||
# sha256 "28f4090610946a4eb207df102d841de23ced0d06ba31cb79e040d883906dcd4f" => :mojave
|
||||
# sha256 "91dd0caca9bd3f38c439d5a7b6f68440c4274945615fae035ff0a369264b8a2f" => :high_sierra
|
||||
# end</pre>
|
||||
#
|
||||
# Only formulae where the upstream URL breaks or moves frequently, require compiling
|
||||
@ -2452,7 +2452,7 @@ class Formula
|
||||
# <pre># Optional and enforce that boost is built with `--with-c++11`.
|
||||
# depends_on "boost" => [:optional, "with-c++11"]</pre>
|
||||
# <pre># If a dependency is only needed in certain cases:
|
||||
# depends_on "sqlite" if MacOS.version == :mavericks
|
||||
# depends_on "sqlite" if MacOS.version == :catalina
|
||||
# depends_on :xcode # If the formula really needs full Xcode.
|
||||
# depends_on :macos => :mojave # Needs at least macOS Mojave (10.14).
|
||||
# depends_on :x11 => :optional # X11/XQuartz components.
|
||||
|
@ -12,13 +12,10 @@ module OS
|
||||
sierra: "10.12",
|
||||
el_capitan: "10.11",
|
||||
yosemite: "10.10",
|
||||
mavericks: "10.9",
|
||||
}.freeze
|
||||
|
||||
def self.from_symbol(sym)
|
||||
str = SYMBOLS.fetch(sym) do
|
||||
raise ArgumentError, "unknown version #{sym.inspect}"
|
||||
end
|
||||
str = SYMBOLS.fetch(sym) { raise MacOSVersionError, sym }
|
||||
new(str)
|
||||
end
|
||||
|
||||
|
@ -287,13 +287,7 @@ module OS
|
||||
end
|
||||
|
||||
def detect_clang_version
|
||||
path = if MacOS.version >= :mavericks
|
||||
"#{PKG_PATH}/usr/bin/clang"
|
||||
else
|
||||
"/usr/bin/clang"
|
||||
end
|
||||
|
||||
version_output = Utils.popen_read("#{path} --version")
|
||||
version_output = Utils.popen_read("#{PKG_PATH}/usr/bin/clang --version")
|
||||
version_output[/clang-(\d+\.\d+\.\d+(\.\d+)?)/, 1]
|
||||
end
|
||||
|
||||
|
@ -8,10 +8,16 @@ class MacOSRequirement < Requirement
|
||||
attr_reader :comparator, :version
|
||||
|
||||
def initialize(tags = [], comparator: ">=")
|
||||
if comparator == "==" && tags.first.respond_to?(:map)
|
||||
@version = tags.shift.map { |s| MacOS::Version.from_symbol(s) }
|
||||
else
|
||||
@version = MacOS::Version.from_symbol(tags.shift) unless tags.empty?
|
||||
begin
|
||||
@version = if comparator == "==" && tags.first.respond_to?(:map)
|
||||
tags.shift.map { |s| MacOS::Version.from_symbol(s) }
|
||||
else
|
||||
MacOS::Version.from_symbol(tags.shift) unless tags.empty?
|
||||
end
|
||||
rescue MacOSVersionError => e
|
||||
raise if e.version != :mavericks
|
||||
|
||||
odeprecated "depends_on :macos => :mavericks"
|
||||
end
|
||||
|
||||
@comparator = comparator
|
||||
|
@ -386,7 +386,7 @@ class BottleSpecification
|
||||
# Sort non-MacOS tags below MacOS tags.
|
||||
|
||||
OS::Mac::Version.from_symbol tag
|
||||
rescue ArgumentError
|
||||
rescue MacOSVersionError
|
||||
"0.#{tag}"
|
||||
end
|
||||
checksums = {}
|
||||
|
@ -46,7 +46,7 @@ describe SoftwareSpec do
|
||||
it "raises an error if passing invalid OS versions" do
|
||||
expect {
|
||||
spec.uses_from_macos("foo", since: :bar)
|
||||
}.to raise_error(ArgumentError, "unknown version :bar")
|
||||
}.to raise_error(MacOSVersionError, "unknown or unsupported macOS version: :bar")
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -4,13 +4,13 @@ require "version"
|
||||
require "os/mac/version"
|
||||
|
||||
describe OS::Mac::Version do
|
||||
subject { described_class.new("10.10") }
|
||||
subject { described_class.new("10.14") }
|
||||
|
||||
specify "comparison with Symbol" do
|
||||
expect(subject).to be > :mavericks
|
||||
expect(subject).to be == :yosemite
|
||||
expect(subject).to be === :yosemite # rubocop:disable Style/CaseEquality
|
||||
expect(subject).to be < :el_capitan
|
||||
expect(subject).to be > :high_sierra
|
||||
expect(subject).to be == :mojave
|
||||
expect(subject).to be === :mojave # rubocop:disable Style/CaseEquality
|
||||
expect(subject).to be < :catalina
|
||||
end
|
||||
|
||||
specify "comparison with Fixnum" do
|
||||
@ -19,28 +19,28 @@ describe OS::Mac::Version do
|
||||
end
|
||||
|
||||
specify "comparison with Float" do
|
||||
expect(subject).to be > 10.9
|
||||
expect(subject).to be < 10.11
|
||||
expect(subject).to be > 10.13
|
||||
expect(subject).to be < 10.15
|
||||
end
|
||||
|
||||
specify "comparison with String" do
|
||||
expect(subject).to be > "10.9"
|
||||
expect(subject).to be == "10.10"
|
||||
expect(subject).to be === "10.10" # rubocop:disable Style/CaseEquality
|
||||
expect(subject).to be < "10.11"
|
||||
expect(subject).to be > "10.3"
|
||||
expect(subject).to be == "10.14"
|
||||
expect(subject).to be === "10.14" # rubocop:disable Style/CaseEquality
|
||||
expect(subject).to be < "10.15"
|
||||
end
|
||||
|
||||
specify "comparison with Version" do
|
||||
expect(subject).to be > Version.create("10.9")
|
||||
expect(subject).to be == Version.create("10.10")
|
||||
expect(subject).to be === Version.create("10.10") # rubocop:disable Style/CaseEquality
|
||||
expect(subject).to be < Version.create("10.11")
|
||||
expect(subject).to be > Version.create("10.3")
|
||||
expect(subject).to be == Version.create("10.14")
|
||||
expect(subject).to be === Version.create("10.14") # rubocop:disable Style/CaseEquality
|
||||
expect(subject).to be < Version.create("10.15")
|
||||
end
|
||||
|
||||
specify "#from_symbol" do
|
||||
expect(described_class.from_symbol(:yosemite)).to eq(subject)
|
||||
expect(described_class.from_symbol(:mojave)).to eq(subject)
|
||||
expect { described_class.from_symbol(:foo) }
|
||||
.to raise_error(ArgumentError)
|
||||
.to raise_error(MacOSVersionError, "unknown or unsupported macOS version: :foo")
|
||||
end
|
||||
|
||||
specify "#pretty_name" do
|
||||
|
@ -16,8 +16,8 @@ describe MacOSRequirement do
|
||||
end
|
||||
|
||||
it "supports maximum versions", :needs_macos do
|
||||
requirement = described_class.new([:mavericks], comparator: "<=")
|
||||
expect(requirement.satisfied?).to eq MacOS.version <= :mavericks
|
||||
requirement = described_class.new([:catalina], comparator: "<=")
|
||||
expect(requirement.satisfied?).to eq MacOS.version <= :catalina
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -1,12 +1,14 @@
|
||||
cask 'invalid-depends-on-macos-conflicting-forms' do
|
||||
version '1.2.3'
|
||||
sha256 '67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94'
|
||||
# frozen_string_literal: true
|
||||
|
||||
cask "invalid-depends-on-macos-conflicting-forms" do
|
||||
version "1.2.3"
|
||||
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
|
||||
|
||||
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
|
||||
homepage 'https://brew.sh/invalid-depends-on-macos-conflicting-forms'
|
||||
homepage "https://brew.sh/invalid-depends-on-macos-conflicting-forms"
|
||||
|
||||
depends_on macos: :yosemite
|
||||
depends_on macos: '>= :mavericks'
|
||||
depends_on macos: :catalina
|
||||
depends_on macos: ">= :mojave"
|
||||
|
||||
app 'Caffeine.app'
|
||||
app "Caffeine.app"
|
||||
end
|
||||
|
@ -1,12 +1,14 @@
|
||||
cask 'with-depends-on-macos-array' do
|
||||
version '1.2.3'
|
||||
sha256 '67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94'
|
||||
# frozen_string_literal: true
|
||||
|
||||
cask "with-depends-on-macos-array" do
|
||||
version "1.2.3"
|
||||
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
|
||||
|
||||
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
|
||||
homepage 'https://brew.sh/with-depends-on-macos-array'
|
||||
homepage "https://brew.sh/with-depends-on-macos-array"
|
||||
|
||||
# since all OS releases are included, this should always pass
|
||||
depends_on macos: [:mavericks, :sierra, MacOS.version.to_sym]
|
||||
depends_on macos: [:catalina, MacOS.version.to_sym]
|
||||
|
||||
app 'Caffeine.app'
|
||||
app "Caffeine.app"
|
||||
end
|
||||
|
@ -1,11 +1,13 @@
|
||||
cask 'with-depends-on-macos-comparison' do
|
||||
version '1.2.3'
|
||||
sha256 '67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94'
|
||||
# frozen_string_literal: true
|
||||
|
||||
cask "with-depends-on-macos-comparison" do
|
||||
version "1.2.3"
|
||||
sha256 "67cdb8a02803ef37fdbf7e0be205863172e41a561ca446cd84f0d7ab35a99d94"
|
||||
|
||||
url "file://#{TEST_FIXTURE_DIR}/cask/caffeine.zip"
|
||||
homepage 'https://brew.sh/with-depends-on-macos-comparison'
|
||||
homepage "https://brew.sh/with-depends-on-macos-comparison"
|
||||
|
||||
depends_on macos: '>= :mavericks'
|
||||
depends_on macos: ">= :catalina"
|
||||
|
||||
app 'Caffeine.app'
|
||||
app "Caffeine.app"
|
||||
end
|
||||
|
@ -6,7 +6,7 @@ cask 'with-depends-on-macos-failure' do
|
||||
homepage 'https://brew.sh/with-depends-on-macos-failure'
|
||||
|
||||
# guarantee a mismatched release
|
||||
depends_on macos: MacOS.version == :mavericks ? :sierra : :mavericks
|
||||
depends_on macos: MacOS.version == :catalina ? :mojave : :catalina
|
||||
|
||||
app 'Caffeine.app'
|
||||
end
|
||||
|
@ -4,9 +4,9 @@ require "utils/bottles"
|
||||
|
||||
describe Utils::Bottles do
|
||||
describe "#tag", :needs_macos do
|
||||
it "returns :mavericks on Mavericks" do
|
||||
allow(MacOS).to receive(:version).and_return(MacOS::Version.new("10.9"))
|
||||
expect(described_class.tag).to eq(:mavericks)
|
||||
it "returns :catalina on Catalina" do
|
||||
allow(MacOS).to receive(:version).and_return(MacOS::Version.new("10.15"))
|
||||
expect(described_class.tag).to eq(:catalina)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -5,9 +5,9 @@ require "utils/bottles"
|
||||
describe Utils::Bottles::Collector do
|
||||
describe "#fetch_checksum_for" do
|
||||
it "returns passed tags" do
|
||||
subject[:yosemite] = "foo"
|
||||
subject[:el_captain] = "bar"
|
||||
expect(subject.fetch_checksum_for(:el_captain)).to eq(["bar", :el_captain])
|
||||
subject[:mojave] = "foo"
|
||||
subject[:catalina] = "bar"
|
||||
expect(subject.fetch_checksum_for(:catalina)).to eq(["bar", :catalina])
|
||||
end
|
||||
|
||||
it "returns nil if empty" do
|
||||
@ -15,31 +15,31 @@ describe Utils::Bottles::Collector do
|
||||
end
|
||||
|
||||
it "returns nil when there is no match" do
|
||||
subject[:yosemite] = "foo"
|
||||
subject[:catalina] = "foo"
|
||||
expect(subject.fetch_checksum_for(:foo)).to be nil
|
||||
end
|
||||
|
||||
it "uses older tags when needed", :needs_macos do
|
||||
subject[:mavericks] = "foo"
|
||||
expect(subject.send(:find_matching_tag, :mavericks)).to eq(:mavericks)
|
||||
expect(subject.send(:find_matching_tag, :yosemite)).to eq(:mavericks)
|
||||
subject[:mojave] = "foo"
|
||||
expect(subject.send(:find_matching_tag, :mojave)).to eq(:mojave)
|
||||
expect(subject.send(:find_matching_tag, :catalina)).to eq(:mojave)
|
||||
end
|
||||
|
||||
it "does not use older tags when requested not to", :needs_macos do
|
||||
allow(Homebrew::EnvConfig).to receive(:developer?).and_return(true)
|
||||
allow(Homebrew::EnvConfig).to receive(:skip_or_later_bottles?).and_return(true)
|
||||
allow(OS::Mac).to receive(:prerelease?).and_return(true)
|
||||
subject[:mavericks] = "foo"
|
||||
expect(subject.send(:find_matching_tag, :mavericks)).to eq(:mavericks)
|
||||
expect(subject.send(:find_matching_tag, :yosemite)).to be_nil
|
||||
subject[:mojave] = "foo"
|
||||
expect(subject.send(:find_matching_tag, :mojave)).to eq(:mojave)
|
||||
expect(subject.send(:find_matching_tag, :catalina)).to be_nil
|
||||
end
|
||||
|
||||
it "ignores HOMEBREW_SKIP_OR_LATER_BOTTLES on release versions", :needs_macos do
|
||||
allow(Homebrew::EnvConfig).to receive(:skip_or_later_bottles?).and_return(true)
|
||||
allow(OS::Mac).to receive(:prerelease?).and_return(false)
|
||||
subject[:mavericks] = "foo"
|
||||
expect(subject.send(:find_matching_tag, :mavericks)).to eq(:mavericks)
|
||||
expect(subject.send(:find_matching_tag, :yosemite)).to eq(:mavericks)
|
||||
subject[:mojave] = "foo"
|
||||
expect(subject.send(:find_matching_tag, :mojave)).to eq(:mojave)
|
||||
expect(subject.send(:find_matching_tag, :catalina)).to eq(:mojave)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -11,7 +11,7 @@ A *formula* is a package definition written in Ruby. It can be created with `bre
|
||||
| **opt prefix** | A symlink to the active version of a **Keg** | `/usr/local/opt/foo ` |
|
||||
| **Cellar** | All **Kegs** are installed here | `/usr/local/Cellar` |
|
||||
| **Tap** | A Git repository of **Formulae** and/or commands | `/usr/local/Homebrew/Library/Taps/homebrew/homebrew-core` |
|
||||
| **Bottle** | Pre-built **Keg** used instead of building from source | `qt-4.8.4.mavericks.bottle.tar.gz` |
|
||||
| **Bottle** | Pre-built **Keg** used instead of building from source | `qt-4.8.4.catalina.bottle.tar.gz` |
|
||||
| **Cask** | An [extension of Homebrew](https://github.com/Homebrew/homebrew-cask) to install macOS native apps | `/Applications/MacDown.app/Contents/SharedSupport/bin/macdown` |
|
||||
| **Brew Bundle**| An [extension of Homebrew](https://github.com/Homebrew/homebrew-bundle) to describe dependencies | `brew 'myservice', restart_service: true` |
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user