2020-10-10 14:16:11 +02:00
|
|
|
# typed: true
|
2019-04-19 15:38:03 +09:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2016-04-25 17:57:51 +01:00
|
|
|
module Utils
|
2020-08-19 07:50:49 +02:00
|
|
|
module Bottles
|
2016-04-25 17:57:51 +01:00
|
|
|
class << self
|
2018-04-07 20:28:56 +01:00
|
|
|
undef tag
|
|
|
|
|
2021-08-26 14:36:49 -07:00
|
|
|
def tag(symbol = nil)
|
2023-05-08 21:43:12 +08:00
|
|
|
return Utils::Bottles::Tag.from_symbol(symbol) if symbol.present?
|
2021-08-26 14:36:49 -07:00
|
|
|
|
2021-04-08 13:45:15 +01:00
|
|
|
Utils::Bottles::Tag.new(system: MacOS.version.to_sym, arch: Hardware::CPU.arch)
|
2016-04-25 17:57:51 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
class Collector
|
|
|
|
private
|
|
|
|
|
2018-04-07 20:28:56 +01:00
|
|
|
alias generic_find_matching_tag find_matching_tag
|
|
|
|
|
2021-04-08 14:58:39 +01:00
|
|
|
def find_matching_tag(tag, no_older_versions: false)
|
2019-06-05 19:48:38 -07:00
|
|
|
# Used primarily by developers testing beta macOS releases.
|
2021-04-08 14:58:39 +01:00
|
|
|
if no_older_versions ||
|
2021-06-22 13:06:46 -04:00
|
|
|
(OS::Mac.version.prerelease? &&
|
|
|
|
Homebrew::EnvConfig.developer? &&
|
|
|
|
Homebrew::EnvConfig.skip_or_later_bottles?)
|
2019-06-05 19:48:38 -07:00
|
|
|
generic_find_matching_tag(tag)
|
|
|
|
else
|
|
|
|
generic_find_matching_tag(tag) ||
|
|
|
|
find_older_compatible_tag(tag)
|
|
|
|
end
|
2016-04-25 17:57:51 +01:00
|
|
|
end
|
|
|
|
|
2018-10-12 22:04:47 +01:00
|
|
|
# Find a bottle built for a previous version of macOS.
|
|
|
|
def find_older_compatible_tag(tag)
|
2019-11-06 14:31:03 +00:00
|
|
|
tag_version = begin
|
2021-04-08 13:45:15 +01:00
|
|
|
tag.to_macos_version
|
2020-06-10 10:06:46 +01:00
|
|
|
rescue MacOSVersionError
|
2020-11-10 00:11:22 +11:00
|
|
|
nil
|
2016-04-25 17:57:51 +01:00
|
|
|
end
|
|
|
|
|
2020-11-10 00:11:22 +11:00
|
|
|
return if tag_version.blank?
|
|
|
|
|
2021-09-16 18:56:47 +01:00
|
|
|
tags.find do |candidate|
|
|
|
|
next if candidate.arch != tag.arch
|
2020-12-09 11:55:27 +00:00
|
|
|
|
2021-09-16 18:56:47 +01:00
|
|
|
candidate.to_macos_version <= tag_version
|
2020-06-10 10:06:46 +01:00
|
|
|
rescue MacOSVersionError
|
2019-11-06 14:31:03 +00:00
|
|
|
false
|
2016-04-25 17:57:51 +01:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|