From bf0e32901076c5397faf4fa34bbab263f3292440 Mon Sep 17 00:00:00 2001 From: Jack Nagel Date: Mon, 19 Aug 2013 12:32:56 -0500 Subject: [PATCH] Make Superenv activation explicit --- Library/Homebrew/build.rb | 4 +++- Library/Homebrew/cmd/--env.rb | 2 ++ Library/Homebrew/cmd/sh.rb | 2 ++ Library/Homebrew/superenv.rb | 22 +++++++++++++--------- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/build.rb b/Library/Homebrew/build.rb index 7d88a74cfe..bb4325e5bd 100755 --- a/Library/Homebrew/build.rb +++ b/Library/Homebrew/build.rb @@ -34,6 +34,7 @@ def main require 'hardware' require 'keg' + require 'superenv' # Force any future invocations of sudo to require the user's password to be # re-entered. This is in-case any build script call sudo. Certainly this is @@ -106,7 +107,8 @@ class Build keg_only_deps = deps.map(&:to_formula).select(&:keg_only?) pre_superenv_hacks - require 'superenv' + + ENV.activate_extensions! deps.map(&:to_formula).each do |dep| opt = HOMEBREW_PREFIX/:opt/dep diff --git a/Library/Homebrew/cmd/--env.rb b/Library/Homebrew/cmd/--env.rb index 16d035a037..8cc1b1b407 100644 --- a/Library/Homebrew/cmd/--env.rb +++ b/Library/Homebrew/cmd/--env.rb @@ -3,6 +3,8 @@ require 'hardware' module Homebrew extend self def __env + ENV.activate_extensions! + if superenv? ENV.deps = ARGV.formulae.map(&:name) unless ARGV.named.empty? end diff --git a/Library/Homebrew/cmd/sh.rb b/Library/Homebrew/cmd/sh.rb index 956cc4ecd1..5e8f26580a 100644 --- a/Library/Homebrew/cmd/sh.rb +++ b/Library/Homebrew/cmd/sh.rb @@ -3,6 +3,8 @@ require 'formula' module Homebrew extend self def sh + ENV.activate_extensions! + if superenv? ENV.x11 = true ENV.deps = Formula.installed.select{|f| f.keg_only? and f.opt_prefix.directory? }.map(&:name) diff --git a/Library/Homebrew/superenv.rb b/Library/Homebrew/superenv.rb index 8b9f38b0e4..17ffddd08d 100644 --- a/Library/Homebrew/superenv.rb +++ b/Library/Homebrew/superenv.rb @@ -18,6 +18,19 @@ def superenv? true end +module EnvActivation + def activate_extensions! + if superenv? + extend(Superenv) + else + extend(HomebrewEnvExtension) + prepend 'PATH', "#{HOMEBREW_PREFIX}/bin", ':' unless ORIGINAL_PATHS.include? HOMEBREW_PREFIX/'bin' + end + end +end + +ENV.extend(EnvActivation) + module Superenv attr_accessor :keg_only_deps, :deps, :x11 alias_method :x11?, :x11 @@ -310,15 +323,6 @@ module Superenv end -if not superenv? - ENV.extend(HomebrewEnvExtension) - # we must do this or tools like pkg-config won't get found by configure scripts etc. - ENV.prepend 'PATH', "#{HOMEBREW_PREFIX}/bin", ':' unless ORIGINAL_PATHS.include? HOMEBREW_PREFIX/'bin' -else - ENV.extend(Superenv) -end - - class Array def to_path_s map(&:to_s).uniq.select{|s| File.directory? s }.join(':').chuzzle