Класс: CompilerSelector Закрытый
- Наследуется от:
- Object
- Object
- CompilerSelector
- Подключает:
- CompilerConstants
- Определён в:
- compilers/compiler_selector.rb
Обзор
Этот класс является частью закрытого API. Этот класс можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого класса, поскольку он может быть удалён или изменён без предупреждения.
Класс для выбора компилятора для формулы.
Определён в пространстве имён
Классы: Compiler
Краткое описание констант свернуть
- COMPILER_PRIORITY =
Эта константа является частью закрытого API. Эту константу можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этой константы, поскольку она может быть удалена или изменена без предупреждения.
T.let({ clang: [:clang, :llvm_clang, :gnu], gcc: [:gnu, :gcc, :llvm_clang, :clang], }.freeze, T::Hash[Symbol, T::Array[Symbol]])
Константы, подключённые из CompilerConstants
CompilerConstants::COMPILERS, CompilerConstants::COMPILER_SYMBOL_MAP, CompilerConstants::GNU_GCC_REGEXP, CompilerConstants::GNU_GCC_VERSIONS
Краткое описание атрибутов экземпляра свернуть
- #compilers ⇒ Array<Symbol> только для чтения закрытый
- #failures ⇒ Array<CompilerFailure> только для чтения закрытый
- #formula ⇒ Formula, SoftwareSpec только для чтения закрытый
- #versions ⇒ T.class_of(DevelopmentTools) только для чтения закрытый
Краткое описание методов класса свернуть
- .compilers ⇒ Array<Symbol> закрытый
- .preferred_gcc ⇒ String закрытый
- .select_for(formula, compilers = nil, testing_formula: false) ⇒ String, Symbol закрытый
Краткое описание методов экземпляра свернуть
- #compiler ⇒ String, Symbol закрытый
- #initialize(formula, versions, compilers) ⇒ void конструктор закрытый
Подробное описание конструкторов
#initialize(formula, versions, compilers) ⇒ void
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
57 58 59 60 61 62 | # File 'compilers/compiler_selector.rb', line 57 def initialize(formula, versions, compilers) @formula = formula @failures = T.let(formula.compiler_failures, T::Array[CompilerFailure]) @versions = versions @compilers = compilers end |
Подробное описание атрибутов экземпляра
#compilers ⇒ Array<Symbol> (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
48 49 50 | # File 'compilers/compiler_selector.rb', line 48 def compilers @compilers end |
#failures ⇒ Array<CompilerFailure> (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
42 43 44 | # File 'compilers/compiler_selector.rb', line 42 def failures @failures end |
#formula ⇒ Formula, SoftwareSpec (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
39 40 41 | # File 'compilers/compiler_selector.rb', line 39 def formula @formula end |
#versions ⇒ T.class_of(DevelopmentTools) (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
45 46 47 | # File 'compilers/compiler_selector.rb', line 45 def versions @versions end |
Подробное описание методов класса
.compilers ⇒ Array<Symbol>
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
34 35 36 | # File 'compilers/compiler_selector.rb', line 34 def self.compilers COMPILER_PRIORITY.fetch(DevelopmentTools.default_compiler) end |
.preferred_gcc ⇒ String
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
71 72 73 | # File 'compilers/compiler_selector.rb', line 71 def self.preferred_gcc "gcc" end |
.select_for(formula, compilers = nil, testing_formula: false) ⇒ String, Symbol
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
23 24 25 26 27 28 29 30 31 | # File 'compilers/compiler_selector.rb', line 23 def self.select_for(formula, compilers = nil, testing_formula: false) if compilers.nil? && DevelopmentTools.default_compiler == :clang deps = formula.deps.filter_map do |dep| dep.name if dep.required? || (testing_formula && dep.test?) || (!testing_formula && dep.build?) end compilers = [:clang, :gnu, :llvm_clang] if deps.none?("llvm") && deps.any?(/^gcc(@\d+)?$/) end new(formula, DevelopmentTools, compilers || self.compilers).compiler end |
Подробное описание методов экземпляра
#compiler ⇒ String, Symbol
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
65 66 67 68 | # File 'compilers/compiler_selector.rb', line 65 def compiler find_compiler { |c| return c.name unless fails_with?(c) } raise CompilerSelectionError, formula end |
© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/CompilerSelector.html