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