Spec-Zone.ru › Homebrew

Класс: LinkageChecker Приватный

Наследует:
Object
  • Object
  • LinkageChecker
показать все
Подключает:
OS::Linux::LinkageChecker, OS::Mac::LinkageChecker, Utils::Output::Mixin
Определён в:
linkage_checker.rb

Обзор

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

Проверяет наличие сломанных или отсутствующих связей в keg формулы.

Краткое описание констант

Константы, подключённые из OS::Linux::LinkageChecker

OS::Linux::LinkageChecker::SYSTEM_LIBRARY_ALLOWLIST

Краткое описание атрибутов экземпляра свернуть

  • #broken_deps ⇒ Hash{String => Array<String>} только для чтения приватный
  • #broken_dylibs ⇒ Set<String> только для чтения приватный
  • #formula ⇒ Formula? только для чтения приватный
  • #indirect_deps ⇒ Array<String> только для чтения приватный
  • #keg ⇒ Keg только для чтения приватный
  • #store ⇒ LinkageCacheStore только для чтения приватный
  • #system_dylibs ⇒ Set<String> только для чтения приватный
  • #undeclared_deps ⇒ Array<String> только для чтения приватный
  • #unwanted_system_dylibs ⇒ Array<String> только для чтения приватный

Краткое описание методов экземпляра свернуть

  • #broken_library_linkage?(test: false, strict: false) ⇒ Boolean приватный
  • #display_normal_output ⇒ void приватный
  • #display_reverse_output ⇒ void приватный
  • #display_test_output(puts_output: true, strict: false) ⇒ void приватный
  • #initialize(keg, formula = nil, cache_db:, rebuild_cache: false) ⇒ void конструктор приватный

Методы, подключённые из Utils::Output::Mixin

#issue_reporting_message, #odebug, #odeprecated, #odie, #odisabled, #ofail, #oh1, #oh1_title, #ohai, #ohai_title, #onoe, #opoo, #opoo_outside_github_actions, #opoo_without_github_actions_annotation, #pretty_deprecated, #pretty_disabled, #pretty_duration, #pretty_install_status, #pretty_installed, #pretty_uninstalled, #pretty_upgradable, #pretty_warning

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

#initialize(keg, formula = nil, cache_db:, rebuild_cache: false) ⇒ void

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

Параметры:

  • keg (Keg)
  • formula (Formula, nil) (по умолчанию: nil)
  • cache_db (CacheStoreDatabase[String, T::Hash[T.any(String, Symbol), T.anything]])
  • rebuild_cache (Boolean) (по умолчанию: false)


38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'linkage_checker.rb', line 38

def initialize(keg, formula = nil, cache_db:, rebuild_cache: false)
  @keg = keg
  @formula = T.let(formula || resolve_formula(keg), T.nilable(Formula))
  @store = T.let(LinkageCacheStore.new(keg.to_s, cache_db), LinkageCacheStore)

  @system_dylibs    = T.let(Set.new, T::Set[String])
  @broken_dylibs    = T.let(Set.new, T::Set[String])
  @variable_dylibs  = T.let(Set.new, T::Set[String])
  @brewed_dylibs    = T.let({}, T::Hash[String, T::Set[String]])
  @reverse_links    = T.let({}, T::Hash[String, T::Set[String]])
  @broken_deps      = T.let({}, T::Hash[String, T::Array[String]])
  @indirect_deps    = T.let([], T::Array[String])
  @undeclared_deps  = T.let([], T::Array[String])
  @unnecessary_deps = T.let([], T::Array[String])
  @no_linkage_deps  = T.let([], T::Array[String])
  @unexpected_linkage_deps = T.let([], T::Array[String])
  @unwanted_system_dylibs = T.let([], T::Array[String])
  @version_conflict_deps = T.let([], T::Array[String])
  @files_missing_rpaths = T.let([], T::Array[String])
  @executable_path_dylibs = T.let([], T::Array[String])

  check_dylibs(rebuild_cache:)
end

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

#broken_deps ⇒ Hash{String => Array<String>} (только для чтения)

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

Возвращает:

  • (Hash{String => Array<String>})


29
30
31
# File 'linkage_checker.rb', line 29

def broken_deps
  @broken_deps
end

#broken_dylibs ⇒ Set<String> (только для чтения)

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

Возвращает:

  • (Set<String>)


26
27
28
# File 'linkage_checker.rb', line 26

def broken_dylibs
  @broken_dylibs
end

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

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

Возвращает:

  • (Formula, nil)


17
18
19
# File 'linkage_checker.rb', line 17

def formula
  @formula
end

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

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

Возвращает:

  • (Array<String>)


23
24
25
# File 'linkage_checker.rb', line 23

