Repository: spack/spack

Issue:
Local test failures after #22845
### Steps to reproduce

```console
$ git fetch && git checkout develop && git reset --hard origin/develop
$ spack clean -dfmps
$ spack unit-test --lf
```

### Error message

```
======================================================================================================================================== FAILURES ========================================================================================================================================
___________________________________________________________________________________________________________________ test_default_rpaths_create_install_default_layout ____________________________________________________________________________________________________________________

mirror_dir = '/tmp/pytest-of-user/pytest-5/mirror0'

    @pytest.mark.requires_executables(*args)
    @pytest.mark.maybeslow
    @pytest.mark.usefixtures(
        'default_config', 'cache_directory', 'install_dir_default_layout',
        'test_mirror'
    )
    def test_default_rpaths_create_install_default_layout(mirror_dir):
        """
        Test the creation and installation of buildcaches with default rpaths
        into the default directory layout scheme.
        """
        gspec, cspec = Spec('garply').concretized(), Spec('corge').concretized()
    
        # Install 'corge' without using a cache
        install_cmd('--no-cache', cspec.name)
    
        # Create a buildache
        buildcache_cmd('create', '-au', '-d', mirror_dir, cspec.name)
        # Test force overwrite create buildcache (-f option)
        buildcache_cmd('create', '-auf', '-d', mirror_dir, cspec.name)
    
        # Create mirror index
        mirror_url = 'file://{0}'.format(mirror_dir)
        buildcache_cmd('update-index', '-d', mirror_url)
        # List the buildcaches in the mirror
        buildcache_cmd('list', '-alv')
    
        # Uninstall the package and deps
>       uninstall_cmd('-y', '--dependents', gspec.name)

lib/spack/spack/test/bindist.py:219: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088ee47c0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
_______________________________________________________________________________________________________________________ test_relative_rpaths_create_default_layout _______________________________________________________________________________________________________________________

mirror_dir = '/tmp/pytest-of-user/pytest-5/mirror0'

    @pytest.mark.requires_executables(*args)
    @pytest.mark.maybeslow
    @pytest.mark.nomockstage
    @pytest.mark.usefixtures(
        'default_config', 'cache_directory', 'install_dir_default_layout'
    )
    def test_relative_rpaths_create_default_layout(mirror_dir):
        """
        Test the creation and installation of buildcaches with relative
        rpaths into the default directory layout scheme.
        """
    
        gspec, cspec = Spec('garply').concretized(), Spec('corge').concretized()
    
        # Install 'corge' without using a cache
        install_cmd('--no-cache', cspec.name)
    
        # Create build cache with relative rpaths
        buildcache_cmd(
            'create', '-aur', '-d', mirror_dir, cspec.name
        )
    
        # Create mirror index
        mirror_url = 'file://%s' % mirror_dir
        buildcache_cmd('update-index', '-d', mirror_url)
    
        # Uninstall the package and deps
>       uninstall_cmd('-y', '--dependents', gspec.name)

lib/spack/spack/test/bindist.py:286: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd08870a730>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
______________________________________________________________________________________________________________________ test_relative_rpaths_install_default_layout _______________________________________________________________________________________________________________________

mirror_dir = '/tmp/pytest-of-user/pytest-5/mirror0'

    @pytest.mark.requires_executables(*args)
    @pytest.mark.maybeslow
    @pytest.mark.nomockstage
    @pytest.mark.usefixtures(
        'default_config', 'cache_directory', 'install_dir_default_layout',
        'test_mirror'
    )
    def test_relative_rpaths_install_default_layout(mirror_dir):
        """
        Test the creation and installation of buildcaches with relative
        rpaths into the default directory layout scheme.
        """
        gspec, cspec = Spec('garply').concretized(), Spec('corge').concretized()
    
        # Install buildcache created with relativized rpaths
        buildcache_cmd('install', '-auf', cspec.name)
    
        # This gives warning that spec is already installed
        buildcache_cmd('install', '-auf', cspec.name)
    
        # Uninstall the package and deps
>       uninstall_cmd('-y', '--dependents', gspec.name)

lib/spack/spack/test/bindist.py:310: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088ae7100>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
____________________________________________________________________________________________________________________________ test_update_sbang[mock_archive0] ____________________________________________________________________________________________________________________________

tmpdir = local('/tmp/pytest-of-user/pytest-5/test_update_sbang_mock_archive0'), test_mirror = '/tmp/pytest-of-user/pytest-5/mirror0'

    @pytest.mark.usefixtures('mock_fetch', 'install_mockery')
    def test_update_sbang(tmpdir, test_mirror):
        """Test the creation and installation of buildcaches with default rpaths
        into the non-default directory layout scheme, triggering an update of the
        sbang.
        """
        scheme = os.path.join(
            '${name}', '${version}',
            '${architecture}-${compiler.name}-${compiler.version}-${hash}'
        )
        spec_str = 'old-sbang'
        # Concretize a package with some old-fashioned sbang lines.
        old_spec = Spec(spec_str).concretized()
        old_spec_hash_str = '/{0}'.format(old_spec.dag_hash())
    
        # Need a fake mirror with *function* scope.
        mirror_dir = test_mirror
        mirror_url = 'file://{0}'.format(mirror_dir)
    
        # Assume all commands will concretize old_spec the same way.
        install_cmd('--no-cache', old_spec.name)
    
        # Create a buildcache with the installed spec.
        buildcache_cmd('create', '-u', '-a', '-d', mirror_dir, old_spec_hash_str)
    
        # Need to force an update of the buildcache index
        buildcache_cmd('update-index', '-d', mirror_url)
    
        # Uninstall the original package.
>       uninstall_cmd('-y', old_spec_hash_str)

lib/spack/spack/test/bindist.py:569: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088d5c880>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
________________________________________________________________________________________________________________________ test_uninstall_deprecated[mock_archive0] ________________________________________________________________________________________________________________________

mock_packages = <spack.repo.RepoPath object at 0x7fd08b440580>
mock_archive = Archive(url='file:///tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', path='/tmp/pytest-of-user/py...archive_file='/tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', expanded_archive_basedir='spack-src'), mock_fetch = None
install_mockery = None

    def test_uninstall_deprecated(mock_packages, mock_archive, mock_fetch,
                                  install_mockery):
        """Tests that we can still uninstall deprecated packages."""
        install('libelf@0.8.13')
        install('libelf@0.8.10')
    
        deprecate('-y', 'libelf@0.8.10', 'libelf@0.8.13')
    
        non_deprecated = spack.store.db.query()
    
>       uninstall('-y', 'libelf@0.8.10')

lib/spack/spack/test/cmd/deprecate.py:121: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd08b4d6ca0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
_______________________________________________________________________________________________________________ test_compiler_bootstrap_from_binary_mirror[mock_archive0] ________________________________________________________________________________________________________________

install_mockery_mutable_config = None, mock_packages = <spack.repo.RepoPath object at 0x7fd0894c21f0>, mock_fetch = None
mock_archive = Archive(url='file:///tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', path='/tmp/pytest-of-user/py...archive_file='/tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', expanded_archive_basedir='spack-src')
mutable_config = <spack.config.Configuration object at 0x7fd08891a850>, monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fd088c632e0>, tmpdir = local('/tmp/pytest-of-user/pytest-5/test_compiler_bootstrap_from_b0')

    def test_compiler_bootstrap_from_binary_mirror(
            install_mockery_mutable_config, mock_packages, mock_fetch,
            mock_archive, mutable_config, monkeypatch, tmpdir):
        """
        Make sure installing compiler from buildcache registers compiler
        """
    
        # Create a temp mirror directory for buildcache usage
        mirror_dir = tmpdir.join('mirror_dir')
        mirror_url = 'file://{0}'.format(mirror_dir.strpath)
    
        # Install a compiler, because we want to put it in a buildcache
        install('gcc@10.2.0')
    
        # Put installed compiler in the buildcache
        buildcache(
            'create', '-u', '-a', '-f', '-d', mirror_dir.strpath, 'gcc@10.2.0'
        )
    
        # Now uninstall the compiler
>       uninstall('-y', 'gcc@10.2.0')

lib/spack/spack/test/cmd/install.py:908: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088dbb5e0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
___________________________________________________________________________________________________________________ test_cache_install_full_hash_match[mock_archive0] ____________________________________________________________________________________________________________________

install_mockery_mutable_config = None, mock_packages = <spack.repo.RepoPath object at 0x7fd089073d90>, mock_fetch = None
mock_archive = Archive(url='file:///tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', path='/tmp/pytest-of-user/py...archive_file='/tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', expanded_archive_basedir='spack-src')
mutable_config = <spack.config.Configuration object at 0x7fd088da48e0>, monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fd088d7a9a0>, tmpdir = local('/tmp/pytest-of-user/pytest-5/test_cache_install_full_hash_m0')

    def test_cache_install_full_hash_match(
            install_mockery_mutable_config, mock_packages, mock_fetch,
            mock_archive, mutable_config, monkeypatch, tmpdir):
        """Make sure installing from cache respects full hash argument"""
    
        # Create a temp mirror directory for buildcache usage
        mirror_dir = tmpdir.join('mirror_dir')
        mirror_url = 'file://{0}'.format(mirror_dir.strpath)
    
        s = Spec('libdwarf').concretized()
        package_id = spack.installer.package_id(s.package)
    
        # Install a package
        install(s.name)
    
        # Put installed package in the buildcache
        buildcache('create', '-u', '-a', '-f', '-d', mirror_dir.strpath, s.name)
    
        # Now uninstall the package
>       uninstall('-y', s.name)

lib/spack/spack/test/cmd/install.py:996: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd0889060a0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
___________________________________________________________________________________________________________________________ test_mirror_destroy[mock_archive0] ___________________________________________________________________________________________________________________________

install_mockery_mutable_config = None, mock_packages = <spack.repo.RepoPath object at 0x7fd088d7aaf0>, mock_fetch = None
mock_archive = Archive(url='file:///tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', path='/tmp/pytest-of-user/py...archive_file='/tmp/pytest-of-user/pytest-5/mock-archive-dir0/spack-src.tar.gz', expanded_archive_basedir='spack-src')
mutable_config = <spack.config.Configuration object at 0x7fd088e3d130>, monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fd088dc8670>, tmpdir = local('/tmp/pytest-of-user/pytest-5/test_mirror_destroy_mock_archi0')

    def test_mirror_destroy(install_mockery_mutable_config,
                            mock_packages, mock_fetch, mock_archive,
                            mutable_config, monkeypatch, tmpdir):
        # Create a temp mirror directory for buildcache usage
        mirror_dir = tmpdir.join('mirror_dir')
        mirror_url = 'file://{0}'.format(mirror_dir.strpath)
        mirror('add', 'atest', mirror_url)
    
        spec_name = 'libdwarf'
    
        # Put a binary package in a buildcache
        install('--no-cache', spec_name)
        buildcache('create', '-u', '-a', '-f', '-d', mirror_dir.strpath, spec_name)
    
        contents = os.listdir(mirror_dir.strpath)
        assert('build_cache' in contents)
    
        # Destroy mirror by name
        mirror('destroy', '-m', 'atest')
    
        assert(not os.path.exists(mirror_dir.strpath))
    
        buildcache('create', '-u', '-a', '-f', '-d', mirror_dir.strpath, spec_name)
    
        contents = os.listdir(mirror_dir.strpath)
        assert('build_cache' in contents)
    
        # Destroy mirror by url
        mirror('destroy', '--mirror-url', mirror_url)
    
        assert(not os.path.exists(mirror_dir.strpath))
    
>       uninstall('-y', spec_name)

lib/spack/spack/test/cmd/mirror.py:224: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088d51bb0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
________________________________________________________________________________________________________________________________ test_install_legacy_yaml ________________________________________________________________________________________________________________________________

test_legacy_mirror = local('/tmp/pytest-of-user/pytest-5/test_install_legacy_yaml0/legacy_yaml_mirror'), install_mockery_mutable_config = None, mock_packages = <spack.repo.RepoPath object at 0x7fd08b4f7670>

    def test_install_legacy_yaml(test_legacy_mirror, install_mockery_mutable_config,
                                 mock_packages):
        install_cmd('--no-check-signature', '--cache-only', '-f', legacy_mirror_dir
                    + '/build_cache/test-debian6-core2-gcc-4.5.0-zlib-' +
                    '1.2.11-t5mczux3tfqpxwmg7egp7axy2jvyulqk.spec.yaml')
>       uninstall_cmd('-y', '/t5mczux3tfqpxwmg7egp7axy2jvyulqk')

lib/spack/spack/test/bindist.py:617: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088c17250>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
____________________________________________________________________________________________________________________________ test_function_calls[-a-effects5] ____________________________________________________________________________________________________________________________

command_line = '-a', effects = ['stages', 'downloads', 'caches', 'failures'], mock_calls_for_clean = {'caches': 1, 'downloads': 1, 'failures': 1, 'package': 0, ...}

    @pytest.mark.usefixtures(
        'mock_packages', 'config'
    )
    @pytest.mark.parametrize('command_line,effects', [
        ('mpileaks', ['package']),
        ('-s',       ['stages']),
        ('-sd',      ['stages', 'downloads']),
        ('-m',       ['caches']),
        ('-f',       ['failures']),
        ('-a',       all_effects),
        ('',         []),
    ])
    def test_function_calls(command_line, effects, mock_calls_for_clean):
    
        # Call the command with the supplied command line
>       clean(command_line)

lib/spack/spack/test/cmd/clean.py:61: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/clean.py:109: in clean
    uninstall('-a', '-y')
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088bb16a0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
_________________________________________________________________________________________________________________________________ test_mark_one_explicit _________________________________________________________________________________________________________________________________

mutable_database = <spack.database.Database object at 0x7fd0888e4970>

    @pytest.mark.db
    def test_mark_one_explicit(mutable_database):
        mark('-e', 'libelf')
>       uninstall('-y', '-a', 'mpileaks')

lib/spack/spack/test/cmd/mark.py:48: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088d83940>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
--------------------------------------------------------------------------------------------------------------------------------- Captured stdout setup ----------------------------------------------------------------------------------------------------------------------------------
==> Installing libelf-0.8.13-snduugzfyej6xayqhrz23peuzdto5g37
==> No binary for libelf-0.8.13-snduugzfyej6xayqhrz23peuzdto5g37 found: installing from source
==> libelf: Successfully installed libelf-0.8.13-snduugzfyej6xayqhrz23peuzdto5g37
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/libelf-0.8.13-snduugzfyej6xayqhrz23peuzdto5g37
==> Installing mpich-3.0.4-my7k6etkgkosk2wdyebtajaiyxfbftgi
==> No binary for mpich-3.0.4-my7k6etkgkosk2wdyebtajaiyxfbftgi found: installing from source
==> mpich: Successfully installed mpich-3.0.4-my7k6etkgkosk2wdyebtajaiyxfbftgi
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/mpich-3.0.4-my7k6etkgkosk2wdyebtajaiyxfbftgi
==> Installing libdwarf-20130729-l4jgpc5efynz4lag76crxhn6odbibcgv
==> No binary for libdwarf-20130729-l4jgpc5efynz4lag76crxhn6odbibcgv found: installing from source
==> libdwarf: Successfully installed libdwarf-20130729-l4jgpc5efynz4lag76crxhn6odbibcgv
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/libdwarf-20130729-l4jgpc5efynz4lag76crxhn6odbibcgv
==> Installing dyninst-8.2-oq4xerumwdazt2rinzhrz5jzfio4slr2
==> No binary for dyninst-8.2-oq4xerumwdazt2rinzhrz5jzfio4slr2 found: installing from source
==> dyninst: Successfully installed dyninst-8.2-oq4xerumwdazt2rinzhrz5jzfio4slr2
  Fetch: .  Build: 0.02s.  Total: 0.02s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/dyninst-8.2-oq4xerumwdazt2rinzhrz5jzfio4slr2
==> Installing callpath-1.0-iki7b4p4zwfslj5fruemmb7fbwdxwayf
==> No binary for callpath-1.0-iki7b4p4zwfslj5fruemmb7fbwdxwayf found: installing from source
==> callpath: Successfully installed callpath-1.0-iki7b4p4zwfslj5fruemmb7fbwdxwayf
  Fetch: .  Build: 0.02s.  Total: 0.02s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/callpath-1.0-iki7b4p4zwfslj5fruemmb7fbwdxwayf
==> Installing mpileaks-2.3-sbxqpp36xwglprdywzpwvmgqb34rgx4u
==> No binary for mpileaks-2.3-sbxqpp36xwglprdywzpwvmgqb34rgx4u found: installing from source
==> mpileaks: Successfully installed mpileaks-2.3-sbxqpp36xwglprdywzpwvmgqb34rgx4u
  Fetch: .  Build: 0.02s.  Total: 0.02s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/mpileaks-2.3-sbxqpp36xwglprdywzpwvmgqb34rgx4u
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/libelf-0.8.13-snduugzfyej6xayqhrz23peuzdto5g37
==> Installing mpich2-1.5-nakudp4aztyxigoacdd5jaesujortvut
==> No binary for mpich2-1.5-nakudp4aztyxigoacdd5jaesujortvut found: installing from source
==> mpich2: Successfully installed mpich2-1.5-nakudp4aztyxigoacdd5jaesujortvut
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/mpich2-1.5-nakudp4aztyxigoacdd5jaesujortvut
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/libdwarf-20130729-l4jgpc5efynz4lag76crxhn6odbibcgv
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/dyninst-8.2-oq4xerumwdazt2rinzhrz5jzfio4slr2
==> Installing callpath-1.0-gdo336gzfl3sbhqgb7vkhbzzkdjymm3i
==> No binary for callpath-1.0-gdo336gzfl3sbhqgb7vkhbzzkdjymm3i found: installing from source
==> callpath: Successfully installed callpath-1.0-gdo336gzfl3sbhqgb7vkhbzzkdjymm3i
  Fetch: .  Build: 0.02s.  Total: 0.02s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/callpath-1.0-gdo336gzfl3sbhqgb7vkhbzzkdjymm3i
==> Installing mpileaks-2.3-3bwhm75rcrcp2pgajnc25ywwsssf4lcs
==> No binary for mpileaks-2.3-3bwhm75rcrcp2pgajnc25ywwsssf4lcs found: installing from source
==> mpileaks: Successfully installed mpileaks-2.3-3bwhm75rcrcp2pgajnc25ywwsssf4lcs
  Fetch: .  Build: 0.02s.  Total: 0.02s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/mpileaks-2.3-3bwhm75rcrcp2pgajnc25ywwsssf4lcs
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/libelf-0.8.13-snduugzfyej6xayqhrz23peuzdto5g37
==> Installing fake-1.0-yxjepovioa55hhuueayjwcb4wpk7yoap
==> No binary for fake-1.0-yxjepovioa55hhuueayjwcb4wpk7yoap found: installing from source
==> fake: Successfully installed fake-1.0-yxjepovioa55hhuueayjwcb4wpk7yoap
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/fake-1.0-yxjepovioa55hhuueayjwcb4wpk7yoap
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/libdwarf-20130729-l4jgpc5efynz4lag76crxhn6odbibcgv
==> Installing zmpi-1.0-blrzj3lj3b327rczpabcrafi4gje4gbx
==> No binary for zmpi-1.0-blrzj3lj3b327rczpabcrafi4gje4gbx found: installing from source
==> zmpi: Successfully installed zmpi-1.0-blrzj3lj3b327rczpabcrafi4gje4gbx
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/zmpi-1.0-blrzj3lj3b327rczpabcrafi4gje4gbx
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/dyninst-8.2-oq4xerumwdazt2rinzhrz5jzfio4slr2
==> Installing callpath-1.0-tll7qk6ypp27wlhzlg4oa7d2bzcbahms
==> No binary for callpath-1.0-tll7qk6ypp27wlhzlg4oa7d2bzcbahms found: installing from source
==> callpath: Successfully installed callpath-1.0-tll7qk6ypp27wlhzlg4oa7d2bzcbahms
  Fetch: .  Build: 0.02s.  Total: 0.02s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/callpath-1.0-tll7qk6ypp27wlhzlg4oa7d2bzcbahms
==> Installing mpileaks-2.3-4glifsifafqcrkphplq4rewlcxnomf5l
==> No binary for mpileaks-2.3-4glifsifafqcrkphplq4rewlcxnomf5l found: installing from source
==> mpileaks: Successfully installed mpileaks-2.3-4glifsifafqcrkphplq4rewlcxnomf5l
  Fetch: .  Build: 0.02s.  Total: 0.02s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/mpileaks-2.3-4glifsifafqcrkphplq4rewlcxnomf5l
[+] /path/to/external_tool (external externaltool-1.0-z6nog2otsocdkq7k5nhs7r2bbkouvbjv)
[+] /path/to/external_virtual_gcc (external externalvirtual-1.0-culoyhgparxirrrvsjjbyrizhsb5frvr)
==> Installing externaltest-1.0-semfsmmquwrwhw3z3w3vnm7trtcdhaeg
==> No binary for externaltest-1.0-semfsmmquwrwhw3z3w3vnm7trtcdhaeg found: installing from source
==> externaltest: Successfully installed externaltest-1.0-semfsmmquwrwhw3z3w3vnm7trtcdhaeg
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/externaltest-1.0-semfsmmquwrwhw3z3w3vnm7trtcdhaeg
==> Installing trivial-smoke-test-1.0-xeiuz3vzu3fvfmmagueenita4gpyb674
==> No binary for trivial-smoke-test-1.0-xeiuz3vzu3fvfmmagueenita4gpyb674 found: installing from source
==> trivial-smoke-test: Successfully installed trivial-smoke-test-1.0-xeiuz3vzu3fvfmmagueenita4gpyb674
  Fetch: .  Build: 0.01s.  Total: 0.01s.
[+] /tmp/pytest-of-user/pytest-5/mock_store0/test-debian6-core2/gcc-4.5.0/trivial-smoke-test-1.0-xeiuz3vzu3fvfmmagueenita4gpyb674
--------------------------------------------------------------------------------------------------------------------------------- Captured stderr setup ----------------------------------------------------------------------------------------------------------------------------------
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/libelf-0.8.13-gcc-4.5.0-snduugz
spec : libelf@0.8.13%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/libdwarf-20130729-gcc-4.5.0-l4jgpc5
spec : libdwarf@20130729%gcc@4.5.0 arch=test-debian6-core2 ^libelf@0.8.13%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/dyninst-8.2-gcc-4.5.0-oq4xeru
spec : dyninst@8.2%gcc@4.5.0 arch=test-debian6-core2 ^libdwarf@20130729%gcc@4.5.0 arch=test-debian6-core2 ^libelf@0.8.13%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/mpich2-1.5-gcc-4.5.0-nakudp4
spec : mpich2@1.5%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/callpath-1.0-gcc-4.5.0-gdo336g
spec : callpath@1.0%gcc@4.5.0 arch=test-debian6-core2 ^dyninst@8.2%gcc@4.5.0 arch=test-debian6-core2 ^libdwarf@20130729%gcc@4.5.0 arch=test-debian6-core2 ^libelf@0.8.13%gcc@4.5.0 arch=test-debian6-core2 ^mpich2@1.5%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/fake-1.0-gcc-4.5.0-yxjepov
spec : fake@1.0%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/zmpi-1.0-gcc-4.5.0-blrzj3l
spec : zmpi@1.0%gcc@4.5.0 arch=test-debian6-core2 ^fake@1.0%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/callpath-1.0-gcc-4.5.0-tll7qk6
spec : callpath@1.0%gcc@4.5.0 arch=test-debian6-core2 ^dyninst@8.2%gcc@4.5.0 arch=test-debian6-core2 ^fake@1.0%gcc@4.5.0 arch=test-debian6-core2 ^libdwarf@20130729%gcc@4.5.0 arch=test-debian6-core2 ^libelf@0.8.13%gcc@4.5.0 arch=test-debian6-core2 ^zmpi@1.0%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/externaltest-1.0-gcc-4.5.0-semfsmm
spec : externaltest@1.0%gcc@4.5.0 arch=test-debian6-core2 ^externaltool@1.0%gcc@4.5.0 arch=test-debian6-core2 ^externalvirtual@1.0%gcc@4.5.0 arch=test-debian6-core2
==> Warning: Module file already exists : skipping creation
file : /home/user/spack/share/spack/modules/test-debian6-core2/trivial-smoke-test-1.0-gcc-4.5.0-xeiuz3v
spec : trivial-smoke-test@1.0%gcc@4.5.0 arch=test-debian6-core2
_______________________________________________________________________________________________________________________________ test_installed_dependents ________________________________________________________________________________________________________________________________

mutable_database = <spack.database.Database object at 0x7fd088b550d0>

    @pytest.mark.db
    def test_installed_dependents(mutable_database):
        """Test can't uninstall when there are installed dependents."""
        with pytest.raises(SpackCommandError):
>           uninstall('-y', 'libelf')

lib/spack/spack/test/cmd/uninstall.py:38: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd0890f0bb0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
________________________________________________________________________________________________________________________________ test_recursive_uninstall ________________________________________________________________________________________________________________________________

mutable_database = <spack.database.Database object at 0x7fd088a66a00>

    @pytest.mark.db
    def test_recursive_uninstall(mutable_database):
        """Test recursive uninstall."""
>       uninstall('-y', '-a', '--dependents', 'callpath')

lib/spack/spack/test/cmd/uninstall.py:44: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088df47f0>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
___________________________________________________________________________________________________________________ test_uninstall_spec_with_multiple_roots[dyninst-8] ___________________________________________________________________________________________________________________

constraint = 'dyninst', expected_number_of_specs = 8, mutable_database = <spack.database.Database object at 0x7fd088e30400>

    @pytest.mark.db
    @pytest.mark.regression('3690')
    @pytest.mark.parametrize('constraint,expected_number_of_specs', [
        ('dyninst', 8), ('libelf', 6)
    ])
    def test_uninstall_spec_with_multiple_roots(
            constraint, expected_number_of_specs, mutable_database
    ):
>       uninstall('-y', '-a', '--dependents', constraint)

lib/spack/spack/test/cmd/uninstall.py:66: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd0888ec880>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
___________________________________________________________________________________________________________________ test_uninstall_spec_with_multiple_roots[libelf-6] ____________________________________________________________________________________________________________________

constraint = 'libelf', expected_number_of_specs = 6, mutable_database = <spack.database.Database object at 0x7fd088883d00>

    @pytest.mark.db
    @pytest.mark.regression('3690')
    @pytest.mark.parametrize('constraint,expected_number_of_specs', [
        ('dyninst', 8), ('libelf', 6)
    ])
    def test_uninstall_spec_with_multiple_roots(
            constraint, expected_number_of_specs, mutable_database
    ):
>       uninstall('-y', '-a', '--dependents', constraint)

lib/spack/spack/test/cmd/uninstall.py:66: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd0888aea60>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
_____________________________________________________________________________________________________________ test_force_uninstall_spec_with_ref_count_not_zero[dyninst-14] ______________________________________________________________________________________________________________

constraint = 'dyninst', expected_number_of_specs = 14, mutable_database = <spack.database.Database object at 0x7fd088b81ee0>

    @pytest.mark.db
    @pytest.mark.parametrize('constraint,expected_number_of_specs', [
        ('dyninst', 14), ('libelf', 14)
    ])
    def test_force_uninstall_spec_with_ref_count_not_zero(
            constraint, expected_number_of_specs, mutable_database
    ):
>       uninstall('-f', '-y', constraint)

lib/spack/spack/test/cmd/uninstall.py:79: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088b69b20>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
______________________________________________________________________________________________________________ test_force_uninstall_spec_with_ref_count_not_zero[libelf-14] ______________________________________________________________________________________________________________

constraint = 'libelf', expected_number_of_specs = 14, mutable_database = <spack.database.Database object at 0x7fd088dbeb50>

    @pytest.mark.db
    @pytest.mark.parametrize('constraint,expected_number_of_specs', [
        ('dyninst', 14), ('libelf', 14)
    ])
    def test_force_uninstall_spec_with_ref_count_not_zero(
            constraint, expected_number_of_specs, mutable_database
    ):
>       uninstall('-f', '-y', constraint)

lib/spack/spack/test/cmd/uninstall.py:79: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd0888c3d60>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
_______________________________________________________________________________________________________________________ test_force_uninstall_and_reinstall_by_hash _______________________________________________________________________________________________________________________

mutable_database = <spack.database.Database object at 0x7fd08a88fcd0>

    @pytest.mark.db
    def test_force_uninstall_and_reinstall_by_hash(mutable_database):
        """Test forced uninstall and reinstall of old specs."""
        # this is the spec to be removed
        callpath_spec = spack.store.db.query_one('callpath ^mpich')
        dag_hash = callpath_spec.dag_hash()
    
        # ensure can look up by hash and that it's a dependent of mpileaks
        def validate_callpath_spec(installed):
            assert installed is True or installed is False
    
            specs = spack.store.db.get_by_hash(dag_hash, installed=installed)
            assert len(specs) == 1 and specs[0] == callpath_spec
    
            specs = spack.store.db.get_by_hash(dag_hash[:7], installed=installed)
            assert len(specs) == 1 and specs[0] == callpath_spec
    
            specs = spack.store.db.get_by_hash(dag_hash, installed=any)
            assert len(specs) == 1 and specs[0] == callpath_spec
    
            specs = spack.store.db.get_by_hash(dag_hash[:7], installed=any)
            assert len(specs) == 1 and specs[0] == callpath_spec
    
            specs = spack.store.db.get_by_hash(dag_hash, installed=not installed)
            assert specs is None
    
            specs = spack.store.db.get_by_hash(dag_hash[:7],
                                               installed=not installed)
            assert specs is None
    
            mpileaks_spec = spack.store.db.query_one('mpileaks ^mpich')
            assert callpath_spec in mpileaks_spec
    
            spec = spack.store.db.query_one('callpath ^mpich', installed=installed)
            assert spec == callpath_spec
    
            spec = spack.store.db.query_one('callpath ^mpich', installed=any)
            assert spec == callpath_spec
    
            spec = spack.store.db.query_one('callpath ^mpich',
                                            installed=not installed)
            assert spec is None
    
        validate_callpath_spec(True)
    
>       uninstall('-y', '-f', 'callpath ^mpich')

lib/spack/spack/test/cmd/uninstall.py:130: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd088d30f40>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
______________________________________________________________________________________________________________________ test_in_memory_consistency_when_uninstalling ______________________________________________________________________________________________________________________

mutable_database = <spack.database.Database object at 0x7fd088dc8f40>, monkeypatch = <_pytest.monkeypatch.MonkeyPatch object at 0x7fd088835550>

    @pytest.mark.db
    @pytest.mark.regression('15773')
    def test_in_memory_consistency_when_uninstalling(
            mutable_database, monkeypatch
    ):
        """Test that uninstalling doesn't raise warnings"""
        def _warn(*args, **kwargs):
            raise RuntimeError('a warning was triggered!')
        monkeypatch.setattr(tty, 'warn', _warn)
        # Now try to uninstall and check this doesn't trigger warnings
>       uninstall('-y', '-a')

lib/spack/spack/test/cmd/uninstall.py:174: 
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 
lib/spack/spack/main.py:584: in __call__
    self.returncode = _invoke_command(
lib/spack/spack/main.py:525: in _invoke_command
    return_val = command(parser, args)
lib/spack/spack/cmd/uninstall.py:360: in uninstall
    uninstall_specs(args, specs)
lib/spack/spack/cmd/uninstall.py:316: in uninstall_specs
    uninstall_list, remove_list = get_uninstall_list(args, specs, env)
lib/spack/spack/cmd/uninstall.py:252: in get_uninstall_list
    spec_envs = dependent_environments(uninstall_list)
lib/spack/spack/cmd/uninstall.py:163: in dependent_environments
    hashes = set(env.all_hashes())
lib/spack/spack/environment.py:1550: in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ 

self = <spack.environment.Environment object at 0x7fd08b502040>

    def all_specs(self):
        """Return all specs, even those a user spec would shadow."""
        all_specs = set()
        for h in self.concretized_order:
>           all_specs.update(self.specs_by_hash[h].traverse())
E           KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'

lib/spack/spack/environment.py:1542: KeyError
================================================================================================================================= 3019 tests deselected ==================================================================================================================================
====================================================================================================================== 19 failed, 3019 deselected in 20.57 seconds =======================================================================================================================
```

