Модуль: 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? = "Sorry, Homebrew does not support your computer's CPU architecture!" if ::Hardware::CPU.ppc64le? += <<~EOS For OpenPOWER Linux (PPC64LE) support, see: #{Formatter.url("https://github.com/homebrew-ppc64le/brew")} EOS end ::Kernel.abort 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. По возможности сторонним разработчикам следует избегать использования этого метода, поскольку он может быть удалён или изменён без предупреждения.
Этот метод возвращает неопределённое значение.
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