aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew
diff options
context:
space:
mode:
Diffstat (limited to 'Library/Homebrew')
-rw-r--r--Library/Homebrew/extend/ENV.rb8
-rw-r--r--Library/Homebrew/requirements.rb25
-rw-r--r--Library/Homebrew/test/test_ENV.rb9
3 files changed, 28 insertions, 14 deletions
diff --git a/Library/Homebrew/extend/ENV.rb b/Library/Homebrew/extend/ENV.rb
index 095d05b70..6ac5a0db2 100644
--- a/Library/Homebrew/extend/ENV.rb
+++ b/Library/Homebrew/extend/ENV.rb
@@ -438,6 +438,14 @@ class << ENV
self['PATH'] = paths.unshift(*self['PATH'].split(":")).uniq.join(":")
end
+ def with_build_environment
+ old_env = to_hash
+ setup_build_environment
+ yield
+ ensure
+ replace(old_env)
+ end
+
def fortran
fc_flag_vars = %w{FCFLAGS FFLAGS}
diff --git a/Library/Homebrew/requirements.rb b/Library/Homebrew/requirements.rb
index ffb03cb37..b5d920bab 100644
--- a/Library/Homebrew/requirements.rb
+++ b/Library/Homebrew/requirements.rb
@@ -125,23 +125,20 @@ class MPIDependency < Requirement
def satisfied?
# we have to assure the ENV is (almost) as during the build
- orig_PATH = ENV['PATH']
require 'superenv'
- ENV.setup_build_environment
- ENV.userpaths!
- @lang_list.each do |lang|
- case lang
- when :cc, :cxx, :f90, :f77
- compiler = 'mpi' + lang.to_s
- @non_functional << compiler unless mpi_wrapper_works? compiler
- else
- @unknown_langs << lang.to_s
+ ENV.with_build_environment do
+ ENV.userpaths!
+
+ @lang_list.each do |lang|
+ case lang
+ when :cc, :cxx, :f90, :f77
+ compiler = 'mpi' + lang.to_s
+ @non_functional << compiler unless mpi_wrapper_works? compiler
+ else
+ @unknown_langs << lang.to_s
+ end
end
end
-
- # Restore the original paths
- ENV['PATH'] = orig_PATH
-
@unknown_langs.empty? and @non_functional.empty?
end
diff --git a/Library/Homebrew/test/test_ENV.rb b/Library/Homebrew/test/test_ENV.rb
index 8e69cb6f0..1a1dd922b 100644
--- a/Library/Homebrew/test/test_ENV.rb
+++ b/Library/Homebrew/test/test_ENV.rb
@@ -26,4 +26,13 @@ class EnvironmentTests < Test::Unit::TestCase
assert_nil ENV['LD']
assert_equal ENV['OBJC'], ENV['CC']
end
+
+ def test_with_build_environment
+ before = ENV.to_hash
+ ENV.with_build_environment do
+ ENV['foo'] = 'bar'
+ end
+ assert_nil ENV['foo']
+ assert_equal before, ENV.to_hash
+ end
end