Spec-Zone.ru › Homebrew

Модуль: Stdenv

Включает:
OS::Linux::Stdenv, OS::Mac::Stdenv, SharedEnvExtension
Включён в:
Sorbet::Private::Static::ENVClass
Определён в:
extend/ENV/std.rb

Краткое описание констант

Константы, включённые из CompilerConstants

CompilerConstants::COMPILERS, CompilerConstants::COMPILER_SYMBOL_MAP, CompilerConstants::GNU_GCC_REGEXP, CompilerConstants::GNU_GCC_VERSIONS

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

Атрибуты, включённые из SharedEnvExtension

#bottle_arch, #build_bottle

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

  • #clang ⇒ void закрытый
  • #cxx11 ⇒ void закрытый
  • #deparallelize(&block) ⇒ T.untyped закрытый

    Удаляет переменную окружения MAKEFLAGS, заставляя make использовать только одну задачу.

  • #determine_pkg_config_libdir ⇒ PATH? закрытый
  • #libcxx ⇒ void закрытый
  • #setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false, debug_symbols: false) ⇒ void закрытый

Методы, включённые из SharedEnvExtension

#[]=, #append, #append_path, #append_to_cccfg, #append_to_cflags, #append_to_rustflags, #cc, #cflags, #compiler, #cppflags, #cxx, #cxxflags, #effective_arch, #fc, #fcflags, #fflags, #fortran, #ldflags, #make_jobs, #permit_arch_flags, #prepend, #prepend_create_path, #prepend_path, #refurbish_args, #remove, #remove_cc_etc, #remove_from_cflags

Методы, включенные из 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

Методы, включённые из OS::Linux::SharedEnvExtension

#effective_arch

Методы, включённые из OS::Linux::Stdenv

#libxml2

Методы, включённые из OS::Mac::Stdenv

#libxml2, #macosxsdk, #no_fixup_chains, #no_weak_imports, #remove_macosxsdk

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

#clang ⇒ void

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

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



136
137
138
139
140
# File 'extend/ENV/std.rb', line 136

def clang
  super
  replace_in_cflags(/-Xarch_#{Hardware::CPU.arch_32_bit} (-march=\S*)/, '\1')
  set_cpu_cflags
end

#cxx11 ⇒ void

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

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



143
144
145
146
# File 'extend/ENV/std.rb', line 143

def cxx11
  append "CXX", "-std=c++11"
  libcxx
end

#deparallelize(&block) ⇒ T.untyped

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

Удаляет переменную окружения MAKEFLAGS, в результате чего make использует только одно задание. Это полезно для make-файлов с условиями гонки. Если передан блок, MAKEFLAGS удаляется только на время выполнения блока, а после его завершения восстанавливается.

Параметры:

  • block (T.proc.returns(T.untyped))

Возвращает:

  • (T.untyped)


87
88
89
90
91
92
93
94
95
96
97
98
99
# File 'extend/ENV/std.rb', line 87

def deparallelize(&block)
  old = self["MAKEFLAGS"]
  remove "MAKEFLAGS", /-j\d+/
  if block
    begin
      yield
    ensure
      self["MAKEFLAGS"] = old
    end
  end

  old
end

#determine_pkg_config_libdir ⇒ PATH?

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

Возвращает:

  • (PATH, nil)


74
75
76
77
78
79
80
81
# File 'extend/ENV/std.rb', line 74

def determine_pkg_config_libdir
  PATH.new(
    HOMEBREW_PREFIX/"lib/pkgconfig",
    HOMEBREW_PREFIX/"share/pkgconfig",
    homebrew_extra_pkg_config_paths,
    "/usr/lib/pkgconfig",
  ).existing
end

#libcxx ⇒ void

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

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



149
150
151
# File 'extend/ENV/std.rb', line 149

def libcxx
  append "CXX", "-stdlib=libc++" if compiler == :clang
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)


23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# File 'extend/ENV/std.rb', line 23

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

  self["HOMEBREW_ENV"] = "std"

  ORIGINAL_PATHS.reverse_each { |p| prepend_path "PATH", p }
  prepend_path "PATH", HOMEBREW_SHIMS_PATH/"shared"

  # Set the default pkg-config search path, overriding the built-in paths
  # Anything in PKG_CONFIG_PATH is searched before paths in this variable
  self["PKG_CONFIG_LIBDIR"] = determine_pkg_config_libdir

  self["MAKEFLAGS"] = "-j#{make_jobs}"
  self["RUSTC_WRAPPER"] = "#{HOMEBREW_SHIMS_PATH}/shared/rustc_wrapper"
  self["HOMEBREW_RUSTFLAGS"] = Hardware.rustflags_target_cpu(effective_arch)

  if HOMEBREW_PREFIX.to_s != "/usr/local"
    # /usr/local is already an -isystem and -L directory so we skip it
    self["CPPFLAGS"] = "-isystem#{HOMEBREW_PREFIX}/include"
    self["LDFLAGS"] = "-L#{HOMEBREW_PREFIX}/lib"
    # CMake ignores the variables above
    self["CMAKE_PREFIX_PATH"] = HOMEBREW_PREFIX.to_s
  end

  frameworks = HOMEBREW_PREFIX.join("Frameworks")
  if frameworks.directory?
    append "CPPFLAGS", "-F#{frameworks}"
    append "LDFLAGS", "-F#{frameworks}"
    self["CMAKE_FRAMEWORK_PATH"] = frameworks.to_s
  end

  # Os is the default Apple uses for all its stuff so let's trust them
  define_cflags "-Os #{SAFE_CFLAGS_FLAGS}"

  begin
    send(compiler)
  rescue CompilerSelectionError
    # We don't care if our compiler fails to build the formula during `brew test`.
    raise unless testing_formula

    send(DevelopmentTools.default_compiler)
  end

  return unless cc&.match?(GNU_GCC_REGEXP)

  gcc_formula = gcc_version_formula(cc)
  append_path "PATH", gcc_formula.opt_bin.to_s
end

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

Spec-Zone.ru

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