Module: OS::Linux::DevelopmentTools Private

Extended by:
T::Helpers
Defined in:
extend/os/linux/development_tools.rb

This module is part of a private API. This module may only be used in the Homebrew/brew repository. Third parties should avoid using this module if possible, as it may be removed or changed without warning.

Instance Method Summary collapse

Instance Method Details

#build_system_infoHash{String => String, nil}

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



54
55
56
57
58
59
# File 'extend/os/linux/development_tools.rb', line 54

def build_system_info
  super.merge({
    "glibc_version"     => OS::Linux::Glibc.version.to_s.presence,
    "oldest_cpu_family" => Hardware.oldest_cpu.to_s,
  })
end

#default_compilerSymbol

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:



30
# File 'extend/os/linux/development_tools.rb', line 30

def default_compiler = :gcc

#locate(tool) ⇒ Pathname?

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Parameters:

Returns:



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'extend/os/linux/development_tools.rb', line 12

def locate(tool)
  @locate ||= T.let({}, T.nilable(T::Hash[T.any(String, Symbol), Pathname]))
  @locate.fetch(tool) do |key|
    @locate[key] = if ::DevelopmentTools.needs_build_formulae? &&
                      (binutils_path = HOMEBREW_PREFIX/"opt/binutils/bin/#{tool}").executable?
      binutils_path
    elsif ::DevelopmentTools.needs_build_formulae? &&
          (glibc_path = HOMEBREW_PREFIX/"opt/glibc/bin/#{tool}").executable?
      glibc_path
    elsif (homebrew_path = HOMEBREW_PREFIX/"bin/#{tool}").executable?
      homebrew_path
    elsif File.executable?((system_path = "/usr/bin/#{tool}"))
      Pathname.new system_path
    end
  end
end

#needs_compiler_formula?Boolean

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:

  • (Boolean)


41
42
43
44
45
46
47
48
49
50
51
# File 'extend/os/linux/development_tools.rb', line 41

def needs_compiler_formula?
  return @needs_compiler_formula unless @needs_compiler_formula.nil?

  gcc = "/usr/bin/gcc"
  @needs_compiler_formula = T.let(if File.exist?(gcc)
                                    ::DevelopmentTools.gcc_version(gcc) < OS::LINUX_GCC_CI_VERSION
                                  else
                                    true
  end, T.nilable(T::Boolean))
  !!@needs_compiler_formula
end

#needs_libc_formula?Boolean

This method is part of a private API. This method may only be used in the Homebrew/brew repository. Third parties should avoid using this method if possible, as it may be removed or changed without warning.

Returns:

  • (Boolean)


33
34
35
36
37
38
# File 'extend/os/linux/development_tools.rb', line 33

def needs_libc_formula?
  return @needs_libc_formula unless @needs_libc_formula.nil?

  @needs_libc_formula = T.let(OS::Linux::Glibc.below_ci_version?, T.nilable(T::Boolean))
  @needs_libc_formula = !!@needs_libc_formula
end