Spec-Zone.ru › Homebrew

Модуль: OS::Linux::Install::ClassMethods Приватный

Определён в:
extend/os/linux/install.rb

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

Краткое описание констант свернуть

GCC_RUNTIME_LIBS =

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

Мы связываем библиотеки среды выполнения GCC, которые не используются специально для Fortran и связываются формулой GCC. Мы используем только версионированные динамические библиотеки, поскольку остальные динамические и статические библиотеки применяются только во время сборки, когда GCC может найти собственные библиотеки.

T.let(%W[libatomic.so.1libgcc_s.so.1libgomp.so.1#{OS::Linux::Libstdcxx::SONAME}].freeze, T::Array[String])

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

  • #check_cpu ⇒ void приватный
  • #global_post_install ⇒ void приватный
  • #perform_preinstall_checks(all_fatal: false) ⇒ void приватный
  • #setup_preferred_gcc_libs ⇒ void приватный
  • #symlink_ld_so ⇒ void приватный

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

#check_cpu ⇒ void

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

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



38
39
40
41
42
43
44
45
46
47
48
49
50
# File 'extend/os/linux/install.rb', line 38

def check_cpu
  return if ::Hardware::CPU.intel? && ::Hardware::CPU.is_64_bit?
  return if ::Hardware::CPU.arm?

  message = "Sorry, Homebrew does not support your computer's CPU architecture!"
  if ::Hardware::CPU.ppc64le?
    message += <<~EOS
      For OpenPOWER Linux (PPC64LE) support, see:
#{Formatter.url("https://github.com/homebrew-ppc64le/brew")}    EOS
  end
  ::Kernel.abort message
end

#global_post_install ⇒ void

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

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



31
32
33
34
35
# File 'extend/os/linux/install.rb', line 31

def global_post_install
  super
  symlink_ld_so
  setup_preferred_gcc_libs
end

#perform_preinstall_checks(all_fatal: false) ⇒ void

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

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

Параметры:

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


24
25
26
27
28
# File 'extend/os/linux/install.rb', line 24

def perform_preinstall_checks(all_fatal: false)
  super
  symlink_ld_so
  setup_preferred_gcc_libs
end

#setup_preferred_gcc_libs ⇒ void

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

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



73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
# File 'extend/os/linux/install.rb', line 73

def setup_preferred_gcc_libs
  gcc_opt_prefix = HOMEBREW_PREFIX/"opt/#{OS::LINUX_PREFERRED_GCC_RUNTIME_FORMULA}"
  glibc_installed = (HOMEBREW_PREFIX/"opt/glibc/bin/ld.so").readable?

  return unless gcc_opt_prefix.readable?

  if glibc_installed
    ld_so_conf_d = HOMEBREW_PREFIX/"etc/ld.so.conf.d"
    unless ld_so_conf_d.exist?
      ld_so_conf_d.mkpath
      FileUtils.chmod "go-w", ld_so_conf_d
    end

    # Add gcc to ld search paths
    ld_gcc_conf = ld_so_conf_d/"50-homebrew-preferred-gcc.conf"
    ld_gcc_conf_content = <<~EOS
      # This file is generated by Homebrew. Do not modify.
#{gcc_opt_prefix}/lib/gcc/current
    EOS

    if !ld_gcc_conf.exist? || (ld_gcc_conf.read != ld_gcc_conf_content)
      ld_gcc_conf.atomic_write ld_gcc_conf_content
      FileUtils.chmod "u=rw,go-wx", ld_gcc_conf

      FileUtils.rm_f HOMEBREW_PREFIX/"etc/ld.so.cache"
      ::Kernel.system HOMEBREW_PREFIX/"opt/glibc/sbin/ldconfig"
    end
  else
    Utils::Output.odie "#{HOMEBREW_PREFIX}/lib does not exist!" unless (HOMEBREW_PREFIX/"lib").readable?
  end

  GCC_RUNTIME_LIBS.each do |library|
    gcc_library_symlink = HOMEBREW_PREFIX/"lib/#{library}"

    if glibc_installed
      # Remove legacy symlinks
      FileUtils.rm gcc_library_symlink if gcc_library_symlink.symlink?
    else
      gcc_library = gcc_opt_prefix/"lib/gcc/current/#{library}"
      # Skip if the link target doesn't exist.
      next unless gcc_library.readable?

      # Also skip if the symlink already exists.
      next if gcc_library_symlink.readable? && (gcc_library_symlink.readlink == gcc_library)

      FileUtils.ln_sf gcc_library, gcc_library_symlink
    end
  end
end

#symlink_ld_so ⇒ void

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

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



53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'extend/os/linux/install.rb', line 53

def symlink_ld_so
  brew_ld_so = HOMEBREW_PREFIX/"lib/ld.so"

  ld_so = HOMEBREW_PREFIX/"opt/glibc/bin/ld.so"
  unless ld_so.readable?
    ld_so = OS::Linux::Ld.system_ld_so
    if ld_so.blank?
      ::Kernel.raise "Unable to locate the system's dynamic linker" unless brew_ld_so.readable?

      return
    end
  end

  return if brew_ld_so.readable? && (brew_ld_so.readlink == ld_so)

  FileUtils.mkdir_p HOMEBREW_PREFIX/"lib"
  FileUtils.ln_sf ld_so, brew_ld_so
end

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

Spec-Zone.ru

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