summaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2022-12-09new command: `spack pkg grep` to search package files (#34388)Todd Gamblin5-7/+137
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-09py-torchvision: fix typo in version restriction for ffmpeg (#34415)snehring1-1/+1
2022-12-09Add checksum for py-packaging11 0.12.3 (#34402)iarspider1-0/+2
2022-12-09Windows: reenable unit tests (#33385)John W. Parent24-135/+190
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-09binary distribution: warn about issues (#34152)Harmen Stoppels1-3/+8
2022-12-09btop++: add new package (#34399)Massimiliano Culpo1-0/+26
2022-12-09Add checksum for py-onnxmltools 1.11.1 (#34400)iarspider1-0/+7
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-09Add pika-algorithms package and pika 0.11.0 (#34397)Mikael Simberg3-3/+59
* Add 20 as a valid option for cxxstd to fmt * Add pika 0.11.0 * Fix version constraint for p2300 variant in pika package * Add pika-algorithms package
2022-12-09s3: cache client instance (#34372)Harmen Stoppels4-78/+117
2022-12-08py-reportlab: add 3.6.12 (#34396)Manuela Kuhn1-0/+14
* py-reportlab: add 3.6.12 * Update var/spack/repos/builtin/packages/py-reportlab/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2022-12-08intel-mkl: It is only available for x86_64 (#34391)Bernhard Kaindl1-0/+4
2022-12-08bcache: Fix check for libintl to work correctly (#34383)Bernhard Kaindl1-1/+1
2022-12-08bash: add v5.2, readline patches (#34301)Adam J. Stewart3-94/+51
2022-12-08Cray manifest: automatically convert 'cray' platform to 'linux' (#34177)Peter Scheibel3-3/+39
* Automatically convert 'cray' platform to 'linux'
2022-12-08py-rdflib: add 6.2.0 (#34394)Manuela Kuhn1-1/+5
2022-12-08dlb: new package (#34211)Victor Lopez Herrero1-0/+44
2022-12-08Update hdf5 vol async version (#34376)Larry Knox1-0/+1
* Add version hdf5-vol-async@1.4
2022-12-08pixman: add libs property (#34281)Glenn Johnson1-0/+4
2022-12-08py-torch: fix build with gcc@12: (#34352)Michael Kuhn1-0/+9
2022-12-08libxcrypt: building @:4.4.17 requires automake@1.14:Brian Van Essen1-1/+1
2022-12-08Add texinfo dependency for binutils through version 2.38. (#34173)Jon Rood1-5/+2
2022-12-07Add recipe for singularity-hpc, py-spython (#34234)Marco De La Pierre2-0/+85
* adding recipe for singularity-hpc - 1st go * typo in singularity-hpc recipe * singularity-hpc, spython recipes: added platform variant * singularity-hpc, spython recipes: platform variant renamed to runtime * style fix * another style fix * yet another style fix (why are they not reported altogether) * singularity-hpc recipe: added Vanessa as maintainer * singularity-hpc recipe: add podman variant * singularity-hpc recipe: added variant for module system * shpc recipe: add version for py-semver dependency Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> * py-spython recipe: no need to specify generic python dep for a python pkg * py-spython: py-requests not needed Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2022-12-07Windows: Prevent SameFileError when rpathing (#34332)John W. Parent1-4/+11
2022-12-07parser: refactor with coarser token granularity (#34151)Massimiliano Culpo14-1566/+1505
## Motivation Our parser grew to be quite complex, with a 2-state lexer and logic in the parser that has up to 5 levels of nested conditionals. In the future, to turn compilers into proper dependencies, we'll have to increase the complexity further as we foresee the need to add: 1. Edge attributes 2. Spec nesting to the spec syntax (see https://github.com/spack/seps/pull/5 for an initial discussion of those changes). The main attempt here is thus to _simplify the existing code_ before we start extending it later. We try to do that by adopting a different token granularity, and by using more complex regexes for tokenization. This allow us to a have a "flatter" encoding for the parser. i.e., it has fewer nested conditionals and a near-trivial lexer. There are places, namely in `VERSION`, where we have to use negative lookahead judiciously to avoid ambiguity. Specifically, this parse is ambiguous without `(?!\s*=)` in `VERSION_RANGE` and an extra final `\b` in `VERSION`: ``` @ 1.2.3 : develop # This is a version range 1.2.3:develop @ 1.2.3 : develop=foo # This is a version range 1.2.3: followed by a key-value pair ``` ## Differences with the previous parser ~There are currently 2 known differences with the previous parser, which have been added on purpose:~ - ~No spaces allowed after a sigil (e.g. `foo @ 1.2.3` is invalid while `foo @1.2.3` is valid)~ - ~`/<hash> @1.2.3` can be parsed as a concrete spec followed by an anonymous spec (before was invalid)~ ~We can recover the previous behavior on both ones but, especially for the second one, it seems the current behavior in the PR is more consistent.~ The parser is currently 100% backward compatible. ## Error handling Being based on more complex regexes, we can possibly improve error handling by adding regexes for common issues and hint users on that. I'll leave that for a following PR, but there's a stub for this approach in the PR. ## Performance To be sure we don't add any performance penalty with this new encoding, I measured: ```console $ spack python -m timeit -s "import spack.spec" -c "spack.spec.Spec(<spec>)" ``` for different specs on my machine: * **Spack:** 0.20.0.dev0 (c9db4e50ba045f5697816187accaf2451cb1aae7) * **Python:** 3.8.10 * **Platform:** linux-ubuntu20.04-icelake * **Concretizer:** clingo results are: | Spec | develop | this PR | | ------------- | ------------- | ------- | | `trilinos` | 28.9 usec | 13.1 usec | | `trilinos @1.2.10:1.4.20,2.0.1` | 131 usec | 120 usec | | `trilinos %gcc` | 44.9 usec | 20.9 usec | | `trilinos +foo` | 44.1 usec | 21.3 usec | | `trilinos foo=bar` | 59.5 usec | 25.6 usec | | `trilinos foo=bar ^ mpich foo=baz` | 120 usec | 82.1 usec | so this new parser seems to be consistently faster than the previous one. ## Modifications In this PR we just substituted the Spec parser, which means: - [x] Deleted in `spec.py` the `SpecParser` and `SpecLexer` classes. deleted `spack/parse.py` - [x] Added a new parser in `spack/parser.py` - [x] Hooked the new parser in all the places the previous one was used - [x] Adapted unit tests in `test/spec_syntax.py` ## Possible future improvements Random thoughts while working on the PR: - Currently we transform hashes and files into specs during parsing. I think we might want to introduce an additional step and parse special objects like a `FileSpec` etc. in-between parsing and concretization.
2022-12-07SW4: new package (#34252)Houjun Tang1-0/+75
* sw4 * use h5z-zfp develop * update for macos * Update package.py Co-authored-by: Houjun Tang <tang@Houjuns-MacBook-Pro.local>
2022-12-07py-numba: add 0.56.4 (#34362)Manuela Kuhn1-19/+22
2022-12-07ftk: add 0.0.7.1 (#34146)Hanqi Guo1-2/+9
2022-12-07py-pywavelets: add 1.4.1 (#34369)Manuela Kuhn1-4/+9
* py-pywavelets: add 1.4.1 * Update var/spack/repos/builtin/packages/py-pywavelets/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> * Update var/spack/repos/builtin/packages/py-pywavelets/package.py Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com> Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
2022-12-07XRootD: add checksum + patch for 5.5.1 (#34209)iarspider1-1/+8
* Update package.py * Add full_index to patch URL * Update var/spack/repos/builtin/packages/xrootd/package.py * Restore list_url Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2022-12-07osu-micro-benchmarks: add v7.0.1 (#34221)MatthewLieber1-1/+17
Co-authored-by: Matt Lieber <lieber.31@osu.edu>
2022-12-07libnrm: allow mpi other than mpich (#34232)eugeneswalker1-1/+1
2022-12-07[quantum-espresso] Parallel make fails for 6.{6,7} (#34238)Stephen Sachs1-2/+2
* [quantum-espresso] Parallel make fails for 6.{6,7} I run into a race condition in `make` with Intel compiler on icelake when building QE 6.6 and 6.7. * Fix comment Co-authored-by: Stephen Sachs <stesachs@amazon.com>
2022-12-07update kealib to 1.5.0 (#34237)Sam Gillingham1-1/+2
2022-12-07darshan-util: fix location of input for darshan-util tests (#34245)shanedsnyder1-10/+14
* fix location of input for darshan-util tests Darshan log file used for test input was removed from the Darshan repo after the 3.4.0 release. This commit adds logic to use a different log file as test input for later Darshan versions.
2022-12-07meep: add new versions and additional variants incl. dependencies (#34242)Eric Müller4-13/+78
* libctl: add new version Change-Id: I16f91cfab198c66b60407ab5bb2cb3ebeac6bc19 * New package: libgdsii Change-Id: I34b52260ab68ecc857ddf8cc63b124adc2689a51 * New package: mpb Change-Id: I6fdf5321c33d6bdbcaa1569026139a8483a3bcf8 * meep: add new version and variants Change-Id: I0b60a9a4d9a329f7bde9027514467e17376e6a39 * meep: use with_or_without Change-Id: I05584cb13df8ee153ed385e77d367cb34e39777e
2022-12-07Fix Apptainer (#34329)Sam Grayson1-0/+15
* Fix Apptainer * Add comments
2022-12-07Paraview catalyst updates (#34364)kwryankrattiger2-3/+3
* LibCatalyst: Fix version of pre-release develop version * ParaView: Requires libcatalyst@2: * ParaView: Apply adios2 module no kit patch to 5.11 This patch is still pending in VTK and didn't make it into 5.11 as anticipated.
2022-12-07bcache: support external gettext when `libintl` is in glibc (#34114)Bernhard Kaindl1-1/+3
* bcache: support external gettext when `libintl` is in glibc Many glibc-based Linux systems don't have gettext's libintl because libintl is included in the standard system's glibc (libc) itself. When using `spack external find gettext` on those, packages like `bcache` which unconditionally to link using `-lintl` fail to link with -lintl. Description of the fix: The libs property of spack's gettext recipe returns the list of libs, so when gettext provides libintl, use it. When not, there is no separate liblint library and the libintl API is provided by glibc. Tested with `spack external find gettext` on glibc-based Linux and in musl-based Alpine Linux to make sure that when -lintl is really needed, it is really used and nothing breaks.
2022-12-07Package magma: cleaned up cmake config (#33766)G-Ragghianti1-34/+26
2022-12-07likwid: add a permission fixing script a la singularity (#33503)Matthias Wolf2-5/+61
2022-12-06compiler flags: fix mixed flags from cli and yaml (#34218)Greg Becker2-35/+35
2022-12-06Fix dependency specification for CuSolver variant in HiOp. (#34138)Cameron Rutherford1-6/+8
Co-authored-by: pelesh <peless@ornl.gov> Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2022-12-06Add back depends_on directives needed to bootstrap on Python 3.6 (#34355)Massimiliano Culpo3-0/+14
This partially reverts commit 95b5d541291aae3b85a1582e2d0e39066ca4e17a.
2022-12-06htop: new version 3.2.1 (#34346)David Zmick1-1/+2
2022-12-06py-nbclient: add 0.7.2 and py-jupyter-core: add 5.1.0 (#34348)Manuela Kuhn2-3/+18
2022-12-06mercurial/py-pybind11: print_string no longer exists (#34340)Nicholas Sly2-4/+2
* Fix mercurial print_str failure. * Perform same fix on py-pybind11 for print_string missing method. Co-authored-by: Nicholas Cameron Sly <sly1@llnl.gov>
2022-12-06trilinos: +teko conflicts with ~ml (#34339)eugeneswalker1-0/+1
2022-12-06Stop checking for {s3://path}/index.html (#34325)Harmen Stoppels1-14/+0
2022-12-06cfitsio: add v4.2.0 (#34316)lorddavidiii1-0/+1