Spec-Zone.ru › Homebrew

Класс: 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. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • formula (Formula, SoftwareSpec)
  • versions (T.class_of(DevelopmentTools))
  • compilers (Array<Symbol>)


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. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<Symbol>)


48
49
50
# File 'compilers/compiler_selector.rb', line 48

def compilers
  @compilers
end

#failures ⇒ Array<CompilerFailure> (только для чтения)

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<CompilerFailure>)


42
43
44
# File 'compilers/compiler_selector.rb', line 42

def failures
  @failures
end

#formula ⇒ Formula, SoftwareSpec (только для чтения)

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Formula, SoftwareSpec)


39
40
41
# File 'compilers/compiler_selector.rb', line 39

def formula
  @formula
end

#versions ⇒ T.class_of(DevelopmentTools) (только для чтения)

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Третьим сторонам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (T.class_of(DevelopmentTools))


45
46
47
# File 'compilers/compiler_selector.rb', line 45

def versions
  @versions
end

Подробное описание методов класса

.compilers ⇒ Array<Symbol>

Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (Array<Symbol>)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Параметры:

  • formula (Formula, SoftwareSpec)
  • compilers (Array<Symbol>, nil) (по умолчанию: nil)
  • testing_formula (Boolean) (по умолчанию: false)

Возвращает:

  • (String, Symbol)


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. Сторонним разработчикам по возможности следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.

Возвращает:

  • (String, Symbol)

Вызывает исключение:

  • (CompilerSelectionError)


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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API