From c92a16e2ce4def0f019dde601c04721d21d3bad8 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Mon, 5 May 2014 13:40:25 +0100 Subject: [PATCH] shared: refactor gcc_version_formula. Avoid throwing unnecessary exceptions by checking for paths existing and creating formulae as late as possible. Additionally use instance variables for some caching. --- Library/Homebrew/extend/ENV/shared.rb | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) 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)