cask/quarantine: avoid xcrun when executing Swift

This commit is contained in:
Bo Anderson 2024-03-02 19:31:38 +00:00
parent 5075f943ae
commit 2d929b8a9f
No known key found for this signature in database

View File

@ -18,7 +18,17 @@ module Cask
COPY_XATTRS_SCRIPT = (HOMEBREW_LIBRARY_PATH/"cask/utils/copy-xattrs.swift").freeze COPY_XATTRS_SCRIPT = (HOMEBREW_LIBRARY_PATH/"cask/utils/copy-xattrs.swift").freeze
def self.swift def self.swift
@swift ||= DevelopmentTools.locate("swift") @swift ||= begin
# /usr/bin/swift (which runs via xcrun) adds `/usr/local/include` to the top of the include path,
# which allows really broken local setups to break our Swift usage here. Using the underlying
# Swift executable directly however (returned by `xcrun -find`) avoids this CPATH mess.
xcrun_swift = ::Utils.popen_read("/usr/bin/xcrun", "-find", "swift", err: :close).chomp
if $CHILD_STATUS.success? && File.executable?(xcrun_swift)
xcrun_swift
else
DevelopmentTools.locate("swift")
end
end
end end
private_class_method :swift private_class_method :swift