From 798711cade2fbd95147d4eac32a7a583f21cfb82 Mon Sep 17 00:00:00 2001 From: Ryan Hendrickson Date: Mon, 25 May 2015 00:05:32 -0400 Subject: [PATCH] Use canonical representation of the superenv bin directory The xcrun script should be skipping the ENV directory when it scans $PATH looking for tools to run. Unfortunately, the script compares the paths found to the real path of the ENV directory (following symlinks), but superenv was adding the nominal path to $PATH, not following symlinks. As a consequence, platforms with Xcode < 4.3 would get into infinite loops when trying to call non-system versions of gcc, as xcrun calls the ENV version of gcc-X.X which calls xcrun and so on forever. This commit changes superenv to follow symlinks when determining the bin path to use. Fixes Homebrew/homebrew#33731. Closes Homebrew/homebrew#40062. Signed-off-by: Jack Nagel --- Library/Homebrew/extend/ENV/super.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/Library/Homebrew/extend/ENV/super.rb b/Library/Homebrew/extend/ENV/super.rb index bf2f997c64..e21fc554ee 100644 --- a/Library/Homebrew/extend/ENV/super.rb +++ b/Library/Homebrew/extend/ENV/super.rb @@ -23,7 +23,8 @@ module Superenv end def self.bin - (HOMEBREW_REPOSITORY/"Library/ENV").subdirs.reject { |d| d.basename.to_s > MacOS::Xcode.version }.max + bin = (HOMEBREW_REPOSITORY/"Library/ENV").subdirs.reject { |d| d.basename.to_s > MacOS::Xcode.version }.max + bin.realpath unless bin.nil? end def reset