mirror of
https://github.com/Homebrew/brew.git
synced 2025-07-14 16:09:03 +08:00
Merge pull request #19522 from Homebrew/arm64-linux-bottle-blocks
Fix bottle block generation and audit for arm64 Linux
This commit is contained in:
commit
9a62e88bda
@ -118,11 +118,12 @@ class BottleSpecification
|
||||
tags = collector.tags.sort_by do |tag|
|
||||
version = tag.to_macos_version
|
||||
# Give `arm64` bottles a higher priority so they are first.
|
||||
priority = (tag.arch == :arm64) ? 2 : 1
|
||||
priority = (tag.arch == :arm64) ? 3 : 2
|
||||
"#{priority}.#{version}_#{tag}"
|
||||
rescue MacOSVersion::Error
|
||||
# Sort non-macOS tags below macOS tags.
|
||||
"0.#{tag}"
|
||||
# Sort non-macOS tags below macOS tags, and arm64 tags before other tags.
|
||||
priority = (tag.arch == :arm64) ? 1 : 0
|
||||
"#{priority}.#{tag}"
|
||||
end
|
||||
tags.reverse.map do |tag|
|
||||
spec = collector.specification_for(tag)
|
||||
|
@ -149,26 +149,35 @@ module RuboCop
|
||||
end
|
||||
end
|
||||
|
||||
arm64_nodes = []
|
||||
intel_nodes = []
|
||||
arm64_macos_nodes = []
|
||||
intel_macos_nodes = []
|
||||
arm64_linux_nodes = []
|
||||
intel_linux_nodes = []
|
||||
|
||||
sha256_nodes.each do |node|
|
||||
version = sha256_bottle_tag node
|
||||
if version.to_s.start_with? "arm64"
|
||||
arm64_nodes << node
|
||||
if version == :arm64_linux
|
||||
arm64_linux_nodes << node
|
||||
elsif version.to_s.start_with?("arm64")
|
||||
arm64_macos_nodes << node
|
||||
elsif version.to_s.end_with?("_linux")
|
||||
intel_linux_nodes << node
|
||||
else
|
||||
intel_nodes << node
|
||||
intel_macos_nodes << node
|
||||
end
|
||||
end
|
||||
|
||||
return if sha256_order(sha256_nodes) == sha256_order(arm64_nodes + intel_nodes)
|
||||
sorted_nodes = arm64_macos_nodes + intel_macos_nodes + arm64_linux_nodes + intel_linux_nodes
|
||||
return if sha256_order(sha256_nodes) == sha256_order(sorted_nodes)
|
||||
|
||||
offending_node(bottle_node)
|
||||
problem "ARM bottles should be listed before Intel bottles" do |corrector|
|
||||
lines = ["bottle do"]
|
||||
lines += non_sha256_nodes.map { |node| " #{node.source}" }
|
||||
lines += arm64_nodes.map { |node| " #{node.source}" }
|
||||
lines += intel_nodes.map { |node| " #{node.source}" }
|
||||
lines += arm64_macos_nodes.map { |node| " #{node.source}" }
|
||||
lines += intel_macos_nodes.map { |node| " #{node.source}" }
|
||||
lines += arm64_linux_nodes.map { |node| " #{node.source}" }
|
||||
lines += intel_linux_nodes.map { |node| " #{node.source}" }
|
||||
lines << " end"
|
||||
corrector.replace(bottle_node.source_range, lines.join("\n"))
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user