### Information on your system

* **Spack:** 0.16.2-4205-161f0d5045
* **Python:** 3.8.11
* **Platform:** linux-ubuntu20.04-zen2
* **Concretizer:** clingo

### General information

- [X] I have run `spack debug report` and reported the version of Spack/Python/Platform
- [X] I have searched the issues of this repo and believe this is not a duplicate
- [X] I have run the failing commands in debug mode and reported the output


Discussion:
Not sure if this explains all the test failures, but running `spack clean -b` (which I didn't want to do at first) fails in the code that checks all environments if a spec ... in the bootstrap store is used in that environment too (see https://github.com/spack/spack/issues/25203). In any case, turns out that the real error is:

```
$ spack -d -e hello find
Traceback (most recent call last):
  File "/home/user/spack/bin/spack", line 100, in <module>
    sys.exit(spack.main.main())
  File "/home/user/spack/lib/spack/spack/main.py", line 797, in main
    return _invoke_command(command, parser, args, unknown)
  File "/home/user/spack/lib/spack/spack/main.py", line 525, in _invoke_command
    return_val = command(parser, args)
  File "/home/user/spack/lib/spack/spack/cmd/find.py", line 215, in find
    _find(parser, args)
  File "/home/user/spack/lib/spack/spack/cmd/find.py", line 220, in _find
    results = args.specs(**q_args)
  File "/home/user/spack/lib/spack/spack/cmd/common/arguments.py", line 74, in _specs
    kwargs['hashes'] = set(env.all_hashes())
  File "/home/user/spack/lib/spack/spack/environment.py", line 1550, in all_hashes
    return list(set(s.dag_hash() for s in self.all_specs()))
  File "/home/user/spack/lib/spack/spack/environment.py", line 1542, in all_specs
    all_specs.update(self.specs_by_hash[h].traverse())
KeyError: 'hul5b3wgfnfor3wndznoksqdphdp3ocs'
```

And this KeyError happens because `self.specs_by_hash` is empty, which happens because this branch is never hit:

https://github.com/spack/spack/blob/161f0d5045447b047c388e3bb5c958a30f4a5cd5/lib/spack/spack/environment.py#L1764-L1765

because dag_hash is `zhty4vxuoiyd3crvamdq4sxssps647ph`, the build_hash is `khot3jmdexocps3ayft6cpxk562wabzh` and the root hashes are `hul5b3wgfnfor3wndznoksqdphdp3ocs`.

Maybe it computes a new dag/build hash then with modified hashes?

<details>
<summary>I'm not 100% sure how to replicate this bug from scratch, but my spack.{yaml,lock} files are attached:</summary>

```yaml
spack:
  specs:
  - sirius@develop amdgpu_target=gfx906 %gcc +vdwxc +tests +apps +rocm ^spfft amdgpu_target=gfx906
    +rocm ^rocfft amdgpu_target=gfx906 ^rocblas tensile_architecture=gfx906 ^openmpi
    ^openblas
  view: false
  packages:
    all:
      target: [x86_64]
      variants:
      - build_type=Release
      - +release
```

```yaml
{
 "_meta": {
  "file-type": "spack-lockfile",
  "lockfile-version": 2
 },
 "roots": [
  {
   "hash": "hul5b3wgfnfor3wndznoksqdphdp3ocs",
   "spec": "sirius@develop%gcc+apps+rocm+tests+vdwxc amdgpu_target=gfx906 ^openblas ^openmpi ^rocblas tensile_architecture=gfx906 ^rocfft amdgpu_target=gfx906 ^spfft+rocm amdgpu_target=gfx906"
  }
 ],
 "concrete_specs": {
  "hul5b3wgfnfor3wndznoksqdphdp3ocs": {
   "sirius": {
    "version": "develop",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "amdgpu_target": [
      "gfx906"
     ],
     "apps": true,
     "boost_filesystem": false,
     "build_type": "Release",
     "cuda": false,
     "cuda_arch": [
      "none"
     ],
     "elpa": false,
     "fortran": false,
     "ipo": false,
     "magma": false,
     "memory_pool": true,
     "nlcglib": false,
     "openmp": true,
     "profiler": true,
     "python": false,
     "rocm": true,
     "scalapack": false,
     "shared": true,
     "single_precision": false,
     "tests": true,
     "vdwxc": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "fftw": {
      "hash": "tf463paypcvpxcpu4nxpatkt4dpjidrs",
      "type": [
       "build",
       "link"
      ]
     },
     "gsl": {
      "hash": "osvbqk44gputdrccck577cc6bdektjcm",
      "type": [
       "build",
       "link"
      ]
     },
     "hdf5": {
      "hash": "3ha52hcxpv3b3aylzunfr44symtkwosj",
      "type": [
       "build",
       "link"
      ]
     },
     "hip": {
      "hash": "p4zucfhezxfw2uc32qbqgj2fz5k56thr",
      "type": [
       "build",
       "link"
      ]
     },
     "libvdwxc": {
      "hash": "7jj3g347ym4jj5ib4crl2bghyaywxex4",
      "type": [
       "build",
       "link"
      ]
     },
     "libxc": {
      "hash": "4azqelv3fp5e4vj7vpakn4enjnmcug4g",
      "type": [
       "build",
       "link"
      ]
     },
     "openblas": {
      "hash": "zoovwxrffir5qxxvofaxjsgde2pwc5kr",
      "type": [
       "build",
       "link"
      ]
     },
     "openmpi": {
      "hash": "sztuoqur2cfeapdfyfm2lnjphwli3jh3",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     },
     "rocblas": {
      "hash": "dcueoy63yw7idkljhtlh55xbjerswlbf",
      "type": [
       "build",
       "link"
      ]
     },
     "spfft": {
      "hash": "txajgs5kdicbi5pkdlkypodghdzguzdl",
      "type": [
       "build",
       "link"
      ]
     },
     "spglib": {
      "hash": "esxk5xwdv6ch3bg2iugmfg4kgxnsskgn",
      "type": [
       "build",
       "link"
      ]
     },
     "spla": {
      "hash": "onqyk3tdzwumn7g7ux2nrabtkari7ibx",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "zhty4vxuoiyd3crvamdq4sxssps647ph"
   }
  },
  "3glc4gus4iormocjwt6nes7weg2afbi5": {
   "cmake": {
    "version": "3.21.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "doc": false,
     "ncurses": true,
     "ownlibs": true,
     "qt": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "6ds7ts5obnrzgv6dyzopvme33v6243py"
   }
  },
  "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn": {
   "ncurses": {
    "version": "6.2",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "abi": "none",
     "symlinks": false,
     "termlib": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     }
    },
    "hash": "hu2noe4ky55odyfztdzplpxhktrygvni"
   }
  },
  "yfeugodkp6wnrj4omiadzcqjjs4ssuvw": {
   "pkgconf": {
    "version": "1.8.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw"
   }
  },
  "tf463paypcvpxcpu4nxpatkt4dpjidrs": {
   "fftw": {
    "version": "3.3.9",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "mpi": true,
     "openmp": false,
     "pfft_patches": false,
     "precision": [
      "double",
      "float"
     ],
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "openmpi": {
      "hash": "sztuoqur2cfeapdfyfm2lnjphwli3jh3",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "ubxn52amlcwdn5usedos5b2ysenb5onf"
   }
  },
  "sztuoqur2cfeapdfyfm2lnjphwli3jh3": {
   "openmpi": {
    "version": "4.1.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "atomics": false,
     "cuda": false,
     "cxx": false,
     "cxx_exceptions": false,
     "fabrics": [
      "none"
     ],
     "gpfs": true,
     "internal-hwloc": false,
     "java": false,
     "legacylaunchers": false,
     "lustre": false,
     "memchecker": false,
     "pmi": false,
     "schedulers": [
      "none"
     ],
     "singularity": false,
     "sqlite3": false,
     "static": true,
     "thread_multiple": false,
     "vt": true,
     "wrapper-rpath": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "hwloc": {
      "hash": "24mmurv3noxmwkxcq7cbx43zoi5ku7s4",
      "type": [
       "build",
       "link"
      ]
     },
     "libevent": {
      "hash": "sv7jyshb5wssbgjo6yd6p7fao2frktyv",
      "type": [
       "build",
       "link"
      ]
     },
     "numactl": {
      "hash": "xottldxqqif5qptxb4lvencjuyxzsj4t",
      "type": [
       "build",
       "link"
      ]
     },
     "openssh": {
      "hash": "w53se2i4dpnokn2nxmwkdgjqd3lnin5u",
      "type": [
       "run"
      ]
     },
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "4hscc34yjepfefwjakyp66geqzp5drpy"
   }
  },
  "24mmurv3noxmwkxcq7cbx43zoi5ku7s4": {
   "hwloc": {
    "version": "2.5.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cairo": false,
     "cuda": false,
     "gl": false,
     "libudev": false,
     "libxml2": true,
     "netloc": false,
     "nvml": false,
     "opencl": false,
     "pci": true,
     "rocm": false,
     "shared": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libpciaccess": {
      "hash": "uae3dzcmwe2f3jk5qvufklld5hdzdkyn",
      "type": [
       "build",
       "link"
      ]
     },
     "libxml2": {
      "hash": "eu63a6nh6yvyhljezmldjavsobzgtuaf",
      "type": [
       "build",
       "link"
      ]
     },
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     }
    },
    "hash": "t743sgg4xhe3zem3bezhkqi7rwzgefq6"
   }
  },
  "uae3dzcmwe2f3jk5qvufklld5hdzdkyn": {
   "libpciaccess": {
    "version": "0.16",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libtool": {
      "hash": "nkaivo62kr54ipc7qk5zwwcfvpfzo2tb",
      "type": [
       "build"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     }
    },
    "hash": "v2iyxyucaryhzmmptykyggfpr3baa6dy"
   }
  },
  "nkaivo62kr54ipc7qk5zwwcfvpfzo2tb": {
   "libtool": {
    "version": "2.4.6",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "m4": {
      "hash": "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim",
      "type": [
       "build"
      ]
     }
    },
    "hash": "ituc5ogtfpqhht2sgekjaxnetx5lntja"
   }
  },
  "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim": {
   "m4": {
    "version": "1.4.19",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "sigsegv": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libsigsegv": {
      "hash": "pi2thl7wb53qgw5ca2o27b5xddg5movl",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim"
   }
  },
  "pi2thl7wb53qgw5ca2o27b5xddg5movl": {
   "libsigsegv": {
    "version": "2.13",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "pi2thl7wb53qgw5ca2o27b5xddg5movl"
   }
  },
  "ddpwzfe2h3mfu23ypupbzwwxamdf64za": {
   "util-macros": {
    "version": "1.19.3",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za"
   }
  },
  "eu63a6nh6yvyhljezmldjavsobzgtuaf": {
   "libxml2": {
    "version": "2.9.12",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "python": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libiconv": {
      "hash": "2zx3n6gfqutun6peuzhgosr5qf4a24hg",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "xz": {
      "hash": "vhfgrit4pf7fwzdnbdbtcp3vj2lzfrbm",
      "type": [
       "build",
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "zc5zokwrduhi7oaapfc5lql7fdxr546v"
   }
  },
  "2zx3n6gfqutun6peuzhgosr5qf4a24hg": {
   "libiconv": {
    "version": "1.16",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "libs": [
      "shared",
      "static"
     ],
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "2zx3n6gfqutun6peuzhgosr5qf4a24hg"
   }
  },
  "vhfgrit4pf7fwzdnbdbtcp3vj2lzfrbm": {
   "xz": {
    "version": "5.2.5",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "libs": [
      "shared",
      "static"
     ],
     "pic": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "vhfgrit4pf7fwzdnbdbtcp3vj2lzfrbm"
   }
  },
  "zscjgjjp72zgnnte56mcen2llicr4gtk": {
   "zlib": {
    "version": "1.2.11",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "optimize": true,
     "pic": true,
     "shared": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk"
   }
  },
  "sv7jyshb5wssbgjo6yd6p7fao2frktyv": {
   "libevent": {
    "version": "2.1.12",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "openssl": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "openssl": {
      "hash": "zxg43hau5cunaeufmjssig7tq6nlxti3",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "qzz3btgfb4msrpiklmd6fek3snffzjog"
   }
  },
  "zxg43hau5cunaeufmjssig7tq6nlxti3": {
   "openssl": {
    "version": "1.1.1l",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "docs": false,
     "systemcerts": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "pxap6fonmmppugf3hojodp6aqsmzptn2"
   }
  },
  "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5": {
   "perl": {
    "version": "5.34.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cpanm": true,
     "shared": true,
     "threads": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "berkeley-db": {
      "hash": "lxlga7qrxsi6tzcrf6nubhigtoxhydpk",
      "type": [
       "build",
       "link"
      ]
     },
     "bzip2": {
      "hash": "eexqngt6xhwsjvobadbd7c26fds4clog",
      "type": [
       "build",
       "link"
      ]
     },
     "gdbm": {
      "hash": "jzewrdimwgcnh7s6g6thzleftkkwjsqg",
      "type": [
       "build",
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "qwjmmn6maz6dbplplgtnz6clolv24ur4"
   }
  },
  "lxlga7qrxsi6tzcrf6nubhigtoxhydpk": {
   "berkeley-db": {
    "version": "18.1.40",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cxx": true,
     "docs": false,
     "patches": [
      "b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522"
     ],
     "stl": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "b231fcc4d5cff05e5c3a4814f6a5af0e9a966428dc2176540d2c05aff41de522"
    ],
    "hash": "lxlga7qrxsi6tzcrf6nubhigtoxhydpk"
   }
  },
  "eexqngt6xhwsjvobadbd7c26fds4clog": {
   "bzip2": {
    "version": "1.0.8",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "debug": false,
     "pic": false,
     "shared": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "diffutils": {
      "hash": "atuliapgqehi3ean3rqdj54vxtm57ss6",
      "type": [
       "build"
      ]
     }
    },
    "hash": "z33wjxn5clh5anun3x7n5shdcossh3ep"
   }
  },
  "atuliapgqehi3ean3rqdj54vxtm57ss6": {
   "diffutils": {
    "version": "3.7",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libiconv": {
      "hash": "2zx3n6gfqutun6peuzhgosr5qf4a24hg",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "atuliapgqehi3ean3rqdj54vxtm57ss6"
   }
  },
  "jzewrdimwgcnh7s6g6thzleftkkwjsqg": {
   "gdbm": {
    "version": "1.19",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "readline": {
      "hash": "uzy4rolg6k76qm7rcvl5srmhnwykl5mi",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "wg3fgw2ie4uvgrvkzge5mzj4dwyng2br"
   }
  },
  "uzy4rolg6k76qm7rcvl5srmhnwykl5mi": {
   "readline": {
    "version": "8.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "42blutcmgrxflcvdqq7yoavndksbkg2d"
   }
  },
  "xottldxqqif5qptxb4lvencjuyxzsj4t": {
   "numactl": {
    "version": "2.0.14",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "patches": [
      "4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94",
      "62fc8a8bf7665a60e8f4c93ebbd535647cebf74198f7afafec4c085a8825c006"
     ],
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "4e1d78cbbb85de625bad28705e748856033eaafab92a66dffd383a3d7e00cc94",
     "62fc8a8bf7665a60e8f4c93ebbd535647cebf74198f7afafec4c085a8825c006"
    ],
    "dependencies": {
     "autoconf": {
      "hash": "mmzfhbcyamm34u44r6tkxpy333vqawa4",
      "type": [
       "build"
      ]
     },
     "automake": {
      "hash": "v4sxo67b2ethongvedqz535wojhkf4ec",
      "type": [
       "build"
      ]
     },
     "libtool": {
      "hash": "nkaivo62kr54ipc7qk5zwwcfvpfzo2tb",
      "type": [
       "build"
      ]
     },
     "m4": {
      "hash": "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim",
      "type": [
       "build"
      ]
     }
    },
    "hash": "3bzn4lhzeadjuqluut6g7wtbaggrqahg"
   }
  },
  "mmzfhbcyamm34u44r6tkxpy333vqawa4": {
   "autoconf": {
    "version": "2.69",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "m4": {
      "hash": "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim",
      "type": [
       "build",
       "run"
      ]
     },
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "3o6orh63jlogirafmiwscdnbwsjunenj"
   }
  },
  "v4sxo67b2ethongvedqz535wojhkf4ec": {
   "automake": {
    "version": "1.16.3",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "autoconf": {
      "hash": "mmzfhbcyamm34u44r6tkxpy333vqawa4",
      "type": [
       "build"
      ]
     },
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "2eqtonwk2sv3zq5bl27cdibf55nbzi2m"
   }
  },
  "w53se2i4dpnokn2nxmwkdgjqd3lnin5u": {
   "openssh": {
    "version": "8.6p1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libedit": {
      "hash": "v2dr4z6tucmqt35qplwlayhthqsgvjrh",
      "type": [
       "build",
       "link"
      ]
     },
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     },
     "openssl": {
      "hash": "zxg43hau5cunaeufmjssig7tq6nlxti3",
      "type": [
       "build",
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "p6smilmn7tmlrrwqzec6vlqm3ch24hia"
   }
  },
  "v2dr4z6tucmqt35qplwlayhthqsgvjrh": {
   "libedit": {
    "version": "3.1-20210216",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     }
    },
    "hash": "6mv75qudzkmldrdvo3b2pjcm5mel6dl7"
   }
  },
  "osvbqk44gputdrccck577cc6bdektjcm": {
   "gsl": {
    "version": "2.7",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "external-cblas": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "osvbqk44gputdrccck577cc6bdektjcm"
   }
  },
  "3ha52hcxpv3b3aylzunfr44symtkwosj": {
   "hdf5": {
    "version": "1.10.7",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "api": "default",
     "build_type": "Release",
     "cxx": false,
     "fortran": false,
     "hl": true,
     "ipo": false,
     "java": false,
     "mpi": true,
     "shared": true,
     "szip": false,
     "threadsafe": false,
     "tools": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "openmpi": {
      "hash": "sztuoqur2cfeapdfyfm2lnjphwli3jh3",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "run"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "e425pv2kq5gtj5ypt2fi7o4mugpi5v3x"
   }
  },
  "p4zucfhezxfw2uc32qbqgj2fz5k56thr": {
   "hip": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "patches": [
      "2a4190477b7d9206b9cd8d70770ba0bc007273cbe54772efb12f9ca2e37c0392",
      "3d20c8737ff8d0a00053f6bf23009df060fb26d39545aa34c74428b69d02257a",
      "99190b4616edb362d48f9b265c3018a3c6339481b0729d9fe46185fca25bc54b"
     ],
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "2a4190477b7d9206b9cd8d70770ba0bc007273cbe54772efb12f9ca2e37c0392",
     "3d20c8737ff8d0a00053f6bf23009df060fb26d39545aa34c74428b69d02257a",
     "99190b4616edb362d48f9b265c3018a3c6339481b0729d9fe46185fca25bc54b"
    ],
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "comgr": {
      "hash": "4hzjw4u5uqhqxepgbaamw2s3huw5hole",
      "type": [
       "build",
       "link"
      ]
     },
     "hip-rocclr": {
      "hash": "p7iskfkndhd5pdvdg455egbcbluf3vhh",
      "type": [
       "build",
       "link"
      ]
     },
     "hsa-rocr-dev": {
      "hash": "ze77wfe5tjnbmats3yo2tcdulgl4y3tw",
      "type": [
       "build",
       "link"
      ]
     },
     "hsakmt-roct": {
      "hash": "xqjkn2r4gtzkh3rfsidvfthvwdpeibly",
      "type": [
       "build",
       "link"
      ]
     },
     "llvm-amdgpu": {
      "hash": "bqgnls7ip4xwofapfgq5xcitjbo52jbd",
      "type": [
       "build",
       "link"
      ]
     },
     "mesa18": {
      "hash": "2cjag3okfkcbopz2k4l7ulhazh7f5jnh",
      "type": [
       "build",
       "link"
      ]
     },
     "numactl": {
      "hash": "xottldxqqif5qptxb4lvencjuyxzsj4t",
      "type": [
       "build",
       "link"
      ]
     },
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build",
       "run"
      ]
     },
     "rocminfo": {
      "hash": "hxnx25omnsa7kcfr56l6fr6c6m7spzpg",
      "type": [
       "build",
       "link"
      ]
     },
     "roctracer-dev-api": {
      "hash": "w35st7r7awkkplp655753cfexlsrlfjn",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "24r7iqg2l4cosi3xftrmy4xtkn2ovaz4"
   }
  },
  "4hzjw4u5uqhqxepgbaamw2s3huw5hole": {
   "comgr": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "llvm-amdgpu": {
      "hash": "bqgnls7ip4xwofapfgq5xcitjbo52jbd",
      "type": [
       "build",
       "link"
      ]
     },
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "link"
      ]
     },
     "rocm-cmake": {
      "hash": "suveczz6er2vn7a6kzzqtvj35ye7kiqb",
      "type": [
       "build"
      ]
     },
     "z3": {
      "hash": "nxl2agkgzeog7wuyofutil72yrqxefah",
      "type": [
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "link"
      ]
     }
    },
    "hash": "ihus3t4avmihsthir5d2l3fobenky5f4"
   }
  },
  "bqgnls7ip4xwofapfgq5xcitjbo52jbd": {
   "llvm-amdgpu": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "openmp": true,
     "patches": [
      "d999f3b235e655ee07f6dd2590302082feaa06d32c5c6b53aae9c5cf1e45b644"
     ],
     "rocm-device-libs": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "d999f3b235e655ee07f6dd2590302082feaa06d32c5c6b53aae9c5cf1e45b644"
    ],
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "hwloc": {
      "hash": "24mmurv3noxmwkxcq7cbx43zoi5ku7s4",
      "type": [
       "build",
       "link"
      ]
     },
     "libelf": {
      "hash": "efxgqcsv43y7z3qwuy3nc6sihkjlplky",
      "type": [
       "link"
      ]
     },
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "link"
      ]
     },
     "perl-data-dumper": {
      "hash": "qlmvetssssnyjvghnq5ytd54dmwxd3xt",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build"
      ]
     },
     "z3": {
      "hash": "nxl2agkgzeog7wuyofutil72yrqxefah",
      "type": [
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "link"
      ]
     }
    },
    "hash": "3nsogasy5773lqco34agdq3v43epkoen"
   }
  },
  "efxgqcsv43y7z3qwuy3nc6sihkjlplky": {
   "libelf": {
    "version": "0.8.13",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "efxgqcsv43y7z3qwuy3nc6sihkjlplky"
   }
  },
  "qlmvetssssnyjvghnq5ytd54dmwxd3xt": {
   "perl-data-dumper": {
    "version": "2.173",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "mrfdgdqo3hpuork2caaxg6o33shbqczp"
   }
  },
  "yqalale7svq2fkfefnze7rq3nz3lum33": {
   "python": {
    "version": "3.8.11",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "bz2": true,
     "ctypes": true,
     "dbm": true,
     "debug": false,
     "libxml2": true,
     "lzma": true,
     "nis": false,
     "optimizations": false,
     "patches": [
      "0d98e93189bc278fbc37a50ed7f183bd8aaf249a8e1670a465f0db6bb4f8cf87"
     ],
     "pic": true,
     "pyexpat": true,
     "pythoncmd": true,
     "readline": true,
     "shared": true,
     "sqlite3": true,
     "ssl": true,
     "tix": false,
     "tkinter": false,
     "ucs4": false,
     "uuid": true,
     "zlib": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "0d98e93189bc278fbc37a50ed7f183bd8aaf249a8e1670a465f0db6bb4f8cf87"
    ],
    "dependencies": {
     "bzip2": {
      "hash": "eexqngt6xhwsjvobadbd7c26fds4clog",
      "type": [
       "build",
       "link"
      ]
     },
     "expat": {
      "hash": "n5eu4q7gfowjkbrtutlmm6i3fl4fnhdi",
      "type": [
       "build",
       "link"
      ]
     },
     "gdbm": {
      "hash": "jzewrdimwgcnh7s6g6thzleftkkwjsqg",
      "type": [
       "build",
       "link"
      ]
     },
     "gettext": {
      "hash": "7vtkaxa6lwj7k2s2iddnvegzdb2lrywf",
      "type": [
       "build",
       "link"
      ]
     },
     "libffi": {
      "hash": "y55gmohtvn4h6ge6qej24mzurclmiyhz",
      "type": [
       "build",
       "link"
      ]
     },
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     },
     "openssl": {
      "hash": "zxg43hau5cunaeufmjssig7tq6nlxti3",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "readline": {
      "hash": "uzy4rolg6k76qm7rcvl5srmhnwykl5mi",
      "type": [
       "build",
       "link"
      ]
     },
     "sqlite": {
      "hash": "qxrludunpglwqidtecytltldlsf6ales",
      "type": [
       "build",
       "link"
      ]
     },
     "util-linux-uuid": {
      "hash": "3isxcnud5no4umi5xnmwownhybl2bybt",
      "type": [
       "build",
       "link"
      ]
     },
     "xz": {
      "hash": "vhfgrit4pf7fwzdnbdbtcp3vj2lzfrbm",
      "type": [
       "build",
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "z3p2dvknehfnf7b6izslxloh27763z4i"
   }
  },
  "n5eu4q7gfowjkbrtutlmm6i3fl4fnhdi": {
   "expat": {
    "version": "2.4.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "libbsd": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libbsd": {
      "hash": "32vbb2lcdrajgglaxhwiju2yzzfms47k",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "n5eu4q7gfowjkbrtutlmm6i3fl4fnhdi"
   }
  },
  "32vbb2lcdrajgglaxhwiju2yzzfms47k": {
   "libbsd": {
    "version": "0.11.3",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libmd": {
      "hash": "33k3hmeaethjptwq73torcmim3vm5dkf",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "32vbb2lcdrajgglaxhwiju2yzzfms47k"
   }
  },
  "33k3hmeaethjptwq73torcmim3vm5dkf": {
   "libmd": {
    "version": "1.0.3",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "33k3hmeaethjptwq73torcmim3vm5dkf"
   }
  },
  "7vtkaxa6lwj7k2s2iddnvegzdb2lrywf": {
   "gettext": {
    "version": "0.21",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "bzip2": true,
     "curses": true,
     "git": true,
     "libunistring": false,
     "libxml2": true,
     "tar": true,
     "xz": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "bzip2": {
      "hash": "eexqngt6xhwsjvobadbd7c26fds4clog",
      "type": [
       "build",
       "link"
      ]
     },
     "libiconv": {
      "hash": "2zx3n6gfqutun6peuzhgosr5qf4a24hg",
      "type": [
       "build",
       "link"
      ]
     },
     "libxml2": {
      "hash": "eu63a6nh6yvyhljezmldjavsobzgtuaf",
      "type": [
       "build",
       "link"
      ]
     },
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     },
     "tar": {
      "hash": "e6gjebkxd6t4k3gxa2sqcamv4z43nn5c",
      "type": [
       "build",
       "link"
      ]
     },
     "xz": {
      "hash": "vhfgrit4pf7fwzdnbdbtcp3vj2lzfrbm",
      "type": [
       "build",
       "link",
       "run"
      ]
     }
    },
    "hash": "nxoe3dvhd5jwvwwx4wsa6y6zhmfqagmu"
   }
  },
  "e6gjebkxd6t4k3gxa2sqcamv4z43nn5c": {
   "tar": {
    "version": "1.34",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libiconv": {
      "hash": "2zx3n6gfqutun6peuzhgosr5qf4a24hg",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "e6gjebkxd6t4k3gxa2sqcamv4z43nn5c"
   }
  },
  "y55gmohtvn4h6ge6qej24mzurclmiyhz": {
   "libffi": {
    "version": "3.3",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "patches": [
      "26f26c6f29a7ce9bf370ad3ab2610f99365b4bdd7b82e7c31df41a3370d685c0"
     ],
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "26f26c6f29a7ce9bf370ad3ab2610f99365b4bdd7b82e7c31df41a3370d685c0"
    ],
    "hash": "y55gmohtvn4h6ge6qej24mzurclmiyhz"
   }
  },
  "qxrludunpglwqidtecytltldlsf6ales": {
   "sqlite": {
    "version": "3.35.5",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "column_metadata": true,
     "fts": true,
     "functions": false,
     "rtree": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "readline": {
      "hash": "uzy4rolg6k76qm7rcvl5srmhnwykl5mi",
      "type": [
       "build",
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "xplc5gbrjlk6cdcf7f54d6hrnzmpbmcf"
   }
  },
  "3isxcnud5no4umi5xnmwownhybl2bybt": {
   "util-linux-uuid": {
    "version": "2.36.2",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     }
    },
    "hash": "tcjwxrv7leu6kk7y76qyqxcrmlmovfqt"
   }
  },
  "nxl2agkgzeog7wuyofutil72yrqxefah": {
   "z3": {
    "version": "4.8.9",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "gmp": false,
     "ipo": false,
     "python": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build"
      ]
     }
    },
    "hash": "icxnc766l6lmoaaqftvwlgkc7pgslokh"
   }
  },
  "suveczz6er2vn7a6kzzqtvj35ye7kiqb": {
   "rocm-cmake": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "ldconfig": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     }
    },
    "hash": "qrvq5ozv2mmmwry7ccc76fnwy26okymg"
   }
  },
  "p7iskfkndhd5pdvdg455egbcbluf3vhh": {
   "hip-rocclr": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "comgr": {
      "hash": "4hzjw4u5uqhqxepgbaamw2s3huw5hole",
      "type": [
       "build",
       "link"
      ]
     },
     "hsa-rocr-dev": {
      "hash": "ze77wfe5tjnbmats3yo2tcdulgl4y3tw",
      "type": [
       "build",
       "link"
      ]
     },
     "hsakmt-roct": {
      "hash": "xqjkn2r4gtzkh3rfsidvfthvwdpeibly",
      "type": [
       "build",
       "link"
      ]
     },
     "mesa18": {
      "hash": "2cjag3okfkcbopz2k4l7ulhazh7f5jnh",
      "type": [
       "link"
      ]
     },
     "numactl": {
      "hash": "xottldxqqif5qptxb4lvencjuyxzsj4t",
      "type": [
       "link"
      ]
     }
    },
    "hash": "kpobgq6fkniciqvlndwo7wofmxzkgplx"
   }
  },
  "ze77wfe5tjnbmats3yo2tcdulgl4y3tw": {
   "hsa-rocr-dev": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "image": true,
     "ipo": false,
     "patches": [
      "71e6851d9be8113bfb8d71b66a3171e0d0401bae5e6f161c9e7fe32558261a46"
     ],
     "shared": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "71e6851d9be8113bfb8d71b66a3171e0d0401bae5e6f161c9e7fe32558261a46"
    ],
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "hsakmt-roct": {
      "hash": "xqjkn2r4gtzkh3rfsidvfthvwdpeibly",
      "type": [
       "build",
       "link"
      ]
     },
     "libelf": {
      "hash": "efxgqcsv43y7z3qwuy3nc6sihkjlplky",
      "type": [
       "link"
      ]
     },
     "llvm-amdgpu": {
      "hash": "bqgnls7ip4xwofapfgq5xcitjbo52jbd",
      "type": [
       "build",
       "link"
      ]
     },
     "xxd-standalone": {
      "hash": "gogcdwqsd7j4daf5n7fhyg7adi2brzic",
      "type": [
       "build"
      ]
     }
    },
    "hash": "jnsm4kbg56ikxdhcwslbuxwildq5mqzg"
   }
  },
  "xqjkn2r4gtzkh3rfsidvfthvwdpeibly": {
   "hsakmt-roct": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "shared": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "numactl": {
      "hash": "xottldxqqif5qptxb4lvencjuyxzsj4t",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "2am6mbtndkyia5zo6kvgauau32w5tgv6"
   }
  },
  "gogcdwqsd7j4daf5n7fhyg7adi2brzic": {
   "xxd-standalone": {
    "version": "8.2.1201",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "gogcdwqsd7j4daf5n7fhyg7adi2brzic"
   }
  },
  "2cjag3okfkcbopz2k4l7ulhazh7f5jnh": {
   "mesa18": {
    "version": "18.3.6",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "glx": true,
     "llvm": false,
     "opengles": false,
     "osmesa": true,
     "patches": [
      "55a5611ca9fcbe8324c4d68a07b338134954ff12c5b122dc78ff376f012a1414",
      "e0a94aa728c233968137ca1314f6541745228a98d66822ad518b102f5a31b487"
     ],
     "swr": [
      "none"
     ],
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "patches": [
     "55a5611ca9fcbe8324c4d68a07b338134954ff12c5b122dc78ff376f012a1414",
     "e0a94aa728c233968137ca1314f6541745228a98d66822ad518b102f5a31b487"
    ],
    "dependencies": {
     "autoconf": {
      "hash": "mmzfhbcyamm34u44r6tkxpy333vqawa4",
      "type": [
       "build"
      ]
     },
     "automake": {
      "hash": "v4sxo67b2ethongvedqz535wojhkf4ec",
      "type": [
       "build"
      ]
     },
     "binutils": {
      "hash": "kv227dzgdajafmvhpwpcvmgy2wtezgml",
      "type": [
       "build"
      ]
     },
     "bison": {
      "hash": "qlhmtdjxx3woomrziy3xhaav4avfapvk",
      "type": [
       "build"
      ]
     },
     "expat": {
      "hash": "n5eu4q7gfowjkbrtutlmm6i3fl4fnhdi",
      "type": [
       "build",
       "link"
      ]
     },
     "flex": {
      "hash": "qdeszb4pefnaihm4jgfhytbvn5btzh3u",
      "type": [
       "build"
      ]
     },
     "gettext": {
      "hash": "7vtkaxa6lwj7k2s2iddnvegzdb2lrywf",
      "type": [
       "build"
      ]
     },
     "glproto": {
      "hash": "g656hv2n43j2ndtznou33jas3ncbikao",
      "type": [
       "build",
       "link"
      ]
     },
     "libtool": {
      "hash": "nkaivo62kr54ipc7qk5zwwcfvpfzo2tb",
      "type": [
       "build"
      ]
     },
     "libx11": {
      "hash": "c3dzypbd2qomklpwzflb73ksechobayc",
      "type": [
       "build",
       "link"
      ]
     },
     "libxcb": {
      "hash": "to3gh7esafzwgxf7okec7uindz6nvzpb",
      "type": [
       "build",
       "link"
      ]
     },
     "libxext": {
      "hash": "qnqbyl7nt6mnp2vjw6tlx3txwzu2ugbp",
      "type": [
       "build",
       "link"
      ]
     },
     "libxml2": {
      "hash": "eu63a6nh6yvyhljezmldjavsobzgtuaf",
      "type": [
       "build",
       "link"
      ]
     },
     "m4": {
      "hash": "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim",
      "type": [
       "build"
      ]
     },
     "ncurses": {
      "hash": "zvueb3z4rh4fyl36g2a2ggmfqgooo3dn",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "py-mako": {
      "hash": "4hmf2brx3gfxytji4df3hl7tctgfbbiq",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "fznx6h3kjad77o645tnoqweutr3kaxp6"
   }
  },
  "kv227dzgdajafmvhpwpcvmgy2wtezgml": {
   "binutils": {
    "version": "2.37",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "gas": false,
     "gold": false,
     "headers": false,
     "interwork": false,
     "ld": false,
     "libiberty": false,
     "libs": [
      "shared",
      "static"
     ],
     "lto": false,
     "nls": true,
     "plugins": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "diffutils": {
      "hash": "atuliapgqehi3ean3rqdj54vxtm57ss6",
      "type": [
       "build"
      ]
     },
     "gettext": {
      "hash": "7vtkaxa6lwj7k2s2iddnvegzdb2lrywf",
      "type": [
       "build",
       "link"
      ]
     },
     "zlib": {
      "hash": "zscjgjjp72zgnnte56mcen2llicr4gtk",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "k7cihxc6ghf6nnqc7eemgrddtahgyxae"
   }
  },
  "qlhmtdjxx3woomrziy3xhaav4avfapvk": {
   "bison": {
    "version": "3.7.6",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "diffutils": {
      "hash": "atuliapgqehi3ean3rqdj54vxtm57ss6",
      "type": [
       "build"
      ]
     },
     "m4": {
      "hash": "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim",
      "type": [
       "build",
       "run"
      ]
     },
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build"
      ]
     }
    },
    "hash": "yfa3uinkufkkbxsnxxpwvc6x5b76xfke"
   }
  },
  "qdeszb4pefnaihm4jgfhytbvn5btzh3u": {
   "flex": {
    "version": "2.6.3",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "lex": true,
     "nls": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "bison": {
      "hash": "qlhmtdjxx3woomrziy3xhaav4avfapvk",
      "type": [
       "build"
      ]
     },
     "diffutils": {
      "hash": "atuliapgqehi3ean3rqdj54vxtm57ss6",
      "type": [
       "build"
      ]
     },
     "findutils": {
      "hash": "aj2jkaewf2yko3jvgidxu45sp2zb2wi5",
      "type": [
       "build"
      ]
     },
     "m4": {
      "hash": "tx3y7sfhsg7tkvnp3hnpxewtw6cq5zim",
      "type": [
       "build"
      ]
     }
    },
    "hash": "derwbpnaumzi5dkmhvyvypz7lufevnnh"
   }
  },
  "aj2jkaewf2yko3jvgidxu45sp2zb2wi5": {
   "findutils": {
    "version": "4.8.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "aj2jkaewf2yko3jvgidxu45sp2zb2wi5"
   }
  },
  "g656hv2n43j2ndtznou33jas3ncbikao": {
   "glproto": {
    "version": "1.4.17",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     }
    },
    "hash": "tszgpjgnrvnzedc3q2wmi7asoxrgl27x"
   }
  },
  "c3dzypbd2qomklpwzflb73ksechobayc": {
   "libx11": {
    "version": "1.7.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "inputproto": {
      "hash": "gxofdmknci45zdw6he23uejjodzxe2w4",
      "type": [
       "build",
       "link"
      ]
     },
     "kbproto": {
      "hash": "pesqzmo5x6usiqc2mtrfemjq2acbsatn",
      "type": [
       "build",
       "link"
      ]
     },
     "libxcb": {
      "hash": "to3gh7esafzwgxf7okec7uindz6nvzpb",
      "type": [
       "build",
       "link"
      ]
     },
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     },
     "xextproto": {
      "hash": "dbl7schnbvcptqpzgo2n22zzknyqhzui",
      "type": [
       "build",
       "link"
      ]
     },
     "xproto": {
      "hash": "s4wo6thpyjwpy4s4bdlzduudqv437yf6",
      "type": [
       "build",
       "link"
      ]
     },
     "xtrans": {
      "hash": "zsowo5uxhtlbftoq5gqr666mtpyychjy",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "p7mnprpy5dz3ogr32tomcydzzsfzanr4"
   }
  },
  "gxofdmknci45zdw6he23uejjodzxe2w4": {
   "inputproto": {
    "version": "2.3.2",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     }
    },
    "hash": "52xltdo5nlx4goqfzwvfawq7nacjrle7"
   }
  },
  "pesqzmo5x6usiqc2mtrfemjq2acbsatn": {
   "kbproto": {
    "version": "1.0.7",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     }
    },
    "hash": "kauza4w5hpb2yps3b3agquncqxrufmyr"
   }
  },
  "to3gh7esafzwgxf7okec7uindz6nvzpb": {
   "libxcb": {
    "version": "1.14",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libpthread-stubs": {
      "hash": "vxvwx6ok3ph5qyrbklttblj7wwn6tm53",
      "type": [
       "build",
       "link"
      ]
     },
     "libxau": {
      "hash": "z42tniafradwsksiusoyzdvmav6uqkvw",
      "type": [
       "build",
       "link"
      ]
     },
     "libxdmcp": {
      "hash": "ghonlcpgl7dbg3hhzzq3ekpltrhavucg",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     },
     "xcb-proto": {
      "hash": "t2wc36kijecb4ydyk3sf45jqpv22q6mc",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "2p7hujkbzuc2l7lookymuaj52cogqyqx"
   }
  },
  "vxvwx6ok3ph5qyrbklttblj7wwn6tm53": {
   "libpthread-stubs": {
    "version": "0.4",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "vxvwx6ok3ph5qyrbklttblj7wwn6tm53"
   }
  },
  "z42tniafradwsksiusoyzdvmav6uqkvw": {
   "libxau": {
    "version": "1.0.8",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     },
     "xproto": {
      "hash": "s4wo6thpyjwpy4s4bdlzduudqv437yf6",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "gjwta56w4bjlinc7vcriuw4atnzeajko"
   }
  },
  "s4wo6thpyjwpy4s4bdlzduudqv437yf6": {
   "xproto": {
    "version": "7.0.31",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     }
    },
    "hash": "azecsjihsyson22p37yhvbk56mhklmus"
   }
  },
  "ghonlcpgl7dbg3hhzzq3ekpltrhavucg": {
   "libxdmcp": {
    "version": "1.1.2",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libbsd": {
      "hash": "32vbb2lcdrajgglaxhwiju2yzzfms47k",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     },
     "xproto": {
      "hash": "s4wo6thpyjwpy4s4bdlzduudqv437yf6",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "snjc3j25xjtzt46xuucr6fbvreerlfgi"
   }
  },
  "t2wc36kijecb4ydyk3sf45jqpv22q6mc": {
   "xcb-proto": {
    "version": "1.14.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "t2wc36kijecb4ydyk3sf45jqpv22q6mc"
   }
  },
  "dbl7schnbvcptqpzgo2n22zzknyqhzui": {
   "xextproto": {
    "version": "7.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     }
    },
    "hash": "dizujunofmiootjdul5uqtxf56haibjb"
   }
  },
  "zsowo5uxhtlbftoq5gqr666mtpyychjy": {
   "xtrans": {
    "version": "1.3.5",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     }
    },
    "hash": "lljefpoiw3rspacptcjadvrpnox5wy6x"
   }
  },
  "qnqbyl7nt6mnp2vjw6tlx3txwzu2ugbp": {
   "libxext": {
    "version": "1.3.3",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libx11": {
      "hash": "c3dzypbd2qomklpwzflb73ksechobayc",
      "type": [
       "build",
       "link"
      ]
     },
     "pkgconf": {
      "hash": "yfeugodkp6wnrj4omiadzcqjjs4ssuvw",
      "type": [
       "build"
      ]
     },
     "util-macros": {
      "hash": "ddpwzfe2h3mfu23ypupbzwwxamdf64za",
      "type": [
       "build"
      ]
     },
     "xextproto": {
      "hash": "dbl7schnbvcptqpzgo2n22zzknyqhzui",
      "type": [
       "build",
       "link"
      ]
     },
     "xproto": {
      "hash": "s4wo6thpyjwpy4s4bdlzduudqv437yf6",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "3vrq62ewav7glf3cacg6suajgrtqjjbi"
   }
  },
  "4hmf2brx3gfxytji4df3hl7tctgfbbiq": {
   "py-mako": {
    "version": "1.1.4",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "py-markupsafe": {
      "hash": "t2jol5rhuejzog4zfl7xdplr5bdfes74",
      "type": [
       "build",
       "run"
      ]
     },
     "py-setuptools": {
      "hash": "5bkb7fudefyppnwyvz6xhg7pnrkuocpv",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "twrvbbemqayffibp7x3jgvr4icbu2jzs"
   }
  },
  "t2jol5rhuejzog4zfl7xdplr5bdfes74": {
   "py-markupsafe": {
    "version": "2.0.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "py-setuptools": {
      "hash": "5bkb7fudefyppnwyvz6xhg7pnrkuocpv",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "fso4kkxtkbye7df5swq3xzweucwl4ree"
   }
  },
  "5bkb7fudefyppnwyvz6xhg7pnrkuocpv": {
   "py-setuptools": {
    "version": "57.4.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "v466npxaposwx4tx5hldlx7fu3vrxymq"
   }
  },
  "hxnx25omnsa7kcfr56l6fr6c6m7spzpg": {
   "rocminfo": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "hsa-rocr-dev": {
      "hash": "ze77wfe5tjnbmats3yo2tcdulgl4y3tw",
      "type": [
       "build",
       "link"
      ]
     },
     "hsakmt-roct": {
      "hash": "xqjkn2r4gtzkh3rfsidvfthvwdpeibly",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "vj5rvgcesw2atnqasidekzxhywucbw6g"
   }
  },
  "w35st7r7awkkplp655753cfexlsrlfjn": {
   "roctracer-dev-api": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "w35st7r7awkkplp655753cfexlsrlfjn"
   }
  },
  "7jj3g347ym4jj5ib4crl2bghyaywxex4": {
   "libvdwxc": {
    "version": "0.4.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "mpi": true,
     "pfft": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "fftw": {
      "hash": "tf463paypcvpxcpu4nxpatkt4dpjidrs",
      "type": [
       "build",
       "link"
      ]
     },
     "openmpi": {
      "hash": "sztuoqur2cfeapdfyfm2lnjphwli3jh3",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "eeecbigab7gd3shqfrxix3bibubod2we"
   }
  },
  "4azqelv3fp5e4vj7vpakn4enjnmcug4g": {
   "libxc": {
    "version": "5.1.5",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cuda": false,
     "cuda_arch": [
      "none"
     ],
     "shared": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build"
      ]
     }
    },
    "hash": "aewu3mrwrpa3xezxuvulctvyzmaufaeu"
   }
  },
  "zoovwxrffir5qxxvofaxjsgde2pwc5kr": {
   "openblas": {
    "version": "0.3.17",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "bignuma": false,
     "consistent_fpcsr": false,
     "ilp64": false,
     "locking": true,
     "pic": true,
     "shared": true,
     "threads": "openmp",
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build"
      ]
     }
    },
    "hash": "khmevlfdkjzgp2vu7tmp3wmpaqu6w3vy"
   }
  },
  "dcueoy63yw7idkljhtlh55xbjerswlbf": {
   "rocblas": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "tensile_architecture": "gfx906",
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "hip": {
      "hash": "p4zucfhezxfw2uc32qbqgj2fz5k56thr",
      "type": [
       "build",
       "link"
      ]
     },
     "llvm-amdgpu": {
      "hash": "bqgnls7ip4xwofapfgq5xcitjbo52jbd",
      "type": [
       "build",
       "link"
      ]
     },
     "msgpack-c": {
      "hash": "c4tup4oytezmyrhx4a2l2etrmhxbz6zg",
      "type": [
       "build",
       "link"
      ]
     },
     "perl-file-which": {
      "hash": "7pov7n6kroeyo6wozmvu6r7bpphstk3k",
      "type": [
       "build"
      ]
     },
     "py-msgpack": {
      "hash": "7woekh6f57jahzyiz3ygchobb4hywj62",
      "type": [
       "build"
      ]
     },
     "py-pip": {
      "hash": "jytb5krej2gq7dslvrgyzeihhlzazeg7",
      "type": [
       "build"
      ]
     },
     "py-pyyaml": {
      "hash": "x23i7dxcawrly2fliveekvbhmotri5th",
      "type": [
       "build"
      ]
     },
     "py-virtualenv": {
      "hash": "hs6q7mkgyspbb4ihvrxpujbqkmtlhoh3",
      "type": [
       "build"
      ]
     },
     "py-wheel": {
      "hash": "2cazt3pyelr2k4qnddgf4oe5zd4luhem",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build"
      ]
     },
     "rocm-cmake": {
      "hash": "suveczz6er2vn7a6kzzqtvj35ye7kiqb",
      "type": [
       "build"
      ]
     },
     "rocm-smi-lib": {
      "hash": "jd3hthra2rbfa7b5miae7zbn6ah3gq7i",
      "type": [
       "build"
      ]
     },
     "rocminfo": {
      "hash": "hxnx25omnsa7kcfr56l6fr6c6m7spzpg",
      "type": [
       "build"
      ]
     }
    },
    "hash": "vtyhtaeweebbntnbgre45m4trjjpwajt"
   }
  },
  "c4tup4oytezmyrhx4a2l2etrmhxbz6zg": {
   "msgpack-c": {
    "version": "3.1.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     }
    },
    "hash": "iigyt4sdr34mv3qb66txfejnhlgt6nk7"
   }
  },
  "7pov7n6kroeyo6wozmvu6r7bpphstk3k": {
   "perl-file-which": {
    "version": "1.22",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "perl": {
      "hash": "6ga2zvy44cr44j64wqbbtdvlrzoxtvz5",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "pxi7vpgjeci3z3ji3yhvvvp3dnbvfwwq"
   }
  },
  "7woekh6f57jahzyiz3ygchobb4hywj62": {
   "py-msgpack": {
    "version": "1.0.2",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "py-setuptools": {
      "hash": "5bkb7fudefyppnwyvz6xhg7pnrkuocpv",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "zkb4bk6fjue5nbyy766pp225rchkqzyz"
   }
  },
  "jytb5krej2gq7dslvrgyzeihhlzazeg7": {
   "py-pip": {
    "version": "21.1.2",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "py-setuptools": {
      "hash": "5bkb7fudefyppnwyvz6xhg7pnrkuocpv",
      "type": [
       "build",
       "run"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "jleezrqrwewtq6vbdezhmtlxz6e365he"
   }
  },
  "x23i7dxcawrly2fliveekvbhmotri5th": {
   "py-pyyaml": {
    "version": "5.3.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "libyaml": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "libyaml": {
      "hash": "7pmh4t7wr6pbh3ebq4sobdqg2jdpcu43",
      "type": [
       "build",
       "link"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "sbv33ruqfhd3m7kobbqmhakmfnyomevb"
   }
  },
  "7pmh4t7wr6pbh3ebq4sobdqg2jdpcu43": {
   "libyaml": {
    "version": "0.2.5",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "hash": "7pmh4t7wr6pbh3ebq4sobdqg2jdpcu43"
   }
  },
  "hs6q7mkgyspbb4ihvrxpujbqkmtlhoh3": {
   "py-virtualenv": {
    "version": "16.7.6",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "py-setuptools": {
      "hash": "5bkb7fudefyppnwyvz6xhg7pnrkuocpv",
      "type": [
       "build",
       "run"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "ywuizpw667g4kq3ravm7cxacs3noenhj"
   }
  },
  "2cazt3pyelr2k4qnddgf4oe5zd4luhem": {
   "py-wheel": {
    "version": "0.36.2",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "py-setuptools": {
      "hash": "5bkb7fudefyppnwyvz6xhg7pnrkuocpv",
      "type": [
       "build",
       "run"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "ulo4mspgdxpxitzpp7a2ot3wsylhxhct"
   }
  },
  "jd3hthra2rbfa7b5miae7zbn6ah3gq7i": {
   "rocm-smi-lib": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "shared": true,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "python": {
      "hash": "yqalale7svq2fkfefnze7rq3nz3lum33",
      "type": [
       "build",
       "run"
      ]
     }
    },
    "hash": "e3dzpmmkef2dtjh3s4mjq2eep4hvfsgg"
   }
  },
  "txajgs5kdicbi5pkdlkypodghdzguzdl": {
   "spfft": {
    "version": "1.0.4",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "amdgpu_target": [
      "gfx906"
     ],
     "build_type": "Release",
     "cuda": false,
     "cuda_arch": [
      "none"
     ],
     "fortran": false,
     "gpu_direct": false,
     "ipo": false,
     "mpi": true,
     "openmp": true,
     "rocm": true,
     "single_precision": false,
     "static": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "fftw": {
      "hash": "tf463paypcvpxcpu4nxpatkt4dpjidrs",
      "type": [
       "build",
       "link"
      ]
     },
     "hip": {
      "hash": "p4zucfhezxfw2uc32qbqgj2fz5k56thr",
      "type": [
       "build",
       "link"
      ]
     },
     "openmpi": {
      "hash": "sztuoqur2cfeapdfyfm2lnjphwli3jh3",
      "type": [
       "build",
       "link"
      ]
     },
     "rocfft": {
      "hash": "wakhgfpoitdo7ppu522nnefu2urxyq2f",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "56hrmx3kyzws4cvp6lo4szrn3o35tdig"
   }
  },
  "wakhgfpoitdo7ppu522nnefu2urxyq2f": {
   "rocfft": {
    "version": "4.3.0",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "amdgpu_target": [
      "gfx906"
     ],
     "amdgpu_target_sram_ecc": [
      "none"
     ],
     "build_type": "Release",
     "ipo": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "hip": {
      "hash": "p4zucfhezxfw2uc32qbqgj2fz5k56thr",
      "type": [
       "build",
       "link"
      ]
     },
     "rocm-cmake": {
      "hash": "suveczz6er2vn7a6kzzqtvj35ye7kiqb",
      "type": [
       "build"
      ]
     }
    },
    "hash": "o4jyoasv2a4w5c7xaxqzb34zzbrbe7oq"
   }
  },
  "esxk5xwdv6ch3bg2iugmfg4kgxnsskgn": {
   "spglib": {
    "version": "1.16.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "ipo": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     }
    },
    "hash": "oti6eizq2opaz67mkcj3f25e5iw6py43"
   }
  },
  "onqyk3tdzwumn7g7ux2nrabtkari7ibx": {
   "spla": {
    "version": "1.5.1",
    "arch": {
     "platform": "linux",
     "platform_os": "ubuntu20.04",
     "target": "x86_64"
    },
    "compiler": {
     "name": "gcc",
     "version": "10.3.0"
    },
    "namespace": "builtin",
    "parameters": {
     "build_type": "Release",
     "cuda": false,
     "fortran": false,
     "ipo": false,
     "openmp": true,
     "rocm": true,
     "static": false,
     "cflags": [],
     "cppflags": [],
     "cxxflags": [],
     "fflags": [],
     "ldflags": [],
     "ldlibs": []
    },
    "dependencies": {
     "cmake": {
      "hash": "3glc4gus4iormocjwt6nes7weg2afbi5",
      "type": [
       "build"
      ]
     },
     "hip": {
      "hash": "p4zucfhezxfw2uc32qbqgj2fz5k56thr",
      "type": [
       "build",
       "link"
      ]
     },
     "openblas": {
      "hash": "zoovwxrffir5qxxvofaxjsgde2pwc5kr",
      "type": [
       "build",
       "link"
      ]
     },
     "openmpi": {
      "hash": "sztuoqur2cfeapdfyfm2lnjphwli3jh3",
      "type": [
       "build",
       "link"
      ]
     },
     "rocblas": {
      "hash": "dcueoy63yw7idkljhtlh55xbjerswlbf",
      "type": [
       "build",
       "link"
      ]
     }
    },
    "hash": "loxytdnckagjgbzefe6xu2byuafcifzv"
   }
  }
 }
}
```
</details>

Resolving patch:
diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py
--- a/lib/spack/spack/environment.py
+++ b/lib/spack/spack/environment.py
@@ -85,7 +85,7 @@
 valid_environment_name_re = r'^\w[\w-]*$'
 
 #: version of the lockfile format. Must increase monotonically.
-lockfile_format_version = 2
+lockfile_format_version = 3
 
 # Magic names
 # The name of the standalone spec list in the manifest yaml
@@ -1695,12 +1695,12 @@ def _to_lockfile_dict(self):
         concrete_specs = {}
         for spec in self.specs_by_hash.values():
             for s in spec.traverse():
-                dag_hash_all = s.build_hash()
-                if dag_hash_all not in concrete_specs:
+                build_hash = s.build_hash()
+                if build_hash not in concrete_specs:
                     spec_dict = s.to_node_dict(hash=ht.build_hash)
                     # Assumes no legacy formats, since this was just created.
                     spec_dict[ht.dag_hash.name] = s.dag_hash()
-                    concrete_specs[dag_hash_all] = spec_dict
+                    concrete_specs[build_hash] = spec_dict
 
         hash_spec_list = zip(
             self.concretized_order, self.concretized_user_specs)
@@ -1711,6 +1711,7 @@ def _to_lockfile_dict(self):
             '_meta': {
                 'file-type': 'spack-lockfile',
                 'lockfile-version': lockfile_format_version,
+                'specfile-version': spack.spec.specfile_format_version
             },
 
             # users specs + hashes are the 'roots' of the environment
@@ -1741,13 +1742,18 @@ def _read_lockfile_dict(self, d):
         root_hashes = set(self.concretized_order)
 
         specs_by_hash = {}
-        for dag_hash, node_dict in json_specs_by_hash.items():
-            specs_by_hash[dag_hash] = Spec.from_node_dict(node_dict)
-
-        for dag_hash, node_dict in json_specs_by_hash.items():
+        for build_hash, node_dict in json_specs_by_hash.items():
+            spec = Spec.from_node_dict(node_dict)
+            if d['_meta']['lockfile-version'] > 1:
+                # Build hash is stored as a key, but not as part of the node dict
+                # To ensure build hashes are not recomputed, we reattach here
+                setattr(spec, ht.build_hash.attr, build_hash)
+            specs_by_hash[build_hash] = spec
+
+        for build_hash, node_dict in json_specs_by_hash.items():
             for _, dep_hash, deptypes, _ in (
                     Spec.dependencies_from_node_dict(node_dict)):
-                specs_by_hash[dag_hash]._add_dependency(
+                specs_by_hash[build_hash]._add_dependency(
                     specs_by_hash[dep_hash], deptypes)
 
         # If we are reading an older lockfile format (which uses dag hashes
diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py
--- a/lib/spack/spack/spec.py
+++ b/lib/spack/spack/spec.py
@@ -184,6 +184,9 @@
 default_format += '{%compiler.name}{@compiler.version}{compiler_flags}'
 default_format += '{variants}{arch=architecture}'
 
+#: specfile format version. Must increase monotonically
+specfile_format_version = 2
+
 
 def colorize_spec(spec):
     """Returns a spec colorized according to the colors specified in
@@ -1796,7 +1799,7 @@ def to_dict(self, hash=ht.dag_hash):
                     if node_hash not in hash_set:
                         node_list.append(node)
                         hash_set.add(node_hash)
-        meta_dict = syaml.syaml_dict([('version', 2)])
+        meta_dict = syaml.syaml_dict([('version', specfile_format_version)])
         inner_dict = syaml.syaml_dict([('_meta', meta_dict), ('nodes', node_list)])
         spec_dict = syaml.syaml_dict([('spec', inner_dict)])
         return spec_dict


Test patch:
diff --git a/lib/spack/spack/test/env.py b/lib/spack/spack/test/env.py
new file mode 100644
--- /dev/null
+++ b/lib/spack/spack/test/env.py
@@ -0,0 +1,38 @@
+# Copyright 2013-2021 Lawrence Livermore National Security, LLC and other
+# Spack Project Developers. See the top-level COPYRIGHT file for details.
+#
+# SPDX-License-Identifier: (Apache-2.0 OR MIT)
+
+"""Test environment internals without CLI"""
+
+import spack.environment as ev
+import spack.spec
+
+
+def test_hash_change_no_rehash_concrete(tmpdir, mock_packages, config):
+    # create an environment
+    env_path = tmpdir.mkdir('env_dir').strpath
+    env = ev.Environment(env_path)
+    env.write()
+
+    # add a spec with a rewritten build hash
+    spec = spack.spec.Spec('mpileaks')
+    env.add(spec)
+    env.concretize()
+
+    # rewrite the hash
+    old_hash = env.concretized_order[0]
+    new_hash = 'abc'
+    env.specs_by_hash[old_hash]._build_hash = new_hash
+    env.concretized_order[0] = new_hash
+    env.specs_by_hash[new_hash] = env.specs_by_hash[old_hash]
+    del env.specs_by_hash[old_hash]
+    env.write()
+
+    # Read environment
+    read_in = ev.Environment(env_path)
+
+    # Ensure read hashes are used (rewritten hash seen on read)
+    assert read_in.concretized_order
+    assert read_in.concretized_order[0] in read_in.specs_by_hash
+    assert read_in.specs_by_hash[read_in.concretized_order[0]]._build_hash == new_hash