Merge branch 'master' into pac-bti

This commit is contained in:
Carlo Cabrera 2025-03-19 01:32:54 +08:00 committed by GitHub
commit 49dac599da
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 56 additions and 30 deletions

View File

@ -198,9 +198,9 @@ jobs:
labels: ${{ needs.generate-tags.outputs.labels }} labels: ${{ needs.generate-tags.outputs.labels }}
- name: Run brew test-bot --only-setup - name: Run brew test-bot --only-setup
# TODO: Remove this conditional when `brew doctor` no longer throws an error on ARM64 Linux. run: docker run --env HOMEBREW_ARM64_TESTING --rm brew brew test-bot --only-setup
if: matrix.arch == 'x86_64' env:
run: docker run --rm brew brew test-bot --only-setup HOMEBREW_ARM64_TESTING: 1
- name: Log in to GitHub Packages (BrewTestBot) - name: Log in to GitHub Packages (BrewTestBot)
if: fromJSON(steps.attributes.outputs.push) if: fromJSON(steps.attributes.outputs.push)

View File

@ -20,7 +20,7 @@ RUN touch /var/mail/ubuntu && chown ubuntu /var/mail/ubuntu && userdel -r ubuntu
# shellcheck disable=SC1091,SC2154,SC2292 # shellcheck disable=SC1091,SC2154,SC2292
RUN apt-get update \ RUN apt-get update \
&& apt-get install -y --no-install-recommends software-properties-common gnupg-agent \ && apt-get install -y --no-install-recommends software-properties-common gnupg-agent \
&& add-apt-repository -y ppa:git-core/ppa \ && if [ "$(uname -m)" != aarch64 ]; then add-apt-repository -y ppa:git-core/ppa; fi \
&& apt-get update \ && apt-get update \
&& apt-get install -y --no-install-recommends \ && apt-get install -y --no-install-recommends \
acl \ acl \

View File

@ -118,11 +118,12 @@ class BottleSpecification
tags = collector.tags.sort_by do |tag| tags = collector.tags.sort_by do |tag|
version = tag.to_macos_version version = tag.to_macos_version
# Give `arm64` bottles a higher priority so they are first. # 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}" "#{priority}.#{version}_#{tag}"
rescue MacOSVersion::Error rescue MacOSVersion::Error
# Sort non-macOS tags below macOS tags. # Sort non-macOS tags below macOS tags, and arm64 tags before other tags.
"0.#{tag}" priority = (tag.arch == :arm64) ? 1 : 0
"#{priority}.#{tag}"
end end
tags.reverse.map do |tag| tags.reverse.map do |tag|
spec = collector.specification_for(tag) spec = collector.specification_for(tag)

View File

@ -143,7 +143,14 @@ module OS
return if gcc_dependents.empty? return if gcc_dependents.empty?
badly_linked = gcc_dependents.select do |dependent| badly_linked = gcc_dependents.select do |dependent|
keg = Keg.new(dependent.prefix) dependent_prefix = dependent.any_installed_prefix
# Keg.new() may raise an error if it is not a directory.
# As the result `brew doctor` may display `Error: <keg> is not a directory`
# instead of proper `doctor` information.
# There are other checks that test that, we can skip broken kegs.
next if dependent_prefix.nil? || !dependent_prefix.exist? || !dependent_prefix.directory?
keg = Keg.new(dependent_prefix)
keg.binary_executable_or_library_files.any? do |binary| keg.binary_executable_or_library_files.any? do |binary|
paths = binary.rpaths paths = binary.rpaths
versioned_linkage = paths.any? { |path| path.match?(%r{lib/gcc/\d+$}) } versioned_linkage = paths.any? { |path| path.match?(%r{lib/gcc/\d+$}) }

View File

@ -98,7 +98,7 @@ module Hardware
when 0x11 when 0x11
:amd_k8_k10_hybrid :amd_k8_k10_hybrid
when 0x12 when 0x12
:amd_k12 :amd_k10_llano
when 0x14 when 0x14
:bobcat :bobcat
when 0x15 when 0x15

View File

