From e5f8b093a9c1b95ec30ba1a02777c91ad1a1805a Mon Sep 17 00:00:00 2001 From: Greg Becker Date: Thu, 19 Mar 2020 15:11:50 -0700 Subject: Cray bugfix: TERM missing while reading default target (#15381) Bug: Spack hangs on some Cray machines Reason: The TERM environment variable is necessary to run bash -lc "echo $CRAY_CPU_TARGET", but we run that command within env -i, which wipes the environment. Fix: Manually forward the TERM environment variable to env -i /bin/bash -lc "echo $CRAY_CPU_TARGET" --- lib/spack/spack/platforms/cray.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'lib') diff --git a/lib/spack/spack/platforms/cray.py b/lib/spack/spack/platforms/cray.py index cbeba96461..8eae51e66a 100644 --- a/lib/spack/spack/platforms/cray.py +++ b/lib/spack/spack/platforms/cray.py @@ -7,7 +7,7 @@ import os import re import llnl.util.tty as tty from spack.paths import build_env_path -from spack.util.executable import which +from spack.util.executable import Executable from spack.architecture import Platform, Target, NoPlatformError from spack.operating_systems.cray_frontend import CrayFrontend from spack.operating_systems.cnl import Cnl @@ -117,11 +117,13 @@ class Cray(Platform): ''' # env -i /bin/bash -lc echo $CRAY_CPU_TARGET 2> /dev/null if getattr(self, 'default', None) is None: - env = which('env') - output = env("-i", "/bin/bash", "-lc", "echo $CRAY_CPU_TARGET", - output=str, error=os.devnull) - self.default = output.strip() - tty.debug("Found default module:%s" % self.default) + output = Executable('/bin/bash')('-lc', 'echo $CRAY_CPU_TARGET', + env={'TERM': os.environ['TERM']}, + output=str, error=os.devnull) + output = ''.join(output.split()) # remove all whitespace + if output: + self.default = output + tty.debug("Found default module:%s" % self.default) return self.default def _avail_targets(self): -- cgit v1.2.3-60-g2f50