diff --git a/Library/Homebrew/superenv.rb b/Library/Homebrew/superenv.rb index c8c21e1720..58a801ca53 100644 --- a/Library/Homebrew/superenv.rb +++ b/Library/Homebrew/superenv.rb @@ -17,6 +17,30 @@ module Superenv def self.extended(base) base.keg_only_deps = [] base.deps = [] + + # Many formula assume that CFLAGS etc. will not be nil. This should be + # a safe hack to prevent that exception cropping up. Main consequence of + # this is that self['CFLAGS'] is never nil even when it is which can break + # if checks, but we don't do such a check in our code. Redefinition must be + # done on the singleton class, because in MRI all ENV methods are defined + # on its singleton class, precluding the use of extend. + class << base + def [] key + if has_key? key + fetch(key) + elsif %w{CPPFLAGS CFLAGS LDFLAGS}.include? key + class << (a = "") + attr_accessor :key + def + value + ENV[key] = value + end + alias_method '<<', '+' + end + a.key = key + a + end + end + end end def self.bin @@ -279,26 +303,6 @@ module Superenv self['MAKEFLAGS'] =~ /-\w*j(\d)+/ [$1.to_i, 1].max 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 self['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_accessor :key - def + value - ENV[key] = value - end - alias_method '<<', '+' - end - a.key = key - a - end - end end