@ -149,26 +149,35 @@ module RuboCop
end end
end end
arm64_nodes = [] arm64_macos_nodes = []
intel_nodes = [] intel_macos_nodes = []
arm64_linux_nodes = []
intel_linux_nodes = []
sha256_nodes.each do |node| sha256_nodes.each do |node|
version = sha256_bottle_tag node version = sha256_bottle_tag node
if version.to_s.start_with? "arm64" if version == :arm64_linux
arm64_nodes << node 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 else
intel_nodes << node intel_macos_nodes << node
end end
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) offending_node(bottle_node)
problem "ARM bottles should be listed before Intel bottles" do |corrector| problem "ARM bottles should be listed before Intel bottles" do |corrector|
lines = ["bottle do"] lines = ["bottle do"]
lines += non_sha256_nodes.map { |node| " #{node.source}" } lines += non_sha256_nodes.map { |node| " #{node.source}" }
lines += arm64_nodes.map { |node| " #{node.source}" } lines += arm64_macos_nodes.map { |node| " #{node.source}" }
lines += intel_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" lines << " end"
corrector.replace(bottle_node.source_range, lines.join("\n")) corrector.replace(bottle_node.source_range, lines.join("\n"))
end end

View File

@ -26,7 +26,7 @@ RSpec.describe Hardware::CPU do
:amd_k8, :amd_k8,
:amd_k8_k10_hybrid, :amd_k8_k10_hybrid,
:amd_k10, :amd_k10,
:amd_k12, :amd_k10_llano,
:arm, :arm,
:arm_blizzard_avalanche, :arm_blizzard_avalanche,
:arm_brava, :arm_brava,

View File

@ -14,18 +14,20 @@ module UnpackStrategy
module Bom module Bom
extend SystemCommand::Mixin extend SystemCommand::Mixin
DMG_METADATA = T.let(Set.new(%w[ DMG_METADATA = T.let(Set.new([
.background ".background",
.com.apple.timemachine.donotpresent ".com.apple.timemachine.donotpresent",
.com.apple.timemachine.supported ".com.apple.timemachine.supported",
.DocumentRevisions-V100 ".DocumentRevisions-V100",
.DS_Store ".DS_Store",
.fseventsd ".fseventsd",
.MobileBackups ".MobileBackups",
.Spotlight-V100 ".Spotlight-V100",
.TemporaryItems ".TemporaryItems",
.Trashes ".Trashes",
.VolumeIcon.icns ".VolumeIcon.icns",
".HFS+ Private Directory Data\r", # do not remove `\r`, it is a part of directory name
".HFS+ Private Data\r",
]).freeze, T::Set[String]) ]).freeze, T::Set[String])
private_constant :DMG_METADATA private_constant :DMG_METADATA

View File

@ -259,3 +259,10 @@ Help us by [submitting a fix](https://github.com/Homebrew/homebrew-cask/blob/HEA
## Other local issues ## Other local issues
If your Homebrew installation gets messed up (and fixing the issues found by `brew doctor` doesn't solve the problem), reinstalling Homebrew may help to reset to a normal state. To easily reinstall Homebrew, use [Homebrew Bundle](https://github.com/Homebrew/homebrew-bundle) to automatically restore your installed formulae and casks. To do so, run `brew bundle dump`, [uninstall](https://docs.brew.sh/FAQ#how-do-i-uninstall-homebrew), [reinstall](https://docs.brew.sh/Installation) and run `brew bundle install`. If your Homebrew installation gets messed up (and fixing the issues found by `brew doctor` doesn't solve the problem), reinstalling Homebrew may help to reset to a normal state. To easily reinstall Homebrew, use [Homebrew Bundle](https://github.com/Homebrew/homebrew-bundle) to automatically restore your installed formulae and casks. To do so, run `brew bundle dump`, [uninstall](https://docs.brew.sh/FAQ#how-do-i-uninstall-homebrew), [reinstall](https://docs.brew.sh/Installation) and run `brew bundle install`.
## Possible `curl` issues
Sometimes, the user's computer, configuration or network connection may cause issues downloading with `curl` which are outside Homebrew's control. Homebrew requires good internet connectivity and correct configuration to function correctly. Here some links that could help you identify cURL issues based on `curl`'s and `libcurl`'s exit codes:
* https://everything.curl.dev/cmdline/exitcode.html
* https://curl.se/libcurl/c/libcurl-errors.html