Spec-Zone.ru › Homebrew

Модуль: MachOShim Приватный

Расширен:
Forwardable, T::Helpers
Определён в:
os/mac/mach.rb,
extend/pathname.rb,
sorbet/rbi/dsl/mach_o_shim.rbi

Обзор

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

Расширение Pathname для работы с файлами Mach-O.

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

  • #arch ⇒ Symbol приватный
  • #archs ⇒ Array<Symbol> приватный
  • #change_dylib_id(id, strict: true) ⇒ void приватный
  • #change_install_name(old, new, strict: true) ⇒ void приватный
  • #change_rpath(old, new, uniq: false, last: false, strict: true) ⇒ void приватный
  • #delete_rpath(rpath, strict: true) ⇒ void приватный
  • #dylib? ⇒ Boolean приватный
  • #dylib_id(*args, &block) ⇒ T.untyped приватный
  • #dynamically_linked_libraries(except: :none, resolve_variable_references: true) ⇒ Array<String> приватный
  • #i386? ⇒ Boolean приватный
  • #initialize(*args) ⇒ void приватный
  • #mach_o_bundle? ⇒ Boolean приватный
  • #mach_o_executable? ⇒ Boolean (также: #binary_executable?) приватный
  • #ppc64? ⇒ Boolean приватный
  • #ppc7400? ⇒ Boolean приватный
  • #resolve_rpath(name) ⇒ String? приватный
  • #resolve_variable_name(name, resolve_rpaths: true) ⇒ String приватный
  • #rpaths(resolve_variable_references: true) ⇒ Array<String> приватный
  • #universal? ⇒ Boolean приватный
  • #x86_64? ⇒ Boolean приватный

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

#arch ⇒ Symbol

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

Возвращает:

  • (Symbol)


153
154
155
156
157
158
159
# File 'os/mac/mach.rb', line 153

def arch
  case archs.length
  when 0 then :dunno
  when 1 then archs.fetch(0)
  else :universal
  end
end

#archs ⇒ Array<Symbol>

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

Возвращает:

  • (Array<Symbol>)


148
149
150
# File 'os/mac/mach.rb', line 148

def archs
  mach_data.map { |m| m.fetch :arch }
end

#change_dylib_id(id, strict: true) ⇒ void

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

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

Параметры:

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


94
95
96
97
# File 'os/mac/mach.rb', line 94

def change_dylib_id(id, strict: true)
  macho.change_dylib_id(id, { strict: })
  macho.write!
end

#change_install_name(old, new, strict: true) ⇒ void

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

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

Параметры:

  • old (String)
  • new (String)
  • strict (Boolean) (по умолчанию: true)


100
101
102
103
# File 'os/mac/mach.rb', line 100

def change_install_name(old, new, strict: true)
  macho.change_install_name(old, new, { strict: })
  macho.write!
end

#change_rpath(old, new, uniq: false, last: false, strict: true) ⇒ void

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

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

Параметры:

  • old (String)
  • new (String)
  • uniq (Boolean) (по умолчанию: false)
  • last (Boolean) (по умолчанию: false)
  • strict (Boolean) (по умолчанию: true)


88
89
90
91
# File 'os/mac/mach.rb', line 88

def change_rpath(old, new, uniq: false, last: false, strict: true)
  macho.change_rpath(old, new, { uniq:, last:, strict: })
  macho.write!
end

#delete_rpath(rpath, strict: true) ⇒ void

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

ЗАДАЧА:

Проверить, можно ли отложить вызов #write! до тех пор, пока не станет ясно, что мы не вносим изменений в rpaths.

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

Параметры:

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


75
76
77
78
79
80
81
82
83
84
85
# File 'os/mac/mach.rb', line 75

def delete_rpath(rpath, strict: true)
  candidates = rpaths(resolve_variable_references: false).select do |r|
    resolve_variable_name(r) == resolve_variable_name(rpath)
  end

  # Delete the last instance to avoid changing the order in which rpaths are searched.
  rpath_to_delete = candidates.last

  macho.delete_rpath(rpath_to_delete, { last: true, strict: })
  macho.write!
end

#dylib? ⇒ Boolean

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

Возвращает:

  • (Boolean)


187
188
189
# File 'os/mac/mach.rb', line 187

def dylib?
  mach_data.any? { |m| m.fetch(:type) == :dylib }
end

#dylib_id(*args, &block) ⇒ T.untyped

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

Параметры:

  • args (T.untyped)
  • block (T.untyped)

Возвращает:

  • (T.untyped)


