diff options
| author | Mike McQuaid | 2014-05-05 13:40:25 +0100 |
|---|---|---|
| committer | Mike McQuaid | 2014-05-06 16:45:50 +0100 |
| commit | 12821894a5d0ece228520cb7ac44ff8312fc5bcf (patch) | |
| tree | c8b34f4503fe10257fea27bd10a3a94f063da893 /Library/Homebrew/extend | |
| parent | 0cea93702317ac93b1413690c3742eea5c92c021 (diff) | |
| download | homebrew-12821894a5d0ece228520cb7ac44ff8312fc5bcf.tar.bz2 | |
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.
Diffstat (limited to 'Library/Homebrew/extend')
| -rw-r--r-- | Library/Homebrew/extend/ENV/shared.rb | 26 |
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) |
