summaryrefslogtreecommitdiff
path: root/lib
AgeCommit message (Collapse)AuthorFilesLines
2023-08-25Windows symlinking support (#38599)James Smillie11-161/+787
This reapplies 66f7540, which adds supports for hardlinks/junctions on Windows systems where developer mode is not enabled. The commit was reverted on account of multiple issues: * Checks added to prevent dangling symlinks were interfering with existing CI builds on Linux (i.e. builds that otherwise succeed were failing for creating dangling symlinks). * The logic also updated symlinking to perform redirection of relative paths, which lead to malformed symlinks. This commit fixes these issues.
2023-08-24rebuild-index: fix race condition by avoiding parallelism (#39594)Harmen Stoppels1-25/+10
2023-08-24Remove leftover attributes from parser (#39574)Massimiliano Culpo2-27/+1
#35042 introduced lazy hash parsing, but didn't remove a few attributes from the parser that were needed only for concrete specs This commit removes them, since they are effectively dead code.
2023-08-24build(deps): bump sphinx from 7.2.2 to 7.2.3 in /lib/spack/docs (#39603)dependabot[bot]1-1/+1
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.2.2 to 7.2.3. - [Release notes](https://github.com/sphinx-doc/sphinx/releases) - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES) - [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.2...v7.2.3) --- updated-dependencies: - dependency-name: sphinx dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-23Uppercase global constants in spec.py (#39573)Massimiliano Culpo9-38/+38
* Uppercase global constants in spec.py Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
2023-08-23do not warn for invalid package name on repo.yaml if subdirectory: '' (#39439)Greg Becker1-1/+1
2023-08-23ASP-based solver: split heuristic for duplicate nodes (#39593)Massimiliano Culpo3-16/+27
The heuristic for duplicate nodes contains a few typos, and apparently slows down the solve for specs that have a lot of sub-optimal choices to be taken. This is likely because with a lot of sub-optimal choices, the low priority, flawed heuristic is being used by clingo. Here I split the heuristic, so complex rules that matter only if we allow multiple nodes from the same package are used only in that case.
2023-08-23Add --fail-fast option for generating build caches (#38496)Dom Heinzeller1-1/+25
Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
2023-08-23docs: API, f-string, and path updates to test section (#39584)Tamara Dahlgren1-38/+42
2023-08-22spack.caches: make fetch_cache_location lowercase (#39575)Kamil Iskra1-1/+1
fetch_cache_location was erroneously renamed to FETCH_cache_location as part of #39428, breaking "spack module create".
2023-08-22ASP-based solver: use edge properties for reused specs (#39508)Massimiliano Culpo3-31/+33
Since #34821 we are annotating virtual dependencies on DAG edges, and reconstructing virtuals in memory when we read a concrete spec from previous formats. Therefore, we can remove a TODO in asp.py, and rely on "virtual_on_edge" facts to be imposed.
2023-08-22Bump sphinx from 6.2.1 to 7.2.2 in /lib/spack/docs (#39502)dependabot[bot]1-1/+1
Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 6.2.1 to 7.2.2. - [Release notes](https://github.com/sphinx-doc/sphinx/releases) - [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES) - [Commits](https://github.com/sphinx-doc/sphinx/compare/v6.2.1...v7.2.2) --- updated-dependencies: - dependency-name: sphinx dependency-type: direct:production update-type: version-update:semver-major ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-22Bump sphinx-rtd-theme from 1.2.2 to 1.3.0 in /lib/spack/docs (#39562)dependabot[bot]1-1/+1
Bumps [sphinx-rtd-theme](https://github.com/readthedocs/sphinx_rtd_theme) from 1.2.2 to 1.3.0. - [Changelog](https://github.com/readthedocs/sphinx_rtd_theme/blob/master/docs/changelog.rst) - [Commits](https://github.com/readthedocs/sphinx_rtd_theme/compare/1.2.2...1.3.0) --- updated-dependencies: - dependency-name: sphinx-rtd-theme dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-18Fix Spack freeze on install child process unexpected exit (#39015)Jordan Galby1-8/+27
* Fix spack frozen on child process defunct * Rename parent/child pipe to read/write to emphasize non-duplex mode
2023-08-17ASP-based solver: optimize key to intermediate dicts (#39471)Massimiliano Culpo1-8/+15
Computing str(spec) is faster than computing hash(spec), and since all the abstract specs we deal with come from user configuration they cannot cover DAG structures that are not captured by str() but are captured by hash()
2023-08-17Bump mypy from 1.5.0 to 1.5.1 in /lib/spack/docs (#39478)dependabot[bot]1-1/+1
Bumps [mypy](https://github.com/python/mypy) from 1.5.0 to 1.5.1. - [Commits](https://github.com/python/mypy/compare/v1.5.0...v1.5.1) --- updated-dependencies: - dependency-name: mypy dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-08-17Add debugging statements to file search (#39121)Peter Scheibel1-2/+7
Co-authored-by: Scheibel <scheibel1@ml-9983616.the-lab.llnl.gov>
2023-08-17Delay abstract hashes lookup (#39251)Harmen Stoppels7-68/+92
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-16Extract Package from PackageNode for error messagesMassimiliano Culpo1-72/+72
2023-08-16Avoid sort on singleton list during edge insertion (#39458)Harmen Stoppels1-9/+7
The median length of this list of 1. For reasons I don't know, `.sort()` still like to call the key function. This saves ~9% of total database read time, and the number of calls goes from 5305 -> 1715.
2023-08-16Do not impose provider conditions, if the node is not a provider (#39456)Massimiliano Culpo2-8/+30
* Do not impose provider conditions, if the node is not a provider fixes #39455 When a node can be a provider of a spec, but is not selected as a provider, we should not be imposing provider conditions on the virtual. * Adjust the integrity constraint, by using the correct atom
2023-08-16json: minify by default (#39457)Harmen Stoppels1-1/+1
2023-08-16Add new custom markers to unit tests (#33862)Massimiliano Culpo82-500/+211
* Add "only_clingo", "only_original" and "not_on_windows" markers * Modify tests to use the "not_on_windows" marker * Mark tests that run only with clingo * Mark tests that run only with the original concretizer
2023-08-15Change semantic for providersMassimiliano Culpo2-11/+57
If a possible provider is not used to satisfy a vdep, then it's not a provider of that vdep.
2023-08-15Change "effect_rules" for symmetry with trigger rulesMassimiliano Culpo1-13/+16
This even though right now we don't have cases where the effect is on another package.
2023-08-15Rework conflicts so that "vendors" is not needed anymoreMassimiliano Culpo4-78/+28
2023-08-15Add a description at the top of lp filesMassimiliano Culpo4-2/+22
2023-08-15Remove commented out code in lp filesMassimiliano Culpo2-13/+0
2023-08-15Reduce line length in lp fileMassimiliano Culpo1-3/+11
2023-08-15Demote warning to debug messageMassimiliano Culpo1-1/+1
2023-08-15Rename "main_node" -> "make_node"Massimiliano Culpo2-8/+8
2023-08-15Rename ""*_node" -> "*_dupe"Massimiliano Culpo2-28/+28
2023-08-15Rename "stringify", improve docsMassimiliano Culpo1-10/+15
2023-08-15Add vendors directiveMassimiliano Culpo4-0/+81
For the time being this directive prevents the vendored package to be in the same DAG as the one vendoring it.
2023-08-15Add "^" automatically for named conflicts that don't refer to 'this' packageMassimiliano Culpo1-1/+14
See https://github.com/spack/spack/pull/38447#discussion_r1285291520
2023-08-15Inline a few functions that are not needed anymoreMassimiliano Culpo1-20/+8
2023-08-15Remove the need for "node_regex"Massimiliano Culpo2-12/+21
2023-08-15Rename method: "root_node" -> "main_node"Massimiliano Culpo2-7/+7
2023-08-15Rename const: "root_node_id" -> "main_node_id"Massimiliano Culpo1-13/+14
2023-08-15Rename atom: "special_case" -> "multiple_nodes_attribute"Massimiliano Culpo1-5/+6
2023-08-15Rename atom: "facts" -> "pkg_fact"Massimiliano Culpo3-87/+87
2023-08-15Simplify "node_has_variant" internal atom.Massimiliano Culpo1-13/+13
2023-08-15Removed leftover TODOsMassimiliano Culpo2-14/+5
2023-08-15Improve handling of cases with cyclesMassimiliano Culpo3-28/+54
To avoid paying the cost of setup and of a full grounding again, move cycle detection into a separate program and check first if the solution has cycles. If it has, ground only the integrity constraint preventing cycles and solve again.
2023-08-15Optimize grounding of "can_inherit_flags"Massimiliano Culpo1-3/+6
2023-08-15Fix computation of max nodesMassimiliano Culpo3-30/+39
2023-08-15Add unit-tests for use cases requiring separate concretization of build depsMassimiliano Culpo2-0/+81
2023-08-15Add a new configuration option to select among different concretization modesMassimiliano Culpo4-48/+191
The "concretizer" section has been extended with a "duplicates:strategy" attribute, that can take three values: - "none": only 1 node per package - "minimal": allow multiple nodes opf specific packages - "full": allow full duplication for a build tool
2023-08-15Fix a few bugs in the encoding when imposing constraints on build deps onlyMassimiliano Culpo1-14/+12
These bugs would show up when we try to split nodes by imposing different targets or different compilers to all build dependencies.
2023-08-15Construct unification sets on demand, improve heuristicMassimiliano Culpo3-31/+79