10
# File 'sorbet/rbi/dsl/mach_o_shim.rbi', line 10

def dylib_id(*args, &block); end

#dynamically_linked_libraries(except: :none, resolve_variable_references: true) ⇒ Array<String>

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

Параметры:

  • except (Symbol) (по умолчанию: :none)
  • resolve_variable_references (Boolean) (по умолчанию: true)

Возвращает:

  • (Array<String>)


106
107
108
109
110
111
112
113
# File 'os/mac/mach.rb', line 106

def dynamically_linked_libraries(except: :none, resolve_variable_references: true)
  lcs = macho.dylib_load_commands
  lcs.reject! { |lc| lc.flag?(except) } if except != :none
  names = lcs.map { |lc| lc.name.to_s }.uniq
  names.map! { resolve_variable_name(it) } if resolve_variable_references

  names
end

#i386? ⇒ Boolean

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

Возвращает:

  • (Boolean)


167
168
169
# File 'os/mac/mach.rb', line 167

def i386?
  arch == :i386
end

#initialize(*args) ⇒ void

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

Параметры:

  • args (T.untyped)


16
17
18
19
20
21
# File 'os/mac/mach.rb', line 16

def initialize(*args)
  @macho = T.let(nil, T.nilable(T.any(MachO::MachOFile, MachO::FatFile)))
  @mach_data = T.let(nil, T.nilable(T::Array[T::Hash[Symbol, Symbol]]))

  super
end

#mach_o_bundle? ⇒ Boolean

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

Возвращает:

  • (Boolean)


199
200
201
# File 'os/mac/mach.rb', line 199

def mach_o_bundle?
  mach_data.any? { |m| m.fetch(:type) == :bundle }
end

#mach_o_executable? ⇒ Boolean Также известен как: binary_executable?

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

Возвращает:

  • (Boolean)


192
193
194
# File 'os/mac/mach.rb', line 192

def mach_o_executable?
  mach_data.any? { |m| m.fetch(:type) == :executable }
end

#ppc64? ⇒ Boolean

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

Возвращает:

  • (Boolean)


182
183
184
# File 'os/mac/mach.rb', line 182

def ppc64?
  arch == :ppc64
end

#ppc7400? ⇒ Boolean

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

Возвращает:

  • (Boolean)


177
178
179
# File 'os/mac/mach.rb', line 177

def ppc7400?
  arch == :ppc7400
end

#resolve_rpath(name) ⇒ String?

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

Параметры:

  • name (String)

Возвращает:

  • (String, nil)


138
139
140
141
142
143
144
145
# File 'os/mac/mach.rb', line 138

def resolve_rpath(name)
  target = T.let(nil, T.nilable(String))
  return unless rpaths(resolve_variable_references: true).find do |rpath|
    File.exist?(target = File.join(rpath, name.delete_prefix("@rpath")))
  end

  target
end

#resolve_variable_name(name, resolve_rpaths: true) ⇒ String

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

Параметры:

  • name (String)
  • resolve_rpaths (Boolean) (по умолчанию: true)

Возвращает:

  • (String)


125
126
127
128
129
130
131
132
133
134
135
# File 'os/mac/mach.rb', line 125

def resolve_variable_name(name, resolve_rpaths: true)
  if name.start_with? "@loader_path"
    Pathname(name.sub("@loader_path", dirname.to_s)).cleanpath.to_s
  elsif name.start_with?("@executable_path") && binary_executable?
    Pathname(name.sub("@executable_path", dirname.to_s)).cleanpath.to_s
  elsif resolve_rpaths && name.start_with?("@rpath") && (target = resolve_rpath(name)).present?
    target
  else
    name
  end
end

#rpaths(resolve_variable_references: true) ⇒ Array<String>

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

Параметры:

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

Возвращает:

  • (Array<String>)


116
117
118
119
120
121
122
# File 'os/mac/mach.rb', line 116

def rpaths(resolve_variable_references: true)
  names = macho.rpaths
  # Don't recursively resolve rpaths to avoid infinite loops.
  names.map! { |name| resolve_variable_name(name, resolve_rpaths: false) } if resolve_variable_references

  names
end

#universal? ⇒ Boolean

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

Возвращает:

  • (Boolean)


162
163
164
# File 'os/mac/mach.rb', line 162

def universal?
  arch == :universal
end

#x86_64? ⇒ Boolean

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

Возвращает:

  • (Boolean)


172
173
174
# File 'os/mac/mach.rb', line 172

def x86_64?
  arch == :x86_64
end

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

Spec-Zone.ru

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