summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-05-14qt: add 5.15.4 (#30656)Michael Kuhn1-0/+1
2022-05-14uninstall: fix dependency check (#30674)Michael Kuhn1-1/+1
The dependency check currently checks whether there are only build dependencies left for a particular package. However, the database also contains uninstalled packages, which can cause the check to fail. For instance, with `bison` and `flex` having already been uninstalled, `m4` will have the following dependents: ``` bison ('build', 'run')--> m4 flex ('build',)--> m4 libnl ('build',)--> m4 ``` `bison` and `flex` should be ignored in this case because they are not installed anymore. Fixes #30673
2022-05-14Update GitLab environment variable name (#30671)Zack Galbreath1-2/+2
Use the IAM credentials that correspond to our new binary mirror (s3://spack-binaries vs. s3://spack-binaries-develop)
2022-05-14[py-pyworld] Limiting numpy version. See: ↵Jen Herting1-1/+1
https://zenn.dev/ymd_h/articles/934a90e1468a05 (#30670)
2022-05-13CEED v5.0 release (#29710)Cameron Smith8-18/+180
* ceed50: add ceed 5.0.0 and pumi 2.2.7 * libceed-0.10 * ceed50: add omegah * omega-h: mpi and cuda builds work * omega-h: fix style * New package: libfms * New version: gslib@1.0.7 CEED: add some TODO items for the 5.0 release * ceed: variant name consistent with package name * LAGHOS: allow newer versions of MFEM to be used with v3.1 * LIBCEED: add missing 'install' target in 'install_targets' * CEED: address some TODO items + some tweaks * MFEM: add new variant for FMS (libfms) * CEED: v5.0.0 depends on 'libfms' and 'mfem+fms' * RATEL: add missing 'install' target in 'install_targets' * CEED: add dependency for v5.0.0 on Ratel v0.1.2 * CEED: add Nek-related dependencies for ceed@5.0.0 * CEED: v5.0.0 depends on MAGMA v2.6.2 * libCEED: set the `CUDA_ARCH` makefile parameter * libCEED: set the `HIP_ARCH` makefile parameter Co-authored-by: Jed Brown <jed@jedbrown.org> Co-authored-by: Veselin Dobrev <dobrev@llnl.gov> Co-authored-by: Veselin Dobrev <v-dobrev@users.noreply.github.com>
2022-05-13New package: py-pyworld (#28641)Jen Herting1-0/+22
* espnet first build with depends * added cython>=0.24.0' and type='build' * [py-pyworld] updated copyright Co-authored-by: Sid Pendelberry <sid@rit.edu>
2022-05-13Preserve Permissions on .zip extraction (#30407)John W. Parent1-9/+11
#24556 merged in support for Python's .zip file support via ZipFile. However as per #30200 ZipFile does not preserve file permissions of the extracted contents. This PR returns to using the `unzip` executable on non-Windows systems (as was the case before #24556) and now uses `tar` on Windows to extract .zip files.
2022-05-13Ascent: Patch 0.8.0 for finding ADIOS2. (#30609)kwryankrattiger2-0/+102
2022-05-13directory_layout: remove outdated checks for old DAG hashTodd Gamblin2-34/+6
We previously had checks in `directory_layout` to check for build-dependency conflicts when we weren't storing build dependencies. We don't need those anymore; we can just rely on the DAG hash now that it includes everything we know about each spec. - [x] Remove vestigial code for checking installed spec against concrete spec in `ensure_installed()` - [x] Remove `SpecHashCollisionError` -- if specs have the same hash now, they're the same as far as `DirectoryLayout` should be concerned. - [x] Convert spec comparison to `dag_hash()` comparison when adding extensions.
2022-05-13full hash: fix uninstall and gc with full hash DBTodd Gamblin3-5/+26
The database now stores full hashes, so we need to adjust the criteria we use to determine if something can be uninstalled. Specifically, it's ok to uninstall thing that have remaining build-only dependents.
2022-05-13concretizer: enable hash reuse with full hashTodd Gamblin12-87/+280
With the original DAG hash, we did not store build dependencies in the database, but with the full DAG hash, we do. Previously, we'd never tell the concretizer about build dependencies of things used by hash, because we never had them. Now, we have to avoid telling the concretizer about them, or they'll unnecessarily constrain build dependencies for new concretizations. - [x] Make database track all dependencies included in the `dag_hash` - [x] Modify spec_clauses so that build dependency information is optional and off by default. - [x] `spack diff` asks `spec_clauses` for build dependencies for completeness - [x] Modify `concretize.lp` so that reuse optimization doesn't affect fresh installations. - [x] Modify concretizer setup so that it does *not* prioritize installed versions over package versions. We don't need this with reuse, so they're low priority. - [x] Fix `test_installed_deps` for full hash and new concretizer (does not work for old concretizer with full hash -- leave this for later if we need it) - [x] Move `test_installed_deps` mock packages to `builtin.mock` for easier debugging with `spack -m`. - [x] Fix `test_reuse_installed_packages_when_package_def_changes` for full hash
2022-05-13bugfix: tests trying to ignore package changes should use `build_hash`Todd Gamblin3-5/+15
- [x] update test to use `build_hash` instead of `dag_hash`, as we're testing for graph structure, and specifically NOT testing for package changes. - [x] make hash descriptors callable on specs to simplify syntax for invoking them - [x] make `Spec.spec_hash()` public
2022-05-13Remove all uses of `runtime_hash`; document lockfile formats and fix testsTodd Gamblin15-842/+2720
This removes all but one usage of runtime hash. The runtime hash was being used to write historical lockfiles for tests, but we don't need it for that; we can just save those lockfiles. - [x] add legacy lockfiles for v1, v2, v3 - [x] fix bugs with v1 lockfile tests (the dummy lockfile we were writing was not actually a v1 lockfile because it used the new spec file format). - [x] remove all but one runtime_hash usage -- that one needs a small rework of the concretizer to really fix, as it's about separate concretization of build dependencies. - [x] Document the history of the lockfile format in `environment/__init__.py`
2022-05-13`content_hash()`: make it work on abstract specsTodd Gamblin4-40/+78
Some test cases had to be modified in a kludgy way so that abstract specs made concrete would have versions on them. We shouldn't *need* to do this, as the only reason we care is because the content hash has to be able to get an archive for a version. This modifies the content hash so that it can be called on abstract specs, including only relevant content. This does NOT add a partial content hash to the DAG hash, as we do not really want that -- we don't need in-memory spec hashes to need to load package files. It just makes `Package.content_hash()` less prickly and tests easier to understand.
2022-05-13spec: fix serialization, avoid double call to node_dict_with_hashesTodd Gamblin1-1/+4
2022-05-13hashes: revert `spack monitor` hash changes to preserve original protocolTodd Gamblin4-14/+17
`spack monitor` expects a field called `spec_full_hash`, so we shouldn't change that. Instead, we can pass a `dag_hash` (which is now the full hash) but not change the field name.
2022-05-13fix full hash calls in `spack graph`Todd Gamblin1-4/+4
2022-05-13remove no longer needed full hash checkTodd Gamblin1-6/+1
2022-05-13spec: remove hashes_final as it's no longer needed.Todd Gamblin1-29/+1
`hashes_final` was used to indicate when a spec was concrete but possibly lacked `full_hash` or `build_hash` fields. This was only necessary because older Spacks didn't generate them, and we want to avoid recomputing them, as we likely do not have the same package files as existed at concretization time. Now, we don't need to do that -- there is only the DAG hash and specs are either concrete and have a `dag_hash`, or not concrete and have no `dag_hash`. There's no middle ground.
2022-05-13gitlab ci: switch over to new bucket for all stacksScott Wittenburg7-7/+7
2022-05-13gitlab ci: Docstring methods or make them privateScott Wittenburg3-76/+238
2022-05-13binary_distribution: Refactor index generation into smaller methodsScott Wittenburg1-47/+57
2022-05-13env: Use order of roots to resolve DAG hash conflicts in legacy lockfilesScott Wittenburg2-26/+39
2022-05-13env: enforce predictable ordering when reading lockfileScott Wittenburg2-9/+19
Without some enforcement of spec ordering, python 2 produced different results in the affected test than did python 3. This change makes the arbitrary but reproducible decision to sort the specs by their lockfile key alphabetically.
2022-05-13spec: fix infinite recursion when computing package hashScott Wittenburg1-6/+14
Issue described in the following PR comment: https://github.com/spack/spack/pull/28504#issuecomment-1051835568 Solution described in subsequent comment: https://github.com/spack/spack/pull/28504#issuecomment-1053986132
2022-05-13Fix how environments are read from lockfileScott Wittenburg16-109/+833
2022-05-13hashes: remove full_hash and build_hash from spackScott Wittenburg28-712/+336
2022-05-13environment: key by dag_hash instead of build_hashScott Wittenburg5-45/+68
2022-05-13tests: fix failing test_hash_changeScott Wittenburg1-2/+4
The full hash appears twice in the spec dict now, replacing just the value replaces it under "hash" and "full_hash". Only replace the one that appears after "full_hash". I'm actually not sure what purpose this test served, so maybe it could be removed, as it may be testing some distinction between full and dag hash which no longer exists.
2022-05-13Include all deps and package content in the `dag_hash()`Todd Gamblin4-41/+45
For a long time, Spack has used a coarser hash to identify packages than it likely should. Packages are identified by `dag_hash()`, which includes only link and run dependencies. Build dependencies are stripped before hashing, and we have notincluded hashes of build artifacts or the `package.py` files used to build. This means the DAG hash actually doesn't represent all the things Spack can build, and it reduces reproducibility. We did this because, in the early days, users were (rightly) annoyed when a new version of CMake, autotools, or some other build dependency would necessitate a rebuild of their entire stack. Coarsening the hash avoided this issue and enabled a modicum of stability when only reusing packages by hash match. Now that we have `--reuse`, we don't need to be so careful. Users can avoid unnecessary rebuilds much more easily, and we can add more provenance to the spec without worrying that frequent hash changes will cause too many rebuilds. This commit starts the refactor with the following major change: - [x] Make `Spec.dag_hash()` include build, run, and link dependencides and the package hash (it is now equivalent to `full_hash()`). It also adds a couple of bugfixes for problems discovered during the switch: - [x] Don't add a `package_hash()` in `to_node_dict()` unless the spec is concrete (fixes breaks on abstract specs) - [x] Don't add source ids to the package hash for packages without a known fetch strategy (may mock packages are like this) - [x] Change how `Spec.patches` is memoized. Using `llnl.util.lang.memoized` on `Spec` objects causes specs to be stored in a `dict`, which means they need a hash. But, `dag_hash()` now includes patch `sha256`'s via the package hash, which can lead to infinite recursion
2022-05-13Reuse concretization by default (#30396)Massimiliano Culpo10-27/+43
* Enable reuse by default in Spack * Update documentation to match new default * Configure pipelines not to reuse software
2022-05-13sarus: fix dependency on boost (#30659)Teodor Nikolov1-1/+1
The program_options variant is disabled by default in Boost and has to be enabled explicitly.
2022-05-13libtree: add v3.0.4, v3.1.1 (#30658)Harmen Stoppels1-0/+2
2022-05-13tutorial stack: allow deprecated versions (#30648)Todd Gamblin1-0/+3
For tutorial builds, we should continue to allow deprecated builds to be installed. We can update them as needed when we update the tutorial, but we don't need to correct them immediately on deprecation in CI. - [x] add `deprecated:true` to tutorial `spack.yaml` config.
2022-05-12Gitlab pipelines: add a small legend in the logs to interpret "[x]" (#30643)Massimiliano Culpo1-5/+2
2022-05-12silo: Cleanup the HDF5 dependency specs (#30593)Chuck Atkins1-4/+16
2022-05-12vtk: fix hdf5 version specification (#30592)Chuck Atkins1-2/+12
2022-05-12py-scikit-learn: add v1.1.0 (#30649)Adam J. Stewart1-2/+2
2022-05-12atompaw: add version 4.2.0.0 (#30650)Simon Pintarelli1-0/+1
2022-05-12Revert "atompaw: add new package (#30619)" (#30647)Massimiliano Culpo1-41/+0
This reverts commit 12b0278f08c5557c8c458fdbf4886c5f67aa40c9.
2022-05-12soapdenovo-trans: add v1.0.5 (#30629)snehring1-2/+5
2022-05-12code-server: add new versions (#30646)Max Zeyen1-8/+44
2022-05-12py-netcdf4: add v1.5.8 (#30598)Adam J. Stewart1-3/+13
2022-05-12precice: add v2.4.0 (#30633)Frédéric Simonis1-5/+17
2022-05-12fakexrandr: remove 'ldconfig' from Makefile (#30632)Qian Jianhua1-2/+2
2022-05-12Add patch for compiling llvm ~omp_as_runtime (#30583)Mikael Simberg2-0/+17
2022-05-12Add cuda 11.7 compat bounds for gcc/clang (#30639)Harmen Stoppels1-2/+2
2022-05-12pigz: add v2.7 (#30640)Harmen Stoppels1-0/+1
2022-05-12platypus: limit install to Python2 (#30624)dlkuehn1-1/+1
Co-authored-by: David Kuehn <las_dkuehn@iastate.edu>
2022-05-12atompaw: add new package (#30619)Simon Pintarelli1-0/+41