Build caching: support package hash for swig #14153
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Closes #13620
Closes #13265
Fixes #13237
Spack computes a "full hash" of packages as part of identifying them when retrieving binary packages for installation. The full hash includes a content hash that attempts to traverse the AST of a
package.py
file and include only the components that are used for the spec (e.g. if a patch is not applied for a particular spec version, then it is excluded from the content hash).This AST examination fails in some cases where the "when" condition for a patch/phase is not a string literal. At this time
swig
is such an example. This PR updates the package hash calculation logic to fall back to including content when it cannot evaluate awhen
condition (even though it may not strictly be required by the spec).