spack/lib/spack/spack
Harmen Stoppels 190a1bf523
Delay abstract hashes lookup (#39251)
Delay lookup for abstract hashes until concretization time, instead of
until Spec comparison. This has a few advantages:

1. `satisfies` / `intersects` etc don't always know where to resolve the
   abstract hash (in some cases it's wrong to look in the current env,
   db, buildcache, ...). Better to let the call site dictate it.
2. Allows search by abstract hash without triggering a database lookup,
   causing quadratic complexity issues (accidental nested loop during
   search)
3. Simplifies queries against the buildcache, they can now use Spec
   instances instead of strings.

The rules are straightforward:

1. a satisfies b when b's hash is prefix of a's hash
2. a intersects b when either a's or b's hash is a prefix of b's or a's
   hash respectively
2023-08-17 08:08:50 +02:00
..
bootstrap spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
build_systems autotools: set 'ldlibs' as 'LIBS' (#17254) 2023-08-13 00:38:10 -07:00
cmd spack.caches: uppercase global variables (#39428) 2023-08-15 09:59:02 +02:00
compilers spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
container Fix containerize view symlink issue (#39419) 2023-08-14 16:02:48 +00:00
detection Prevent "spack external find" to error out on wrong permissions (#38755) 2023-07-07 12:05:32 +02:00
environment Delay abstract hashes lookup (#39251) 2023-08-17 08:08:50 +02:00
hooks drop redundant rpaths post install (#38976) 2023-07-19 09:48:31 +00:00
modules spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
operating_systems Fix issue on cray with super call (#38895) 2023-07-14 10:00:02 +00:00
platforms spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
reporters Stand-alone testing: make recipe support and processing spack-/pytest-like (#34236) 2023-05-10 11:34:54 +02:00
schema Add a new configuration option to select among different concretization modes 2023-08-15 15:54:37 -07:00
solver Delay abstract hashes lookup (#39251) 2023-08-17 08:08:50 +02:00
test Delay abstract hashes lookup (#39251) 2023-08-17 08:08:50 +02:00
util json: minify by default (#39457) 2023-08-16 11:26:40 +00:00
version spack.caches: uppercase global variables (#39428) 2023-08-15 09:59:02 +02:00
__init__.py Bump Spack version on develop to 0.21.0.dev0 (#37760) 2023-05-18 12:47:55 +02:00
abi.py Drop Python 2 object subclassing (#38720) 2023-07-05 14:37:44 +02:00
audit.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
binary_distribution.py Delay abstract hashes lookup (#39251) 2023-08-17 08:08:50 +02:00
build_environment.py Revert "package import: remove magic import line (#39183)" (#39380) 2023-08-11 09:04:40 +02:00
builder.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
caches.py spack.caches: uppercase global variables (#39428) 2023-08-15 09:59:02 +02:00
ci_needs_workaround.py license year bump (#34921) 2023-01-18 14:30:17 -08:00
ci_optimization.py Style: black 23, skip magic trailing comma (#35351) 2023-02-16 23:06:12 -06:00
ci.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
compiler.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
concretize.py spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
config.py spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
cray_manifest.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
database.py Extract prefix locks and failure markers from Database (#39024) 2023-08-07 06:47:52 -04:00
dependency.py license year bump (#34921) 2023-01-18 14:30:17 -08:00
directives.py Rework conflicts so that "vendors" is not needed anymore 2023-08-15 15:54:37 -07:00
directory_layout.py Windows: enable "spack install" tests (#34696) 2023-08-14 13:15:40 -07:00
error.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
extensions.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
fetch_strategy.py version: move to module, avoid circular imports (#39077) 2023-08-02 17:47:08 +02:00
filesystem_view.py Remove LazyReference from code (#38944) 2023-07-19 11:08:51 +02:00
gcs_handler.py license year bump (#34921) 2023-01-18 14:30:17 -08:00
graph.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
hash_types.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
install_test.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
installer.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
main.py spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
mirror.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
mixins.py netcdf: fix bugs introduced with multiple build systems split (#36825) 2023-04-14 10:59:12 +02:00
multimethod.py Fix style issues with latest versions of tools (#39422) 2023-08-14 12:38:59 -04:00
package_base.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
package_prefs.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
package_test.py license year bump (#34921) 2023-01-18 14:30:17 -08:00
package.py Remove references to gmake executable, only use make (#37280) 2023-05-18 19:03:03 +00:00
parser.py Revert "Spec versions: allow git. references for branches with / (#38239)" (#39354) 2023-08-10 08:56:39 +02:00
patch.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
paths.py Windows: executable/path handling (#37762) 2023-08-14 23:29:12 +00:00
projections.py Split satisfies(..., strict=True/False) into two functions (#35681) 2023-03-08 13:00:53 +01:00
provider_index.py Drop Python 2 object subclassing (#38720) 2023-07-05 14:37:44 +02:00
relocate_text.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
relocate.py Remove LazyReference from code (#38944) 2023-07-19 11:08:51 +02:00
repo.py spack.caches: uppercase global variables (#39428) 2023-08-15 09:59:02 +02:00
report.py Stand-alone testing: make recipe support and processing spack-/pytest-like (#34236) 2023-05-10 11:34:54 +02:00
resource.py Drop Python 2 object subclassing (#38720) 2023-07-05 14:37:44 +02:00
rewiring.py Remove LazyReference from code (#38944) 2023-07-19 11:08:51 +02:00
s3_handler.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
spec_list.py Delay abstract hashes lookup (#39251) 2023-08-17 08:08:50 +02:00
spec.py Delay abstract hashes lookup (#39251) 2023-08-17 08:08:50 +02:00
stage.py spack.caches: uppercase global variables (#39428) 2023-08-15 09:59:02 +02:00
store.py spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
subprocess_context.py spack.config: use all caps for globals (#39424) 2023-08-15 08:19:36 +02:00
tag.py spack.repo: uppercase the global PATH variable (#39372) 2023-08-11 09:04:16 +02:00
target.py Drop Python 2 object subclassing (#38720) 2023-07-05 14:37:44 +02:00
tengine.py modules: use curly braces to enclose value in Tcl modulefile (#38375) 2023-07-19 17:57:37 +02:00
traverse.py Fix multiple quadratic complexity issues in environments (#38771) 2023-07-07 10:51:58 +00:00
url.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
user_environment.py license year bump (#34921) 2023-01-18 14:30:17 -08:00
variant.py Drop Python 2 super syntax (#38718) 2023-07-05 09:04:29 -05:00
verify.py Remove LazyReference from code (#38944) 2023-07-19 11:08:51 +02:00