summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2024-11-13bump version to 0.24.0.dev0 (#47578)Harmen Stoppels1-1/+1
2024-11-13missing and redundant imports (#47577)Harmen Stoppels5-4/+5
2024-11-12Add SVE as a variant for Neoverse N2. Default to true, but should be (#47567)dslarm1-1/+1
benchmarked to test if that is a correct decision.
2024-11-12Add solver capability for synthesizing splices of ABI compatible packages. ↵John Gouwar24-59/+885
(#46729) This PR provides complementary 2 features: 1. An augmentation to the package language to express ABI compatibility relationships among packages. 2. An extension to the concretizer that can synthesize splices between ABI compatible packages. 1. The `can_splice` directive and ABI compatibility We augment the package language with a single directive: `can_splice`. Here is an example of a package `Foo` exercising the `can_splice` directive: class Foo(Package): version("1.0") version("1.1") variant("compat", default=True) variant("json", default=False) variant("pic", default=False) can_splice("foo@1.0", when="@1.1") can_splice("bar@1.0", when="@1.0+compat") can_splice("baz@1.0+compat", when="@1.0+compat", match_variants="*") can_splice("quux@1.0", when=@1.1~compat", match_variants="json") Explanations of the uses of each directive: - `can_splice("foo@1.0", when="@1.1")`: If `foo@1.0` is the dependency of an already installed spec and `foo@1.1` could be a valid dependency for the parent spec, then `foo@1.1` can be spliced in for `foo@1.0` in the parent spec. - `can_splice("bar@1.0", when="@1.0+compat")`: If `bar@1.0` is the dependency of an already installed spec and `foo@1.0+compat` could be a valid dependency for the parent spec, then `foo@1.0+compat` can be spliced in for `bar@1.0+compat` in the parent spec - `can_splice("baz@1.0", when="@1.0+compat", match_variants="*")`: If `baz@1.0+compat` is the dependency of an already installed spec and `foo@1.0+compat` could be a valid dependency for the parent spec, then `foo@1.0+compat` can be spliced in for `baz@1.0+compat` in the parent spec, provided that they have the same value for all other variants (regardless of what those values are). - `can_splice("quux@1.0", when=@1.1~compat", match_variants="json")`:If `quux@1.0` is the dependency of an already installed spec and `foo@1.1~compat` could be a valid dependency for the parent spec, then `foo@1.0~compat` can be spliced in for `quux@1.0` in the parent spec, provided that they have the same value for their `json` variant. 2. Augmenting the solver to synthesize splices ### Changes to the hash encoding in `asp.py` Previously, when including concrete specs in the solve, they would have the following form: installed_hash("foo", "xxxyyy") imposed_constraint("xxxyyy", "foo", "attr1", ...) imposed_constraint("xxxyyy", "foo", "attr2", ...) % etc. Concrete specs now have the following form: installed_hash("foo", "xxxyyy") hash_attr("xxxyyy", "foo", "attr1", ...) hash_attr("xxxyyy", "foo", "attr2", ...) This transformation allows us to control which constraints are imposed when we select a hash, to facilitate the splicing of dependencies. 2.1 Compiling `can_splice` directives in `asp.py` Consider the concrete spec: foo@2.72%gcc@11.4 arch=linux-ubuntu22.04-icelake build_system=autotools ^bar ... It will emit the following facts for reuse (below is a subset) installed_hash("foo", "xxxyyy") hash_attr("xxxyyy", "hash", "foo", "xxxyyy") hash_attr("xxxyyy", "version", "foo", "2.72") hash_attr("xxxyyy", "node_os", "ubuntu22.04") hash_attr("xxxyyy", "hash", "bar", "zzzqqq") hash_attr("xxxyyy", "depends_on", "foo", "bar", "link") Rules that derive abi_splice_conditions_hold will be generated from use of the `can_splice` directive. They will have the following form: can_splice("foo@1.0.0+a", when="@1.0.1+a", match_variants=["b"]) ---> abi_splice_conditions_hold(0, node(SID, "foo"), "foo", BaseHash) :- installed_hash("foo", BaseHash), attr("node", node(SID, SpliceName)), attr("node_version_satisfies", node(SID, "foo"), "1.0.1"), hash_attr("hash", "node_version_satisfies", "foo", "1.0.1"), attr("variant_value", node(SID, "foo"), "a", "True"), hash_attr("hash", "variant_value", "foo", "a", "True"), attr("variant_value", node(SID, "foo"), "b", VariVar0), hash_attr("hash", "variant_value", "foo", "b", VariVar0). 2.2 Synthesizing splices in `concretize.lp` and `splices.lp` The ASP solver generates "splice_at_hash" attrs to indicate that a particular node has a splice in one of its immediate dependencies. Splices can be introduced in the dependencies of concrete specs when `splices.lp` is conditionally loaded (based on the config option `concretizer:splice:True`. 2.3 Constructing spliced specs in `asp.py` The method `SpecBuilder._resolve_splices` implements a top-down memoized implementation of hybrid splicing. This is an optimization over the more general `Spec.splice`, since the solver gives a global view of exactly which specs can be shared, to ensure the minimal number of splicing operations. Misc changes to facilitate configuration and benchmarking - Added the method `Solver.solve_with_stats` to expose timers from the public interface for easier benchmarking - Added the boolean config option `concretizer:splice` to conditionally load splicing behavior Co-authored-by: Greg Becker <becker33@llnl.gov>
2024-11-13py-nugraph, ph5concat, py-numl: Add new nugraph packages (#47315)v3-0/+109
2024-11-12spectre: add v2024.03.19 (#43275)SXS Bot1-0/+3
Co-authored-by: sxs-bot <sxs-bot@users.noreply.github.com>
2024-11-12parse_specs: special case for concretizing lookups quickly (#47556)Greg Becker4-3/+182
We added unification semantics for parsing specs from the CLI, but there are a couple of special cases in which we can avoid calls to the concretizer for speed when the specs can all be resolved by lookups. - [x] special case 1: solving a single spec - [x] special case 2: all specs are either concrete (come from a file) or have an abstract hash. In this case if concretizer:unify:true we need an additional check to confirm the specs are compatible. - [x] add a parameterized test for unifying on the CI --------- Signed-off-by: Todd Gamblin <tgamblin@llnl.gov> Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2024-11-12restic: add v0.17.3 (#47553)Alec Scott1-0/+1
2024-11-12direnv: add v2.35.0 (#47551)Alec Scott1-0/+1
2024-11-12geomodel: Allow configuring C++ standard (#47422)Paul Gessinger1-0/+9
* geomodel: Allow configuring C++ standard * drop c++11
2024-11-12glab: add v1.48.0 (#47552)Alec Scott1-0/+2
2024-11-12parsec: update urls (#47416)Wouter Deconinck1-13/+5
* parsec: update urls * parsec: fix homepage
2024-11-12xfsprogs: fix dependency on gettext (#47547)Matthieu Dorier1-1/+2
* xfsprogs: fix dependency on gettext * changed dependency on gettext in xfsprogs Co-authored-by: Wouter Deconinck <wdconinc@gmail.com> --------- Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
2024-11-12openssh: add v9.9p1 (#47555)Wouter Deconinck1-23/+26
2024-11-12py-constantly: add v23.10.4 (#47548)Matthieu Dorier4-0/+5
* py-constantly: added version 23.10.4 * py-constantly: fixed dependency on py-versioneer * py-constantly: updated py-versioneer dependency Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com> --------- Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2024-11-12costo: new package and to fix the build, add pkgconfig dep to vtk (#47121)teddy2-2/+52
Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
2024-11-12expat: Add 2.6.4 with security fixes + deprecate vulnerable 2.6.3 (#47521)Sebastian Pipping1-3/+8
2024-11-12llvm-amdgpu: add missing dependency on libxml2 (#47560)Harmen Stoppels1-0/+1
2024-11-12getting_started.rst: fix list of spack deps (#47557)Harmen Stoppels1-3/+3
2024-11-11py-cryptography: add v43.0.3 (switch to maturin) (#47546)Wouter Deconinck1-3/+11
* py-cryptography: add v43.0.3 (switch to maturin) * py-cryptography: deny some setuptools versions * py-cryptography: depends_on py-setuptools-rust when @42, no range --------- Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2024-11-11environment-modules: add version 5.5.0 (#47543)Xavier Delaruelle1-2/+11
This new version is compatible with Tcl 9.0. It also requires 'util-linux' for new logging capabilities.
2024-11-11gdb: add version 15.2 (#47540)Tim Haines1-0/+1
2024-11-11prometheus: add v2.55.1 (#47544)Mosè Giordano1-1/+4
2024-11-11libunwind: Add 1.7.2, 1.8.1, and new *-stable branches (#47412)Mikael Simberg1-8/+19
* libunwind: Add 1.7.2 and 1.8.1 * libunwind: Remove deprecated 1.1 version * libunwind: Add newer *-stable branches: Remove 1.5-stable branch as well as cleanup. * libunwind: Use GitHub url for all versions * libunwind: Add conflict for PPC and 1.8.* * libunwind: Add conflict for aarch64 and 1.8: Build fails with aarch64/Gos-linux.c: In function '_ULaarch64_local_resume': aarch64/Gos-linux.c:147:1: error: x29 cannot be used in asm here } ^ aarch64/Gos-linux.c:147:1: error: x29 cannot be used in asm here make[2]: *** [Makefile:4795: aarch64/Los-linux.lo] Error 1
2024-11-11justbuild: add version 1.4.0 (#47410)Alberto Sartori1-0/+1
2024-11-11packages: new versions (`diamond`, `py-alive-progress`, `py-bakta`, ↵Luke Diorio-Toth6-15/+92
`py-deepsig-biocomp`), new packages (`py-pyhmmer`, `py-pyrodigal`) (#47277) * added updated versions * added pyhmmer * updated infernal * fix blast-plus for apple-clang * fix py-biopython build on apple-clang * remove erroneous biopython dep: build issue is with python 3.8, not biopython * deepsig python 3.9: expanding unnecessary python restrictions * add pyrodigal * fix unnecessarily strict diamond version * builds and updates: blast-plus indexing broken, still need to test db download and bakta pipeline * builds and runs * revert blast-plus changes: remove my personal hacks to get blast-plus to build
2024-11-11extrae: Update dyninst dependency (#47359)Tim Haines2-7/+42
2024-11-11Fix the build error during compilation of rocdecode package (#47283)Sreenivasa Murthy Kolam2-0/+48
* fix the build error during compilation of rocdecode.was dependent on libva-devel packag * address review comment * address review changes.commit the changes
2024-11-11osu-micro-benchmarks: add v7.5 (#47423)MatthewLieber1-0/+1
* Adding sha for 7.4 release of OSU Micro Benchmarks * Adds the sha256sum for the OSU mirco benchmarks 7.5 release.
2024-11-11py-fsspec-xrootd: new package (#47405)Wouter Deconinck1-0/+26
* py-fsspec-xrootd: new package * py-fsspec-xrootd: depends_on python@3.8:
2024-11-11openmpi: add two_level_namespace variant for MacOS (#47202)Stephen Herbener1-0/+22
* Add two_level_namespace variant (default is disabled) for MacOS to enable building executables and libraries with two level namespace enabled. * Addressed reviewer comments. * Moved two_level_namespace variant ahead of the patch that uses that variant to get concretize to work properly. * Removed extra print statements
2024-11-11Removing args to get libraries added in RPATH (#47465)renjithravindrankannath2-18/+696
2024-11-11superlu-dist: add v9.1.0, v9.0.0 (#47461)Satish Balay1-1/+3
Fix typo wrt @xiaoyeli
2024-11-11rsyslog: add v8.2410.0 (fix CVE) (#47511)Wouter Deconinck1-4/+17
* rsyslog: add v8.2410.0
2024-11-11varnish-cache: add v7.6.1 (#47513)Wouter Deconinck1-7/+12
2024-11-11py-pyppeteer: new package (#47375)Wouter Deconinck2-0/+54
* py-pyppeteer: new package * py-pyee: new package (v11.1.1, v12.0.0)
2024-11-11xerces-c: add v3.3.0 (#47522)Wouter Deconinck1-6/+9
2024-11-11scitokens-cpp: add v1.1.2 (#47523)Wouter Deconinck1-0/+1
2024-11-11pixman: add v0.44.0 (switch to meson) (#47529)Wouter Deconinck1-1/+36
* pixman: add v0.44.0 (switch to meson)
2024-11-11xtrans: add v1.5.2 (#47530)Wouter Deconinck1-0/+1
2024-11-11git: add v2.46.2, v2.47.0 (#47534)Wouter Deconinck1-0/+4
2024-11-11py-non-regression-test-tools: add v1.1.4 (#47520)teddy1-2/+3
Co-authored-by: t. chantrait <teddy.chantrait@cea.fr>
2024-11-11fzf: add v0.56.2 (#47549)Alec Scott1-0/+1
2024-11-11bfs: add v4.0.4 (#47550)Alec Scott1-0/+1
2024-11-11soqt: new package (#47443)Paul Gessinger1-0/+56
* soqt: Add SoQt package The geomodel package needs this if visualization is turned on. * make qt versions explicit * use virtual dependency for qt * pr feedback Remove myself as maintainer Remove v1.6.0 Remove unused qt variant
2024-11-11openmpi: fix detection (#47541)Harmen Stoppels1-31/+25
Take a simpler approach to listing variant options -- store them in variables instead of trying to roundtrip them through metadata dictionaries.
2024-11-11Compiler.default_libc: early exit on darwin/win (#47554)Harmen Stoppels1-2/+13
* Compiler.default_libc: early exit on darwin/win * use .cc when testing c++ compiler if c compiler is missing
2024-11-11vtk-m %oneapi@2025: cxxflags add ↵eugeneswalker1-0/+6
-Wno-error=missing-template-arg-list-after-template-kw (#47477)
2024-11-11py-pillow: patch for disabling optional deps (#47542)Harmen Stoppels1-0/+6
2024-11-11Bugfix: `spack find -x` in environments (#46798)Peter Scheibel5-45/+242
This addresses part [1] of #46345 #44713 introduced a bug where all non-spec query parameters like date ranges, -x, etc. were ignored when an env was active. This fixes that issue and adds tests for it. --------- Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>