Fix ENV
This commit is contained in:
parent
0d5b56aa6a
commit
f4a6dce64a
@ -68,7 +68,6 @@ module Stdenv
|
|||||||
gcc_formula = gcc_version_formula(cc)
|
gcc_formula = gcc_version_formula(cc)
|
||||||
append_path "PATH", gcc_formula.opt_bin.to_s
|
append_path "PATH", gcc_formula.opt_bin.to_s
|
||||||
end
|
end
|
||||||
alias generic_setup_build_environment setup_build_environment
|
|
||||||
|
|
||||||
sig { returns(T.nilable(PATH)) }
|
sig { returns(T.nilable(PATH)) }
|
||||||
def determine_pkg_config_libdir
|
def determine_pkg_config_libdir
|
||||||
|
|||||||
@ -119,7 +119,6 @@ module Superenv
|
|||||||
# These flags will also be present:
|
# These flags will also be present:
|
||||||
# a - apply fix for apr-1-config path
|
# a - apply fix for apr-1-config path
|
||||||
end
|
end
|
||||||
alias generic_setup_build_environment setup_build_environment
|
|
||||||
|
|
||||||
private
|
private
|
||||||
|
|
||||||
|
|||||||
@ -1,36 +1,45 @@
|
|||||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
# typed: true # rubocop:todo Sorbet/StrictSigil
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Stdenv
|
module OS
|
||||||
sig {
|
module Linux
|
||||||
params(
|
module Stdenv
|
||||||
formula: T.nilable(Formula),
|
extend T::Helpers
|
||||||
cc: T.nilable(String),
|
|
||||||
build_bottle: T.nilable(T::Boolean),
|
|
||||||
bottle_arch: T.nilable(String),
|
|
||||||
testing_formula: T::Boolean,
|
|
||||||
debug_symbols: T.nilable(T::Boolean),
|
|
||||||
).void
|
|
||||||
}
|
|
||||||
def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false,
|
|
||||||
debug_symbols: false)
|
|
||||||
generic_setup_build_environment(formula:, cc:, build_bottle:, bottle_arch:,
|
|
||||||
testing_formula:, debug_symbols:)
|
|
||||||
|
|
||||||
prepend_path "CPATH", HOMEBREW_PREFIX/"include"
|
requires_ancestor { ::Stdenv }
|
||||||
prepend_path "LIBRARY_PATH", HOMEBREW_PREFIX/"lib"
|
|
||||||
prepend_path "LD_RUN_PATH", HOMEBREW_PREFIX/"lib"
|
|
||||||
|
|
||||||
return unless @formula
|
sig {
|
||||||
|
params(
|
||||||
|
formula: T.nilable(Formula),
|
||||||
|
cc: T.nilable(String),
|
||||||
|
build_bottle: T.nilable(T::Boolean),
|
||||||
|
bottle_arch: T.nilable(String),
|
||||||
|
testing_formula: T::Boolean,
|
||||||
|
debug_symbols: T.nilable(T::Boolean),
|
||||||
|
).void
|
||||||
|
}
|
||||||
|
def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil,
|
||||||
|
testing_formula: false, debug_symbols: false)
|
||||||
|
super
|
||||||
|
|
||||||
prepend_path "CPATH", @formula.include
|
prepend_path "CPATH", HOMEBREW_PREFIX/"include"
|
||||||
prepend_path "LIBRARY_PATH", @formula.lib
|
prepend_path "LIBRARY_PATH", HOMEBREW_PREFIX/"lib"
|
||||||
prepend_path "LD_RUN_PATH", @formula.lib
|
prepend_path "LD_RUN_PATH", HOMEBREW_PREFIX/"lib"
|
||||||
end
|
|
||||||
|
|
||||||
def libxml2
|
return unless @formula
|
||||||
append "CPPFLAGS", "-I#{Formula["libxml2"].include/"libxml2"}"
|
|
||||||
rescue FormulaUnavailableError
|
prepend_path "CPATH", @formula.include
|
||||||
nil
|
prepend_path "LIBRARY_PATH", @formula.lib
|
||||||
|
prepend_path "LD_RUN_PATH", @formula.lib
|
||||||
|
end
|
||||||
|
|
||||||
|
def libxml2
|
||||||
|
append "CPPFLAGS", "-I#{::Formula["libxml2"].include/"libxml2"}"
|
||||||
|
rescue FormulaUnavailableError
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Stdenv.prepend(OS::Linux::Stdenv)
|
||||||
|
|||||||
@ -1,73 +1,82 @@
|
|||||||
# typed: true # rubocop:todo Sorbet/StrictSigil
|
# typed: true # rubocop:todo Sorbet/StrictSigil
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
module Superenv
|
module OS
|
||||||
sig { returns(Pathname) }
|
module Linux
|
||||||
def self.shims_path
|
module Superenv
|
||||||
HOMEBREW_SHIMS_PATH/"linux/super"
|
extend T::Helpers
|
||||||
end
|
|
||||||
|
|
||||||
sig { returns(T.nilable(Pathname)) }
|
requires_ancestor { ::Superenv }
|
||||||
def self.bin
|
|
||||||
shims_path.realpath
|
|
||||||
end
|
|
||||||
|
|
||||||
sig {
|
sig { returns(Pathname) }
|
||||||
params(
|
def self.shims_path
|
||||||
formula: T.nilable(Formula),
|
HOMEBREW_SHIMS_PATH/"linux/super"
|
||||||
cc: T.nilable(String),
|
end
|
||||||
build_bottle: T.nilable(T::Boolean),
|
|
||||||
bottle_arch: T.nilable(String),
|
|
||||||
testing_formula: T::Boolean,
|
|
||||||
debug_symbols: T.nilable(T::Boolean),
|
|
||||||
).void
|
|
||||||
}
|
|
||||||
def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil, testing_formula: false,
|
|
||||||
debug_symbols: false)
|
|
||||||
generic_setup_build_environment(formula:, cc:, build_bottle:, bottle_arch:,
|
|
||||||
testing_formula:, debug_symbols:)
|
|
||||||
self["HOMEBREW_OPTIMIZATION_LEVEL"] = "O2"
|
|
||||||
self["HOMEBREW_DYNAMIC_LINKER"] = determine_dynamic_linker_path
|
|
||||||
self["HOMEBREW_RPATH_PATHS"] = determine_rpath_paths(@formula)
|
|
||||||
self["M4"] = "#{HOMEBREW_PREFIX}/opt/m4/bin/m4" if deps.any? { |d| d.name == "libtool" || d.name == "bison" }
|
|
||||||
end
|
|
||||||
|
|
||||||
def homebrew_extra_paths
|
sig { returns(T.nilable(Pathname)) }
|
||||||
paths = generic_homebrew_extra_paths
|
def self.bin
|
||||||
paths += %w[binutils make].filter_map do |f|
|
shims_path.realpath
|
||||||
bin = Formulary.factory(f).opt_bin
|
end
|
||||||
bin if bin.directory?
|
|
||||||
rescue FormulaUnavailableError
|
sig {
|
||||||
nil
|
params(
|
||||||
|
formula: T.nilable(Formula),
|
||||||
|
cc: T.nilable(String),
|
||||||
|
build_bottle: T.nilable(T::Boolean),
|
||||||
|
bottle_arch: T.nilable(String),
|
||||||
|
testing_formula: T::Boolean,
|
||||||
|
debug_symbols: T.nilable(T::Boolean),
|
||||||
|
).void
|
||||||
|
}
|
||||||
|
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)
|
||||||
|
self["M4"] = "#{HOMEBREW_PREFIX}/opt/m4/bin/m4" if deps.any? { |d| d.name == "libtool" || d.name == "bison" }
|
||||||
|
end
|
||||||
|
|
||||||
|
def homebrew_extra_paths
|
||||||
|
paths = generic_homebrew_extra_paths
|
||||||
|
paths += %w[binutils make].filter_map do |f|
|
||||||
|
bin = Formulary.factory(f).opt_bin
|
||||||
|
bin if bin.directory?
|
||||||
|
rescue FormulaUnavailableError
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
paths
|
||||||
|
end
|
||||||
|
|
||||||
|
def homebrew_extra_isystem_paths
|
||||||
|
paths = []
|
||||||
|
# Add paths for GCC headers when building against glibc@2.13 because we have to use -nostdinc.
|
||||||
|
if deps.any? { |d| d.name == "glibc@2.13" }
|
||||||
|
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
|
||||||
|
end
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
sig { returns(T.nilable(String)) }
|
||||||
|
def determine_dynamic_linker_path
|
||||||
|
path = "#{HOMEBREW_PREFIX}/lib/ld.so"
|
||||||
|
return unless File.readable? path
|
||||||
|
|
||||||
|
path
|
||||||
|
end
|
||||||
end
|
end
|
||||||
paths
|
|
||||||
end
|
|
||||||
|
|
||||||
def homebrew_extra_isystem_paths
|
|
||||||
paths = []
|
|
||||||
# Add paths for GCC headers when building against glibc@2.13 because we have to use -nostdinc.
|
|
||||||
if deps.any? { |d| d.name == "glibc@2.13" }
|
|
||||||
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
|
|
||||||
end
|
|
||||||
|
|
||||||
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
|
|
||||||
|
|
||||||
sig { returns(T.nilable(String)) }
|
|
||||||
def determine_dynamic_linker_path
|
|
||||||
path = "#{HOMEBREW_PREFIX}/lib/ld.so"
|
|
||||||
return unless File.readable? path
|
|
||||||
|
|
||||||
path
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
Superenv.prepend(OS::Linux::Superenv)
|
||||||
|
|||||||
@ -26,8 +26,7 @@ module OS
|
|||||||
}
|
}
|
||||||
def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil,
|
def setup_build_environment(formula: nil, cc: nil, build_bottle: false, bottle_arch: nil,
|
||||||
testing_formula: false, debug_symbols: false)
|
testing_formula: false, debug_symbols: false)
|
||||||
generic_setup_build_environment(formula:, cc:, build_bottle:, bottle_arch:,
|
super
|
||||||
testing_formula:, debug_symbols:)
|
|
||||||
|
|
||||||
append "LDFLAGS", "-Wl,-headerpad_max_install_names"
|
append "LDFLAGS", "-Wl,-headerpad_max_install_names"
|
||||||
|
|
||||||
|
|||||||
@ -108,8 +108,7 @@ module OS
|
|||||||
self["M4"] = gm4
|
self["M4"] = gm4
|
||||||
end
|
end
|
||||||
|
|
||||||
generic_setup_build_environment(formula:, cc:, build_bottle:, bottle_arch:,
|
super
|
||||||
testing_formula:, debug_symbols:)
|
|
||||||
|
|
||||||
# Filter out symbols known not to be defined since GNU Autotools can't
|
# Filter out symbols known not to be defined since GNU Autotools can't
|
||||||
# reliably figure this out with Xcode 8 and above.
|
# reliably figure this out with Xcode 8 and above.
|
||||||
|
|||||||
@ -6,6 +6,7 @@ require "system_command"
|
|||||||
class Keg
|
class Keg
|
||||||
include SystemCommand::Mixin
|
include SystemCommand::Mixin
|
||||||
|
|
||||||
|
# TODO: re-implement these as functions, so that we aren't modifying constants:
|
||||||
GENERIC_KEG_LINK_DIRECTORIES = (remove_const :KEG_LINK_DIRECTORIES).freeze
|
GENERIC_KEG_LINK_DIRECTORIES = (remove_const :KEG_LINK_DIRECTORIES).freeze
|
||||||
KEG_LINK_DIRECTORIES = (GENERIC_KEG_LINK_DIRECTORIES + ["Frameworks"]).freeze
|
KEG_LINK_DIRECTORIES = (GENERIC_KEG_LINK_DIRECTORIES + ["Frameworks"]).freeze
|
||||||
GENERIC_MUST_EXIST_SUBDIRECTORIES = (remove_const :MUST_EXIST_SUBDIRECTORIES).freeze
|
GENERIC_MUST_EXIST_SUBDIRECTORIES = (remove_const :MUST_EXIST_SUBDIRECTORIES).freeze
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user