summaryrefslogtreecommitdiff
path: root/share
AgeCommit message (Collapse)AuthorFilesLines
2023-01-23e4s: add cusz +cuda (#35004)eugeneswalker1-0/+1
2023-01-21Add --exclude option to 'spack external find' (#35013)Alex Richert1-1/+1
* Add --exclude option to 'spack external find' to ignore user-specified external packages * Update bash completion arg order for external find Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2023-01-20Allocate more memory for generate jobs in all stacks (#35040)Zack Galbreath1-11/+2
* Allocate more memory for generate jobs in all stacks * Add a 60 minute timeout on generate jobs
2023-01-20e4s: ecp-data-vis-sdk +rocm: remove redundant amdgpu_target specification ↵eugeneswalker1-1/+1
(#35022)
2023-01-19depfile: --make-target-prefix -> --make-prefix (#35009)Harmen Stoppels1-1/+1
Since SPACK_PACKAGE_IDS is now also "namespaced" with <prefix>, it makes more sense to call the flag `--make-prefix` and alias the old flag `--make-target-prefix` to it.
2023-01-18e4s ci: clean up unnecessary constraints (#35006)eugeneswalker1-17/+11
2023-01-18e4s: add sz3 (#35007)eugeneswalker1-0/+1
2023-01-18e4s ci: add veloc (#35003)eugeneswalker1-0/+1
2023-01-18license year bump (#34921)Harmen Stoppels23-23/+23
* license bump year * fix black issues of modified files * mypy * fix 2021 -> 2023
2023-01-18e4s: add py-h5py ~mpi variant (#34998)eugeneswalker1-1/+2
2023-01-18depfile: variable with all identifiers (#34678)Harmen Stoppels1-0/+3
With the new variable [prefix/]SPACK_PACKAGE_IDS you can conveniently execute things after each successful install. For example push just-built packages to a buildcache ``` SPACK ?= spack export SPACK_COLOR = always MAKEFLAGS += -Orecurse MY_BUILDCACHE := $(CURDIR)/cache .PHONY: all clean all: push ifeq (,$(filter clean,$(MAKECMDGOALS))) include env.mk endif # the relevant part: push has *all* example/push/<pkg identifier> as prereqs push: $(addprefix example/push/,$(example/SPACK_PACKAGE_IDS)) $(SPACK) -e . buildcache update-index --directory $(MY_BUILDCACHE) $(info Pushed everything, yay!) # and each example/push/<pkg identifier> has the install target as prereq, # and the body can use target local $(HASH) and $(SPEC) variables to do # things, such as pushing to a build cache example/push/%: example/install/% @mkdir -p $(dir $@) $(SPACK) -e . buildcache create --allow-root --only=package --unsigned --directory $(MY_BUILDCACHE) /$(HASH) # push $(SPEC) @touch $@ spack.lock: spack.yaml $(SPACK) -e . concretize -f env.mk: spack.lock $(SPACK) -e . env depfile -o $@ --make-target-prefix example clean: rm -rf spack.lock env.mk example/ ``
2023-01-16Refer to mirrors by name, path, or url (#34891)Harmen Stoppels1-3/+13
With this change we get the invariant that `mirror.fetch_url` and `mirror.push_url` return valid URLs, even when the backing config file is actually using (relative) paths with potentially `$spack` and `$env` like variables. Secondly it avoids expanding mirror path / URLs too early, so if I say `spack mirror add name ./path`, it stays `./path` in my config. When it's retrieved through MirrorCollection() we exand it to say `file://<env dir>/path` if `./path` was set in an environment scope. Thirdly, the interface is simplified for the relevant buildcache commands, so it's more like `git push`: ``` spack buildcache create [mirror] [specs...] ``` `mirror` is either a mirror name, a path, or a URL. Resolving the relevant mirror goes as follows: - If it contains either / or \ it is used as an anonymous mirror with path or url. - Otherwise, it's interpreted as a named mirror, which must exist. This helps to guard against typos, e.g. typing `my-mirror` when there is no such named mirror now errors with: ``` $ spack -e . buildcache create my-mirror ==> Error: no mirror named "my-mirror". Did you mean ./my-mirror? ``` instead of creating a directory in the current working directory. I think this is reasonable, as the alternative (requiring that a local dir exists) feels a bit pendantic in the general case -- spack is happy to create the build cache dir when needed, saving a `mkdir`. The old (now deprecated) format will still be available in Spack 0.20, but is scheduled to be removed in 0.21: ``` spack buildcache create (--directory | --mirror-url | --mirror-name) [specs...] ``` This PR also touches `tmp_scope` in tests, because it didn't really work for me, since spack fixes the possible --scope values once and for all across tests, so tests failed when run out of order.
2023-01-16e4s: add py-h5py (#34914)eugeneswalker1-0/+1
2023-01-16e4s ci: py-libensemble: activate variants (#34915)eugeneswalker1-1/+1
2023-01-14spack list: add `--count` option (#34950)Todd Gamblin1-1/+1
Sometimes I just want to know how many packages of a certain type there are. - [x] add `--count` option to `spack list` that output the number of packages that *would* be listed. ```console > spack list --count 6864 > spack list --count py- 2040 > spack list --count r- 1162 ```
2023-01-13Paraview rocm (#34790)kwryankrattiger1-4/+7
* paraview: add `rocm` variant This conflicts with CUDA and requires at least ParaView 5.11.0. More dependencies are also needed. * E4S: Add ParaView for ROCm and CUDA stacks * DAV SDK: Update ParaView version and GPU variants * Verify using hipcc vs amdclang++ for newer hip Co-authored-by: Ben Boeckel <ben.boeckel@kitware.com>
2023-01-11Bump memory requests for e4s/ml generate jobs (#34648)Mike VanDenburgh1-0/+10
2023-01-10protected runner jobs at uo: trust e4s-uo signing key (#34828)eugeneswalker12-0/+36
2023-01-10gitlab ci: fix tags for pipeline generation jobs (#34789)Scott Wittenburg1-37/+44
Gitlab does not merge lists when a job extends two other definitions that include the same list (e.g. tags). Also, it merges dictionaries as long as the keys are distinct, but just takes the last mentioned value when there are key collisions. This change makes sure that when different tags are needed by a pipeline, the ones we want are actually provided. It also changes the example stack to better follow this pattern so we do not lead developers astray in the future.
2023-01-10Add CUDA 12.0 (#34664)Wileam Y. Phan1-4/+4
2023-01-10e4s ci: use 2023-01-01 runner image (#34827)eugeneswalker2-4/+4
2023-01-04e4s: move default values for rocm/cuda arch into packags:all:variants (#34772)Harmen Stoppels1-65/+58
2022-12-27spack graph: rework to use Jinja templates and builders (#34637)Massimiliano Culpo2-1/+34
`spack graph` has been reworked to use: - Jinja templates - builder objects to construct the template context when DOT graphs are requested. This allowed to add a new colored output for DOT graphs that highlights both the dependency types and the nodes that are needed at runtime for a given spec.
2022-12-22ML CI: Linux x86_64 (#34299)Adam J. Stewart4-256/+283
* ML CI: Linux x86_64 * Update comments * Rename again * Rename comments * Update to match other arches * No compiler * Compiler was wrong anyway * Faster TF
2022-12-17e4s: disable mac stack due to binary relocation issue#32571 (#34560)eugeneswalker1-103/+103
2022-12-15gitlab ci: more resources for slow builds (#34505)Zack Galbreath8-2/+28
2022-12-13Use file paths/urls correctly (#34452)Harmen Stoppels1-1/+1
The main issue that's fixed is that Spack passes paths (as strings) to functions that require urls. That wasn't an issue on unix, since there you can simply concatenate `file://` and `path` and all is good, but on Windows that gives invalid file urls. Also on Unix, Spack would not deal with uri encoding like x%20y for file paths. It also removes Spack's custom url.parse function, which had its own incorrect interpretation of file urls, taking file://x/y to mean the relative path x/y instead of hostname=x and path=/y. Also it automatically interpolated variables, which is surprising for a function that parses URLs. Instead of all sorts of ad-hoc `if windows: fix_broken_file_url` this PR adds two helper functions around Python's own path2url and reverse. Also fixes a bug where some `spack buildcache` commands used `-d` as a flag to mean `--mirror-url` requiring a URL, and others `--directory`, requiring a path. It is now the latter consistently.
2022-12-09gitlab ci: more resources for paraview and py-torch (#34412)Scott Wittenburg4-1/+6
2022-12-09new command: `spack pkg grep` to search package files (#34388)Todd Gamblin2-2/+12
It's very common for us to tell users to grep through the existing Spack packages to find examples of what they want, and it's also very common for package developers to do it. Now, searching packages is even easier. `spack pkg grep` runs grep on all `package.py` files in repos known to Spack. It has no special options other than the search string; all options passed to it are forwarded along to `grep`. ```console > spack pkg grep --help usage: spack pkg grep [--help] ... positional arguments: grep_args arguments for grep options: --help show this help message and exit ``` ```console > spack pkg grep CMakePackage | head -3 /Users/gamblin2/src/spack/var/spack/repos/builtin/packages/3dtk/package.py:class _3dtk(CMakePackage): /Users/gamblin2/src/spack/var/spack/repos/builtin/packages/abseil-cpp/package.py:class AbseilCpp(CMakePackage): /Users/gamblin2/src/spack/var/spack/repos/builtin/packages/accfft/package.py:class Accfft(CMakePackage, CudaPackage): ``` ```console > spack pkg grep -Eho '(\S*)\(PythonPackage\)' | head -3 AwsParallelcluster(PythonPackage) Awscli(PythonPackage) Bueno(PythonPackage) ``` ## Return Value This retains the return value semantics of `grep`: * 0 for found, * 1 for not found * >1 for error ## Choosing a `grep` You can set the ``SPACK_GREP`` environment variable to choose the ``grep`` executable this command should use.
2022-12-09Windows: reenable unit tests (#33385)John W. Parent4-14/+10
Unit tests on Windows are supposed to pass for any PR to pass CI. However, the return code for the unit test command was not being checked, which meant this check was always passing (effectively disabled). This PR * Properly checks the result of the unit tests and fails if the unit tests fail * Fixes (or disables on Windows) a number of tests which have "drifted" out of support on Windows since this check was effectively disabled
2022-12-09bugfix: `spack load` shell test can fail on macos (#34419)Todd Gamblin1-1/+2
At some point the `a` mock package became an `AutotoolsPackage`, and that means it depends on `gnuconfig` on macOS. This was causing one of our shell tests to fail on macOS because it was testing for `{a.prefix.bin}:{b.prefix.bin}` in `PATH`, but `gnuconfig` shows up between them. - [x] simplify the test to check `spack load --sh a` and `spack load --sh b` separately
2022-12-06Bootstrap most of Spack dependencies using environments (#34029)Massimiliano Culpo2-1/+35
This commit reworks the bootstrapping procedure to use Spack environments as much as possible. The `spack.bootstrap` module has also been reorganized into a Python package. A distinction is made among "core" Spack dependencies (clingo, GnuPG, patchelf) and other dependencies. For a number of reasons, explained in the `spack.bootstrap.core` module docstring, "core" dependencies are bootstrapped with the current ad-hoc method. All the other dependencies are instead bootstrapped using a Spack environment that lives in a directory specific to the interpreter and the architecture being used.
2022-12-02py-alphafold: update to 2.2.4, update dependencies (#33876)Andrew W Elble3-9/+6
* py-alphafold: update to 2.2.4, update dependencies * style
2022-12-02patch command: add concretizer args (#34282)Greg Becker1-1/+1
* patch command: add concretizer args * tab completion
2022-11-30e4s ci: use 2022-12-01 runner images (#34212)eugeneswalker2-4/+4
2022-11-30e4s ci: hpx: set max_cpu_count=512 (#33977)eugeneswalker2-4/+4
2022-11-29CI: Update Data and Vis SDK Stack (#34009)kwryankrattiger2-77/+105
* CI: Update Data and Vis SDK Stack * Update image to match target deployments (E4S) * Enable all packages * Test supported variants of ParaView and VisIt * Sensei: Update Python hint for newer cmake * Sensei: add Python3 hint
2022-11-28e4s ci: add hdf5-vol-async; remove expired comments (#34110)eugeneswalker1-4/+1
2022-11-28warn about removal of deprecated format strings (#34101)Greg Becker1-2/+2
* warn about removal of deprecated format strings Co-authored-by: becker33 <becker33@users.noreply.github.com>
2022-11-23E4S: Conservatively add ecp-data-vis-sdk (#33621)kwryankrattiger1-19/+9
* E4S: Conservatively add ecp-data-vis-sdk * Remove ascent from CUDA SDK stack to stop hanging on Dray * Adios2: Newer FindPython uses Python_EXECUTABLE
2022-11-22cmd/checksum: allow adding new versions to package (#24532)Michael Kuhn1-1/+1
This adds super-lazy maintainer mode to `spack checksum`: Instead of only printing the new checksums to the terminal, `-a` and `--add-to-package` will add the new checksums to the `package.py` file and open it in the editor afterwards for final checks.
2022-11-22Revert "Warn about removal of deprecated format strings (#33829)" (#34056)Massimiliano Culpo1-2/+2
This reverts commit 7f9af8d4a0bfbb1577e5ac9982624d8d0cb9b9ca.
2022-11-22Warn about removal of deprecated format strings (#33829)Greg Becker1-2/+2
Co-authored-by: becker33 <becker33@users.noreply.github.com>
2022-11-19spack find: remove deprecated "--bootstrap" option (#34015)Massimiliano Culpo1-1/+1
2022-11-17Remove deprecated subcommands from "spack bootstrap" (#33964)Massimiliano Culpo1-19/+1
These commands are slated for removal in v0.20
2022-11-15depfile: improve tab completion (#33773)Harmen Stoppels1-6/+17
This PR allows you to do: ``` spack env create -d . spack -e . add python spack -e . concretize spack -e . env depfile -o Makefile make in<tab> # -> install make install-<tab> # -> install-deps/ make install-deps/py<tab> # -> install-deps/python-x.y.z-hash make install/zl<tab> # -> install/zlib-x.y.z-hash make SP<tab> # -> make SPACK make SPACK_<tab> # -> make SPACK_INSTALL_FLAGS= ```
2022-11-15gitlab: report load in generate job (#33888)Harmen Stoppels17-0/+39
2022-11-11remove activate/deactivate support in favor of environments (#29317)Harmen Stoppels1-20/+2
Environments and environment views have taken over the role of `spack activate/deactivate`, and we should deprecate these commands for several reasons: - Global activation is a really poor idea: - Install prefixes should be immutable; since they can have multiple, unrelated dependents; see below - Added complexity elsewhere: verification of installations, tarballs for build caches, creation of environment views of packages with unrelated extensions "globally activated"... by removing the feature, it gets easier for people to contribute, and we'd end up with fewer bugs due to edge cases. - Environment accomplish the same thing for non-global "activation" i.e. `spack view`, but better. Also we write in the docs: ``` However, Spack global activations have two potential drawbacks: #. Activated packages that involve compiled C extensions may still need their dependencies to be loaded manually. For example, ``spack load openblas`` might be required to make ``py-numpy`` work. #. Global activations "break" a core feature of Spack, which is that multiple versions of a package can co-exist side-by-side. For example, suppose you wish to run a Python package in two different environments but the same basic Python --- one with ``py-numpy@1.7`` and one with ``py-numpy@1.8``. Spack extensions will not support this potential debugging use case. ``` Now that environments are established and views can take over the role of activation non-destructively, we can remove global activation/deactivation.
2022-11-08More jobs in Gitlab CI (#33688)Harmen Stoppels16-0/+31
Use at most 32 jobs when available.
2022-11-08"spack uninstall": don't modify env (#33711)Peter Scheibel1-2/+2
"spack install foo" no longer adds package "foo" to the environment (i.e. to the list of root specs) by default: you must specify "--add". Likewise "spack uninstall foo" no longer removes package "foo" from the environment: you must specify --remove. Generally this means that install/uninstall commands will no longer modify the users list of root specs (which many users found problematic: they had to deactivate an environment if they wanted to uninstall a spec without changing their spack.yaml description). In more detail: if you have environments e1 and e2, and specs [P, Q, R] such that P depends on R, Q depends on R, [P, R] are in e1, and [Q, R] are in e2: * `spack uninstall --dependents --remove r` in e1: removes R from e1 (but does not uninstall it) and uninstalls (and removes) P * `spack uninstall -f --dependents r` in e1: will uninstall P, Q, and R (i.e. e2 will have dependent specs uninstalled as a side effect) * `spack uninstall -f --dependents --remove r` in e1: this uninstalls P, Q, and R, and removes [P, R] from e1 * `spack uninstall -f --remove r` in e1: uninstalls R (so it is "missing" in both environments) and removes R from e1 (note that e1 would still install R as a dependency of P, but it would no longer be listed as a root spec) * `spack uninstall --dependents r` in e1: will fail because e2 needs R Individual unit tests were created for each of these scenarios.