Merge pull request #5958 from xu-cheng/compiler

CompilerSelector: prefer the gcc version offered by the gcc formula
This commit is contained in:
Mike McQuaid 2019-04-03 21:51:48 +01:00 committed by GitHub
commit 8ce7b1d39c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 15 additions and 1 deletions

View File

@ -102,11 +102,19 @@ class CompilerSelector
private
def gnu_gcc_versions
# prioritize gcc version provided by gcc formula.
v = Formulary.factory("gcc").version.to_s.slice(/\d/)
GNU_GCC_VERSIONS - [v] + [v] # move the version to the end of the list
rescue FormulaUnavailableError
GNU_GCC_VERSIONS
end
def find_compiler
compilers.each do |compiler|
case compiler
when :gnu
GNU_GCC_VERSIONS.reverse_each do |v|
gnu_gcc_versions.reverse_each do |v|
name = "gcc-#{v}"
version = compiler_version(name)
yield Compiler.new(name, version) unless version.null?

View File

@ -39,6 +39,12 @@ describe CompilerSelector do
expect(subject.compiler).to eq("gcc-7")
end
it "returns gcc-6 if gcc formula offers gcc-6" do
software_spec.fails_with(:clang)
allow(Formulary).to receive(:factory).with("gcc").and_return(double(version: "6.0"))
expect(subject.compiler).to eq("gcc-6")
end
it "raises an error when gcc or llvm is missing" do
software_spec.fails_with(:clang)
software_spec.fails_with(gcc: "7")