summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2021-11-05concretizer: reuse installs, but assign default values for new buildsTodd Gamblin1-35/+119
Minimizing builds is tricky. We want a minimizing criterion because we want to reuse the avaialble installs, but we also want things that have to be built to stick to *default preferences* from the package and from the user. We therefore treat built specs differently and apply a different set of optimization criteria to them. Spack's *first* priority is to reuse what it can, but if it builds something, the built specs will respect defaults and preferences. This is implemented by bumping the priority of optimization criteria for built specs -- so that they take precedence over the otherwise topmost-priority criterion to reuse what is installed. The scheme relies on all of our optimization criteria being minimizations. That is, we need the case where all specs are reused to be better than any built spec could be. Basically, if nothing is built, all the build criteria are zero (the best possible) and the number of built packages dominates. If something *has* to be built, it must be strictly worse than full reuse, because: 1. it increases the number of built specs 2. it must have either zero or some positive number for all criteria Our optimziation criteria effectively sum into two buckets at once to accomplish this. We use a `build_priority()` number to shift the priority of optimization criteria for built specs higher.
2021-11-05tests: make `spack diff` test more lenientTodd Gamblin1-4/+12
The constraints in the `spack diff` test were very specific and assumed a lot about the structure of what was being diffed. Relax them a bit to make them more resilient to changes.
2021-11-05concretizer: only minimize builds when `--reuse` is enabled.Todd Gamblin2-1/+4
Make the first minimization conditional on whether `--reuse` is enabled in the solve. If `--reuse` is not enabled, there will be nothing in the set to minimize and the objective function (for this criterion) will be 0 for every answer set.
2021-11-05concretizer: adjust integrity constraints to only apply to builds.Todd Gamblin1-6/+13
Many of the integrity constraints in the concretizer are there to restrict how solves are done, but they ignore that past solves may have had different initial conditions. For example, for things we're building, we want the allowed variants to be restricted to those currently in Spack packages, but if we are reusing a concrete spec, we need to be flexible about names that may have existed in old packages. Similarly, restrictions around compatibility of OS's, compiler versions, compiler OS support, etc. are really only about what is supported by the *current* set of compilers/build tools known to Spack, not about what we may get from concrete specs. - [x] restrict certain integrity constraints to only apply to packages that we need to build, and omit concrete specs from consideration.
2021-11-05concretizer: rework operating system semantics for installed packagesTodd Gamblin2-64/+104
The OS logic in the concretizer is still the way it was in the first version. Defaults are implemented in a fairly inflexible way using straight logic. Most of the other sections have been reworked to leave these kinds of decisions to optimization. This commit does that for OS's as well. As with targets, we optimize for target matches. We also try to optimize for OS matches between nodes. Additionally, this commit adds the notion of "OS compatibility" where we allow for builds to depend on binaries for certain other OS's. e.g, for macos, a bigsur build can depend on an already installed (concrete) catalina build. One cool thing about this is that we can declare additional compatible OS's later, e.g. CentOS and RHEL.
2021-11-05concretizer: `impose()` for concrete specs should use body facts.Todd Gamblin1-3/+3
The concretizer doesn't get a say in whether constraints from concrete specs are imposed, so use body facts for them.
2021-11-05include installed hashes in solve and optimize for reuseTodd Gamblin3-15/+104
2021-11-05rename `checked_spec_clauses()` to `spec_clauses()`Todd Gamblin1-8/+8
2021-11-05add `--reuse` option to `spack solve`Todd Gamblin2-6/+13
2021-11-04new package: librttopo (#27182)Sinan1-0/+24
Co-authored-by: sbulut <sbulut@3vgeomatics.com> Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2021-11-04[New Package] Add Restic v0.12.1 (#27208)Alec Scott1-0/+28
Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2021-11-04Rename the temporary scope for bootstrap buildcache (#27231)Massimiliano Culpo1-1/+1
If we don't rename Spack will fail with: ``` ImportError: cannot bootstrap the "clingo" Python module from spec "clingo-bootstrap@spack+python %gcc target=x86_64" due to the following failures: 'spack-install' raised ValueError: Invalid config scope: 'bootstrap'. Must be one of odict_keys(['_builtin', 'defaults', 'defaults/cray', 'bootstrap/cray', 'disable_modules', 'overrides-0']) Please run `spack -d spec zlib` for more verbose error messages ``` in case bootstrapping from binaries fails and we are falling back to bootstrapping from sources.
2021-11-04c3d: add new package (#27155)Ben Darwin1-0/+22
2021-11-04Add the spack tutorial environment as a cloud pipeline stack (#27137)Tamara Dahlgren2-0/+128
2021-11-04libfabric: add 1.13.2 (#27202)Jerome Soumagne1-0/+1
2021-11-04Sort arguments lexicographically in command's help (#27196)Massimiliano Culpo1-0/+5
2021-11-04exciting: add "oxygen" version, multiple fixes (#27217)downloadico1-18/+53
ensure that none of ^intel-mkl, ^intel-mpi, and ^mkl are used, unless the compiler is intel. Fix bad logic in the src/src_xs/m_makespectrum.f90 file in the oxygen version. Add the -fallow-argument-mismatch for gcc >= 10.
2021-11-04omega-h: add support for stand-alone testing (#26931)Cameron Smith1-4/+25
Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2021-11-04Add new versions for HOHQMesh and switch to tar-ball releases (#27194)Joe Schoonover1-4/+5
Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2021-11-04Add RelWithDebInfo to protobuf build_type list. (#27220)Jon Rood1-1/+1
2021-11-04Feature/exaworks spack (#27216)Andre Merzky1-1/+0
* add exaworks spack meta package * add maintainer * switch to `BundlePackage` * flake8 * another flake8 fix * remove incorrect dependency
2021-11-04mfem, hpx: fix recipes after conditional variants (#27215)Massimiliano Culpo2-4/+7
2021-11-04kokkos: refactor defines to use helper functions (#27189)Seth R. Johnson1-33/+19
2021-11-03ssht: New version 1.5.1 (#27173)Erik Schnetter1-1/+2
2021-11-03scr: 3.0rc2 release, variants and deps updates (#27178)Cameron Stanavige1-81/+140
* scr: 3.0rc2 release, variants and deps updates This adds 3.0rc2 release for end users to aid in testing scr for upcoming 3.0 release. Included in this change: - Require most recent component versions for this release - Add a variant for PDSH as it is now an optional dependency with this release - Add bbapi and datawarp (dw) variants - bbapi_fallback variant now requires bbapi variant with latest release - Add variants to enable/disable examples and tests - Add shared variant and current conflicts with ~shared - Update cmake_args to account for added variants where needed Additional updates: - Add maintainers - Use lists and for loops to clean up repetitive code involving all components - Use self.define and self.define_from_variant to clean up cmake_args - Use consistent quoting throughout package * Un-deprecate v2 and legacy * Use new conditional variants
2021-11-03simulationio package: add variants asdf, hdf5, rnpl, silo (#27172)Erik Schnetter1-3/+9
Define new variants asdf, hdf5, rnpl, silo to allow disabling or enabling dependencies.
2021-11-03hwloc: New version 2.6.0 (#27170)Erik Schnetter1-0/+1
2021-11-03mpitrampoline: New version 2.2.0 (#27171)Erik Schnetter1-0/+3
2021-11-03shtools: disable libtool, add 4.9.1, fix --test=root (#27014)Erik Schnetter2-0/+26
The Makefile expects the "other" libtool, not the GNU libtool we have in Spack. Closes https://github.com/spack/spack/issues/26993 Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
2021-11-03tfel and mgis: add new versions and fix tests (#27011)Thomas Helfer2-2/+56
Co-authored-by: Bernhard Kaindl <bernhardkaindl7@gmail.com>
2021-11-03new package: telegraf (#27201)Andrew W Elble1-0/+22
2021-11-03Add Caliper v2.7.0 (#27197)David Boehme1-1/+2
2021-11-03trilinos: mark conflicts in @:13.1+tpetra^cuda@11 (#27188)Seth R. Johnson1-1/+4
* trilinos: fix @13.0.1+tpetra^cuda@11 * Mark CUDA conflict with old versions and always define TPL * trilinos: patch doesn't build so just mark as conflict
2021-11-03WarpX: 21.11 (#27158)Axel Huebl2-2/+4
Update `warpx` & `py-warpx` to the latest release, `21.11`.
2021-11-03nemsio package: add version 2.5.4; add option to build without MPI (#27030)Kyle Gerheiser1-2/+14
Version 2.5.4 adds an option which allows Nemsio to be built without MPI
2021-11-03r-reprex: add 2.0.1 (#27174)Manuela Kuhn1-12/+26
2021-11-03petsc, py-petsc4py: add versions 3.16.1 (#27152)Satish Balay2-0/+2
2021-11-03py-datalad: add 0.15.3 (#27193)Manuela Kuhn1-0/+1
2021-11-03New version: py-jupyterlab-pygments 0.1.2 (#27186)iarspider1-0/+1
2021-11-03sip: fix python_include_dir (#26953)Manuela Kuhn1-1/+3
2021-11-03py-nibetaseries: add new package (#27187)Manuela Kuhn1-0/+59
2021-11-03Allow conditional variants (#24858)Greg Becker13-32/+217
A common question from users has been how to model variants that are new in new versions of a package, or variants that are dependent on other variants. Our stock answer so far has been an unsatisfying combination of "just have it do nothing in the old version" and "tell Spack it conflicts". This PR enables conditional variants, on any spec condition. The syntax is straightforward, and matches that of previous features.
2021-11-02Bootstrap GnuPG (#24003)Massimiliano Culpo8-81/+551
* GnuPG: allow bootstrapping from buildcache and sources * Add a test to bootstrap GnuPG from binaries * Disable bootstrapping in tests * Add e2e test to bootstrap GnuPG from sources on Ubuntu * Add e2e test to bootstrap GnuPG on macOS
2021-11-02Update docs how to display loaded modules (#27159)Richarda Butler1-2/+17
* Update spack load docs
2021-11-03build(deps): bump actions/checkout from 2.3.5 to 2.4.0 (#27179)dependabot[bot]4-18/+18
Bumps [actions/checkout](https://github.com/actions/checkout) from 2.3.5 to 2.4.0. - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/1e204e9a9253d643386038d443f96446fa156a97...ec3a7ce113134d7a93b817d10a8272cb61118579) --- updated-dependencies: - dependency-name: actions/checkout 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>
2021-11-03r-dtplyr: add new package (#27112)Manuela Kuhn1-0/+31
2021-11-02Add build editions for catalyst builds. (#22676)Dan Lipsa2-12/+36
* Add build editions for catalyst builds. * Fix style. * Build edition works only for 5.8:
2021-11-02Add and propagate CUDA variants for DAV SDK (#26476)kwryankrattiger1-9/+33
2021-11-02trilinos: new version 13.2.0 (#27106)Satish Balay1-2/+6
* trilinos: add @13.2.0, and switch default to cxxstd=14 * trilinos: fix python dependency when using +ifpack or +ifpack2 * trilinos: add conflict for ~epetra +ml when @13.2.0: * trilinos: keep 13.0.1 as the preferred version * Update var/spack/repos/builtin/packages/trilinos/package.py Co-authored-by: Seth R. Johnson <johnsonsr@ornl.gov> * update Co-authored-by: Seth R. Johnson <johnsonsr@ornl.gov>
2021-11-02Improved error messages from clingo (#26719)Greg Becker7-72/+223
This PR adds error message sentinels to the clingo solve, attached to each of the rules that could fail a solve. The unsat core is then restricted to these messages, which makes the minimization problem tractable. Errors that can only be generated by a bug in the logic program or generating code are prefaced with "Internal error" to make clear to users that something has gone wrong on the Spack side of things. * minimize unsat cores manually * only errors messages are choices/assumptions for performance * pre-check for unreachable nodes * update tests for new error message * make clingo concretization errors show up in cdash reports fully * clingo: make import of clingo.ast parsing routines robust to clingo version Older `clingo` has `parse_string`; newer `clingo` has `parse_files`. Make the code work wtih both. * make AST access functions backward-compatible with clingo 5.4.0 Clingo AST API has changed since 5.4.0; make some functions to help us handle both versions of the AST. Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>