superenv: allow paths under self's keg
Fixes build error in Homebrew/homebrew-core#100. Closes #63. Signed-off-by: Andrew Janke <andrew@apjanke.net>
This commit is contained in:
parent
4e8c6e633c
commit
a8ed06ba74
@ -15,7 +15,7 @@ require "set"
|
|||||||
|
|
||||||
class Cmd
|
class Cmd
|
||||||
attr_reader :config, :prefix, :cellar, :opt, :tmpdir, :sysroot, :deps
|
attr_reader :config, :prefix, :cellar, :opt, :tmpdir, :sysroot, :deps
|
||||||
attr_reader :archflags, :optflags, :keg_regex
|
attr_reader :archflags, :optflags, :keg_regex, :formula, :formula_version
|
||||||
|
|
||||||
def initialize(arg0, args)
|
def initialize(arg0, args)
|
||||||
@arg0 = arg0
|
@arg0 = arg0
|
||||||
@ -29,6 +29,8 @@ class Cmd
|
|||||||
@archflags = ENV.fetch("HOMEBREW_ARCHFLAGS") { "" }.split(" ")
|
@archflags = ENV.fetch("HOMEBREW_ARCHFLAGS") { "" }.split(" ")
|
||||||
@optflags = ENV.fetch("HOMEBREW_OPTFLAGS") { "" }.split(" ")
|
@optflags = ENV.fetch("HOMEBREW_OPTFLAGS") { "" }.split(" ")
|
||||||
@deps = Set.new(ENV.fetch("HOMEBREW_DEPENDENCIES") { "" }.split(","))
|
@deps = Set.new(ENV.fetch("HOMEBREW_DEPENDENCIES") { "" }.split(","))
|
||||||
|
@formula = ENV["HOMEBREW_FORMULA"]
|
||||||
|
@formula_version = ENV["HOMEBREW_FORMULA_VERSION"]
|
||||||
# matches opt or cellar prefix and formula name
|
# matches opt or cellar prefix and formula name
|
||||||
@keg_regex = %r[(#{Regexp.escape(opt)}|#{Regexp.escape(cellar)})/([\w\-_\+]+)]
|
@keg_regex = %r[(#{Regexp.escape(opt)}|#{Regexp.escape(cellar)})/([\w\-_\+]+)]
|
||||||
end
|
end
|
||||||
@ -205,9 +207,12 @@ class Cmd
|
|||||||
# but is currently opt-in.
|
# but is currently opt-in.
|
||||||
return keep_orig?(path) unless ENV["HOMEBREW_EXPERIMENTAL_FILTER_FLAGS_ON_DEPS"]
|
return keep_orig?(path) unless ENV["HOMEBREW_EXPERIMENTAL_FILTER_FLAGS_ON_DEPS"]
|
||||||
|
|
||||||
|
# Allow references to self
|
||||||
|
if keg_path && path.start_with?(keg_path)
|
||||||
|
true
|
||||||
# first two paths: reject references to Cellar or opt paths
|
# first two paths: reject references to Cellar or opt paths
|
||||||
# for unspecified dependencies
|
# for unspecified dependencies
|
||||||
if path.start_with?(cellar) || path.start_with?(opt)
|
elsif path.start_with?(cellar) || path.start_with?(opt)
|
||||||
dep = path[keg_regex, 2]
|
dep = path[keg_regex, 2]
|
||||||
dep && @deps.include?(dep)
|
dep && @deps.include?(dep)
|
||||||
elsif path.start_with?(prefix)
|
elsif path.start_with?(prefix)
|
||||||
@ -276,6 +281,11 @@ class Cmd
|
|||||||
%W[#{sysroot}/usr/lib /usr/local/lib]
|
%W[#{sysroot}/usr/lib /usr/local/lib]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def keg_path
|
||||||
|
return nil if formula.nil?
|
||||||
|
"#{cellar}/#{formula}/#{formula_version}"
|
||||||
|
end
|
||||||
|
|
||||||
def configure?
|
def configure?
|
||||||
# configure scripts generated with autoconf 2.61 or later export as_nl
|
# configure scripts generated with autoconf 2.61 or later export as_nl
|
||||||
ENV.key? "as_nl"
|
ENV.key? "as_nl"
|
||||||
|
@ -68,6 +68,10 @@ module Superenv
|
|||||||
self["HOMEBREW_INCLUDE_PATHS"] = determine_include_paths
|
self["HOMEBREW_INCLUDE_PATHS"] = determine_include_paths
|
||||||
self["HOMEBREW_LIBRARY_PATHS"] = determine_library_paths
|
self["HOMEBREW_LIBRARY_PATHS"] = determine_library_paths
|
||||||
self["HOMEBREW_DEPENDENCIES"] = determine_dependencies
|
self["HOMEBREW_DEPENDENCIES"] = determine_dependencies
|
||||||
|
unless formula.nil?
|
||||||
|
self["HOMEBREW_FORMULA"] = formula.name
|
||||||
|
self["HOMEBREW_FORMULA_VERSION"] = formula.version
|
||||||
|
end
|
||||||
|
|
||||||
if MacOS::Xcode.without_clt? || (MacOS::Xcode.installed? && MacOS::Xcode.version.to_i >= 7)
|
if MacOS::Xcode.without_clt? || (MacOS::Xcode.installed? && MacOS::Xcode.version.to_i >= 7)
|
||||||
self["MACOSX_DEPLOYMENT_TARGET"] = MacOS.version.to_s
|
self["MACOSX_DEPLOYMENT_TARGET"] = MacOS.version.to_s
|
||||||
|
Loading…
x
Reference in New Issue
Block a user