diff --git a/Library/Homebrew/extend/ENV/shared.rb b/Library/Homebrew/extend/ENV/shared.rb index d0102f5203..c995daaaf3 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)