Skip to content

Error concretizing environment containing only hpctoolkit #14754

@scottwittenburg

Description

@scottwittenburg

I created a small environment containing only hpctoolkit and using the x86_64 architecture for all targets in the packages section. Here is the spack.yaml defining my environment:

spack:
  packages:
    all:
      target: [x86_64]
  specs:
  - hpctoolkit %[email protected] os=ubuntu18.04
  view: false

When I tried to concretize that environment, the command failed with the following stack trace:

==> [2020-02-05-08:52:15.800194] Imported concretize from built-in commands
==> [2020-02-05-08:52:15.801124] Imported concretize from built-in commands
==> [2020-02-05-08:52:15.801615] WRITE LOCK: /data/scott/Documents/spack/ECP-2020/repro_tmp/env1/.spack-env/transaction_lock[0:0] [Acquiring]
==> [2020-02-05-08:52:15.801802] WRITE LOCK: /data/scott/Documents/spack/ECP-2020/repro_tmp/env1/.spack-env/transaction_lock[0:0] [Acquired]
==> [2020-02-05-08:52:15.806123] Reading config file /data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack.yaml
==> [2020-02-05-08:52:15.808586] Reading config file /data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/etc/spack/defaults/repos.yaml
==> [2020-02-05-08:52:15.933426] WRITE LOCK: /data/scott/Documents/spack/ECP-2020/repro_tmp/env1/.spack-env/transaction_lock[0:0] [Released]
Traceback (most recent call last):
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/bin/spack", line 64, in <module>
    sys.exit(spack.main.main())
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/main.py", line 752, in main
    return _invoke_command(command, parser, args, unknown)
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/main.py", line 486, in _invoke_command
    return_val = command(parser, args)
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/cmd/concretize.py", line 22, in concretize
    concretized_specs = env.concretize(force=args.force)
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/environment.py", line 948, in concretize
    return self._concretize_separately()
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/environment.py", line 1016, in _concretize_separately
    concrete = _concretize_from_constraints(uspec_constraints)
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/environment.py", line 1554, in _concretize_from_constraints
    return s.concretized()
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 2300, in concretized
    clone.concretize()
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 2150, in concretize
    user_spec_deps=user_spec_deps),
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 2628, in normalize
    visited, all_spec_deps, provider_index, tests)
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 2554, in _normalize_helper
    dep = self._evaluate_dependency_conditions(dep_name)
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 2377, in _evaluate_dependency_conditions
    if self.satisfies(when_spec, strict=True):
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 2881, in satisfies
    if not self.architecture.satisfies(other.architecture, strict):
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 360, in satisfies
    return self._satisfies_target(other.target, strict=strict)
  File "/data/scott/Documents/spack/ECP-2020/repro_tmp/env1/spack/lib/spack/spack/spec.py", line 383, in _satisfies_target
    min_ok = self_target.microarchitecture >= t_min if t_min else True
AttributeError: 'NoneType' object has no attribute 'microarchitecture'

If I change the environment to put the architecture directly in the abstract spec string, however, it concretizes fine. Here's the spack.yaml that works:

spack:
  specs:
  - hpctoolkit %[email protected] arch=linux-ubuntu18.04-x86_64
  view: false

This is happening on Ubuntu 18.04, here's some system information:

$ uname -a
Linux beast 4.15.0-76-generic #86-Ubuntu SMP Fri Jan 17 17:24:28 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"

I'm not sure whether this is an bug in spack core, or in the hpctoolkit package, or one of it's dependencies. Please let me know if more information is needed.

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions