From 95c90b3297c0242b7e724e631bc3c0011c1e2054 Mon Sep 17 00:00:00 2001 From: Patrick Linnane Date: Thu, 20 Nov 2025 14:01:57 -0800 Subject: [PATCH] extend/os/mac/system_config: check for Metal Toolchain Signed-off-by: Patrick Linnane Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- Library/Homebrew/extend/os/mac/system_config.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/Library/Homebrew/extend/os/mac/system_config.rb b/Library/Homebrew/extend/os/mac/system_config.rb index 68d377813958f..a6371cec60ed5 100644 --- a/Library/Homebrew/extend/os/mac/system_config.rb +++ b/Library/Homebrew/extend/os/mac/system_config.rb @@ -45,12 +45,25 @@ def core_tap_config(out = $stdout) dump_tap_config(CoreCaskTap.instance, out) end + sig { returns(T.nilable(String)) } + def metal_toolchain + @metal_toolchain ||= T.let(if MacOS::Xcode.installed? || MacOS::CLT.installed? + result = SystemCommand.run("xcrun", args: ["metal", "-v"], + print_stderr: false, print_stdout: false) + "present" if result.success? + end, T.nilable(String)) + end + sig { params(out: T.any(File, StringIO, IO)).void } def dump_verbose_config(out = $stdout) super out.puts "macOS: #{MacOS.full_version}-#{kernel}" out.puts "CLT: #{clt || "N/A"}" out.puts "Xcode: #{xcode || "N/A"}" + # Metal Toolchain is a separate install starting with Xcode 26. + if MacOS::Xcode.installed? && MacOS::Xcode.version >= "26.0" + out.puts "Metal Toolchain: #{metal_toolchain || "N/A"}" + end out.puts "Rosetta 2: #{::Hardware::CPU.in_rosetta2?}" if ::Hardware::CPU.physical_cpu_arm64? end end