commands: add spack pkg source and spack pkg hash

To make it easier to see how package hashes change and how they are computed, add two
commands:

* `spack pkg source <spec>`: dumps source code for a package to the terminal

* `spack pkg source --canonical <spec>`: dumps canonicalized source code for a
   package to the terminal. It strips comments, directives, and known-unused
   multimethods from the package. It is used to generate package hashes.

* `spack pkg hash <spec>`: This gives the package hash for a particular spec.
  It is generated from the canonical source code for the spec.

- [x] `add spack pkg source` and `spack pkg hash`
- [x] add tests
- [x] fix bug in multimethod resolution with boolean `@when` values

Co-authored-by: Greg Becker <becker33@llnl.gov>
This commit is contained in:
Todd Gamblin
2021-12-23 13:45:06 -08:00
committed by Greg Becker
parent 106ae7abe6
commit a18a0e7a47
4 changed files with 147 additions and 8 deletions

View File

@@ -1444,7 +1444,7 @@ _spack_pkg() {
then
SPACK_COMPREPLY="-h --help"
else
SPACK_COMPREPLY="add list diff added changed removed"
SPACK_COMPREPLY="add list diff added changed removed source hash"
fi
}
@@ -1502,6 +1502,24 @@ _spack_pkg_removed() {
fi
}
_spack_pkg_source() {
if $list_options
then
SPACK_COMPREPLY="-h --help -c --canonical"
else
_all_packages
fi
}
_spack_pkg_hash() {
if $list_options
then
SPACK_COMPREPLY="-h --help"
else
_all_packages
fi
}
_spack_providers() {
if $list_options
then