ENV.with_build_environment
This commit is contained in:
parent
3d92f1c683
commit
d06824c357
@ -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}
|
||||
|
||||
|
@ -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
|
||||
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user