def indirect_deps
  @indirect_deps
end

#keg ⇒ Keg (только для чтения)

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

Возвращает:

  • (Keg)


14
15
16
# File 'linkage_checker.rb', line 14

def keg
  @keg
end

#store ⇒ LinkageCacheStore (только для чтения)

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

Возвращает:

  • (LinkageCacheStore)


20
21
22
# File 'linkage_checker.rb', line 20

def store
  @store
end

#system_dylibs ⇒ Set<String> (только для чтения)

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

Возвращает:

  • (Set<String>)


26
27
28
# File 'linkage_checker.rb', line 26

def system_dylibs
  @system_dylibs
end

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

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

Возвращает:

  • (Array<String>)


23
24
25
# File 'linkage_checker.rb', line 23

def undeclared_deps
  @undeclared_deps
end

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

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

Возвращает:

  • (Array<String>)


23
24
25
# File 'linkage_checker.rb', line 23

def unwanted_system_dylibs
  @unwanted_system_dylibs
end

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

#broken_library_linkage?(test: false, strict: false) ⇒ Boolean

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

Параметры:

  • test (Boolean) (по умолчанию: false)
  • strict (Boolean) (по умолчанию: false)

Возвращает:

  • (Boolean)

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

  • (ArgumentError)


110
111
112
113
114
115
116
117
118
119
120
121
122
# File 'linkage_checker.rb', line 110

def broken_library_linkage?(test: false, strict: false)
  raise ArgumentError, "Strict linkage checking requires test mode to be enabled." if strict && !test

  issues = [@broken_deps, @broken_dylibs]
  if test
    issues += [@unwanted_system_dylibs, @version_conflict_deps, @indirect_deps]
    if strict
      issues += [@undeclared_deps, @unexpected_linkage_deps,
                 @files_missing_rpaths, @executable_path_dylibs]
    end
  end
  issues.any?(&:present?)
end

#display_normal_output ⇒ void

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

Этот метод не возвращает определённого значения.



63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# File 'linkage_checker.rb', line 63

def display_normal_output
  display_items "System libraries", @system_dylibs
  display_items "Homebrew libraries", @brewed_dylibs
  display_items "Indirect dependencies with linkage", @indirect_deps
  display_items "@rpath-referenced libraries", @variable_dylibs
  display_items "Missing libraries", @broken_dylibs
  display_items "Broken dependencies", @broken_deps
  display_items "Undeclared dependencies with linkage", @undeclared_deps
  display_items "Dependencies with no linkage", @unnecessary_deps
  display_items "Homebrew dependencies not requiring linkage", @no_linkage_deps
  display_items "Unexpected linkage for no_linkage dependencies", @unexpected_linkage_deps
  display_items "Unwanted system libraries", @unwanted_system_dylibs
  display_items "Files with missing rpath", @files_missing_rpaths
  display_items "@executable_path references in libraries", @executable_path_dylibs
end

#display_reverse_output ⇒ void

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

Этот метод не возвращает определённого значения.



80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'linkage_checker.rb', line 80

def display_reverse_output
  return if @reverse_links.empty?

  sorted = @reverse_links.sort
  sorted.each do |dylib, files|
    puts dylib
    files.each do |f|
      unprefixed = f.to_s.delete_prefix "#{keg}/"
      puts "#{unprefixed}"
    end
    puts if dylib != sorted.last&.first
  end
end

#display_test_output(puts_output: true, strict: false) ⇒ void

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

Этот метод не возвращает определённого значения.

Параметры:

  • puts_output (Boolean) (по умолчанию: true)
  • strict (Boolean) (по умолчанию: false)


95
96
97
98
99
100
101
102
103
104
105
106
107
# File 'linkage_checker.rb', line 95

def display_test_output(puts_output: true, strict: false)
  display_items("Missing libraries", @broken_dylibs, puts_output:)
  display_items("Broken dependencies", @broken_deps, puts_output:)
  display_items("Unwanted system libraries", @unwanted_system_dylibs, puts_output:)
  display_items("Conflicting libraries", @version_conflict_deps, puts_output:)
  display_items("Indirect dependencies with linkage", @indirect_deps, puts_output:)
  return unless strict

  display_items("Undeclared dependencies with linkage", @undeclared_deps, puts_output:)
  display_items("Unexpected linkage for no_linkage dependencies", @unexpected_linkage_deps, puts_output:)
  display_items("Files with missing rpath", @files_missing_rpaths, puts_output:)
  display_items "@executable_path references in libraries", @executable_path_dylibs, puts_output:
end

© 2009–present Homebrew contributors
Licensed under the BSD 2-Clause License.
https://docs.brew.sh/rubydoc/LinkageChecker.html

Spec-Zone.ru

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