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.
This commit is contained in:
Mike McQuaid 2014-05-05 13:40:25 +01:00
parent 1b0647d747
commit c92a16e2ce

View File

@ -184,24 +184,30 @@ module SharedEnvExtension
end end
def gcc_version_formula(version) def gcc_version_formula(version)
gcc_formula = Formulary.factory("gcc") gcc_name = "gcc-#{version}"
gcc_name = 'gcc' + version.delete('.') gcc_version_name = "gcc#{version.delete('.')}"
if gcc_formula.opt_prefix.exist? ivar = "@#{gcc_version_name}_version"
return gcc_formula return instance_variable_get(ivar) if instance_variable_defined?(ivar)
end
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? formula = if gcc_path.exist?
gcc_versions_formula gcc_formula
elsif gcc_versions_path.exist?
Formulary.factory gcc_versions_formula
elsif gcc_formula.version.to_s.include?(version) elsif gcc_formula.version.to_s.include?(version)
gcc_formula gcc_formula
elsif gcc_versions_formula elsif (gcc_versions_formula = Formulary.factory(gcc_version_name) rescue nil)
gcc_versions_formula gcc_versions_formula
else else
Formulary.factory(gcc_name) gcc_formula
end end
instance_variable_set(ivar, formula)
end end
def warn_about_non_apple_gcc(gcc) def warn_about_non_apple_gcc(gcc)