Hack so that ENV['CFLAGS'] += "foo" always works

So many formula assume CFLAGS etc. are not nil. One fix would be to set them to "" but this would set them in the environment, and that could have consequences for build-scripts. This hack works but with a (hopefully) small caveat.

Fixes Homebrew/homebrew#14580.
This commit is contained in:
Max Howell 2012-08-31 23:44:36 -04:00
parent 75a0708865
commit 429226d562

View File

@ -208,6 +208,26 @@ class << ENV
[$1.to_i, 1].max [$1.to_i, 1].max
end end
# Many formula assume that CFLAGS etc. will not be nil.
# This should be a safe hack to prevent that exception cropping up.
# Main consqeuence of this is that ENV['CFLAGS'] is never nil even when it
# is which can break if checks, but we don't do such a check in our code.
def [] key
if has_key? key
fetch(key)
elsif %w{CPPFLAGS CFLAGS LDFLAGS}.include? key
class << (a = "")
attr :key, true
def + value
ENV[key] = value
end
alias_method '<<', '+'
end
a.key = key
a
end
end
end if superenv? end if superenv?