Класс: LinkageChecker Приватный
- Наследует:
- Object
- Object
- LinkageChecker
- Определён в:
- 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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
29 30 31 | # File 'linkage_checker.rb', line 29 def broken_deps @broken_deps end |
#broken_dylibs ⇒ Set<String> (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
26 27 28 | # File 'linkage_checker.rb', line 26 def broken_dylibs @broken_dylibs end |
#formula ⇒ Formula? (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
17 18 19 | # File 'linkage_checker.rb', line 17 def formula @formula end |
#indirect_deps ⇒ Array<String> (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
23 24 25 | # File 'linkage_checker.rb', line 23 def indirect_deps @indirect_deps end |
#keg ⇒ Keg (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
14 15 16 | # File 'linkage_checker.rb', line 14 def keg @keg end |
#store ⇒ LinkageCacheStore (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
20 21 22 | # File 'linkage_checker.rb', line 20 def store @store end |
#system_dylibs ⇒ Set<String> (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам не следует использовать этот метод, поскольку он может быть удалён или изменён без предупреждения.
26 27 28 | # File 'linkage_checker.rb', line 26 def system_dylibs @system_dylibs end |
#undeclared_deps ⇒ Array<String> (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
23 24 25 | # File 'linkage_checker.rb', line 23 def undeclared_deps @undeclared_deps end |
#unwanted_system_dylibs ⇒ Array<String> (только для чтения)
Этот метод является частью закрытого API. Этот метод можно использовать только в репозитории Homebrew/brew. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод не возвращает определённого значения.
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