Misty De Meo 5ab34abd17
Bottles: allow skipping or_later tags
This is a developer-only feature, so it's gated via `HOMEBREW_DEVELOPER`.
This is intended to enable testing of macOS 10.15; users building software
manually to test compatibility of early betas need to be able to build
software from source instead of via pouring 10.14 bottles. This isn't
intended to be a general-purpose `HOMEBREW_BUILD_FROM_SOURCE` replacement,
and has no effect on released versions of macOS.
2019-06-06 10:14:10 -07:00

52 lines
1.1 KiB
Ruby

# frozen_string_literal: true
module Utils
class Bottles
class << self
undef tag
def tag
MacOS.cat
end
end
class Collector
private
alias generic_find_matching_tag find_matching_tag
def find_matching_tag(tag)
# Used primarily by developers testing beta macOS releases.
if OS::Mac.prerelease? && ARGV.skip_or_later_bottles?
generic_find_matching_tag(tag)
else
generic_find_matching_tag(tag) ||
find_older_compatible_tag(tag)
end
end
def tag_without_or_later(tag)
tag
end
# Find a bottle built for a previous version of macOS.
def find_older_compatible_tag(tag)
begin
tag_version = MacOS::Version.from_symbol(tag)
rescue ArgumentError
return
end
keys.find do |key|
key_tag_version = tag_without_or_later(key)
begin
MacOS::Version.from_symbol(key_tag_version) <= tag_version
rescue ArgumentError
false
end
end
end
end
end
end