Skip to content

Cray bugfix: TERM missing while reading default target#15381

Merged
tgamblin merged 3 commits intodevelopfrom
bugfix/missing-xterm-cray
Mar 19, 2020
Merged

Cray bugfix: TERM missing while reading default target#15381
tgamblin merged 3 commits intodevelopfrom
bugfix/missing-xterm-cray

Conversation

@becker33
Copy link
Copy Markdown
Member

@becker33 becker33 commented Mar 6, 2020

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"

env = which('env')
output = env("-i", "/bin/bash", "-lc", "echo $CRAY_CPU_TARGET",
output = env("-i", "TERM=%s" % os.environ['TERM'],
"/bin/bash", "-lc", "echo $CRAY_CPU_TARGET",
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we do this in a slightly less complex way without relying on env?

    bash = Executable("/bin/bash")
    bash("-lc", "echo", "$CRAY_CPU_TARGET",
        env={"TERM": os.environ["TERM"]})

if _target is None and name == 'back_end':
_target = self._default_target_from_env()
if _target is not None:
if _target:
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What real case is this change handling?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

_default_target_from_env can return whitespace.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should fix that in _default_target_from_env instead of here.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this is clearer and more pythonic. I went back and forth on this.

_default_target_from_env runs a bash command and parses the output. If it gets anything, that's the target, if not, additional logic.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I do not think _default_target_from_env should return whitespace for failure -- can it really return whitespace or None?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It can't return None currently. It has to return a string.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reworked so it returns None, but I don't think this is an improvement.

@tgamblin tgamblin merged commit e5f8b09 into develop Mar 19, 2020
tgamblin pushed a commit that referenced this pull request Mar 20, 2020
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"
@adamjstewart adamjstewart deleted the bugfix/missing-xterm-cray branch March 21, 2020 15:55
@adamjstewart adamjstewart mentioned this pull request Mar 21, 2020
3 tasks
likask pushed a commit to likask/spack that referenced this pull request Apr 7, 2020
…upstream_master

* commit 'e2b1737a42c9c0c796671f9dd0c39f623e4c91c0': (1343 commits)
  update CHANGELOG.md for 0.14.1
  version bump: 0.14.1
  multiprocessing: allow Spack to run uninterrupted in background (spack#14682)
  Cray bugfix: TERM missing while reading default target (spack#15381)
  Upstreams: don't write metadata directory to upstream DB (spack#15526)
  Creating versions from urls doesn't modify class attributes (spack#15452)
  bugfix: fix install_missing_compilers option bug from v0.14.0 (spack#15416)
  bugfix: installer.py shouldn't be executable (spack#15386)
  Add function replace_prefix_nullterm for use on mach-o rpaths. (spack#15347)
  ArchSpec: fix semantics of satisfies when not concrete and strict is true (spack#15319)
  suite-sparse: fix installation for v5.X (spack#15326)
  testing:  increase installer coverage (spack#15237)
  bugfix: resolve undefined source_pkg_dir failure (spack#15339)
  Bugfix: resolve StopIteration message attribute failure (spack#15341)
  Recover coverage from subprocesses during unit tests (spack#15354)
  Correct pytest.raises matches to match (spack#15346)
  bugfix:  Add dependents when initializing spec from yaml (spack#15220)
  Uniquify suffixes added to module names (spack#14920)
  bugfix: ensure proper dependency handling for package-only installs (spack#15197)
  Fix for being able to 'spack load' packages that have been renamed. (spack#14348)
  ...

# Conflicts:
#	.travis.yml
#	lib/spack/spack/modules/common.py
#	var/spack/repos/builtin/packages/mofem-cephas/package.py
#	var/spack/repos/builtin/packages/mofem-fracture-module/package.py
#	var/spack/repos/builtin/packages/mofem-users-modules/package.py
#	var/spack/repos/builtin/packages/python/package.py
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants