- Dec 24, 2019
-
-
Todd Gamblin authored
`ViewDescriptor.regenerate()` calls `get_all_specs()`, which reads `spec.yaml` files, which is slow. It's fine to do this once, but `view.remove_specs()` *also* calls it immediately afterwards. - [x] Pass the result of `get_all_specs()` as an optional parameter to `view.remove_specs()` to avoid reading `spec.yaml` files twice.
-
Todd Gamblin authored
`ViewDescriptor.regenerate()` was copying specs and stripping build dependencies, which clears `_hash` and other cached fields on concrete specs, which causes a bunch of YAML hashes to be recomputed. - [x] Preserve the `_hash` and `_normal` fields on stripped specs, as these will be unchanged.
-
Todd Gamblin authored
`os.path.exists()` will report False if the target of a symlink doesn't exist, so we can avoid a costly call to realpath here.
-
Todd Gamblin authored
`spack install` previously concretized, writes the entire environment out, regenerated views, then wrote and regenerated views again. Regenerating views is slow, so ensure that we only do that once. - [x] add an option to env.write() to skip view regeneration - [x] add a note on whether regenerate_views() shouldn't just be a separate operation -- not clear if we want to keep it as part of write to ensure consistency, or take it out to avoid performance issues.
-
Todd Gamblin authored
Environments need to read the DB a lot when installing all specs. - [x] Put a read transaction around `install_all()` and `install()` to avoid repeated locking
-
Todd Gamblin authored
Our `LockTransaction` class was reading overly aggressively. In cases like this: ``` 1 with spack.store.db.read_transaction(): 2 with spack.store.db.write_transaction(): 3 ... ``` The `ReadTransaction` on line 1 would read in the DB, but the WriteTransaction on line 2 would read in the DB *again*, even though we had a read lock the whole time. `WriteTransaction`s were only considering nested writes to decide when to read, but they didn't know when we already had a read lock. - [x] `Lock.acquire_write()` return `False` in cases where we already had a read lock.
-
Todd Gamblin authored
If a write transaction was nested inside a read transaction, it would not write properly on release, e.g., in a sequence like this, inside our `LockTransaction` class: ``` 1 with spack.store.db.read_transaction(): 2 with spack.store.db.write_transaction(): 3 ... 4 with spack.store.db.read_transaction(): ... ``` The WriteTransaction on line 2 had no way of knowing that its `__exit__()` call was the last *write* in the nesting, and it would skip calling its write function. The `__exit__()` call of the `ReadTransaction` on line 1 wouldn't know how to write, and the file would never be written. The DB would be correct in memory, but the `ReadTransaction` on line 4 would re-read the whole DB assuming that other processes may have modified it. Since the DB was never written, we got stale data. - [x] Make `Lock.release_write()` return `True` whenever we release the *last write* in a nest.
-
Todd Gamblin authored
Lock transactions were actually writing *after* the lock was released. The code was looking at the result of `release_write()` before writing, then writing based on whether the lock was released. This is pretty obviously wrong. - [x] Refactor `Lock` so that a release function can be passed to the `Lock` and called *only* when a lock is really released. - [x] Refactor `LockTransaction` classes to use the release function instead of checking the return value of `release_read()` / `release_write()`
-
Todd Gamblin authored
`ViewDescriptor.regenerate()` checks repeatedly whether packages are installed and also does a lot of DB queries. Put a read transaction around the whole thing to avoid repeatedly locking and unlocking the DB.
-
- Dec 23, 2019
-
-
Gregory L. Lee authored
-
Christoph Junghans authored
-
Nicholas Sly authored
-
Piotr Luszczek authored
-
Adam J. Stewart authored
-
Timo Heister authored
-
Adam J. Stewart authored
-
Adam J. Stewart authored
-
Adam J. Stewart authored
-
Piotr Luszczek authored
-
- Dec 22, 2019
-
-
Glenn Johnson authored
-
justbennet authored
-
Axel Huebl authored
Add latest release.
-
xfzhao authored
-
Sajid Ali authored
* version bump modified: var/spack/repos/builtin/packages/py-slepc4py/package.py * slepc: update URL slepc4py: add 3.11.0 and update maintainers Co-authored-by:
Satish Balay <balay@mcs.anl.gov>
-
- Dec 21, 2019
- Dec 20, 2019
-
-
Massimiliano Culpo authored
-
Adam J. Stewart authored
-
Massimiliano Culpo authored
Users can now list mirrors of the main url in packages. - [x] Instead of just a single `url` attribute, users can provide a list (`urls`) in the package, and these will be tried by in order by the fetch strategy. - [x] To handle one of the most common mirror cases, define a `GNUMirrorPackage` mixin to handle all the standard GNU mirrors. GNU packages can set `gnu_mirror_path` to define the path within a mirror, and the mixin handles setting up all the requisite GNU mirror URLs. - [x] update all GNU packages in `builtin` to use the `GNUMirrorPackage` mixin.
-
Nichols A. Romero authored
* Add symbols patch * Apply symbols patch to pgmath * Add github issue number for symbols patch. * Add naromero77 as a maintainer. * Patch only applied to March 2019 release and master.
-
Adam J. Stewart authored
-
Adam J. Stewart authored
* node-js: add Python 3 support * Update node-js, fix Python 3 support in v12
-
Hadrien G authored
-
Hadrien G authored
* Record that old versions of ROOT don't support modern GCC * Well, actually I don't know about 6.07 * Fix typo and follow odd version recommendation from @chissg
-
Nichols A. Romero authored
* Add QE 6.5 * Support for serial HDF5 case with serial (no mpi) QE is now supported but requires a patch for 6.4.1 and 6.5. * Add naromero77 as a maintainer.
-
Hadrien G authored
-
Adam J. Stewart authored
-
Hadrien G authored
-
Andras Wacha authored
-
Patrick Schratz authored
-