aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Library/Homebrew/extend/ENV/shared.rb26
1 files changed, 16 insertions, 10 deletions
diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb
index d0102f520..c995daaaf 100644
--- a/Library/Homebrew/extend/ENV/shared.rb
+++ b/Library/Homebrew/extend/ENV/shared.rb
@@ -184,24 +184,30 @@ module SharedEnvExtension
end
def gcc_version_formula(version)
- gcc_formula = Formulary.factory("gcc")
- gcc_name = 'gcc' + version.delete('.')
+ gcc_name = "gcc-#{version}"
+ gcc_version_name = "gcc#{version.delete('.')}"
- if gcc_formula.opt_prefix.exist?
- return gcc_formula
- end
+ ivar = "@#{gcc_version_name}_version"
+ return instance_variable_get(ivar) if instance_variable_defined?(ivar)
- gcc_versions_formula = Formulary.factory(gcc_name) rescue nil
+ gcc_path = HOMEBREW_PREFIX.join "opt/gcc/bin/#{gcc_name}"
+ gcc_formula = Formulary.factory "gcc"
+ gcc_versions_path = \
+ HOMEBREW_PREFIX.join "opt/#{gcc_version_name}/bin/#{gcc_name}"
- if gcc_versions_formula && gcc_versions_formula.opt_prefix.exist?
- gcc_versions_formula
+ formula = if gcc_path.exist?
+ gcc_formula
+ elsif gcc_versions_path.exist?
+ Formulary.factory gcc_versions_formula
elsif gcc_formula.version.to_s.include?(version)
gcc_formula
- elsif gcc_versions_formula
+ elsif (gcc_versions_formula = Formulary.factory(gcc_version_name) rescue nil)
gcc_versions_formula
else
- Formulary.factory(gcc_name)
+ gcc_formula
end
+
+ instance_variable_set(ivar, formula)
end
def warn_about_non_apple_gcc(gcc)