summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2023-01-01style: fix spurious `mypy` errors from `numpy` (#34732)Todd Gamblin1-3/+6
Spack imports `pytest`, which *can* import `numpy`. Recent versions of `numpy` require Python 3.8 or higher, and they use 3.8 type annotations in their type stubs (`.pyi` files). At the same time, we tell `mypy` to target Python 3.7, as we still support older versions of Python. What all this means is that if you run `mypy` on `spack`, `mypy` will follow all the static import statements, and it ends up giving you this error when it finds numpy stuff that is newer than the target Python version: ``` ==> Running mypy checks src/spack/var/spack/environments/default/.spack-env/._view/4g7jd4ibkg4gopv4rosq3kn2vsxrxm2f/lib/python3.11/site-packages/numpy/__init__.pyi:638: error: Positional-only parameters are only supported in Python 3.8 and greater [syntax] Found 1 error in 1 file (errors prevented further checking) mypy found errors ``` We can fix this by telling `mypy` to skip all imports of `numpy` in `pyproject.toml`: ```toml [[tool.mypy.overrides]] module = 'numpy' follow_imports = 'skip' follow_imports_for_stubs = true ``` - [x] don't follow imports from `numpy` in `mypy` - [x] get rid of old rule not to follow `jinja2` imports, as we now require Python 3
2022-12-31py-fisher: add version 0.1.10 (#34738)Glenn Johnson1-0/+2
2022-12-31py-youtube-dl: add version 2021.12.17 (#34740)Glenn Johnson1-0/+3
2022-12-30Simplify creation of test and install reports (#34712)Massimiliano Culpo11-322/+368
The code in Spack to generate install and test reports currently suffers from unneeded complexity. For instance, we have classes in Spack core packages, like `spack.reporters.CDash`, that need an `argparse.Namespace` to be initialized and have "hard-coded" string literals on which they branch to change their behavior: ```python if do_fn.__name__ == "do_test" and skip_externals: package["result"] = "skipped" else: package["result"] = "success" package["stdout"] = fetch_log(pkg, do_fn, self.dir) package["installed_from_binary_cache"] = pkg.installed_from_binary_cache if do_fn.__name__ == "_install_task" and installed_already: return ``` This PR attempt to polish the major issues encountered in both `spack.report` and `spack.reporters`. Details: - [x] `spack.reporters` is now a package that contains both the base class `Reporter` and all the derived classes (`JUnit` and `CDash`) - [x] Classes derived from `spack.reporters.Reporter` don't take an `argparse.Namespace` anymore as argument to `__init__`. The rationale is that code for commands should be built upon Spack core classes, not vice-versa. - [x] An `argparse.Action` has been coded to create the correct `Reporter` object based on command line arguments - [x] The context managers to generate reports from either `spack install` or from `spack test` have been greatly simplified, and have been made less "dynamic" in nature. In particular, the `collect_info` class has been deleted in favor of two more specific context managers. This allows for a simpler structure of the code, and less knowledge required to client code (in particular on which method to patch) - [x] The `InfoCollector` class has been turned into a simple hierarchy, so to avoid conditional statements within methods that assume a knowledge of the context in which the method is called.
2022-12-30mpl: add v0.2.1, v0.2.0 (#34716)Heiko Bauke1-1/+3
2022-12-30petsc, py-petsc4py: add v3.18.3 (#34725)Satish Balay2-0/+2
2022-12-30bugfix: setgid tests fail when primary group is unknown (#34729)Todd Gamblin1-0/+14
On systems with remote groups, the primary user group may be remote and may not exist on the local system (i.e., it might just be a number). On the CLI, it looks like this: ```console > touch foo > l foo -rw-r--r-- 1 gamblin2 57095 0 Dec 29 22:24 foo > chmod 2000 foo chmod: changing permissions of 'foo': Operation not permitted ``` Here, the local machine doesn't know about per-user groups, so they appear as gids in `ls` output. `57095` is also `gamblin2`'s uid, but the local machine doesn't know that `gamblin2` is in the `57095` group. Unfortunately, it seems that Python's `os.chmod()` just fails silently, setting permissions to `0o0000` instead of `0o2000`. We can avoid this by ensuring that the file has a group the user is known to be a member of. - [x] Add `ensure_known_group()` in the permissions tests. - [x] Call `ensure_known_group()` on tempfile in `test_chmod_real_entries_ignores_suid_sgid`.
2022-12-29docs: avoid errors by using type hints instead of doc types (#34707)Todd Gamblin13-83/+133
There are a number of places in our docstrings where we write "list of X" as the type, even though napoleon doesn't actually support this. It ends up causing warnings when generating docs. Now that we require Python 3, we don't have to rely on type hints in docs -- we can just use Python type hints and omit the types of args and return values from docstrings. We should probably do this for all types in docstrings eventually, but this PR focuses on the ones that generate warnings during doc builds. Some `mypy` annoyances we should consider in the future: 1. Adding some of these type annotations gets you: ``` note: By default the bodies of untyped functions are not checked, consider using --check-untyped-defs [annotation-unchecked] ``` because they are in unannotated functions (like constructors where we don't really need any annotations). You can silence these with `disable_error_code = "annotation-unchecked"` in `pyproject.toml` 2. Right now we support running `mypy` in Python `3.6`. That means we have to support `mypy` `.971`, which does not support `disable_error_code = "annotation-unchecked"`, so I just filter `[annotation-unchecked]` lines out in `spack style`. 3. I would rather just turn on `check_untyped_defs` and get more `mypy` coverage everywhere, but that will require about 1,000 fixes. We should probably do that eventually. 4. We could also consider only running `mypy` on newer python versions. This is not easy to do while supporting `3.6`, because you have to use `if TYPE_CHECKING` for a lot of things to ensure that 3.6 still parses correctly. If we only supported `3.7` and above we could use [`from __future__ import annotations`](https://mypy.readthedocs.io/en/stable/runtime_troubles.html#future-annotations-import-pep-563), but we have to support 3.6 for now. Sigh. - [x] Convert a number of docstring types to Python type hints - [x] Get rid of "list of" wherever it appears
2022-12-29build(deps): bump actions/setup-python from 4.3.1 to 4.4.0 (#34667)dependabot[bot]4-12/+12
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.3.1 to 4.4.0. - [Release notes](https://github.com/actions/setup-python/releases) - [Commits](https://github.com/actions/setup-python/compare/2c3dd9e7e29afd70cc0950079bde6c979d1f69f9...5ccb29d8773c3f3f653e1705f474dfaa8a06a912) --- updated-dependencies: - dependency-name: actions/setup-python dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-29trinity: add version 2.15.0-FULL (#34666)downloadico1-0/+5
2022-12-29arbor: add v0.8.1 (#34660)Brent Huisman1-4/+14
2022-12-29tamaas: added v2.6.0 (#34676)Lucas Frérot1-0/+1
2022-12-29survey: add v1.0.7 (#34679)Jim Galarowicz1-1/+2
2022-12-29perl-archive-zip: add 1.68 (#34684)Christopher Christofi1-0/+15
2022-12-29boost: apply 'intel-oneapi-linux-jam.patch' to all versions since 1.76 (#34670)Tim Haines1-1/+1
2022-12-29perl-appconfig: add v1.71 (#34685)Christopher Christofi1-0/+16
2022-12-29git-filter-repo: add new package (#34690)Alex Hedges1-0/+31
2022-12-29jq: set -D_REENTRANT for builds on darwin (#34691)David Zmick2-51/+7
2022-12-29libceed: add v0.11.0 (#34694)Jed Brown1-0/+1
2022-12-29AOCC: add v4.0.0 (#33833)AMD Toolchain Support1-32/+43
2022-12-29py-numpy: add v1.24.1 (#34697)Adam J. Stewart1-0/+1
2022-12-29libpsl: new versions through 0.21.2 (#34699)Wouter Deconinck1-3/+14
This adds the final bugfix versions through the 0.21.2 just released. With 0.21.1 the tag name pattern was changed, hence url_for_version.
2022-12-29cernlib: depends_on libxaw libxt (#34448)Wouter Deconinck1-0/+2
Based on the following lines in the top level `CMakeLists.txt` (I can't deep link since gitlab.cern.ch not public), `cernlib` needs an explicit dependency on `libxaw` and `libxt`: ```cmake find_package(X11 REQUIRED) message(STATUS "CERNLIB: X11_Xt_LIB=${X11_Xt_LIB} X11_Xaw_LIB=${X11_Xaw_LIB} X11_LIBRARIES=${X11_LIBRARIES}") ```
2022-12-29singularity, apptainer: --without-conmon into @property config_options (#34474)Wouter Deconinck2-14/+11
Per https://github.com/spack/spack/issues/34192, apptainer does not support `--without-conmon`, so we introduce a base class `config_options` property that can be overridden in the `apptainer` package.
2022-12-29dd4hep: depends_on virtual tbb instead of intel-tbb (#34704)Wouter Deconinck1-1/+2
Recent changes to dd4hep remove the explicit dependency on an older version of intel-tbb. This makes this explicit in the spack package.
2022-12-29veloc: add v1.6 and dependencies (#34706)wspear1-2/+10
2022-12-29Change regex in bacio patch to avoid python re bug (#34668)Alex Richert1-1/+1
2022-12-28bugfix: make texinfo build properly with gettext (#34312)Todd Gamblin1-0/+7
`texinfo` depends on `gettext`, and it builds a perl module that uses gettext via XS module FFI. Unfortunately, the XS modules build asks perl to tell it what compiler to use instead of respecting the one passed to configure. Without this change, the build fails with this error: ``` parsetexi/api.c:33:10: fatal error: 'libintl.h' file not found ^~~~~~~~~~~ ``` We need the gettext dependency and the spack wrappers to ensure XS builds properly. - [x] Add needed `gettext` dependency to `texinfo` - [x] Override XS compiler with `PERL_EXT_CC` Co-authored-by: Paul Kuberry <pakuber@sandia.gov>
2022-12-28Consolidate how Spack uses `git` (#34700)Todd Gamblin26-162/+138
Local `git` tests will fail with `fatal: transport 'file' not allowed` when using git 2.38.1 or higher, due to a fix for `CVE-2022-39253`. This was fixed in CI in #33429, but that doesn't help the issue for anyone's local environment. Instead of fixing this with git config in CI, we should ensure that the tests run anywhere. - [x] Introduce `spack.util.git`. - [x] Use `spack.util.git.get_git()` to get a git executable, instead of `which("git")` everywhere. - [x] Make all `git` tests use a `git` fixture that goes through `spack.util.git.get_git()`. - [x] Add `-c protocol.file.allow=always` to all `git` invocations under `pytest`. - [x] Revert changes from #33429, which are no longer needed.
2022-12-27CPMD: Remove now unused "import"Rémi Lacroix1-2/+0
2022-12-27CPMD: Update for open-source releaseRémi Lacroix1-38/+3
CPMD has been open-sourced on GitHub so manual download is no longer needed. The patches have been included in the new 4.3 release.
2022-12-27spack graph: rework to use Jinja templates and builders (#34637)Massimiliano Culpo6-214/+253
`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-26types: fix type annotations and remove novm annootations for llnl moduleTodd Gamblin2-18/+13
Apparently I forgot to do this in #34305.
2022-12-26timer: pick a single unit based on max duration.Harmen Stoppels3-17/+25
2022-12-26`spack solve`: use consistent units for timeTodd Gamblin2-5/+5
`spack solve` is supposed to show you times you can compare. setup, ground, solve, etc. all in a list. You're also supposed to be able to compare easily across runs. With `pretty_seconds()` (introduced in #33900), it's easy to miss the units, e.g., spot the bottleneck here: ```console > spack solve --timers tcl setup 22.125ms load 16.083ms ground 8.298ms solve 848.055us total 58.615ms ``` It's easier to see what matters if these are all in the same units, e.g.: ``` > spack solve --timers tcl setup 0.0147s load 0.0130s ground 0.0078s solve 0.0008s total 0.0463s ``` And the units won't fluctuate from run to run as you make changes. -[x] make `spack solve` timings consistent like before
2022-12-26qt-base: ~network by default (#34688)Adam J. Stewart1-1/+1
2022-12-24py-pytest-datadir: Init at 1.4.1 (#34692)Rohit Goswami1-0/+21
* py-pytest-datadir: Init at 1.4.1 * py-pytest-data-dir: Fix missing dep Co-authored-by: "Adam J. Stewart" <ajstewart426@gmail.com> Co-authored-by: "Adam J. Stewart" <ajstewart426@gmail.com>
2022-12-24py-uvw: added v0.5.0 (#34677)Lucas Frérot1-0/+1
2022-12-23Update py-meson-python (0.11.0, 0.12.0) and meson (0.64.1, 1.0.0) (#34675)Ralf Gommers2-6/+14
* Update py-meson-python versions (0.11.0, 0.12.0) * Update `meson` to version 0.64.1 * Add Meson 1.0.0 * Apply code review suggestions
2022-12-24tmux: add 3.3a (#34671)David Zmick1-0/+1
2022-12-23QMakeBuilder: fix bug introduced during multi-bs refactor (#34683)Adam J. Stewart1-1/+1
2022-12-22py-kornia: add v0.6.9 (#34652)Adam J. Stewart1-3/+4
2022-12-22libelf: fix build on macOS x86_64 (#34646)Adam J. Stewart1-5/+5
2022-12-22bacio: fix typo in patch method (#34663)Alex Richert1-1/+1
2022-12-22sherpa: add v2.2.13 (#34628)Wouter Deconinck1-0/+1
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-22added py-dynim package (#34651)Loïc Pottier1-0/+26
Signed-off-by: Loïc Pottier <48072795+lpottier@users.noreply.github.com> Signed-off-by: Loïc Pottier <48072795+lpottier@users.noreply.github.com>
2022-12-22Restrict a patch of rhash to versions >=1.3.6 (#34310)Andrew Wood1-1/+1
2022-12-22Fix combine_phase_logs text encoding issues (#34657)Harmen Stoppels2-5/+20
Avoid text decoding and encoding when combining log files, instead combine in binary mode. Also do a buffered copy which is sometimes faster for large log files.
2022-12-22neve: add new package (#34596)Wladimir Arturo Garces Carrillo1-0/+43
Co-authored-by: WladIMirG <WladIMirG@users.noreply.github.com>