Spec-Zone.ru › Homebrew

Модуль: OS::Linux::Superenv Закрытый

Расширен модулем:
T::Helpers
Включён в:
Superenv
Определён в:
extend/os/linux/extend/ENV/super.rb

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

Определено в пространстве имён

Модули: ClassMethods

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

  • #determine_dynamic_linker_path ⇒ String? закрытый
  • #determine_rpath_paths(formula) ⇒ PATH закрытый
  • #homebrew_extra_isystem_paths ⇒ Array<::Pathname> закрытый
  • #homebrew_extra_paths ⇒ Array<::Pathname> закрытый
  • #setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, debug_symbols: false) ⇒ void закрытый

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

#determine_dynamic_linker_path ⇒ String?

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

Возвращает:

  • (String, nil)


93
94
95
96
97
98
# File 'extend/os/linux/extend/ENV/super.rb', line 93

def determine_dynamic_linker_path
  path = "#{HOMEBREW_PREFIX}/lib/ld.so"
  return unless File.readable? path

  path
end

#determine_rpath_paths(formula) ⇒ PATH

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

Параметры:

  • formula (Formula, nil)

Возвращает:

  • (PATH)


83
84
85
86
87
88
89
90
# File 'extend/os/linux/extend/ENV/super.rb', line 83

def determine_rpath_paths(formula)
  PATH.new(
    *formula&.lib,
    "#{HOMEBREW_PREFIX}/opt/gcc/lib/gcc/current",
    PATH.new(run_time_deps.map { |dep| dep.opt_lib.to_s }).existing,
    "#{HOMEBREW_PREFIX}/lib",
  )
end

#homebrew_extra_isystem_paths ⇒ Array<::Pathname>

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

Возвращает:

  • (Array<::Pathname>)


71
72
73
74
75
76
77
78
79
80
# File 'extend/os/linux/extend/ENV/super.rb', line 71

def homebrew_extra_isystem_paths
  paths = []
  # Add paths for GCC headers when building against versioned glibc because we have to use -nostdinc.
  if deps.any? { |d| d.name.match?(/^glibc@.+$/) }
    gcc_include_dir = Utils.safe_popen_read(cc, "--print-file-name=include").chomp
    gcc_include_fixed_dir = Utils.safe_popen_read(cc, "--print-file-name=include-fixed").chomp
    paths << gcc_include_dir << gcc_include_fixed_dir
  end
  paths.map { |p| ::Pathname.new(p) }
end

#homebrew_extra_paths ⇒ Array<::Pathname>

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

Возвращает:

  • (Array<::Pathname>)


59
60
61
62
63
64
65
66
67
68
# File 'extend/os/linux/extend/ENV/super.rb', line 59

def homebrew_extra_paths
  paths = super
  paths += %w[binutilsmake].filter_map do |f|
    bin = ::Formula[f].opt_bin
    bin if bin.directory?
  rescue FormulaUnavailableError
    nil
  end
  paths
end

#setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, debug_symbols: false) ⇒ void

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

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

Параметры:

  • formula (Formula, nil) (по умолчанию: nil)
  • cc (String, nil) (по умолчанию: nil)
  • build_bottle (Boolean, nil) (по умолчанию: false)
  • bottle_arch (String, nil) (по умолчанию: nil)
  • testing_formula (Boolean) (по умолчанию: false)
  • debug_symbols (Boolean, nil) (по умолчанию: false)


34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'extend/os/linux/extend/ENV/super.rb', line 34

def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil,
                            testing_formula: false, debug_symbols: false)
  super

  self["HOMEBREW_OPTIMIZATION_LEVEL"] = "O2"
  self["HOMEBREW_DYNAMIC_LINKER"] = determine_dynamic_linker_path
  self["HOMEBREW_RPATH_PATHS"] = determine_rpath_paths(formula)
  m4_path_deps = ["libtool", "bison"]
  self["M4"] = "#{HOMEBREW_PREFIX}/opt/m4/bin/m4" if deps.any? { m4_path_deps.include?(it.name) }
  return unless ::Hardware::CPU.arm64?

  # Build jemalloc-sys rust crate on ARM64/AArch64 with support for page sizes up to 64K.
  self["JEMALLOC_SYS_WITH_LG_PAGE"] = "16"

  # Workaround patchelf.rb bug causing segfaults and preventing bottling on ARM64/AArch64
  # https://github.com/Homebrew/homebrew-core/issues/163826
  self["CGO_ENABLED"] = "0"

  # Pointer authentication and BTI are hardening techniques most distros
  # use by default on their packages. arm64 Linux we're packaging
  # everything from scratch so the entire dependency tree can have it.
  append_to_cccfg "b" if ::DevelopmentTools.gcc_version("gcc") >= 9
end

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

Spec-Zone.ru

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