Massimiliano Culpo
9bb5cffc73
Change semantic for providers
...
If a possible provider is not used to satisfy a vdep,
then it's not a provider of that vdep.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
135b44ca59
Change "effect_rules" for symmetry with trigger rules
...
This even though right now we don't have cases where
the effect is on another package.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
d3aca68e8f
Rework conflicts so that "vendors" is not needed anymore
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
fb83f8ef31
Add a description at the top of lp files
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
f69c18a922
Remove commented out code in lp files
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
b95a9d2e47
Reduce line length in lp file
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
def4d19980
Demote warning to debug message
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
1db91e0ccd
Rename "main_node" -> "make_node"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
34ebe7f53c
Rename ""*_node" -> "*_dupe"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
d07d5410f3
Rename "stringify", improve docs
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
1db73eb1f2
Add vendors directive
...
For the time being this directive prevents the vendored package
to be in the same DAG as the one vendoring it.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
2da34de519
Add "^" automatically for named conflicts that don't refer to 'this' package
...
See https://github.com/spack/spack/pull/38447#discussion_r1285291520
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
d237430f47
Inline a few functions that are not needed anymore
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
3f0adae9ef
Remove the need for "node_regex"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
3b4d7bf119
Rename method: "root_node" -> "main_node"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
b3087b32c6
Rename const: "root_node_id" -> "main_node_id"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
ad9c90cb2e
Rename atom: "special_case" -> "multiple_nodes_attribute"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
1b0e113a9d
Rename atom: "facts" -> "pkg_fact"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
6df5738482
Simplify "node_has_variant" internal atom.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
927d831612
Removed leftover TODOs
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
3f3c75e56a
ecp-data-viz-sdk: fix building with new encoding
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
9733bb3da8
We cannot require "mpich" as an mpi provider and ask for openmpi
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
1de5117ef1
Improve handling of cases with cycles
...
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-15 15:54:37 -07:00
Massimiliano Culpo
cf8f44ae5a
Fix ecp-data-vis-sdk: a package cannot impose constraints on transitive deps
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
006e69265e
Optimize grounding of "can_inherit_flags"
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
eaec3062a1
Fix computation of max nodes
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
d5eb5106b0
Add unit-tests for use cases requiring separate concretization of build deps
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
9f8edbf6bf
Add a new configuration option to select among different concretization modes
...
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-15 15:54:37 -07:00
Massimiliano Culpo
a4301badef
Fix a few bugs in the encoding when imposing constraints on build deps only
...
These bugs would show up when we try to split nodes by
imposing different targets or different compilers to all
build dependencies.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
4565811556
Construct unification sets on demand, improve heuristic
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
b94d54e4d9
Reduce the number of unification sets to only two
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
a410b22098
Make cycle detection optional, to speed-up grounding and solving
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
c1a73878ea
Deduplicate trigger and effect conditions in packages
...
This refactor introduces extra indices for triggers and
effect of a condition, so that the corresponding clauses
are evaluated once for every condition they apply to.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
ae553051c8
Extract a function to emit variant rules
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
b94e22b284
ASP-based solver: do not optimize on known dimensions
...
All the solution modes we use imply that we have to solve for all
the literals, except for "when possible".
Here we remove a minimization on the number of literals not
solved, and emit directly a fact when a literal *has* to be
solved.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
e25dcf73cd
Tweak a unit test by allowing a different type of exception to be raised
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
b7cc4bd247
Reduce the dependency types in a solve
...
Count the maximum number of nodes based on dependency types
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
22c95923e3
Parametrize all the logic program for multiple nodes
...
Introduce the concept of "condition sets", i.e. the set of packages on which
a package can require / impose conditions. This currently maps to the link/run
sub-dag of each package + its direct build dependencies.
Parametrize the "condition" and "requirement" logic to multiple nodes.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
c050b99a06
Introduce unification sets
...
Unification sets are possibly overlapping sets of nodes that
might contain at most a single configuration for any package.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
60f82685ae
Allow clingo to generate edges
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
27ab53b68a
Rework the encoding to introduce node(ID, Package) nested facts
...
So far the encoding has a single ID per package, i.e. all the
facts will be node(0, Package). This will prepare the stage for
extending this logic and having multiple nodes from the same
package in a DAG.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
907a80ca71
Remove unneeded #defined directives
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
a53cc93016
Remove useless rule
...
The version_equivalent fact was deleted in #36347 ,
but the corresponding rule was not removed.
2023-08-15 15:54:37 -07:00
Massimiliano Culpo
6ad0dc3722
Transform many package related facts to use a nested function
...
Each fact that is deduced from package rules, and start with
a bare package atom, is transformed into a "facts" atom containing
a nested function.
For instance we transformed
version_declared(Package, ...) -> facts(Package, version_declared(...))
This allows us to clearly mark facts that represent a rule on the package,
and will be of help later when we'll have to distinguish the cases where
the atom "Package" is being used referred to package rules and not to a
node in the DAG.
2023-08-15 15:54:37 -07:00
afzpatel
87d4bdaa02
adding new rpp package ( #38942 )
...
* initial commit for adding new rpp package
* fix styling
2023-08-15 14:04:35 -07:00
Mikael Simberg
36394aab2f
Add mold 2.1.0 ( #39443 )
2023-08-15 09:50:47 -07:00
Larry Knox
358947fc03
Add version HDF5 1.14.2 ( #39409 )
...
* Add version HDF5 1.14.2
2023-08-15 11:21:21 -05:00
Andrey Prokopenko
477a3c0ef6
arborx: new version and patch for 1.4 with Trilinos ( #39438 )
...
* arborx: patch 1.4 for Trilinos 14.0
* arborx: version 1.4.1
2023-08-15 06:46:41 -07:00
Mikael Simberg
c6c5e11353
Add gperftools 2.11 ( #39440 )
2023-08-15 10:41:12 +02:00
Massimiliano Culpo
29e2997bd5
spack.caches: uppercase global variables ( #39428 )
2023-08-15 09:59:02 +02:00