Merge pull request #19983 from Homebrew/audit-rosetta-skipping
cask/audit: skip audit_rosetta on Intel-only casks & OSes
This commit is contained in:
commit
8f3315bff5
@ -606,7 +606,10 @@ module Cask
|
|||||||
def audit_rosetta
|
def audit_rosetta
|
||||||
return if (url = cask.url).nil?
|
return if (url = cask.url).nil?
|
||||||
return unless online?
|
return unless online?
|
||||||
|
# Rosetta 2 is only for ARM-capable macOS versions, which are Big Sur (11.x) and later
|
||||||
return if Homebrew::SimulateSystem.current_arch != :arm
|
return if Homebrew::SimulateSystem.current_arch != :arm
|
||||||
|
return if MacOSVersion::SYMBOLS.fetch(Homebrew::SimulateSystem.current_os, "10") < "11"
|
||||||
|
return if cask.depends_on.macos&.maximum_version.to_s < "11"
|
||||||
|
|
||||||
odebug "Auditing Rosetta 2 requirement"
|
odebug "Auditing Rosetta 2 requirement"
|
||||||
|
|
||||||
@ -640,7 +643,7 @@ module Cask
|
|||||||
# binary stanza can contain shell scripts, so we just continue if lipo fails.
|
# binary stanza can contain shell scripts, so we just continue if lipo fails.
|
||||||
next unless result.success?
|
next unless result.success?
|
||||||
|
|
||||||
odebug result.merged_output
|
odebug "Architectures: #{result.merged_output}"
|
||||||
|
|
||||||
unless /arm64|x86_64/.match?(result.merged_output)
|
unless /arm64|x86_64/.match?(result.merged_output)
|
||||||
add_error "Artifacts architecture is no longer supported by macOS!",
|
add_error "Artifacts architecture is no longer supported by macOS!",
|
||||||
@ -652,7 +655,7 @@ module Cask
|
|||||||
mentions_rosetta = cask.caveats.include?("requires Rosetta 2")
|
mentions_rosetta = cask.caveats.include?("requires Rosetta 2")
|
||||||
|
|
||||||
if supports_arm && mentions_rosetta
|
if supports_arm && mentions_rosetta
|
||||||
add_error "Artifacts does not require Rosetta 2 but the caveats say otherwise!",
|
add_error "Artifacts do not require Rosetta 2 but the caveats say otherwise!",
|
||||||
location: url.location
|
location: url.location
|
||||||
elsif !supports_arm && !mentions_rosetta
|
elsif !supports_arm && !mentions_rosetta
|
||||||
add_error "Artifacts require Rosetta 2 but this is not indicated by the caveats!",
|
add_error "Artifacts require Rosetta 2 but this is not indicated by the caveats!",
|
||||||
|
|||||||
@ -68,6 +68,13 @@ class MacOSRequirement < Requirement
|
|||||||
@version
|
@version
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def maximum_version
|
||||||
|
return MacOSVersion.new(HOMEBREW_MACOS_NEWEST_UNSUPPORTED) if @comparator == ">=" || !version_specified?
|
||||||
|
return @version.max if @version.respond_to?(:to_ary)
|
||||||
|
|
||||||
|
@version
|
||||||
|
end
|
||||||
|
|
||||||
def allows?(other)
|
def allows?(other)
|
||||||
return true unless version_specified?
|
return true unless version_specified?
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ RSpec.describe MacOSRequirement do
|
|||||||
subject(:requirement) { described_class.new }
|
subject(:requirement) { described_class.new }
|
||||||
|
|
||||||
let(:macos_oldest_allowed) { MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED) }
|
let(:macos_oldest_allowed) { MacOSVersion.new(HOMEBREW_MACOS_OLDEST_ALLOWED) }
|
||||||
|
let(:macos_newest_allowed) { MacOSVersion.new(HOMEBREW_MACOS_NEWEST_UNSUPPORTED) }
|
||||||
let(:big_sur_major) { MacOSVersion.new("11.0") }
|
let(:big_sur_major) { MacOSVersion.new("11.0") }
|
||||||
|
|
||||||
describe "#satisfied?" do
|
describe "#satisfied?" do
|
||||||
@ -37,6 +38,19 @@ RSpec.describe MacOSRequirement do
|
|||||||
expect(range_requirement.minimum_version).to eq big_sur_major
|
expect(range_requirement.minimum_version).to eq big_sur_major
|
||||||
end
|
end
|
||||||
|
|
||||||
|
specify "#maximum_version" do
|
||||||
|
no_requirement = described_class.new
|
||||||
|
max_requirement = described_class.new([:big_sur], comparator: "<=")
|
||||||
|
min_requirement = described_class.new([:big_sur], comparator: ">=")
|
||||||
|
exact_requirement = described_class.new([:big_sur], comparator: "==")
|
||||||
|
range_requirement = described_class.new([[:catalina, :big_sur]], comparator: "==")
|
||||||
|
expect(no_requirement.maximum_version).to eq macos_newest_allowed
|
||||||
|
expect(max_requirement.maximum_version).to eq big_sur_major
|
||||||
|
expect(min_requirement.maximum_version).to eq macos_newest_allowed
|
||||||
|
expect(exact_requirement.maximum_version).to eq big_sur_major
|
||||||
|
expect(range_requirement.maximum_version).to eq big_sur_major
|
||||||
|
end
|
||||||
|
|
||||||
specify "#allows?" do
|
specify "#allows?" do
|
||||||
no_requirement = described_class.new
|
no_requirement = described_class.new
|
||||||
max_requirement = described_class.new([:mojave], comparator: "<=")
|
max_requirement = described_class.new([:mojave], comparator: "<=")
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user