Compare commits

..

99 Commits

Author SHA1 Message Date
Wouter Deconinck
559cda89b7 paraview: fix typo 2025-03-20 16:07:43 -05:00
Wouter Deconinck
ff74147107 paraview: reorg when +qt dependencies to avoid pulling also qt5 when qt6 desired 2025-03-20 16:07:43 -05:00
Wouter Deconinck
7547d8a91e paraview: qt-tools +assistant 2025-03-20 16:07:43 -05:00
Wouter Deconinck
d394e54925 paraview: depends_on qt-svg 2025-03-20 16:07:43 -05:00
Wouter Deconinck
5f467bb577 data-vis-sdk: paraview ~qt needs no ^[virtuals=qmake] qt 2025-03-20 16:07:43 -05:00
Wouter Deconinck
716639bbdd Revert "data-vis-sdk: when ecp-data-vis-sdk ~visit, don't pull visit through sensei"
This reverts commit 8f3b90619dc2bb5900ee2526927ac6d1c0ff7738.
2025-03-20 16:07:43 -05:00
Wouter Deconinck
16d8a210b3 data-vis-sdk: when ecp-data-vis-sdk ~visit, don't pull visit through sensei 2025-03-20 16:07:43 -05:00
Wouter Deconinck
b6783bbfa1 paraview: depends_on qt-5compat 2025-03-20 16:07:43 -05:00
Wouter Deconinck
962829f72e paraview: depends_on qt-base+gui+network+widgets 2025-03-20 16:07:43 -05:00
Wouter Deconinck
31ff80ddca paraview: set PARAVIEW_QT_VERSION based on qmake 2025-03-20 16:07:43 -05:00
Wouter Deconinck
396785477c data-vis-sdk: build paraview with both Qt5 and Qt6 2025-03-20 16:07:43 -05:00
Wouter Deconinck
752b72c304 paraview: support Qt6 for 5.12 and newer 2025-03-20 16:07:43 -05:00
Wouter Deconinck
38d77570b4 qt-tools: conflicts +assistant when 6.8.2 (#49605) 2025-03-20 16:27:44 -04:00
Piotr Sacharuk
d8885b28fa paraview: Apply workarounds for oneAPI compiler for paraview problem with build (#48892)
* Apply workarounds for oneAPI compiler for paraview problem with build

* add source of provided patches
2025-03-20 12:44:56 -05:00
eugeneswalker
abd3487570 dyninst: %gcc only required for versions <13 (#49599) 2025-03-20 09:27:11 -07:00
Richard Berger
0d760a5fd8 libfuse: fix aarch64 compile for 2.x (#47846) 2025-03-20 13:42:51 +01:00
Felix Thaler
dde91ae181 Added btop 1.4.0 (#49586) 2025-03-19 19:04:07 -06:00
Krishna Chilleri
590dbf67f3 py-cwl-utils: add v0.37 and py-schema-salad: add v8.8.20250205075315 (#49566)
* add new version

* add v8.8.20250205075315 to py-schema-salad

* Modify range to open ended

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>

* Add open ended dependency version range

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>

* fix flake8 error

---------

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
2025-03-19 17:46:00 -05:00
Christoph Junghans
d199738f31 lfortran: add v0.49.0 (#49565)
* lfortran: add v0.49.0
* add v0.19.0 url as version directive argument
   Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

---------

Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2025-03-19 14:39:08 -06:00
snehring
f55f829437 topaz: add v0.3.7 (#49178)
* topaz: add v0.3.7
   Signed-off-by: Shane Nehring <snehring@iastate.edu>
* topaz: add older version url
   Signed-off-by: Shane Nehring <snehring@iastate.edu>

---------

Signed-off-by: Shane Nehring <snehring@iastate.edu>
2025-03-19 12:22:49 -07:00
snehring
295f3ff915 sentieon-genomics: updating checksums for patch (#48635)
Signed-off-by: Shane Nehring <snehring@iastate.edu>
2025-03-19 11:56:38 -07:00
Harmen Stoppels
a0ad02c247 solver: improve error message when single-valued variant cannot be satisfied (#49583) 2025-03-19 19:44:45 +01:00
Krishna Chilleri
a21d314ba7 py-cachecontrol: add v0.14.0 (#49564)
* add new version

* Update var/spack/repos/builtin/packages/py-cachecontrol/package.py

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>

---------

Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
2025-03-19 12:30:55 -05:00
Teague Sterling
a4ad8c8174 plink2: add v2.0.0-a.6.9 (#49520)
* Adding additional versions to plink2 and switching to tarballs to allow for better version detection in the future
   Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
* plink2: add v2.0.0-a.6.9
   Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
* Prepend "v" to version in url_for_version()
   Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

---------

Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2025-03-19 10:59:26 -06:00
Lehman Garrison
aa3ee3fa2a py-asdf: add v4.1.0 and related (#49454)
* py-asdf-transform-schemas: add v0.5.0
* py-asdf-coordinates-schemas: add new package at v0.3.0
* py-asdf-astropy: add new package at v0.7.1
* py-asdf: add v4.1.0
2025-03-19 08:09:05 -07:00
germanne
a8584d5eb4 asp.py: abs_control_files shouldn't ask for write rights (#49591) 2025-03-19 15:19:40 +01:00
Massimiliano Culpo
26f7b2c066 builtin: replace self.spec[self.name] with self (take 2) (#49579)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-19 12:28:57 +01:00
Massimiliano Culpo
3a715c3e07 python: remove self.spec["python"] from recipe (#49581)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-19 12:23:53 +01:00
Harmen Stoppels
963519d2b2 builtin: self.spec[self.name].command -> self.command (#49582)
* builtin: self.spec[self.name].command -> self.command

* python-venv: ensure return type is Executable instead of Executable | None
2025-03-19 11:37:01 +01:00
Krishna Chilleri
34efcb686c add new version (#49562) 2025-03-19 11:06:22 +01:00
Harmen Stoppels
5016084213 Move default implementation of pkg.command to PackageBase (#49580) 2025-03-19 09:28:29 +00:00
Massimiliano Culpo
5a04e84097 solver: allow prefer and conflict on virtuals in packages config (#45017) 2025-03-19 09:53:05 +01:00
Massimiliano Culpo
ec34e88d79 builtin: replace self.spec[self.name] by self (#49567)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-19 08:56:55 +01:00
Massimiliano Culpo
31fa12ebd3 perl: remove self references (#49560)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-19 08:54:41 +01:00
Harmen Stoppels
ecf414ed07 docs: add strong preferences to faq (#49556) 2025-03-19 08:53:14 +01:00
Rocco Meli
119bec391e nvpl-scalapack: new package (#49234)
* nvpl-scalapack

* rm variant

* nvpl-scalapack

* Apply suggestions from code review

Co-authored-by: Alberto Invernizzi <9337627+albestro@users.noreply.github.com>

* mpi

---------

Co-authored-by: Alberto Invernizzi <9337627+albestro@users.noreply.github.com>
2025-03-19 08:47:26 +01:00
Juan Miguel Carceller
d5c0ace993 simsipm: add a new version and a variant for setting the C++ standard (#49554)
Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>
Co-authored-by: Valentin Volkl <valentin.volkl@cern.ch>
2025-03-19 01:03:29 -06:00
Teague Sterling
d6bbd8f758 vep-cache: update for vep@113.3 (#49517)
Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
2025-03-19 01:03:10 -06:00
Mateusz Jakub Fila
f74d51bf6e fastjet: add v3.4.3 (#49526) 2025-03-19 00:48:24 -06:00
Davis Herring
821ebee53c flecsi: remove (Par)METIS dependency in 2.3.2 (#49480)
* Remove (Par)METIS dependency for new version
* Fix version constraints
2025-03-19 00:48:09 -06:00
Adrien Bernede
9dada76d34 Update hip support in radiuss packages leveraging blt@0.7.0 (#49488)
Co-authored-by: Chris White <white238@llnl.gov>
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-19 07:36:52 +01:00
Robert Maaskant
e9cc1b36bc kubernetes: add v1.30.0 -> v1.32.3 (#49211)
* kubernetes: add new versions

* kubernetes: add v1.30.11, v1.31.7, v1.32.3

* kubernetes: remove new deprecated versions and refactor build deps
2025-03-18 18:54:12 -06:00
David--Cléris Timothée
fd2c040981 hipsycl: rework llvm compatibility matrix (#49507)
* [hipsycl] add llvm 20 conflict
* add llvm matrix support & add 24.10 release

---------

Co-authored-by: tdavidcl <tdavidcl@users.noreply.github.com>
2025-03-18 15:54:03 -07:00
Robert Maaskant
33cd7d6033 kubectl: add v1.30.0 -> v1.32.3 (#49082)
* kubectl: add all versions currently supported upstream

* kubectl: build same way as kubernetes

* kubectl: revert back to GoPackage

* kubectl: fix version command

* kubectl: add v1.30.11, v1.31.7, v1.32.3

* kubectl: remove new deprecated versions

* kubectl: refactor build deps
2025-03-18 10:16:57 -07:00
Alex Richert
9c255381b1 parallelio: set WITH_PNETCDF from +/~pnetcdf (#49548) 2025-03-18 05:03:55 -06:00
SXS Bot
fd6c419682 spectre: add v2025.03.17 (#49533)
Co-authored-by: sxs-bot <sxs-bot@users.noreply.github.com>
2025-03-18 05:03:37 -06:00
Robert Maaskant
9d1d808f94 py-tqdm: add v4.66.4 -> v4.67.1 (#49525) 2025-03-18 00:06:13 -06:00
Axel Huebl
7a0ef93332 WarpX: Remove Deprecated Versions (#46765)
* WarpX: Remove Deprecated Versions

* Conflict: WarpX SYCL RZ FFT Issue

Conflict out on WarpX issue until fixed
https://github.com/BLAST-WarpX/warpx/issues/5774

* Fix #49546
2025-03-17 21:40:38 -06:00
Teague Sterling
bf48b7662e wasi-sdk-prebuilt: add v25.0,v24.0,v23.0 (#49523)
* wasi-sdk-prebuilt: add v25.0,24.0,23.0

---------

Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
2025-03-17 20:13:34 -06:00
Teague Sterling
d14333cc79 libgtop: add v2.41.1-2.41.3 (#49524)
* libgtop: new package
   Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
* Adding pkgconfig dep
   Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
* Adding note about https://github.com/spack/spack/pull/44323
   Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
* libgtop: add v2.41.3
   Signed-off-by: Teague Sterling <teaguesterling@gmail.com>

---------

Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
2025-03-17 19:41:42 -06:00
Teague Sterling
084361124e vep: add v113.3 (#49518) 2025-03-17 19:33:42 -06:00
Lehman Garrison
a1f4cc8b73 py-corrfunc: add new package at v2.5.3 (#49502) 2025-03-17 16:43:50 -07:00
Teague Sterling
b20800e765 awscli-v2: add v2.24.24 (#49519)
* awscli-v2: add v2.24.24

Signed-off-by: Teague Sterling <teaguesterling@gmail.com>

---------

Signed-off-by: Teague Sterling <teaguesterling@gmail.com>
2025-03-17 16:24:21 -07:00
Fabio Durastante
01b1e24074 psblas: new package (#49423)
* Package for installing the PSBLAS library
* Put some version as deprecated
* Removed FIXME comments
* Added missing :
* Fixed style to comply with flex8
* Other round of style fixes to comply with flex8
* Used black to reformat the file
* Fixed typo
   Co-authored-by: Luca Heltai <luca.heltai@unipi.it>
* Added explicit .git extension
   Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
* Fixed typo on METIS string
   Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
* Added url before removing urls from the the version directives.
   Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
* Corrected typo in url.
Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
* Reordered variant and depend_on, removed deprecated and old software versions

---------

Co-authored-by: Luca Heltai <luca.heltai@unipi.it>
Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
2025-03-17 10:47:59 -07:00
Harmen Stoppels
8029279dad gcc: drop redundant --with-ld and --with-as configure flags (#49538)
it's redundant due to our spec file which adds -B, and it breaks -fuse-ld=
2025-03-17 18:35:23 +01:00
Greg Sjaardema
5f4e12d8f2 seacas: add 2025-03-13 (bug fix, new functionality, portability) (#49474)
* seacas: bug fix, new functionality, portability
* Get new checksum due to moving tag forward...
2025-03-17 15:44:17 +00:00
Satish Balay
a8728e700b petsc4py, slepc4py: update homepage, add maintainers (#49383) 2025-03-17 16:19:34 +01:00
Wouter Deconinck
f8adf2b70f libunwind: variant component value setjump -> setjmp (#49508) 2025-03-17 16:12:59 +01:00
Andy Porter
d0ef2d9e00 py-fparser: add v0.2.0 (#47807)
* Update to release 0.2.0

* #47087 updates for review
2025-03-17 11:19:55 +01:00
Melven Roehrig-Zoellner
d4bd3e298a cgns: patch for include path for 4.5 (#49161)
Co-authored-by: Wouter Deconinck <wdconinc@gmail.com>
2025-03-17 11:19:13 +01:00
sbstndb/sbstndbs
40268634b6 xsimd: add v9.0.1 -> 13.1.0 (#49156) 2025-03-17 11:18:24 +01:00
sbstndb/sbstndbs
b0e8451d83 xtl: add v0.7.7 (#49157) 2025-03-17 11:16:40 +01:00
Massimiliano Culpo
868a52387b Revert "py-flowcept: add py-flowcept package (#47745)" (#49528)
This reverts commit 3fe89115c2.
2025-03-17 11:10:19 +01:00
Matthieu Dorier
3fe89115c2 py-flowcept: add py-flowcept package (#47745)
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 11:05:51 +01:00
Wouter Deconinck
412024cf21 git: add v2.48.1 and friends (#49061)
* git: add v2.47.1, v2.48.1

* git: deprecate older versions

* fixed incorrect sha256 for git-manpage for git-manpages-2.47.2.tar.gz listed at https://mirrors.edge.kernel.org/pub/software/scm/git/sha256sums.asc (#49095)

---------

Co-authored-by: Jennifer Green <jkgreen@sandia.gov>
Co-authored-by: wdconinc <wdconinc@users.noreply.github.com>
2025-03-17 11:02:40 +01:00
Hariharan Devarajan
91b20ed7d0 pydftracer, brahma: add new releases (#49245) 2025-03-17 11:00:43 +01:00
Robert Maaskant
0caacc6e21 py-wheel: add v0.41.3 -> v0.45.1 (#49238) 2025-03-17 10:59:23 +01:00
Robert Maaskant
651126e64c openssl: add v3.4.1 and backports (#49250)
Release notes:
- https://github.com/openssl/openssl/blob/openssl-3.4/CHANGES.md#changes-between-340-and-341-11-feb-2025
- https://github.com/openssl/openssl/blob/openssl-3.3/CHANGES.md#changes-between-332-and-333-11-feb-2025
- https://github.com/openssl/openssl/blob/openssl-3.2/CHANGES.md#changes-between-323-and-324-11-feb-2025
- https://github.com/openssl/openssl/blob/openssl-3.1/CHANGES.md#changes-between-317-and-318-11-feb-2025
- https://github.com/openssl/openssl/blob/openssl-3.0/CHANGES.md#changes-between-3015-and-3016-11-feb-2025
2025-03-17 10:57:54 +01:00
Wouter Deconinck
e15a530f32 py-onnxruntime: use CudaPackage (#47684) 2025-03-17 10:35:20 +01:00
Martin Lang
0f84623914 elpa: add 2024.05.001, 2025.01.001 (#49335) 2025-03-17 10:33:23 +01:00
Kin Fai Tse
90afa5c5ef openfoam: add v2406, v2412, fix minor link deps (#49254) 2025-03-17 10:32:15 +01:00
Alberto Sartori
024620bd7b justbuild: add v1.5.0 (#49343) 2025-03-17 09:59:49 +01:00
Wouter Deconinck
9bec8e2f4b py-setuptools-scm-git-archive: add v1.4.1 (#49347) 2025-03-17 09:50:20 +01:00
Dave Keeshan
18dd465532 verible: Add v0.0.3946 (#49362) 2025-03-17 09:47:00 +01:00
Satish Balay
a2431ec00c mpich: add v4.3.0 (#49375) 2025-03-17 09:39:18 +01:00
MatthewLieber
78abe968a0 mvapich: add v4.0 and update default pmi version (#49399)
Co-authored-by: Matt Lieber <lieber.31@osu.edu>
2025-03-17 01:38:19 -07:00
Wouter Deconinck
38e9043b9e yoda: add v2.1.0; rivet: add v4.1.0 (#49382) 2025-03-17 09:37:42 +01:00
Fernando Ayats
a0599e5e27 py-chex: add 0.1.89, py-optax: add 0.2.4(#49388) 2025-03-17 09:34:42 +01:00
George Young
1cd6f4e28f py-macs3: add @3.0.3 (#49365)
Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>
2025-03-17 09:30:08 +01:00
Eric Berquist
d2298e8e99 SST: update package maintainers (#49392) 2025-03-17 09:28:39 +01:00
Robert Maaskant
e3806aeac5 py-setuptools: add v75.8.1 -> v76.0.0 (#49251)
* py-setuptools: add v75.8.1, v75.8.2

Release notes:
- https://setuptools.pypa.io/en/stable/history.html#v75-8-1
- https://setuptools.pypa.io/en/stable/history.html#v75-8-2

* py-setuptools: add v75.9.1, v76.0.0
2025-03-17 09:26:41 +01:00
Seth R. Johnson
38309ced33 CLI11: new versions, PIC option (#49397) 2025-03-17 09:25:10 +01:00
Robert Maaskant
2f21201bf8 util-linux-uuid: add v2.40.3, v2.40.4 (#49441) 2025-03-17 09:16:19 +01:00
Matt Thompson
95a0f1924d openmpi: fix internal-libevent variant (#49463) 2025-03-17 09:06:43 +01:00
Olivier Cessenat
52969dfa78 gsl: add external find (#48665) 2025-03-17 09:05:08 +01:00
Massimiliano Culpo
ee588e4bbe chameleon: update to use oneapi packages (#49498)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 08:50:05 +01:00
Massimiliano Culpo
461f1d186b timemory: update to use oneapi packages (#49305)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 08:48:57 +01:00
Massimiliano Culpo
03b864f986 ghost: remove outdated comments (#49501)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 08:47:50 +01:00
Harmen Stoppels
bff4fa2761 spec.py: include test deps in dag hash, remove process_hash (take two) (#49505)
Signed-off-by: Todd Gamblin <tgamblin@llnl.gov>
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
2025-03-17 08:47:09 +01:00
Massimiliano Culpo
ad3fd4e7e9 fleur: update to use oneapi packages (#49500)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 08:46:50 +01:00
Massimiliano Culpo
a574a995f8 converge: remove package (#49499)
The package was added in 2017, and never updated
substantially. It requires users to login into
a platform to download code.

Thus, instead of updating to new versions, and add
support for OneAPI, remove the package.

Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 08:46:32 +01:00
Massimiliano Culpo
0002861daf camx: update to use oneapi packages (#49497)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 08:44:45 +01:00
Massimiliano Culpo
a65216f0a0 dftfe: update to use oneapi packages (#49430)
Signed-off-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
2025-03-17 08:44:30 +01:00
Sebastian Pipping
7604869198 expat: add v2.7.0 with security fixes + deprecate vulnerable 2.6.4 (#49481) 2025-03-17 08:31:56 +01:00
afzpatel
d409126c27 hip: apply LLVM_ROOT and Clang_ROOT args only when installing hip+rocm (#49368) 2025-03-17 07:37:31 +01:00
Lehman Garrison
2b0d985714 py-numexpr: add v2.10.2 (#49490) 2025-03-17 07:07:48 +01:00
Wouter Deconinck
eedec51566 dcap: add test dependency on cunit (#49510) 2025-03-17 06:56:01 +01:00
Seth R. Johnson
016954fcff vecgeom: new dev tag (#49511)
* vecgeom: add surface-dev 2

* Update hash and mark as deprecated
2025-03-17 06:54:43 +01:00
Adam J. Stewart
0f17672ddb py-numpy: add v2.2.4 (#49512) 2025-03-17 06:47:18 +01:00
157 changed files with 2101 additions and 1273 deletions

View File

@@ -30,7 +30,7 @@ than always choosing the latest versions or default variants.
.. note::
As a rule of thumb: requirements + constraints > reuse > preferences > defaults.
As a rule of thumb: requirements + constraints > strong preferences > reuse > preferences > defaults.
The following set of criteria (from lowest to highest precedence) explain
common cases where concretization output may seem surprising at first.
@@ -56,7 +56,19 @@ common cases where concretization output may seem surprising at first.
concretizer:
reuse: dependencies # other options are 'true' and 'false'
3. :ref:`Package requirements <package-requirements>` configured in ``packages.yaml``,
3. :ref:`Strong preferences <package-strong-preferences>` configured in ``packages.yaml``
are higher priority than reuse, and can be used to strongly prefer a specific version
or variant, without erroring out if it's not possible. Strong preferences are specified
as follows:
.. code-block:: yaml
packages:
foo:
prefer:
- "@1.1: ~mpi"
4. :ref:`Package requirements <package-requirements>` configured in ``packages.yaml``,
and constraints from the command line as well as ``package.py`` files override all
of the above. Requirements are specified as follows:
@@ -66,6 +78,8 @@ common cases where concretization output may seem surprising at first.
foo:
require:
- "@1.2: +mpi"
conflicts:
- "@1.4"
Requirements and constraints restrict the set of possible solutions, while reuse
behavior and preferences influence what an optimal solution looks like.

View File

@@ -486,6 +486,8 @@ present. For instance with a configuration like:
you will use ``mvapich2~cuda %gcc`` as an ``mpi`` provider.
.. _package-strong-preferences:
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Conflicts and strong preferences
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

View File

@@ -278,17 +278,24 @@ def initconfig_hardware_entries(self):
entries.append("# ROCm")
entries.append("#------------------{0}\n".format("-" * 30))
# Explicitly setting HIP_ROOT_DIR may be a patch that is no longer necessary
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
llvm_bin = spec["llvm-amdgpu"].prefix.bin
llvm_prefix = spec["llvm-amdgpu"].prefix
# Some ROCm systems seem to point to /<path>/rocm-<ver>/ and
# others point to /<path>/rocm-<ver>/llvm
if os.path.basename(os.path.normpath(llvm_prefix)) != "llvm":
llvm_bin = os.path.join(llvm_prefix, "llvm/bin/")
entries.append(
cmake_cache_filepath("CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "clang++"))
)
if spec.satisfies("^blt@0.7:"):
rocm_root = os.path.dirname(spec["llvm-amdgpu"].prefix)
entries.append(cmake_cache_path("ROCM_PATH", rocm_root))
else:
# Explicitly setting HIP_ROOT_DIR may be a patch that is no longer necessary
entries.append(cmake_cache_path("HIP_ROOT_DIR", "{0}".format(spec["hip"].prefix)))
llvm_bin = spec["llvm-amdgpu"].prefix.bin
llvm_prefix = spec["llvm-amdgpu"].prefix
# Some ROCm systems seem to point to /<path>/rocm-<ver>/ and
# others point to /<path>/rocm-<ver>/llvm
if os.path.basename(os.path.normpath(llvm_prefix)) != "llvm":
llvm_bin = os.path.join(llvm_prefix, "llvm/bin/")
entries.append(
cmake_cache_filepath(
"CMAKE_HIP_COMPILER", os.path.join(llvm_bin, "amdclang++")
)
)
archs = self.spec.variants["amdgpu_target"].value
if archs[0] != "none":
arch_str = ";".join(archs)

View File

@@ -1126,7 +1126,7 @@ def _add(
installation_time:
Date and time of installation
allow_missing: if True, don't warn when installation is not found on on disk
This is useful when installing specs without build deps.
This is useful when installing specs without build/test deps.
"""
if not spec.concrete:
raise NonConcreteSpecAddError("Specs added to DB must be concrete.")
@@ -1146,10 +1146,8 @@ def _add(
edge.spec,
explicit=False,
installation_time=installation_time,
# allow missing build-only deps. This prevents excessive warnings when a spec is
# installed, and its build dep is missing a build dep; there's no need to install
# the build dep's build dep first, and there's no need to warn about it missing.
allow_missing=allow_missing or edge.depflag == dt.BUILD,
# allow missing build / test only deps
allow_missing=allow_missing or edge.depflag & (dt.BUILD | dt.TEST) == edge.depflag,
)
# Make sure the directory layout agrees whether the spec is installed

View File

@@ -6,7 +6,7 @@
import spack.deptypes as dt
import spack.repo
hashes = []
HASHES = []
class SpecHashDescriptor:
@@ -23,7 +23,7 @@ def __init__(self, depflag: dt.DepFlag, package_hash, name, override=None):
self.depflag = depflag
self.package_hash = package_hash
self.name = name
hashes.append(self)
HASHES.append(self)
# Allow spec hashes to have an alternate computation method
self.override = override
@@ -43,13 +43,9 @@ def __repr__(self):
)
#: Spack's deployment hash. Includes all inputs that can affect how a package is built.
dag_hash = SpecHashDescriptor(depflag=dt.BUILD | dt.LINK | dt.RUN, package_hash=True, name="hash")
#: Hash descriptor used only to transfer a DAG, as is, across processes
process_hash = SpecHashDescriptor(
depflag=dt.BUILD | dt.LINK | dt.RUN | dt.TEST, package_hash=True, name="process_hash"
#: The DAG hash includes all inputs that can affect how a package is built.
dag_hash = SpecHashDescriptor(
depflag=dt.BUILD | dt.LINK | dt.RUN | dt.TEST, package_hash=True, name="hash"
)

View File

@@ -48,6 +48,7 @@
import spack.store
import spack.url
import spack.util.environment
import spack.util.executable
import spack.util.path
import spack.util.web
import spack.variant
@@ -1369,6 +1370,14 @@ def prefix(self):
def home(self):
return self.prefix
@property
def command(self) -> spack.util.executable.Executable:
"""Returns the main executable for this package."""
path = os.path.join(self.home.bin, self.spec.name)
if fsys.is_exe(path):
return spack.util.executable.Executable(path)
raise RuntimeError(f"Unable to locate {self.spec.name} command in {self.home.bin}")
@property # type: ignore[misc]
@memoized
def compiler(self):

View File

@@ -50,7 +50,6 @@
import spack.deptypes as dt
import spack.environment as ev
import spack.error
import spack.hash_types as ht
import spack.package_base
import spack.package_prefs
import spack.patch
@@ -567,7 +566,6 @@ def to_dict(self, test: bool = False) -> dict:
serial_node_arg = (
lambda node_dict: f"""{{"id": "{node_dict.id}", "pkg": "{node_dict.pkg}"}}"""
)
spec_hash_type = ht.process_hash if test else ht.dag_hash
ret = dict()
ret["asp"] = self.asp
ret["criteria"] = self.criteria
@@ -581,14 +579,14 @@ def to_dict(self, test: bool = False) -> dict:
serial_answer = answer[:2]
serial_answer_dict = {}
for node, spec in answer[2].items():
serial_answer_dict[serial_node_arg(node)] = spec.to_dict(hash=spec_hash_type)
serial_answer_dict[serial_node_arg(node)] = spec.to_dict()
serial_answer = serial_answer + (serial_answer_dict,)
serial_answers.append(serial_answer)
ret["answers"] = serial_answers
ret["specs_by_input"] = {}
input_specs = {} if not self.specs_by_input else self.specs_by_input
for input, spec in input_specs.items():
ret["specs_by_input"][str(input)] = spec.to_dict(hash=spec_hash_type)
ret["specs_by_input"][str(input)] = spec.to_dict()
return ret
@staticmethod
@@ -1211,7 +1209,7 @@ def solve(self, setup, specs, reuse=None, output=None, control=None, allow_depre
full_path = lambda x: os.path.join(parent_dir, x)
abs_control_files = [full_path(x) for x in control_files]
for ctrl_file in abs_control_files:
with open(ctrl_file, "r+", encoding="utf-8") as f:
with open(ctrl_file, "r", encoding="utf-8") as f:
problem_repr += "\n" + f.read()
result = None
@@ -2236,8 +2234,8 @@ def emit_facts_from_requirement_rules(self, rules: List[RequirementRule]):
spec.attach_git_version_lookup()
when_spec = spec
if virtual:
when_spec = spack.spec.Spec(pkg_name)
if virtual and spec.name != pkg_name:
when_spec = spack.spec.Spec(f"^[virtuals={pkg_name}] {spec.name}")
try:
context = ConditionContext()

View File

@@ -597,6 +597,13 @@ attr("virtual_on_edge", PackageNode, ProviderNode, Virtual)
attr("virtual_on_incoming_edges", ProviderNode, Virtual)
:- attr("virtual_on_edge", _, ProviderNode, Virtual).
% This is needed to allow requirement on virtuals,
% when a virtual root is requested
attr("virtual_on_incoming_edges", ProviderNode, Virtual)
:- attr("virtual_root", node(min_dupe_id, Virtual)),
attr("root", ProviderNode),
provider(ProviderNode, node(min_dupe_id, Virtual)).
% dependencies on virtuals also imply that the virtual is a virtual node
1 { attr("virtual_node", node(0..X-1, Virtual)) : max_dupes(Virtual, X) }
:- node_depends_on_virtual(PackageNode, Virtual).
@@ -953,12 +960,14 @@ error(100, "Cannot set variant '{0}' for package '{1}' because the variant condi
build(node(ID, Package)).
% at most one variant value for single-valued variants.
error(100, "'{0}' required multiple values for single-valued variant '{1}'", Package, Variant)
error(100, "'{0}' requires conflicting variant values 'Spec({1}={2})' and 'Spec({1}={3})'", Package, Variant, Value1, Value2)
:- attr("node", node(ID, Package)),
node_has_variant(node(ID, Package), Variant, _),
variant_single_value(node(ID, Package), Variant),
build(node(ID, Package)),
2 { attr("variant_value", node(ID, Package), Variant, Value) }.
attr("variant_value", node(ID, Package), Variant, Value1),
attr("variant_value", node(ID, Package), Variant, Value2),
Value1 < Value2,
build(node(ID, Package)).
error(100, "No valid value for variant '{1}' of package '{0}'", Package, Variant)
:- attr("node", node(ID, Package)),

View File

@@ -117,7 +117,7 @@ error(0, "Cannot find a valid provider for virtual {0}", Virtual, startcauses, C
condition_holds(Cause, node(CID, TriggerPkg)).
% At most one variant value for single-valued variants
error(0, "'{0}' required multiple values for single-valued variant '{1}'\n Requested 'Spec({1}={2})' and 'Spec({1}={3})'", Package, Variant, Value1, Value2, startcauses, Cause1, X, Cause2, X)
error(0, "'{0}' requires conflicting variant values 'Spec({1}={2})' and 'Spec({1}={3})'", Package, Variant, Value1, Value2, startcauses, Cause1, X, Cause2, X)
:- attr("node", node(X, Package)),
node_has_variant(node(X, Package), Variant, VariantID),
variant_single_value(node(X, Package), Variant),

View File

@@ -66,18 +66,29 @@ def rules_from_package_py(self, pkg: spack.package_base.PackageBase) -> List[Req
return rules
def rules_from_virtual(self, virtual_str: str) -> List[RequirementRule]:
requirements = self.config.get("packages", {}).get(virtual_str, {}).get("require", [])
return self._rules_from_requirements(
virtual_str, requirements, kind=RequirementKind.VIRTUAL
)
kind, requests = self._raw_yaml_data(virtual_str, section="require", virtual=True)
result = self._rules_from_requirements(virtual_str, requests, kind=kind)
kind, requests = self._raw_yaml_data(virtual_str, section="prefer", virtual=True)
result.extend(self._rules_from_preferences(virtual_str, preferences=requests, kind=kind))
kind, requests = self._raw_yaml_data(virtual_str, section="conflict", virtual=True)
result.extend(self._rules_from_conflicts(virtual_str, conflicts=requests, kind=kind))
return result
def rules_from_require(self, pkg: spack.package_base.PackageBase) -> List[RequirementRule]:
kind, requirements = self._raw_yaml_data(pkg, section="require")
kind, requirements = self._raw_yaml_data(pkg.name, section="require")
return self._rules_from_requirements(pkg.name, requirements, kind=kind)
def rules_from_prefer(self, pkg: spack.package_base.PackageBase) -> List[RequirementRule]:
kind, preferences = self._raw_yaml_data(pkg.name, section="prefer")
return self._rules_from_preferences(pkg.name, preferences=preferences, kind=kind)
def _rules_from_preferences(
self, pkg_name: str, *, preferences, kind: RequirementKind
) -> List[RequirementRule]:
result = []
kind, preferences = self._raw_yaml_data(pkg, section="prefer")
for item in preferences:
spec, condition, message = self._parse_prefer_conflict_item(item)
result.append(
@@ -86,7 +97,7 @@ def rules_from_prefer(self, pkg: spack.package_base.PackageBase) -> List[Require
# require:
# - any_of: [spec_str, "@:"]
RequirementRule(
pkg_name=pkg.name,
pkg_name=pkg_name,
policy="any_of",
requirements=[spec, spack.spec.Spec("@:")],
kind=kind,
@@ -97,8 +108,13 @@ def rules_from_prefer(self, pkg: spack.package_base.PackageBase) -> List[Require
return result
def rules_from_conflict(self, pkg: spack.package_base.PackageBase) -> List[RequirementRule]:
kind, conflicts = self._raw_yaml_data(pkg.name, section="conflict")
return self._rules_from_conflicts(pkg.name, conflicts=conflicts, kind=kind)
def _rules_from_conflicts(
self, pkg_name: str, *, conflicts, kind: RequirementKind
) -> List[RequirementRule]:
result = []
kind, conflicts = self._raw_yaml_data(pkg, section="conflict")
for item in conflicts:
spec, condition, message = self._parse_prefer_conflict_item(item)
result.append(
@@ -107,7 +123,7 @@ def rules_from_conflict(self, pkg: spack.package_base.PackageBase) -> List[Requi
# require:
# - one_of: [spec_str, "@:"]
RequirementRule(
pkg_name=pkg.name,
pkg_name=pkg_name,
policy="one_of",
requirements=[spec, spack.spec.Spec("@:")],
kind=kind,
@@ -129,10 +145,14 @@ def _parse_prefer_conflict_item(self, item):
message = item.get("message")
return spec, condition, message
def _raw_yaml_data(self, pkg: spack.package_base.PackageBase, *, section: str):
def _raw_yaml_data(self, pkg_name: str, *, section: str, virtual: bool = False):
config = self.config.get("packages")
data = config.get(pkg.name, {}).get(section, [])
data = config.get(pkg_name, {}).get(section, [])
kind = RequirementKind.PACKAGE
if virtual:
return RequirementKind.VIRTUAL, data
if not data:
data = config.get("all", {}).get(section, [])
kind = RequirementKind.DEFAULT

View File

@@ -97,7 +97,6 @@
import spack.spec_parser
import spack.store
import spack.traverse
import spack.util.executable
import spack.util.hash
import spack.util.prefix
import spack.util.spack_json as sjson
@@ -1110,28 +1109,6 @@ def clear(self):
self.edges.clear()
def _command_default_handler(spec: "Spec"):
"""Default handler when looking for the 'command' attribute.
Tries to search for ``spec.name`` in the ``spec.home.bin`` directory.
Parameters:
spec: spec that is being queried
Returns:
Executable: An executable of the command
Raises:
RuntimeError: If the command is not found
"""
home = getattr(spec.package, "home")
path = os.path.join(home.bin, spec.name)
if fs.is_exe(path):
return spack.util.executable.Executable(path)
raise RuntimeError(f"Unable to locate {spec.name} command in {home.bin}")
def _headers_default_handler(spec: "Spec"):
"""Default handler when looking for the 'headers' attribute.
@@ -1335,9 +1312,7 @@ class SpecBuildInterface(lang.ObjectWrapper):
home = ForwardQueryToPackage("home", default_handler=None)
headers = ForwardQueryToPackage("headers", default_handler=_headers_default_handler)
libs = ForwardQueryToPackage("libs", default_handler=_libs_default_handler)
command = ForwardQueryToPackage(
"command", default_handler=_command_default_handler, _indirect=True
)
command = ForwardQueryToPackage("command", default_handler=None, _indirect=True)
def __init__(
self,
@@ -1515,7 +1490,7 @@ def __init__(self, spec_like=None, *, external_path=None, external_modules=None)
self.abstract_hash = None
# initial values for all spec hash types
for h in ht.hashes:
for h in ht.HASHES:
setattr(self, h.attr, None)
# cache for spec's prefix, computed lazily by prefix property
@@ -2198,30 +2173,16 @@ def package_hash(self):
def dag_hash(self, length=None):
"""This is Spack's default hash, used to identify installations.
Same as the full hash (includes package hash and build/link/run deps).
Tells us when package files and any dependencies have changes.
NOTE: Versions of Spack prior to 0.18 only included link and run deps.
NOTE: Versions of Spack prior to 1.0 only did not include test deps.
"""
return self._cached_hash(ht.dag_hash, length)
def process_hash(self, length=None):
"""Hash used to transfer specs among processes.
This hash includes build and test dependencies and is only used to
serialize a spec and pass it around among processes.
"""
return self._cached_hash(ht.process_hash, length)
def dag_hash_bit_prefix(self, bits):
"""Get the first <bits> bits of the DAG hash as an integer type."""
return spack.util.hash.base32_prefix_bits(self.dag_hash(), bits)
def process_hash_bit_prefix(self, bits):
"""Get the first <bits> bits of the DAG hash as an integer type."""
return spack.util.hash.base32_prefix_bits(self.process_hash(), bits)
def _lookup_hash(self):
"""Lookup just one spec with an abstract hash, returning a spec from the the environment,
store, or finally, binary caches."""
@@ -3588,11 +3549,11 @@ def _dup(self, other: "Spec", deps: Union[bool, dt.DepTypes, dt.DepFlag] = True)
if self._concrete:
self._dunder_hash = other._dunder_hash
for h in ht.hashes:
for h in ht.HASHES:
setattr(self, h.attr, getattr(other, h.attr, None))
else:
self._dunder_hash = None
for h in ht.hashes:
for h in ht.HASHES:
setattr(self, h.attr, None)
return changed
@@ -3784,16 +3745,6 @@ def _cmp_iter(self):
# serialized before the hash change and one after, are considered different.
yield self.dag_hash() if self.concrete else None
# This needs to be in _cmp_iter so that no specs with different process hashes
# are considered the same by `__hash__` or `__eq__`.
#
# TODO: We should eventually unify the `_cmp_*` methods with `to_node_dict` so
# TODO: there aren't two sources of truth, but this needs some thought, since
# TODO: they exist for speed. We should benchmark whether it's really worth
# TODO: having two types of hashing now that we use `json` instead of `yaml` for
# TODO: spec hashing.
yield self.process_hash() if self.concrete else None
def deps():
for dep in sorted(itertools.chain.from_iterable(self._dependencies.values())):
yield dep.spec.name
@@ -4447,7 +4398,7 @@ def clear_caches(self, ignore: Tuple[str, ...] = ()) -> None:
"""
Clears all cached hashes in a Spec, while preserving other properties.
"""
for h in ht.hashes:
for h in ht.HASHES:
if h.attr not in ignore:
if hasattr(self, h.attr):
setattr(self, h.attr, None)
@@ -4456,18 +4407,12 @@ def clear_caches(self, ignore: Tuple[str, ...] = ()) -> None:
setattr(self, attr, None)
def __hash__(self):
# If the spec is concrete, we leverage the process hash and just use
# a 64-bit prefix of it. The process hash has the advantage that it's
# computed once per concrete spec, and it's saved -- so if we read
# concrete specs we don't need to recompute the whole hash. This is
# good for large, unchanging specs.
#
# We use the process hash instead of the DAG hash here because the DAG
# hash includes the package hash, which can cause infinite recursion,
# and which isn't defined unless the spec has a known package.
# If the spec is concrete, we leverage the dag hash and just use a 64-bit prefix of it.
# The dag hash has the advantage that it's computed once per concrete spec, and it's saved
# -- so if we read concrete specs we don't need to recompute the whole hash.
if self.concrete:
if not self._dunder_hash:
self._dunder_hash = self.process_hash_bit_prefix(64)
self._dunder_hash = self.dag_hash_bit_prefix(64)
return self._dunder_hash
# This is the normal hash for lazy_lexicographic_ordering. It's
@@ -4476,7 +4421,7 @@ def __hash__(self):
return hash(lang.tuplify(self._cmp_iter))
def __reduce__(self):
return Spec.from_dict, (self.to_dict(hash=ht.process_hash),)
return Spec.from_dict, (self.to_dict(hash=ht.dag_hash),)
def attach_git_version_lookup(self):
# Add a git lookup method for GitVersions
@@ -4798,7 +4743,7 @@ def from_node_dict(cls, node):
spec = Spec()
name, node = cls.name_and_data(node)
for h in ht.hashes:
for h in ht.HASHES:
setattr(spec, h.attr, node.get(h.name, None))
spec.name = name
@@ -4981,7 +4926,7 @@ def read_specfile_dep_specs(cls, deps, hash_type=ht.dag_hash.name):
"""
for dep_name, elt in deps.items():
if isinstance(elt, dict):
for h in ht.hashes:
for h in ht.HASHES:
if h.name in elt:
dep_hash, deptypes = elt[h.name], elt["type"]
hash_type = h.name
@@ -5024,7 +4969,7 @@ def read_specfile_dep_specs(cls, deps, hash_type=ht.dag_hash.name):
dep_name = dep["name"]
if isinstance(elt, dict):
# new format: elements of dependency spec are keyed.
for h in ht.hashes:
for h in ht.HASHES:
if h.name in elt:
dep_hash, deptypes, hash_type, virtuals = cls.extract_info_from_dep(elt, h)
break

View File

@@ -59,13 +59,6 @@ def mock_fetch_remote_versions(*args, **kwargs):
assert v.strip(" \n\t") == "99.99.99\n 3.2.1"
@pytest.mark.maybeslow
def test_no_versions():
"""Test a package for which no remote versions are available."""
versions("converge")
@pytest.mark.maybeslow
def test_no_unchecksummed_versions():
"""Test a package for which no unchecksummed versions are available."""

View File

@@ -29,8 +29,7 @@
]
variant_error_messages = [
"'fftw' required multiple values for single-valued variant 'mpi'",
" Requested '~mpi' and '+mpi'",
"'fftw' requires conflicting variant values '~mpi' and '+mpi'",
" required because quantum-espresso depends on fftw+mpi when +invino",
" required because quantum-espresso+invino ^fftw~mpi requested explicitly",
" required because quantum-espresso+invino ^fftw~mpi requested explicitly",

View File

@@ -377,11 +377,14 @@ def test_require_cflags(concretize_scope, mock_packages):
"""
update_packages_config(conf_str)
spec_mpich2 = spack.concretize.concretize_one("mpich2")
assert spec_mpich2.satisfies("cflags=-g")
mpich2 = spack.concretize.concretize_one("mpich2")
assert mpich2.satisfies("cflags=-g")
spec_mpi = spack.concretize.concretize_one("mpi")
assert spec_mpi.satisfies("mpich cflags=-O1")
mpileaks = spack.concretize.concretize_one("mpileaks")
assert mpileaks["mpi"].satisfies("mpich cflags=-O1")
mpi = spack.concretize.concretize_one("mpi")
assert mpi.satisfies("mpich cflags=-O1")
def test_requirements_for_package_that_is_not_needed(concretize_scope, test_repo):
@@ -982,6 +985,52 @@ def test_requiring_package_on_multiple_virtuals(concretize_scope, mock_packages)
["%clang"],
["%gcc"],
),
# Test using preferences on virtuals
(
"""
packages:
all:
providers:
mpi: [mpich]
mpi:
prefer:
- zmpi
""",
"mpileaks",
["^[virtuals=mpi] zmpi"],
["^[virtuals=mpi] mpich"],
),
(
"""
packages:
all:
providers:
mpi: [mpich]
mpi:
prefer:
- zmpi
""",
"mpileaks ^[virtuals=mpi] mpich",
["^[virtuals=mpi] mpich"],
["^[virtuals=mpi] zmpi"],
),
# Tests that strong preferences can be overridden by requirements
(
"""
packages:
all:
providers:
mpi: [zmpi]
mpi:
require:
- mpich
prefer:
- zmpi
""",
"mpileaks",
["^[virtuals=mpi] mpich"],
["^[virtuals=mpi] zmpi"],
),
],
)
def test_strong_preferences_packages_yaml(
@@ -1032,6 +1081,16 @@ def test_strong_preferences_packages_yaml(
""",
"multivalue-variant@=2.3 %clang",
),
# Test using conflict on virtual
(
"""
packages:
mpi:
conflict:
- mpich
""",
"mpileaks ^[virtuals=mpi] mpich",
),
],
)
def test_conflict_packages_yaml(packages_yaml, spec_str, concretize_scope, mock_packages):
@@ -1168,3 +1227,26 @@ def test_anonymous_spec_cannot_be_used_in_virtual_requirements(
update_packages_config(packages_yaml)
with pytest.raises(spack.error.SpackError, match=err_match):
spack.concretize.concretize_one("mpileaks")
def test_virtual_requirement_respects_any_of(concretize_scope, mock_packages):
"""Tests that "any of" requirements can be used with virtuals"""
conf_str = """\
packages:
mpi:
require:
- any_of: ["mpich2", "mpich"]
"""
update_packages_config(conf_str)
s = spack.concretize.concretize_one("mpileaks")
assert s.satisfies("^[virtuals=mpi] mpich2")
s = spack.concretize.concretize_one("mpileaks ^mpich2")
assert s.satisfies("^[virtuals=mpi] mpich2")
s = spack.concretize.concretize_one("mpileaks ^mpich")
assert s.satisfies("^[virtuals=mpi] mpich")
with pytest.raises(spack.error.SpackError):
spack.concretize.concretize_one("mpileaks ^[virtuals=mpi] zmpi")

View File

@@ -1751,7 +1751,6 @@ def test_package_hash_affects_dunder_and_dag_hash(mock_packages, default_mock_co
assert hash(a1) == hash(a2)
assert a1.dag_hash() == a2.dag_hash()
assert a1.process_hash() == a2.process_hash()
a1.clear_caches()
a2.clear_caches()
@@ -1764,7 +1763,6 @@ def test_package_hash_affects_dunder_and_dag_hash(mock_packages, default_mock_co
assert hash(a1) != hash(a2)
assert a1.dag_hash() != a2.dag_hash()
assert a1.process_hash() != a2.process_hash()
def test_intersects_and_satisfies_on_concretized_spec(default_mock_concretization):

View File

@@ -878,9 +878,7 @@ def test_ambiguous_hash(mutable_database):
x1 = spack.concretize.concretize_one("pkg-a")
x2 = x1.copy()
x1._hash = "xyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
x1._process_hash = "xyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy"
x2._hash = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
x2._process_hash = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
assert x1 != x2 # doesn't hold when only the dag hash is modified.

View File

@@ -203,13 +203,6 @@ def test_ordered_read_not_required_for_consistent_dag_hash(
spec = spec.copy(deps=ht.dag_hash.depflag)
# specs and their hashes are equal to the original
assert (
spec.process_hash()
== from_yaml.process_hash()
== from_json.process_hash()
== from_yaml_rev.process_hash()
== from_json_rev.process_hash()
)
assert (
spec.dag_hash()
== from_yaml.dag_hash()

View File

@@ -36,7 +36,8 @@ spack:
- paraview_specs:
- matrix:
- - paraview +raytracing +adios2 +fides
- - +qt ^[virtuals=gl] glx # GUI Support w/ GLX Rendering
- - +qt ^[virtuals=gl] glx ^[virtuals=qmake] qt-base # Qt6 GUI Support w/ GLX Rendering
- +qt ^[virtuals=gl] glx ^[virtuals=qmake] qt # Qt5 GUI Support w/ GLX Rendering
- ~qt ^[virtuals=gl] glx # GLX Rendering
- ^[virtuals=gl] osmesa # OSMesa Rendering
- visit_specs:

View File

@@ -106,7 +106,7 @@ spack:
- vecgeom ~cuda
- whizard +fastjet +gosam hepmc=3 +lcio +lhapdf +openloops +openmp +pythia8
- xrootd +davix +http +krb5 +python +readline +scitokens-cpp
- yoda +root
- yoda +hdf5 +highfive
# CUDA
#- acts +cuda +traccc cuda_arch=80

View File

@@ -56,13 +56,11 @@ def url_for_version(self, version):
# To enable this plug-in to work with NCCL add it to the LD_LIBRARY_PATH
def setup_run_environment(self, env):
aws_ofi_nccl_home = self.spec.prefix
env.append_path("LD_LIBRARY_PATH", aws_ofi_nccl_home.lib)
env.append_path("LD_LIBRARY_PATH", self.prefix.lib)
# To enable this plug-in to work with NCCL add it to the LD_LIBRARY_PATH
def setup_dependent_run_environment(self, env, dependent_spec):
aws_ofi_nccl_home = self.spec["aws-ofi-nccl"].prefix
env.append_path("LD_LIBRARY_PATH", aws_ofi_nccl_home.lib)
env.append_path("LD_LIBRARY_PATH", self.prefix.lib)
def configure_args(self):
spec = self.spec

View File

@@ -37,13 +37,11 @@ class AwsOfiRccl(AutotoolsPackage):
# To enable this plug-in to work with RCCL add it to the LD_LIBRARY_PATH
def setup_run_environment(self, env):
aws_ofi_rccl_home = self.spec["aws-ofi-rccl"].prefix
env.prepend_path("LD_LIBRARY_PATH", aws_ofi_rccl_home.lib)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
# To enable this plug-in to work with RCCL add it to the LD_LIBRARY_PATH
def setup_dependent_run_environment(self, env, dependent_spec):
aws_ofi_rccl_home = self.spec["aws-ofi-rccl"].prefix
env.prepend_path("LD_LIBRARY_PATH", aws_ofi_rccl_home.lib)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
def configure_args(self):
spec = self.spec

View File

@@ -14,6 +14,7 @@ class AwscliV2(PythonPackage):
maintainers("climbfuji", "teaguesterling")
version("2.24.24", sha256="d7b135ef02c96d50d81c0b5eb2723cf474cfda8e1758cccabbcaa6c14f281419")
version("2.22.4", sha256="56c6170f3be830afef2dea60fc3fd7ed14cf2ca2efba055c085fe6a7c4de358e")
version("2.15.53", sha256="a4f5fd4e09b8f2fb3d2049d0610c7b0993f9aafaf427f299439f05643b25eb4b")
version("2.13.22", sha256="dd731a2ba5973f3219f24c8b332a223a29d959493c8a8e93746d65877d02afc1")

View File

@@ -319,7 +319,7 @@ def install_test(self):
)
# Spack's logs don't handle colored output well
bazel = Executable(self.spec["bazel"].command.path)
bazel = Executable(self.command.path)
bazel(
"--output_user_root=/tmp/spack/bazel/spack-test",
"build",
@@ -332,7 +332,7 @@ def install_test(self):
assert exe(output=str) == "Hi!\n"
def setup_dependent_package(self, module, dependent_spec):
module.bazel = Executable(self.spec["bazel"].command.path)
module.bazel = Executable(self.command.path)
@property
def parallel(self):

View File

@@ -72,6 +72,7 @@ class Blt(Package):
# if you export targets this could cause problems in downstream
# projects if not handled properly. More info here:
# https://llnl-blt.readthedocs.io/en/develop/tutorial/exporting_targets.html
version("0.7.0", sha256="df8720a9cba1199d21f1d32649cebb9dddf95aa61bc3ac23f6c8a3c6b6083528")
version("0.6.2", sha256="84b663162957c1fe0e896ac8e94cbf2b6def4a152ccfa12a293db14fb25191c8")
version("0.6.1", sha256="205540b704b8da5a967475be9e8f2d1a5e77009b950e7fbf01c0edabc4315906")
version("0.6.0", sha256="ede355e85f7b11d7c8442b51e4f7871c152093818606e00b1e1cf30f67ebdb23")

View File

@@ -16,6 +16,10 @@ class Brahma(CMakePackage):
version("develop", branch="develop")
version("master", branch="master")
version("0.0.9", tag="v0.0.9", commit="4af20bbe241c983585e52c04e38868e8b56a9c21")
version("0.0.8", tag="v0.0.8", commit="a99b0f3a688d144b928e41c38977a2aecdaadb41")
version("0.0.7", tag="v0.0.7", commit="010662d1354080244b3b7b32e3e36aa9cfbbf3a1")
version("0.0.6", tag="v0.0.6", commit="e8ac7627d6e607310229b4dfe700715bdc92084e")
version("0.0.5", tag="v0.0.5", commit="219198c653cc4add845a644872e7b963a8de0fe2")
version("0.0.4", tag="v0.0.4", commit="8f41cc885dd8e31a1f134cbbcbaaab7e5d84331e")
version("0.0.3", tag="v0.0.3", commit="fd201c653e8fa00d4ba6197a56a513f740e3014e")

View File

@@ -17,6 +17,7 @@ class Btop(MakefilePackage, CMakePackage):
license("Apache-2.0")
version("1.4.0", sha256="ac0d2371bf69d5136de7e9470c6fb286cbee2e16b4c7a6d2cd48a14796e86650")
version("1.3.2", sha256="331d18488b1dc7f06cfa12cff909230816a24c57790ba3e8224b117e3f0ae03e")
version("1.3.0", sha256="375e078ce2091969f0cd14030620bd1a94987451cf7a73859127a786006a32cf")
version("1.2.13", sha256="668dc4782432564c35ad0d32748f972248cc5c5448c9009faeb3445282920e02")

View File

@@ -170,7 +170,7 @@ def install(self, spec, prefix):
@run_after("install")
def install_pkgconfig(self):
# Add pkgconfig file after installation
libdir = self.spec["bzip2"].libs.directories[0]
libdir = self.libs.directories[0]
pkg_path = join_path(self.prefix.lib, "pkgconfig")
mkdirp(pkg_path)

View File

@@ -74,7 +74,7 @@ def edit(self, spec, prefix):
makefile.filter("-mcmodel=medium", "-mcmodel=large")
# Support Intel MPI.
if spec["mpi"].name == "intel-mpi":
if spec["mpi"].name == "intel-oneapi-mpi":
makefile.filter(
"else ifneq (, $(findstring $(MPI),openmpi openMPI OPENMPI))",
"""else ifneq (, $(findstring $(MPI),intel-mpi intel impi))

View File

@@ -186,7 +186,7 @@ def initconfig_compiler_entries(self):
compiler = self.compiler
entries = super().initconfig_compiler_entries()
if spec.satisfies("+rocm"):
if spec.satisfies("+rocm ^blt@:0.6"):
entries.insert(0, cmake_cache_path("CMAKE_CXX_COMPILER", spec["hip"].hipcc))
llnl_link_helpers(entries, spec, compiler)

View File

@@ -0,0 +1,13 @@
diff --git a/src/cgnstools/tkogl/tkogl.c b/src/cgnstools/tkogl/tkogl.c
index 506599d..71b4fb8 100644
--- a/src/cgnstools/tkogl/tkogl.c
+++ b/src/cgnstools/tkogl/tkogl.c
@@ -25,7 +25,7 @@
#if ! defined(__WIN32__) && ! defined(_WIN32)
/* For TkWmAddToColormapWindows. */
#define _TKPORT /* Typical installations cannot find tkPort.h. */
-#include <tk-private/generic/tkInt.h>
+#include <tkInt.h>
#endif
#ifndef CONST

View File

@@ -81,6 +81,8 @@ class Cgns(CMakePackage):
# copied from https://github.com/CGNS/CGNS/pull/757
# (adjusted an include from tk-private/generic/tkInt.h to tkInt.h)
patch("gcc14.patch", when="@:4.4.0 %gcc@14:")
# "wrong" include for spack (tk-private) from the patch above made it into the official version
patch("cgns-4.5-tk-private.patch", when="@4.5.0")
def cmake_args(self):
spec = self.spec

View File

@@ -221,7 +221,7 @@ def initconfig_compiler_entries(self):
# Default entries are already defined in CachedCMakePackage, inherit them:
entries = super().initconfig_compiler_entries()
if spec.satisfies("+rocm"):
if spec.satisfies("+rocm ^blt@:0.6"):
entries.insert(0, cmake_cache_path("CMAKE_CXX_COMPILER", spec["hip"].hipcc))
llnl_link_helpers(entries, spec, compiler)

View File

@@ -113,15 +113,13 @@ def cmake_args(self):
]
)
if spec.satisfies("~simgrid"):
if spec.satisfies("^intel-mkl") or spec.satisfies("^intel-parallel-studio+mkl"):
if spec.satisfies("threads=none"):
args.extend([self.define("BLA_VENDOR", "Intel10_64lp_seq")])
else:
args.extend([self.define("BLA_VENDOR", "Intel10_64lp")])
elif spec.satisfies("^netlib-lapack"):
args.extend([self.define("BLA_VENDOR", "Generic")])
elif spec.satisfies("^openblas"):
args.extend([self.define("BLA_VENDOR", "OpenBLAS")])
if spec.satisfies("^[virtuals=blas,lapack] intel-oneapi-mkl threads=none"):
args.extend([self.define("BLA_VENDOR", "Intel10_64lp_seq")])
elif spec.satisfies("^[virtuals=blas,lapack] intel-oneapi-mkl"):
args.extend([self.define("BLA_VENDOR", "Intel10_64lp")])
elif spec.satisfies("^[virtuals=blas,lapack] netlib-lapack"):
args.extend([self.define("BLA_VENDOR", "Generic")])
elif spec.satisfies("^[virtuals=blas,lapack] openblas"):
args.extend([self.define("BLA_VENDOR", "OpenBLAS")])
return args

View File

@@ -15,10 +15,12 @@ class Cli11(CMakePackage):
license("BSD-3-Clause")
version("2.5.0", sha256="17e02b4cddc2fa348e5dbdbb582c59a3486fa2b2433e70a0c3bacb871334fd55")
version("2.4.2", sha256="f2d893a65c3b1324c50d4e682c0cdc021dd0477ae2c048544f39eed6654b699a")
version("2.4.1", sha256="73b7ec52261ce8fe980a29df6b4ceb66243bb0b779451dbd3d014cfec9fdbb58")
version("2.3.2", sha256="aac0ab42108131ac5d3344a9db0fdf25c4db652296641955720a4fbe52334e22")
version("2.3.1", sha256="378da73d2d1d9a7b82ad6ed2b5bda3e7bc7093c4034a1d680a2e009eb067e7b2")
version("2.1.2", sha256="26291377e892ba0e5b4972cdfd4a2ab3bf53af8dac1f4ea8fe0d1376b625c8cb")
version("2.1.1", sha256="d69023d1d0ab6a22be86b4f59d449422bc5efd9121868f4e284d6042e52f682e")
version("2.1.0", sha256="2661b0112b02478bad3dc7f1749c4825bfc7e37b440cbb4c8c0e2ffaa3999112")
version("2.0.0", sha256="2c672f17bf56e8e6223a3bfb74055a946fa7b1ff376510371902adb9cb0ab6a3")
@@ -26,8 +28,11 @@ class Cli11(CMakePackage):
depends_on("cxx", type="build") # generated
variant("pic", default=True, description="Produce position-independent code")
depends_on("cmake@3.4:", type="build")
depends_on("cmake@3.5:", type="build", when="@2.4:")
depends_on("cmake@3.10:", type="build", when="@2.5:")
def cmake_args(self):
args = [
@@ -35,5 +40,6 @@ def cmake_args(self):
self.define("CLI11_BUILD_DOCS", False),
self.define("CLI11_BUILD_TESTS", False),
self.define("CLI11_PRECOMPILED", True),
self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"),
]
return args

View File

@@ -1,221 +0,0 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import glob
import os
from spack.package import *
class Converge(Package):
"""CONVERGE is a revolutionary computational fluid dynamics (CFD) program
that eliminates the grid generation bottleneck from the simulation process.
CONVERGE was developed by engine simulation experts and is straightforward
to use for both engine and non-engine simulations. Unlike many CFD
programs, CONVERGE automatically generates a perfectly orthogonal,
structured grid at runtime based on simple, user-defined grid control
parameters. This grid generation method completely eliminates the need to
manually generate a grid. In addition, CONVERGE offers many other features
to expedite the setup process and to ensure that your simulations are as
computationally efficient as possible."""
homepage = "https://www.convergecfd.com/"
url = "https://download.convergecfd.com/download/CONVERGE_2.4/Full_Solver_Packages/converge_install_2.4.10.tar.gz"
# In order to view available versions, you need to register for an account:
# https://download.convergecfd.com/wp-login.php?action=register
version("2.4.10", sha256="5d3c39894598d2395149cfcc653af13b8b1091177290edd62fcf22c7e830d410")
version("2.3.23", sha256="1217d16eaf9d263f917ee468778508bad9dacb7e4397a293cfa6467f39fb4c52")
version(
"2.2.0",
sha256="3885acbaf352c718ea69f0206c858a01be02f0928ffee738e4aceb1dd939a77a",
url="https://download.convergecfd.com/download/CONVERGE_2.2/Full_Solver_Packages/converge_install_2.2.0_042916.tar.gz",
)
version(
"2.1.0",
sha256="6b8896d42cf7b9013cae5456f4dc118306a5bd271d4a15945ceb7dae913e825a",
url="https://download.convergecfd.com/download/CONVERGE_2.1/Full_Solver_Packages/converge_install_2.1.0_111615.tar.gz",
)
version(
"2.0.0",
sha256="f32c4824eb33724d85e283481d67ebd0630b1406011c528d775028bb2546f34e",
url="https://download.convergecfd.com/download/CONVERGE_2.0/Full_Solver_Packages/converge_install_2.0.0_090214.tar.gz",
)
variant("mpi", default=True, description="Build with MPI support")
# The following MPI libraries are compatible with CONVERGE:
#
# +--------------+---------+---------+---------+---------+---------+
# | MPI Packages | v2.0 | v2.1 | v2.2 | v2.3 | v2.4 |
# +--------------+---------+---------+---------+---------+---------+
# | HP-MPI | 2.0.3+ | 2.0.3+ | 2.0.3+ | 2.0.3+ | |
# | Intel MPI | | | | | 17.0.98 |
# | MPICH | ?.?.? | ?.?.? | 1.2.1 | 3.1.4 | ?.?.? |
# | MVAPICH2 | ?.?.? | | | | |
# | Open MPI | 1.0-1.4 | 1.0-1.4 | 1.5-1.8 | 1.5-1.8 | 1.10 |
# | Platform MPI | | | 9.1.2 | 9.1.2 | 9.1.2 |
# +--------------+---------+---------+---------+---------+---------+
#
# NOTE: HP-MPI was bought out by Platform MPI
#
# These version requirements are more strict than for most packages.
# Since the tarball comes with pre-compiled executables,
# the version of libmpi.so must match exactly, or else
# you will end up with missing libraries and symbols.
depends_on("mpi", when="+mpi")
# TODO: Add version ranges for other MPI libraries
depends_on("openmpi@1.10.0:1.10", when="@2.4.0:2.4+mpi^[virtuals=mpi] openmpi")
depends_on("openmpi@1.5:1.8", when="@2.2:2.3+mpi^[virtuals=mpi] openmpi")
depends_on("openmpi@:1.4", when="@:2.1+mpi^[virtuals=mpi] openmpi")
conflicts("^intel-mpi", when="@:2.3")
conflicts("^intel-parallel-studio+mpi", when="@:2.3")
conflicts("^spectrum-mpi")
# Licensing
license_required = True
license_comment = "#"
license_files = ["license/license.lic"]
license_vars = ["RLM_LICENSE"]
license_url = "https://www.reprisesoftware.com/RLM_License_Administration.pdf"
def url_for_version(self, version):
url = "https://download.convergecfd.com/download/CONVERGE_{0}/Full_Solver_Packages/converge_install_{1}.tar.gz"
return url.format(version.up_to(2), version)
def install(self, spec, prefix):
# 2.0.0
# converge -> converge-2.0.0-hpmpi-090214
# converge-2.0.0-hpmpi-090214 -> libmpi.so.1, libmpio.so.1
# converge-2.0.0-mpich2-090214 -> libmpich.so.1.2
# converge-2.0.0-mvapich-090214 -> libibumad.so.1
# converge-2.0.0-openmpi-090214 -> libmpi.so.0
# converge-2.0.0-serial-090214
# make_surface
# post_convert
# 2.1.0
# converge -> converge-2.1.0-hpmpi-111615
# converge-2.1.0-hpmpi-111615 -> libmpi.so.1, libmpio.so.1
# converge-2.1.0-mpich2-111615 -> libmpich.so.1.2
# converge-2.1.0-openmpi-111615 -> libmpi.so.0
# converge-2.1.0-serial-111615
# make_surface
# post_convert
# 2.2.0
# converge -> converge-2.2.0-hpmpi-042916
# converge-2.2.0-hpmpi-042916 -> libmpi.so.1, libmpio.so.1
# converge-2.2.0-mpich2-042916
# converge-2.2.0-openmpi-042916 -> libmpi.so.1
# converge-2.2.0-pmpi-042916 -> libmpi.so.1, libmpio.so.1
# converge-2.2.0-serial-042916
# make_surface
# post_convert
# 2.3.23
# converge-2.3.23-hpmpi-linux-64 -> libmpi.so.1, libmpio.so.1
# converge-2.3.23-mpich2-linux-64 -> libmpi.so.12
# converge-2.3.23-openmpi-linux-64 -> libmpi.so.1
# converge-2.3.23-pmpi-linux-64 -> libmpi.so.1, libmpio.so.1
# converge-2.3.23-serial-linux-64
# make_surface_64
# post_convert_mpich_64 -> libmpi.so.12
# post_convert_ompi_64 -> libmpi.so.1
# post_convert_pmpi_64 -> libmpi.so.1, libmpio.so.1
# post_convert_serial_64
# 2.4.10
# converge-2.4.10-intel -> libmpi.so.12, libmpifort.so.12
# converge-2.4.10-mpich -> libmpi.so.12
# converge-2.4.10-ompi -> libmpi.so.12
# converge-2.4.10-pmpi -> libmpi.so.1, libmpio.so.1
# converge-2.4.10-serial
# make_surface_64
# post_convert_mpich_64 -> libmpi.so.12
# post_convert_ompi_64 -> libmpi.so.1
# post_convert_pmpi_64 -> libmpi.so.1
# post_convert_serial_64
# The CONVERGE tarball comes with binaries for several MPI libraries.
# Only install the binary that matches the MPI we are building with.
with working_dir("l_x86_64/bin"):
if spec.satisfies("~mpi"):
converge = glob.glob("converge-*-serial*")
post_convert = glob.glob("post_convert_serial*")
elif spec.satisfies("^hp-mpi"):
converge = glob.glob("converge-*-hpmpi*")
# No HP-MPI version of post_convert
post_convert = glob.glob("post_convert_serial*")
elif spec.satisfies("intel-mpi") or spec.satisfies("intel-parallel-studio+mpi"):
converge = glob.glob("converge-*-intel*")
# No Intel MPI version of post_convert
post_convert = glob.glob("post_convert_serial*")
elif spec.satisfies("^mpich"):
converge = glob.glob("converge-*-mpich*")
post_convert = glob.glob("post_convert_mpich*")
elif spec.satisfies("^mvapich2"):
converge = glob.glob("converge-*-mvapich*")
# MVAPICH2 hasn't been supported since CONVERGE
# came with a single serial post_convert
post_convert = glob.glob("post_convert")
elif spec.satisfies("^openmpi"):
converge = glob.glob("converge-*-o*mpi*")
post_convert = glob.glob("post_convert_o*mpi*")
elif spec.satisfies("^platform-mpi"):
converge = glob.glob("converge-*-pmpi*")
post_convert = glob.glob("post_convert_pmpi*")
else:
raise InstallError("Unsupported MPI provider")
make_surface = glob.glob("make_surface*")
# Old versions of CONVERGE come with a single serial post_convert
if not post_convert:
post_convert = glob.glob("post_convert")
# Make sure glob actually found something
if not converge:
raise InstallError("converge executable not found")
if not post_convert:
raise InstallError("post_convert executable not found")
if not make_surface:
raise InstallError("make_surface executable not found")
# Make sure glob didn't find multiple matches
if len(converge) > 1:
raise InstallError("multiple converge executables found")
if len(post_convert) > 1:
raise InstallError("multiple post_convert executables found")
if len(make_surface) > 1:
raise InstallError("multiple make_surface executables found")
converge = converge[0]
post_convert = post_convert[0]
make_surface = make_surface[0]
mkdir(prefix.bin)
# Install the executables
install(converge, join_path(prefix.bin, converge))
install(post_convert, join_path(prefix.bin, post_convert))
install(make_surface, join_path(prefix.bin, make_surface))
with working_dir(prefix.bin):
# Create generic symlinks to all executables
if not os.path.exists("converge"):
os.symlink(converge, "converge")
if not os.path.exists("post_convert"):
os.symlink(post_convert, "post_convert")
if not os.path.exists("make_surface"):
os.symlink(make_surface, "make_surface")
def setup_run_environment(self, env):
# CONVERGE searches for a valid license file in:
# $CONVERGE_ROOT/license/license.lic
env.set("CONVERGE_ROOT", self.prefix)

View File

@@ -169,7 +169,7 @@ def check_install(self):
os.environ.pop("CLIKPATH", "")
os.environ.pop("PLANCKLIKE", "")
exe = spec["cosmomc"].command.path
exe = self.command.path
args = []
if spec.satisfies("+mpi"):
# Add mpirun prefix

View File

@@ -28,6 +28,8 @@ class Dcap(AutotoolsPackage):
depends_on("libxcrypt")
depends_on("zlib-api")
depends_on("cunit", type="test")
variant("plugins", default=True, description="Build plugins")
def patch(self):

View File

@@ -54,7 +54,7 @@ def cmake_args(self):
"-DSPGLIB_DIR={0}".format(spec["spglib"].prefix),
]
if spec.satisfies("^intel-mkl"):
if spec.satisfies("^[virtuals=scalapack] intel-oneapi-mkl"):
args.append("-DWITH_INTEL_MKL=ON")
else:
args.append("-DWITH_INTEL_MKL=OFF")

View File

@@ -52,9 +52,9 @@ def test_smoke_test(self):
ctest = Executable(spec["cmake"].prefix.bin.ctest)
cmake(
spec["diy"].prefix.share.DIY.examples.smoke_test,
self.prefix.share.DIY.examples.smoke_test,
f"-DMPI_HOME={spec['mpi'].prefix}",
f"-DCMAKE_PREFIX_PATH={spec['diy'].prefix}",
f"-DCMAKE_PREFIX_PATH={self.prefix}",
)
cmake("--build", ".")
ctest("--verbose")

View File

@@ -28,10 +28,8 @@ def install(self, spec, prefix):
@run_after("install")
def check_install(self):
print("Attempt to call 'dust' with '--version'")
dust = Executable(join_path(self.spec["dust"].prefix.bin, "dust"))
dust = Executable(join_path(self.prefix.bin, "dust"))
output = dust("--version", output=str.split)
print("stdout received fromm dust is '{}".format(output))
assert "Dust " in output
def test_run(self):

View File

@@ -81,7 +81,7 @@ class Dyninst(CMakePackage):
sha256="0064d8d51bd01bd0035e1ebc49276f627ce6366d4524c92cf47d3c09b0031f96",
)
requires("%gcc", when="@:13.0.0", msg="dyninst builds only with GCC")
requires("%gcc", when="@:12", msg="dyninst builds only with GCC")
# No Mac support (including apple-clang)
conflicts("platform=darwin", msg="macOS is not supported")

View File

@@ -23,6 +23,12 @@ class Elpa(AutotoolsPackage, CudaPackage, ROCmPackage):
version("master", branch="master")
version(
"2025.01.001", sha256="3ef0c6aed9a3e05db6efafe6e14d66eb88b2a1354d61e765b7cde0d3d5f3951e"
)
version(
"2024.05.001", sha256="9caf41a3e600e2f6f4ce1931bd54185179dade9c171556d0c9b41bbc6940f2f6"
)
version(
"2024.03.001", sha256="41c6cbf56d2dac26443faaba8a77307d261bf511682a64b96e24def77c813622"
)

View File

@@ -40,20 +40,17 @@ def flag_handler(self, name, flags):
return flags, None, None
def install(self, spec, prefix):
options = ["--prefix=%s" % prefix]
oapp = options.append
# Specify installation directory for Fortran module files
# Default is [INCLUDEDIR/FC_TYPE]
oapp("--with-moduledir=%s" % prefix.include)
options = [f"--prefix={prefix}", f"--with-moduledir={prefix.include}"]
# Netcdf4/HDF
hdf_libs = "-L%s -lhdf5_hl -lhdf5" % spec["hdf5"].prefix.lib
hdf_libs = f"-L{spec['hdf5'].prefix.lib} -lhdf5_hl -lhdf5"
options.extend(
[
"--with-netcdf-incs=-I%s" % spec["netcdf-fortran"].prefix.include,
"--with-netcdf-libs=-L%s -lnetcdff -lnetcdf %s"
% (spec["netcdf-fortran"].prefix.lib, hdf_libs),
f"--with-netcdf-incs=-I{spec['netcdf-fortran'].prefix.include}",
f"--with-netcdf-libs=-L{spec['netcdf-fortran'].prefix.lib} "
f"-lnetcdff -lnetcdf {hdf_libs}",
]
)
@@ -66,7 +63,6 @@ def install(self, spec, prefix):
def test_etsf_io_help(self):
"""check etsf_io can execute (--help)"""
path = self.spec["etsf-io"].prefix.bin.etsf_io
etsfio = which(path)
etsfio = which(self.prefix.bin.etsf_io)
out = etsfio("--help", output=str.split, error=str.split)
assert "Usage: etsf_io" in out

View File

@@ -15,8 +15,14 @@ class Expat(AutotoolsPackage, CMakePackage):
url = "https://github.com/libexpat/libexpat/releases/download/R_2_2_9/expat-2.2.9.tar.bz2"
license("MIT")
version("2.6.4", sha256="8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada")
# deprecate all releases before 2.6.4 because of security issues
version("2.7.0", sha256="10f3e94896cd7f44de566cafa2e0e1f35e8df06d119b38d117c0e72d74a4b4b7")
# deprecate all releases before 2.7.0 because of security issues
# CVE-2024-8176 (fixed in 2.7.0)
version(
"2.6.4",
sha256="8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada",
deprecated=True,
)
# CVE-2024-50602 (fixed in 2.6.4)
version(
"2.6.3",

View File

@@ -24,6 +24,7 @@ class Fastjet(AutotoolsPackage):
license("GPL-2.0-only")
version("3.4.3", sha256="cc175471bfab8656b8c6183a8e5e9ad05d5f7506e46f3212a9a8230905b8f6a3")
version("3.4.2", sha256="b3d33155b55ce43f420cd6d99b525acf7bdc2593a7bb7ea898a9ddb3d8ca38e3")
version("3.4.1", sha256="05608c6ff213f06dd9de723813d6b4dccd51e661ac13098f74bfc9eeaf1cb5aa")
version("3.4.0", sha256="ee07c8747c8ead86d88de4a9e4e8d1e9e7d7614973f5631ba8297f7a02478b91")

View File

@@ -55,8 +55,8 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
description="Set Caliper Profiling Detail",
multi=False,
)
variant("kokkos", default=False, description="Enable Kokkos Support", when="@:2.3.1")
variant("openmp", default=False, description="Enable OpenMP Support", when="@:2.3.1")
variant("kokkos", default=False, description="Enable Kokkos Support", when="@:2.3")
variant("openmp", default=False, description="Enable OpenMP Support", when="@:2.3")
depends_on("c", type="build")
depends_on("cxx", type="build")
@@ -67,8 +67,8 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
depends_on("graphviz", when="+graphviz")
depends_on("hdf5+hl+mpi", when="+hdf5")
depends_on("metis@5.1.0:")
depends_on("parmetis@4.0.3:")
depends_on("metis@5.1.0:", when="@:2.3.1")
depends_on("parmetis@4.0.3:", when="@:2.3.1")
depends_on("boost@1.70.0: cxxstd=17 +program_options +stacktrace")
depends_on("cmake@3.15:")
@@ -83,7 +83,7 @@ class Flecsi(CMakePackage, CudaPackage, ROCmPackage):
requires("^kokkos +cuda_constexpr +cuda_lambda", when="^kokkos +cuda")
depends_on("kokkos +rocm", when="+kokkos +rocm")
depends_on("kokkos +openmp", when="+kokkos +openmp")
requires("+openmp", when="@:2.3.1 ^kokkos +openmp")
requires("+openmp", when="@:2.3 ^kokkos +openmp")
depends_on("legion@cr-20210122", when="backend=legion @2.0:2.1.0")
depends_on("legion@cr-20230307", when="backend=legion @2.2.0:2.2.1")
depends_on("legion@24.03.0:", when="backend=legion @2.2.2:")

View File

@@ -16,6 +16,7 @@ class Fleur(Package):
license("MIT")
version("develop", branch="develop")
version("7.2", tag="MaX-R7.2", commit="447eed3b7ec3de5fcdfbd232cd1eda4caefb51d3")
version("5.1", tag="MaX-R5.1", commit="a482abd9511b16412c2222e2ac1b1a303acd454b")
version("5.0", tag="MaX-R5", commit="f2df362c3dad6ef39938807ea14e4ec4cb677723")
version("4.0", tag="MaX-R4", commit="ea0db7877451e6240124e960c5546318c9ab3953")
@@ -53,7 +54,7 @@ class Fleur(Package):
depends_on("lapack")
depends_on("libxml2")
depends_on("mpi", when="+mpi")
depends_on("intel-mkl", when="fft=mkl")
depends_on("intel-oneapi-mkl", when="fft=mkl")
depends_on("fftw-api", when="fft=fftw")
depends_on("scalapack", when="+scalapack")
depends_on("libxc", when="+external_libxc")
@@ -108,9 +109,9 @@ def configure(self):
options["-includedir"].append(join_path(spec["libxml2"].prefix.include, "libxml2"))
if spec.satisfies("fft=mkl"):
options["-link"].append(spec["intel-mkl"].libs.link_flags)
options["-libdir"].append(spec["intel-mkl"].prefix.lib)
options["-includedir"].append(spec["intel-mkl"].prefix.include)
options["-link"].append(spec["intel-oneapi-mkl"].libs.link_flags)
options["-libdir"].append(spec["intel-oneapi-mkl"].prefix.lib)
options["-includedir"].append(spec["intel-oneapi-mkl"].prefix.include)
if spec.satisfies("fft=fftw"):
options["-link"].append(spec["fftw-api"].libs.link_flags)
options["-libdir"].append(spec["fftw-api"].prefix.lib)

View File

@@ -35,13 +35,8 @@ class Freeipmi(AutotoolsPackage):
def configure_args(self):
# FIXME: If root checking of root installation is added fix this:
# Discussed in issue #4432
tty.warn(
"Requires 'root' for bmc-watchdog.service installation to" " /lib/systemd/system/ !"
)
args = [
"--prefix={0}".format(prefix),
"--with-systemdsystemunitdir=" + self.spec["freeipmi"].prefix.lib.systemd.system,
tty.warn("Requires 'root' for bmc-watchdog.service installation to /lib/systemd/system/")
return [
f"--prefix={self.prefix}",
f"--with-systemdsystemunitdir={self.prefix.lib.systemd.system}",
]
return args

View File

@@ -826,18 +826,6 @@ def configure_args(self):
if spec.satisfies("languages=jit"):
options.append("--enable-host-shared")
# Binutils
if spec.satisfies("+binutils"):
binutils = spec["binutils"].prefix.bin
options.extend(
[
"--with-gnu-ld",
"--with-ld=" + binutils.ld,
"--with-gnu-as",
"--with-as=" + binutils.join("as"),
]
)
# enable_bootstrap
if spec.satisfies("+bootstrap"):
options.extend(["--enable-bootstrap"])
@@ -1017,7 +1005,7 @@ def write_specs_file(self):
specs_file = join_path(self.spec_dir, "specs")
with open(specs_file, "w") as f:
# can't extend the builtins without dumping them first
f.write(self.spec["gcc"].command("-dumpspecs", output=str, error=os.devnull).strip())
f.write(self.command("-dumpspecs", output=str, error=os.devnull).strip())
f.write("\n\n# Generated by Spack\n\n")
@@ -1191,7 +1179,7 @@ def _post_buildcache_install_hook(self):
# Setting up the runtime environment shouldn't be necessary here.
relocation_args = []
gcc = self.spec["gcc"].command
gcc = self.command
specs_file = os.path.join(self.spec_dir, "specs")
dryrun = gcc("test.c", "-###", output=os.devnull, error=str).strip()
if not dryrun:

View File

@@ -8,6 +8,7 @@
class Ghost(CMakePackage, CudaPackage):
"""GHOST: a General, Hybrid and Optimized Sparse Toolkit.
This library provides highly optimized building blocks for implementing
sparse iterative eigenvalue and linear solvers multi- and manycore
clusters and on heterogenous CPU/GPU machines. For an iterative solver
@@ -31,8 +32,6 @@ class Ghost(CMakePackage, CudaPackage):
variant("scotch", default=False, description="enable/disable matrix reordering with PT-SCOTCH")
variant("zoltan", default=False, description="enable/disable matrix reordering with Zoltan")
# ###################### Dependencies ##########################
# Everything should be compiled position independent (-fpic)
depends_on("cmake@3.5:", type="build")
depends_on("hwloc")
@@ -44,18 +43,14 @@ class Ghost(CMakePackage, CudaPackage):
conflicts("^hwloc@2:")
def cmake_args(self):
spec = self.spec
# note: we require the cblas_include_dir property from the blas
# provider, this is implemented at least for intel-mkl and
# netlib-lapack
args = [
self.define_from_variant("GHOST_ENABLE_MPI", "mpi"),
self.define_from_variant("GHOST_USE_CUDA", "cuda"),
self.define_from_variant("GHOST_USE_SCOTCH", "scotch"),
self.define_from_variant("GHOST_USE_ZOLTAN", "zoltan"),
self.define_from_variant("BUILD_SHARED_LIBS", "shared"),
"-DCBLAS_INCLUDE_DIR:STRING=%s" % format(spec["blas"].headers.directories[0]),
"-DBLAS_LIBRARIES=%s" % spec["blas:c"].libs.joined(";"),
self.define("CBLAS_INCLUDE_DIR", self.spec["blas"].headers.directories[0]),
self.define("BLAS_LIBRARIES", self.spec["blas:c"].libs.joined(";")),
]
return args

View File

@@ -29,92 +29,111 @@ class Git(AutotoolsPackage):
# Every new git release comes with a corresponding manpage resource:
# https://www.kernel.org/pub/software/scm/git/git-manpages-{version}.tar.gz
# https://mirrors.edge.kernel.org/pub/software/scm/git/sha256sums.asc
version("2.47.0", sha256="a84a7917e0ab608312834413f01fc01edc7844f9f9002ba69f3b4f4bcb8d937a")
version("2.46.2", sha256="65c5689fd44f1d09de7fd8c44de7fef074ddd69dda8b8503d44afb91495ecbce")
version("2.45.2", sha256="98b26090ed667099a3691b93698d1e213e1ded73d36a2fde7e9125fce28ba234")
version("2.44.2", sha256="f0655e81c5ecfeef7440aa4fcffa1c1a77eaccf764d6fe29579e9a06eac2cd04")
version("2.43.5", sha256="324c3b85d668e6afe571b3502035848e4b349dead35188e2b8ab1b96c0cd45ff")
version("2.42.3", sha256="f42a8e8f6c0add4516f9e4607554c8ad698161b7d721b82073fe315a59621961")
version("2.41.2", sha256="481aa0a15aa37802880a6245b96c1570d7337c44700d5d888344cd6d43d85306")
version("2.40.3", sha256="b3dc96b20edcdbe6bea7736ea55bb80babf683d126cc7f353ed4e3bc304cd7da")
version("2.39.5", sha256="ca0ec03fb2696f552f37135a56a0242fa062bd350cb243dc4a15c86f1cafbc99")
version("2.48.1", sha256="51b4d03b1e311ba673591210f94f24a4c5781453e1eb188822e3d9cdc04c2212")
version("2.47.2", sha256="a5d26bf7b01b2f0571b5a99300c256e556bd89b2a03088accf7b81bfa4f8f2fd")
version("2.46.3", sha256="f7ae38b1d2c4724cd9088575da470229b3360903a17b531f2e86967d856ed7ed")
version("2.45.3", sha256="40a2c40323d5077eda1e0353806b102813a23a174d24ff4b5aa7b87ffd3fcb03")
version("2.44.3", sha256="4237c37cdf7b3d38102117b22993b2f761a4c02758dfbe33f7b7423c0b096ca9")
version("2.43.6", sha256="f11f89bb48ecb3e18a2ecfb2a2db5a96fd6115d7e617be04e40020a50b03a038")
version("2.42.4", sha256="886898866d624fce14f470773bc19c671c1c858091afdf5815bf569ae14356b6")
version("2.41.3", sha256="2bf6589869f59b9c06e7b71ff8da3d7bb67b75549ca42c6f0ec81ab5e4570aa8")
version("2.40.4", sha256="796993ef502481acbeb7caa22ffbf5f22daf8b273ab6d8dafc0ed178337d2659")
# Deprecated versions (https://groups.google.com/g/git-packagers/c/zxdH4LPix3U)
with default_args(deprecated=True):
version(
"2.47.0", sha256="a84a7917e0ab608312834413f01fc01edc7844f9f9002ba69f3b4f4bcb8d937a"
)
version(
"2.46.2", sha256="65c5689fd44f1d09de7fd8c44de7fef074ddd69dda8b8503d44afb91495ecbce"
)
version(
"2.45.2", sha256="98b26090ed667099a3691b93698d1e213e1ded73d36a2fde7e9125fce28ba234"
)
version(
"2.44.2", sha256="f0655e81c5ecfeef7440aa4fcffa1c1a77eaccf764d6fe29579e9a06eac2cd04"
)
version(
"2.43.5", sha256="324c3b85d668e6afe571b3502035848e4b349dead35188e2b8ab1b96c0cd45ff"
)
version(
"2.42.3", sha256="f42a8e8f6c0add4516f9e4607554c8ad698161b7d721b82073fe315a59621961"
)
version(
"2.41.2", sha256="481aa0a15aa37802880a6245b96c1570d7337c44700d5d888344cd6d43d85306"
)
version(
"2.40.3", sha256="b3dc96b20edcdbe6bea7736ea55bb80babf683d126cc7f353ed4e3bc304cd7da"
)
version(
"2.39.5", sha256="ca0ec03fb2696f552f37135a56a0242fa062bd350cb243dc4a15c86f1cafbc99"
)
# Deprecated versions (https://groups.google.com/g/git-packagers/c/x6-nKLV20aE)
version(
"2.45.1",
sha256="10acb581993061e616be9c5674469335922025a666318e0748cb8306079fef24",
deprecated=True,
)
version(
"2.44.1",
sha256="118214bb8d7ba971a62741416e757562b8f5451cefc087a407e91857897c92cc",
deprecated=True,
)
version(
"2.43.4",
sha256="bfd717dc31922f718232a25a929d199e26146df5e876fdf0ff90a7cc95fa06e2",
deprecated=True,
)
version(
"2.42.2",
sha256="3b24b712fa6e9a3da5b7d3e68b1854466905aadb93a43088a38816bcc3b9d043",
deprecated=True,
)
version(
"2.41.1",
sha256="06d2a681aa7f1bdb6e7f7101631407e7412faa534e1fa0eb6fdcb9975d867d31",
deprecated=True,
)
version(
"2.40.2",
sha256="1dcdfbb4eeb3ef2c2d9154f888d4a6f0cf19f19acad76f0d32e725e7bc147753",
deprecated=True,
)
version(
"2.39.4",
sha256="b895ed2b5d98fd3dcfde5807f16d5fb17c4f83044e7d08e597ae13de222f0d26",
deprecated=True,
)
with default_args(deprecated=True):
version(
"2.45.1", sha256="10acb581993061e616be9c5674469335922025a666318e0748cb8306079fef24"
)
version(
"2.44.1", sha256="118214bb8d7ba971a62741416e757562b8f5451cefc087a407e91857897c92cc"
)
version(
"2.43.4", sha256="bfd717dc31922f718232a25a929d199e26146df5e876fdf0ff90a7cc95fa06e2"
)
version(
"2.42.2", sha256="3b24b712fa6e9a3da5b7d3e68b1854466905aadb93a43088a38816bcc3b9d043"
)
version(
"2.41.1", sha256="06d2a681aa7f1bdb6e7f7101631407e7412faa534e1fa0eb6fdcb9975d867d31"
)
version(
"2.40.2", sha256="1dcdfbb4eeb3ef2c2d9154f888d4a6f0cf19f19acad76f0d32e725e7bc147753"
)
version(
"2.39.4", sha256="b895ed2b5d98fd3dcfde5807f16d5fb17c4f83044e7d08e597ae13de222f0d26"
)
# Deprecated versions (see https://github.blog/2024-05-14-securing-git-addressing-5-new-vulnerabilities/).
version(
"2.42.0",
sha256="34aedd54210d7216a55d642bbb4cfb22695b7610719a106bf0ddef4c82a8beed",
deprecated=True,
)
version(
"2.41.0",
sha256="c4a6a3dd1827895a80cbd824e14d94811796ae54037549e0da93f7b84cb45b9f",
deprecated=True,
)
version(
"2.40.1",
sha256="55511f10f3b1cdf5db4e0e3dea61819dfb67661b0507a5a2b061c70e4f87e14c",
deprecated=True,
)
version(
"2.39.3",
sha256="2f9aa93c548941cc5aff641cedc24add15b912ad8c9b36ff5a41b1a9dcad783e",
deprecated=True,
)
with default_args(deprecated=True):
version(
"2.42.0", sha256="34aedd54210d7216a55d642bbb4cfb22695b7610719a106bf0ddef4c82a8beed"
)
version(
"2.41.0", sha256="c4a6a3dd1827895a80cbd824e14d94811796ae54037549e0da93f7b84cb45b9f"
)
version(
"2.40.1", sha256="55511f10f3b1cdf5db4e0e3dea61819dfb67661b0507a5a2b061c70e4f87e14c"
)
version(
"2.39.3", sha256="2f9aa93c548941cc5aff641cedc24add15b912ad8c9b36ff5a41b1a9dcad783e"
)
depends_on("c", type="build") # generated
for _version, _sha256_manpage in {
"2.48.1": "88742466926d3d682be5214470ae92b79a68796a9d171d393763a5767de5a581",
"2.47.2": "8a36a81ee3a031acbfc831a0972d849aa8777926a6c49c76141b0e0e4744dcb3",
"2.47.0": "1a6f1e775dfe324a9b521793cbd2b3bba546442cc2ac2106d4df33dea9005038",
"2.46.3": "5744ca6fd3ef39d0390400a47f2d7208668433af3d599cfbec7bb1c7140efe79",
"2.46.2": "4bc3774ee4597098977befa4ec30b0f2cbed3b59b756e7cbb59ce1738682d43a",
"2.45.3": "eae81e0d8b00f19c47d7efecfa04642e06e777dd44e3e87ef2b192ba617cddaa",
"2.45.2": "48c1e2e3ecbb2ce9faa020a19fcdbc6ce64ea25692111b5930686bc0bb4f0e7f",
"2.45.1": "d9098fd93a3c0ef242814fc856a99886ce31dae2ba457afc416ba4e92af8f8f5",
"2.44.3": "0f76464bbf8c0f5ccccfbacbd58d121376ff1e5147c4e0753b1ab1d578b9371e",
"2.44.2": "ee6a7238d5ede18fe21c0cc2131c7fbff1f871c25e2848892ee864d40baf7218",
"2.44.1": "8d80359e44cbcce256c1eb1389cb8e15ccfcd267fbb8df567d5ce19ce006eb42",
"2.43.6": "ce364c74d475d321acc8b710558647ee8177876ee529456bd7f92cbb9f6961d8",
"2.43.5": "df3c3d0f0834959aa33005e6f8134c1e56ab01f34d1497ceb34b2dd8ec7d4de4",
"2.43.4": "99d3a0394a6093237123237fd6c0d3de1041d5ceaedc3bfc016807914275d3e2",
"2.42.4": "6d207f38158d9f01c26feccb99af5a65ed3df20a18451649ce1ee718aabc331d",
"2.42.3": "3c8c55dcbc3f59560c63e6ced400f7251e9a00d876d365cb4fe9be6b3c3e3713",
"2.42.2": "2ddfa2187fdaf9ab2b27c0ab043e46793127c26c82a824ffe980f006be049286",
"2.42.0": "51643c53d70ce15dde83b6da2bad76ba0c7bbcd4f944d7c378f03a15b9f2e1de",
"2.41.3": "4f373c1f3d35e8f22f0920928f3d9968aa99a2a5a2673a8ed9964b96c8ee10bf",
"2.41.2": "a758988c81478a942e1593ecf11568b962506bff1119061bad04bd4149b40c2c",
"2.41.1": "7093ef7dacfa8cdb3c4689d8bc1f06186d9b2420bec49087a3a6a4dee26ddcec",
"2.41.0": "7b77c646b36d33c5c0f62677a147142011093270d6fd628ca38c42d5301f3888",
"2.40.4": "4a03ec30184aa27f5cf4123c532590be42d80e4b4797ad096f00b82109de1486",
"2.40.3": "fa9b837e1e161ebdbbbfde27a883a90fe5f603ce1618086a384bccda59c47de5",
"2.40.2": "2c71f3f3e4801176f97708f2093756bce672ef260c6d95c255046e6727b3a031",
"2.40.1": "6bbde434121bd0bf8aa574c60fd9a162388383679bd5ddd99921505149ffd4c2",

View File

@@ -120,4 +120,4 @@ def setup_dependent_package(self, module, dependent_spec):
install_tree('bin', prefix.bin)
"""
# Add a go command/compiler for extensions
module.go = self.spec["go"].command
module.go = self.command

View File

@@ -2,6 +2,7 @@
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
import re
from spack.package import *
@@ -15,6 +16,10 @@ class Gsl(AutotoolsPackage, GNUMirrorPackage):
homepage = "https://www.gnu.org/software/gsl"
gnu_mirror_path = "gsl/gsl-2.3.tar.gz"
maintainers("cessenat")
tags = ["hpc"]
executables = ["^gsl-config$"]
license("GPL-3.0-or-later")
@@ -70,3 +75,9 @@ def setup_run_environment(self, env):
# cmake looks for GSL_ROOT_DIR to find GSL so this helps pick the spack one
# when there are multiple installations (e.g. a system one and a spack one)
env.set("GSL_ROOT_DIR", self.prefix)
@classmethod
def determine_version(cls, exe):
output = Executable(exe)("--version", output=str, error=str)
match = re.search(r"\s*(\d[\d\.]+)", output)
return match.group(1) if match else None

View File

@@ -588,18 +588,19 @@ def patch(self):
def cmake_args(self):
args = [
# find_package(Clang) and find_package(LLVM) in clr/hipamd/src/hiprtc/CMakeLists.txt
# should find llvm-amdgpu
self.define("LLVM_ROOT", self.spec["llvm-amdgpu"].prefix),
self.define("Clang_ROOT", self.spec["llvm-amdgpu"].prefix),
# Use the new behaviour of the policy CMP0074
# (https://cmake.org/cmake/help/latest/policy/CMP0074.html) which will search
# "prefixes specified by the <PackageName>_ROOT CMake variable".
# From HIP 6.2 onwards the policy is set explicitly by HIP itself:
# https://github.com/ROCm/clr/commit/a2a8dad980b0fa1a6086e0c0f95847ae80f5a2c6.
self.define("CMAKE_POLICY_DEFAULT_CMP0074", "NEW"),
self.define("CMAKE_POLICY_DEFAULT_CMP0074", "NEW")
]
if self.spec.satisfies("+rocm"):
# find_package(Clang) and find_package(LLVM) in clr/hipamd/src/hiprtc/CMakeLists.txt
# should find llvm-amdgpu
args.append(self.define("LLVM_ROOT", self.spec["llvm-amdgpu"].prefix))
args.append(self.define("Clang_ROOT", self.spec["llvm-amdgpu"].prefix))
args.append(self.define("HSA_PATH", self.spec["hsa-rocr-dev"].prefix))
args.append(self.define("HIP_COMPILER", "clang"))
args.append(

View File

@@ -24,11 +24,11 @@ class Hipsycl(CMakePackage, ROCmPackage):
license("BSD-2-Clause")
version("stable", branch="stable", submodules=True)
version("24.10.0", commit="7677cf6eefd8ab46d66168cd07ab042109448124", submodules=True)
version("24.06.0", commit="fc51dae9006d6858fc9c33148cc5f935bb56b075", submodules=True)
version("24.02.0", commit="974adc33ea5a35dd8b5be68c7a744b37482b8b64", submodules=True)
version("23.10.0", commit="3952b468c9da89edad9dff953cdcab0a3c3bf78c", submodules=True)
version("0.9.4", commit="99d9e24d462b35e815e0e59c1b611936c70464ae", submodules=True)
version("0.9.4", commit="99d9e24d462b35e815e0e59c1b611936c70464ae", submodules=True)
version("0.9.3", commit="51507bad524c33afe8b124804091b10fa25618dc", submodules=True)
version("0.9.2", commit="49fd02499841ae884c61c738610e58c27ab51fdb", submodules=True)
version("0.9.1", commit="fe8465cd5399a932f7221343c07c9942b0fe644c", submodules=True)
@@ -44,9 +44,28 @@ class Hipsycl(CMakePackage, ROCmPackage):
depends_on("python@3:")
depends_on("llvm@8: +clang", when="~cuda")
depends_on("llvm@9: +clang", when="+cuda")
# hipSYCL 0.8.0 supported only LLVM 8-10:
# (https://github.com/AdaptiveCpp/AdaptiveCpp/blob/v0.8.0/CMakeLists.txt#L29-L37)
# recent versions support only up to llvm18
# https://github.com/spack/spack/issues/46681
# https://github.com/spack/spack/issues/49506
# The following list was made based on the version tested in adaptivecpp github
depends_on("llvm@14:18", when="@develop")
depends_on("llvm@14:18", when="@stable")
depends_on("llvm@14:18", when="@24.10.0")
depends_on("llvm@14:18", when="@24.06.0")
depends_on("llvm@13:17", when="@24.02.0")
depends_on("llvm@13:17", when="@23.10.0")
depends_on("llvm@11:15", when="@0.9.4")
depends_on("llvm@11:14", when="@0.9.3")
depends_on("llvm@11:13", when="@0.9.2")
depends_on("llvm@11", when="@0.9.1")
# depends_on("llvm@10:11", when="@0.9.0") # missing in releases
depends_on("llvm@8:10", when="@0.8.0")
# https://github.com/spack/spack/issues/45029 and https://github.com/spack/spack/issues/43142
conflicts("^gcc@12", when="@23.10.0")
# https://github.com/OpenSYCL/OpenSYCL/pull/918 was introduced after 0.9.4
@@ -74,8 +93,6 @@ class Hipsycl(CMakePackage, ROCmPackage):
"further info please refer to: "
"https://github.com/illuhad/hipSYCL/blob/master/doc/install-cuda.md",
)
# https://github.com/spack/spack/issues/46681
conflicts("^llvm@19", when="@24.02.0:24.06.0")
def cmake_args(self):
spec = self.spec

View File

@@ -25,7 +25,7 @@ class Hiptt(MakefilePackage, ROCmPackage):
# To enable this package add it to the LD_LIBRARY_PATH
def setup_dependent_build_environment(self, env, dependent_spec):
hiptt_home = self.spec["hiptt"].prefix
hiptt_home = self.prefix
env.prepend_path("cuTT_ROOT", hiptt_home)
env.prepend_path("cuTT_LIBRARY", hiptt_home.lib)
env.prepend_path("cuTT_INCLUDE_PATH", hiptt_home.include)

View File

@@ -100,7 +100,7 @@ def check_install(self):
prefixes = ";".join(
[
self.spec["libdrm"].prefix,
self.spec["hsakmt-roct"].prefix,
self.prefix,
self.spec["numactl"].prefix,
self.spec["pkgconfig"].prefix,
self.spec["llvm-amdgpu"].prefix,
@@ -108,7 +108,7 @@ def check_install(self):
self.spec["ncurses"].prefix,
]
)
hsakmt_path = ";".join([self.spec["hsakmt-roct"].prefix])
hsakmt_path = ";".join([self.prefix])
cc_options = [
"-DCMAKE_PREFIX_PATH=" + prefixes,
"-DLIBHSAKMT_PATH=" + hsakmt_path,

View File

@@ -36,7 +36,7 @@ def configure_args(self):
@run_after("install")
@on_package_attributes(run_tests=True)
def install_test(self):
jq = self.spec["jq"].command
jq = self.command
f = os.path.join(os.path.dirname(__file__), "input.json")
assert jq(".bar", input=f, output=str) == "2\n"

View File

@@ -23,6 +23,7 @@ class Justbuild(Package):
license("Apache-2.0")
version("master", branch="master")
version("1.5.0", tag="v1.5.0", commit="21d9afbfb744596f0e7646c386870e78dbeab922")
version("1.4.3", tag="v1.4.3", commit="dfbfdc230805a7c92baa7e49d82edc2816e00511")
version("1.4.2", tag="v1.4.2", commit="7fd5d41bc219acf0d15da5dfc75d8dd4a6c53ba3")
version("1.4.1", tag="v1.4.1", commit="2dc306f510c7ba0661d95bd75305f7deb5eb54b2")

View File

@@ -33,5 +33,4 @@ class Keepalived(AutotoolsPackage):
depends_on("openssl")
def configure_args(self):
args = ["--with-systemdsystemunitdir=" + self.spec["keepalived"].prefix.lib.systemd.system]
return args
return [f"--with-systemdsystemunitdir={self.prefix.lib.systemd.system}"]

View File

@@ -34,9 +34,5 @@ def autoreconf(self, spec, prefix):
bash("autogen.sh")
def configure_args(self):
args = [
"--disable-manpages",
"--with-bashcompletiondir="
+ join_path(self.spec["kmod"].prefix, "share", "bash-completion", "completions"),
]
return args
completions = join_path(self.prefix, "share", "bash-completion", "completions")
return ["--disable-manpages", f"--with-bashcompletiondir={completions}"]

View File

@@ -11,20 +11,68 @@ class Kubectl(GoPackage):
"""
homepage = "https://kubernetes.io"
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.0.tar.gz"
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.32.2.tar.gz"
maintainers("alecbcs")
license("Apache-2.0")
version("1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08")
version("1.31.1", sha256="83094915698a9c24f93d1ffda3f17804a4024d3b65eabf681e77a62b35137208")
version("1.31.0", sha256="6679eb90815cc4c3bef6c1b93f7a8451bf3f40d003f45ab57fdc9f8c4e8d4b4f")
version("1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f")
version("1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323")
version("1.32.3", sha256="b1ed5abe78a626804aadc49ecb8ade6fd33b27ab8c23d43cd59dc86f6462ac09")
version("1.31.7", sha256="92005ebd010a8d4fe3a532444c4645840e0af486062611a4d9c8d862414c3f56")
version("1.30.11", sha256="f30e4082b6a554d4a2bfedd8b2308a5e6012287e15bec94f72987f717bab4133")
depends_on("bash", type="build")
depends_on("go@1.22:", type="build", when="@1.30:")
depends_on("go@1.23:", type="build", when="@1.32:")
with default_args(deprecated=True):
version(
"1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08"
)
version(
"1.31.1", sha256="83094915698a9c24f93d1ffda3f17804a4024d3b65eabf681e77a62b35137208"
)
version(
"1.31.0", sha256="6679eb90815cc4c3bef6c1b93f7a8451bf3f40d003f45ab57fdc9f8c4e8d4b4f"
)
version(
"1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f"
)
version(
"1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323"
)
with default_args(type="build"):
depends_on("bash")
depends_on("go@1.23:", when="@1.32:")
depends_on("go@1.22:", when="@1.30:")
depends_on("go@1.21:", when="@1.29:")
depends_on("go@1.20:", when="@1.27:")
build_directory = "cmd/kubectl"
# Required to correctly set the version
# Method discovered by following the trail below
#
# 1. https://github.com/kubernetes/kubernetes/blob/v1.32.2/Makefile#L1
# 2. https://github.com/kubernetes/kubernetes/blob/v1.32.2/build/root/Makefile#L97
# 3. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/make-rules/build.sh#L25
# 4. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/lib/init.sh#L61
# 5. https://github.com/kubernetes/kubernetes/blob/v1.32.2/hack/lib/version.sh#L151-L183
@property
def build_args(self):
kube_ldflags = [
f"-X 'k8s.io/client-go/pkg/version.gitVersion=v{self.version}'",
f"-X 'k8s.io/client-go/pkg/version.gitMajor={self.version.up_to(1)}'",
f"-X 'k8s.io/client-go/pkg/version.gitMinor={str(self.version).split('.')[1]}'",
f"-X 'k8s.io/component-base/version.gitVersion=v{self.version}'",
f"-X 'k8s.io/component-base/version.gitMajor={self.version.up_to(1)}'",
f"-X 'k8s.io/component-base/version.gitMinor={str(self.version).split('.')[1]}'",
]
args = super().build_args
if "-ldflags" in args:
ldflags_index = args.index("-ldflags") + 1
args[ldflags_index] = args[ldflags_index] + " " + " ".join(kube_ldflags)
else:
args.extend(["-ldflags", " ".join(kube_ldflags)])
return args

View File

@@ -11,23 +11,40 @@ class Kubernetes(Package):
for deployment, maintenance, and scaling of applications."""
homepage = "https://kubernetes.io"
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.27.0.tar.gz"
url = "https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.32.2.tar.gz"
maintainers("alecbcs")
license("Apache-2.0")
version("1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08")
version("1.27.2", sha256="c6fcfddd38f877ce49c49318973496f9a16672e83a29874a921242950cd1c5d2")
version("1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f")
version("1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323")
version("1.32.3", sha256="b1ed5abe78a626804aadc49ecb8ade6fd33b27ab8c23d43cd59dc86f6462ac09")
version("1.31.7", sha256="92005ebd010a8d4fe3a532444c4645840e0af486062611a4d9c8d862414c3f56")
version("1.30.11", sha256="f30e4082b6a554d4a2bfedd8b2308a5e6012287e15bec94f72987f717bab4133")
with default_args(deprecated=True):
version(
"1.32.0", sha256="3793859c53f09ebc92e013ea858b8916cc19d7fe288ec95882dada4e5a075d08"
)
version(
"1.27.2", sha256="c6fcfddd38f877ce49c49318973496f9a16672e83a29874a921242950cd1c5d2"
)
version(
"1.27.1", sha256="3a3f7c6b8cf1d9f03aa67ba2f04669772b1205b89826859f1636062d5f8bec3f"
)
version(
"1.27.0", sha256="536025dba2714ee5e940bb0a6b1df9ca97c244fa5b00236e012776a69121c323"
)
depends_on("c", type="build")
depends_on("bash", type="build")
depends_on("go", type="build")
depends_on("go@1.23:", type="build", when="@1.32:")
depends_on("gmake", type="build")
with default_args(type="build"):
depends_on("bash")
depends_on("gmake")
depends_on("go@1.23:", when="@1.32:")
depends_on("go@1.22:", when="@1.30:")
depends_on("go@1.21:", when="@1.29:")
depends_on("go@1.20:", when="@1.27:")
phases = ["build", "install"]

View File

@@ -9,7 +9,7 @@ class Lfortran(CMakePackage):
"""Modern interactive LLVM-based Fortran compiler"""
homepage = "https://lfortran.org"
url = "https://lfortran.github.io/tarballs/release/lfortran-0.19.0.tar.gz"
url = "https://github.com/lfortran/lfortran/releases/download/v0.49.0/lfortran-0.49.0.tar.gz"
git = "https://github.com/lfortran/lfortran.git"
maintainers("certik")
@@ -17,8 +17,13 @@ class Lfortran(CMakePackage):
# The build process uses 'git describe --tags' to get the package version
version("main", branch="main", get_full_repo=True)
version("0.49.0", sha256="a9225fd33d34ce786f72a964a1179579caff62dd176a6a1477d2594fecdc7cd6")
version("0.30.0", sha256="aafdfbfe81d69ceb3650ae1cf9bcd8a1f1532d895bf88f3071fe9610859bcd6f")
version("0.19.0", sha256="d496f61d7133b624deb3562677c0cbf98e747262babd4ac010dbd3ab4303d805")
version(
"0.19.0",
sha256="d496f61d7133b624deb3562677c0cbf98e747262babd4ac010dbd3ab4303d805",
url="https://lfortran.github.io/tarballs/release/lfortran-0.19.0.tar.gz",
)
depends_on("c", type="build") # generated
depends_on("cxx", type="build") # generated
@@ -30,7 +35,8 @@ class Lfortran(CMakePackage):
depends_on("python@3:", type="build", when="@main")
depends_on("cmake", type="build")
depends_on("llvm@11:15", type=("build", "run"), when="@0.19.0+llvm")
depends_on("llvm@11:16", type=("build", "run"), when="@0.30.0:+llvm")
depends_on("llvm@11:16", type=("build", "run"), when="@0.30.0+llvm")
depends_on("llvm@11:", type=("build", "run"), when="+llvm")
depends_on("zlib-api")
depends_on("re2c", type="build", when="@main")
depends_on("bison@:3.4", type="build", when="@main")

View File

@@ -176,15 +176,13 @@ def setup_build_environment(self, env):
# To enable this package add it to the LD_LIBRARY_PATH
def setup_run_environment(self, env):
libfabric_home = self.spec["libfabric"].prefix
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib)
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib64)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64)
# To enable this package add it to the LD_LIBRARY_PATH
def setup_dependent_run_environment(self, env, dependent_spec):
libfabric_home = self.spec["libfabric"].prefix
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib)
env.prepend_path("LD_LIBRARY_PATH", libfabric_home.lib64)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib64)
@when("@main")
def autoreconf(self, spec, prefix):

View File

@@ -0,0 +1,635 @@
diff --git a/include/fuse_kernel.h b/include/fuse_kernel.h
index c632b58..c0ef981 100644
--- a/include/fuse_kernel.h
+++ b/include/fuse_kernel.h
@@ -88,12 +88,11 @@
#ifndef _LINUX_FUSE_H
#define _LINUX_FUSE_H
-#include <sys/types.h>
-#define __u64 uint64_t
-#define __s64 int64_t
-#define __u32 uint32_t
-#define __s32 int32_t
-#define __u16 uint16_t
+#ifdef __KERNEL__
+#include <linux/types.h>
+#else
+#include <stdint.h>
+#endif
/*
* Version negotiation:
@@ -128,42 +127,42 @@
userspace works under 64bit kernels */
struct fuse_attr {
- __u64 ino;
- __u64 size;
- __u64 blocks;
- __u64 atime;
- __u64 mtime;
- __u64 ctime;
- __u32 atimensec;
- __u32 mtimensec;
- __u32 ctimensec;
- __u32 mode;
- __u32 nlink;
- __u32 uid;
- __u32 gid;
- __u32 rdev;
- __u32 blksize;
- __u32 padding;
+ uint64_t ino;
+ uint64_t size;
+ uint64_t blocks;
+ uint64_t atime;
+ uint64_t mtime;
+ uint64_t ctime;
+ uint32_t atimensec;
+ uint32_t mtimensec;
+ uint32_t ctimensec;
+ uint32_t mode;
+ uint32_t nlink;
+ uint32_t uid;
+ uint32_t gid;
+ uint32_t rdev;
+ uint32_t blksize;
+ uint32_t padding;
};
struct fuse_kstatfs {
- __u64 blocks;
- __u64 bfree;
- __u64 bavail;
- __u64 files;
- __u64 ffree;
- __u32 bsize;
- __u32 namelen;
- __u32 frsize;
- __u32 padding;
- __u32 spare[6];
+ uint64_t blocks;
+ uint64_t bfree;
+ uint64_t bavail;
+ uint64_t files;
+ uint64_t ffree;
+ uint32_t bsize;
+ uint32_t namelen;
+ uint32_t frsize;
+ uint32_t padding;
+ uint32_t spare[6];
};
struct fuse_file_lock {
- __u64 start;
- __u64 end;
- __u32 type;
- __u32 pid; /* tgid */
+ uint64_t start;
+ uint64_t end;
+ uint32_t type;
+ uint32_t pid; /* tgid */
};
/**
@@ -334,143 +333,143 @@ enum fuse_notify_code {
#define FUSE_COMPAT_ENTRY_OUT_SIZE 120
struct fuse_entry_out {
- __u64 nodeid; /* Inode ID */
- __u64 generation; /* Inode generation: nodeid:gen must
+ uint64_t nodeid; /* Inode ID */
+ uint64_t generation; /* Inode generation: nodeid:gen must
be unique for the fs's lifetime */
- __u64 entry_valid; /* Cache timeout for the name */
- __u64 attr_valid; /* Cache timeout for the attributes */
- __u32 entry_valid_nsec;
- __u32 attr_valid_nsec;
+ uint64_t entry_valid; /* Cache timeout for the name */
+ uint64_t attr_valid; /* Cache timeout for the attributes */
+ uint32_t entry_valid_nsec;
+ uint32_t attr_valid_nsec;
struct fuse_attr attr;
};
struct fuse_forget_in {
- __u64 nlookup;
+ uint64_t nlookup;
};
struct fuse_forget_one {
- __u64 nodeid;
- __u64 nlookup;
+ uint64_t nodeid;
+ uint64_t nlookup;
};
struct fuse_batch_forget_in {
- __u32 count;
- __u32 dummy;
+ uint32_t count;
+ uint32_t dummy;
};
struct fuse_getattr_in {
- __u32 getattr_flags;
- __u32 dummy;
- __u64 fh;
+ uint32_t getattr_flags;
+ uint32_t dummy;
+ uint64_t fh;
};
#define FUSE_COMPAT_ATTR_OUT_SIZE 96
struct fuse_attr_out {
- __u64 attr_valid; /* Cache timeout for the attributes */
- __u32 attr_valid_nsec;
- __u32 dummy;
+ uint64_t attr_valid; /* Cache timeout for the attributes */
+ uint32_t attr_valid_nsec;
+ uint32_t dummy;
struct fuse_attr attr;
};
#define FUSE_COMPAT_MKNOD_IN_SIZE 8
struct fuse_mknod_in {
- __u32 mode;
- __u32 rdev;
- __u32 umask;
- __u32 padding;
+ uint32_t mode;
+ uint32_t rdev;
+ uint32_t umask;
+ uint32_t padding;
};
struct fuse_mkdir_in {
- __u32 mode;
- __u32 umask;
+ uint32_t mode;
+ uint32_t umask;
};
struct fuse_rename_in {
- __u64 newdir;
+ uint64_t newdir;
};
struct fuse_link_in {
- __u64 oldnodeid;
+ uint64_t oldnodeid;
};
struct fuse_setattr_in {
- __u32 valid;
- __u32 padding;
- __u64 fh;
- __u64 size;
- __u64 lock_owner;
- __u64 atime;
- __u64 mtime;
- __u64 unused2;
- __u32 atimensec;
- __u32 mtimensec;
- __u32 unused3;
- __u32 mode;
- __u32 unused4;
- __u32 uid;
- __u32 gid;
- __u32 unused5;
+ uint32_t valid;
+ uint32_t padding;
+ uint64_t fh;
+ uint64_t size;
+ uint64_t lock_owner;
+ uint64_t atime;
+ uint64_t mtime;
+ uint64_t unused2;
+ uint32_t atimensec;
+ uint32_t mtimensec;
+ uint32_t unused3;
+ uint32_t mode;
+ uint32_t unused4;
+ uint32_t uid;
+ uint32_t gid;
+ uint32_t unused5;
};
struct fuse_open_in {
- __u32 flags;
- __u32 unused;
+ uint32_t flags;
+ uint32_t unused;
};
struct fuse_create_in {
- __u32 flags;
- __u32 mode;
- __u32 umask;
- __u32 padding;
+ uint32_t flags;
+ uint32_t mode;
+ uint32_t umask;
+ uint32_t padding;
};
struct fuse_open_out {
- __u64 fh;
- __u32 open_flags;
- __u32 padding;
+ uint64_t fh;
+ uint32_t open_flags;
+ uint32_t padding;
};
struct fuse_release_in {
- __u64 fh;
- __u32 flags;
- __u32 release_flags;
- __u64 lock_owner;
+ uint64_t fh;
+ uint32_t flags;
+ uint32_t release_flags;
+ uint64_t lock_owner;
};
struct fuse_flush_in {
- __u64 fh;
- __u32 unused;
- __u32 padding;
- __u64 lock_owner;
+ uint64_t fh;
+ uint32_t unused;
+ uint32_t padding;
+ uint64_t lock_owner;
};
struct fuse_read_in {
- __u64 fh;
- __u64 offset;
- __u32 size;
- __u32 read_flags;
- __u64 lock_owner;
- __u32 flags;
- __u32 padding;
+ uint64_t fh;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t read_flags;
+ uint64_t lock_owner;
+ uint32_t flags;
+ uint32_t padding;
};
#define FUSE_COMPAT_WRITE_IN_SIZE 24
struct fuse_write_in {
- __u64 fh;
- __u64 offset;
- __u32 size;
- __u32 write_flags;
- __u64 lock_owner;
- __u32 flags;
- __u32 padding;
+ uint64_t fh;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t write_flags;
+ uint64_t lock_owner;
+ uint32_t flags;
+ uint32_t padding;
};
struct fuse_write_out {
- __u32 size;
- __u32 padding;
+ uint32_t size;
+ uint32_t padding;
};
#define FUSE_COMPAT_STATFS_SIZE 48
@@ -480,32 +479,32 @@ struct fuse_statfs_out {
};
struct fuse_fsync_in {
- __u64 fh;
- __u32 fsync_flags;
- __u32 padding;
+ uint64_t fh;
+ uint32_t fsync_flags;
+ uint32_t padding;
};
struct fuse_setxattr_in {
- __u32 size;
- __u32 flags;
+ uint32_t size;
+ uint32_t flags;
};
struct fuse_getxattr_in {
- __u32 size;
- __u32 padding;
+ uint32_t size;
+ uint32_t padding;
};
struct fuse_getxattr_out {
- __u32 size;
- __u32 padding;
+ uint32_t size;
+ uint32_t padding;
};
struct fuse_lk_in {
- __u64 fh;
- __u64 owner;
+ uint64_t fh;
+ uint64_t owner;
struct fuse_file_lock lk;
- __u32 lk_flags;
- __u32 padding;
+ uint32_t lk_flags;
+ uint32_t padding;
};
struct fuse_lk_out {
@@ -513,179 +512,179 @@ struct fuse_lk_out {
};
struct fuse_access_in {
- __u32 mask;
- __u32 padding;
+ uint32_t mask;
+ uint32_t padding;
};
struct fuse_init_in {
- __u32 major;
- __u32 minor;
- __u32 max_readahead;
- __u32 flags;
+ uint32_t major;
+ uint32_t minor;
+ uint32_t max_readahead;
+ uint32_t flags;
};
struct fuse_init_out {
- __u32 major;
- __u32 minor;
- __u32 max_readahead;
- __u32 flags;
- __u16 max_background;
- __u16 congestion_threshold;
- __u32 max_write;
+ uint32_t major;
+ uint32_t minor;
+ uint32_t max_readahead;
+ uint32_t flags;
+ uint16_t max_background;
+ uint16_t congestion_threshold;
+ uint32_t max_write;
};
#define CUSE_INIT_INFO_MAX 4096
struct cuse_init_in {
- __u32 major;
- __u32 minor;
- __u32 unused;
- __u32 flags;
+ uint32_t major;
+ uint32_t minor;
+ uint32_t unused;
+ uint32_t flags;
};
struct cuse_init_out {
- __u32 major;
- __u32 minor;
- __u32 unused;
- __u32 flags;
- __u32 max_read;
- __u32 max_write;
- __u32 dev_major; /* chardev major */
- __u32 dev_minor; /* chardev minor */
- __u32 spare[10];
+ uint32_t major;
+ uint32_t minor;
+ uint32_t unused;
+ uint32_t flags;
+ uint32_t max_read;
+ uint32_t max_write;
+ uint32_t dev_major; /* chardev major */
+ uint32_t dev_minor; /* chardev minor */
+ uint32_t spare[10];
};
struct fuse_interrupt_in {
- __u64 unique;
+ uint64_t unique;
};
struct fuse_bmap_in {
- __u64 block;
- __u32 blocksize;
- __u32 padding;
+ uint64_t block;
+ uint32_t blocksize;
+ uint32_t padding;
};
struct fuse_bmap_out {
- __u64 block;
+ uint64_t block;
};
struct fuse_ioctl_in {
- __u64 fh;
- __u32 flags;
- __u32 cmd;
- __u64 arg;
- __u32 in_size;
- __u32 out_size;
+ uint64_t fh;
+ uint32_t flags;
+ uint32_t cmd;
+ uint64_t arg;
+ uint32_t in_size;
+ uint32_t out_size;
};
struct fuse_ioctl_iovec {
- __u64 base;
- __u64 len;
+ uint64_t base;
+ uint64_t len;
};
struct fuse_ioctl_out {
- __s32 result;
- __u32 flags;
- __u32 in_iovs;
- __u32 out_iovs;
+ int32_t result;
+ uint32_t flags;
+ uint32_t in_iovs;
+ uint32_t out_iovs;
};
struct fuse_poll_in {
- __u64 fh;
- __u64 kh;
- __u32 flags;
- __u32 padding;
+ uint64_t fh;
+ uint64_t kh;
+ uint32_t flags;
+ uint32_t padding;
};
struct fuse_poll_out {
- __u32 revents;
- __u32 padding;
+ uint32_t revents;
+ uint32_t padding;
};
struct fuse_notify_poll_wakeup_out {
- __u64 kh;
+ uint64_t kh;
};
struct fuse_fallocate_in {
- __u64 fh;
- __u64 offset;
- __u64 length;
- __u32 mode;
- __u32 padding;
+ uint64_t fh;
+ uint64_t offset;
+ uint64_t length;
+ uint32_t mode;
+ uint32_t padding;
};
struct fuse_in_header {
- __u32 len;
- __u32 opcode;
- __u64 unique;
- __u64 nodeid;
- __u32 uid;
- __u32 gid;
- __u32 pid;
- __u32 padding;
+ uint32_t len;
+ uint32_t opcode;
+ uint64_t unique;
+ uint64_t nodeid;
+ uint32_t uid;
+ uint32_t gid;
+ uint32_t pid;
+ uint32_t padding;
};
struct fuse_out_header {
- __u32 len;
- __s32 error;
- __u64 unique;
+ uint32_t len;
+ int32_t error;
+ uint64_t unique;
};
struct fuse_dirent {
- __u64 ino;
- __u64 off;
- __u32 namelen;
- __u32 type;
+ uint64_t ino;
+ uint64_t off;
+ uint32_t namelen;
+ uint32_t type;
char name[];
};
#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name)
-#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(__u64) - 1) & ~(sizeof(__u64) - 1))
+#define FUSE_DIRENT_ALIGN(x) (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1))
#define FUSE_DIRENT_SIZE(d) \
FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen)
struct fuse_notify_inval_inode_out {
- __u64 ino;
- __s64 off;
- __s64 len;
+ uint64_t ino;
+ int64_t off;
+ int64_t len;
};
struct fuse_notify_inval_entry_out {
- __u64 parent;
- __u32 namelen;
- __u32 padding;
+ uint64_t parent;
+ uint32_t namelen;
+ uint32_t padding;
};
struct fuse_notify_delete_out {
- __u64 parent;
- __u64 child;
- __u32 namelen;
- __u32 padding;
+ uint64_t parent;
+ uint64_t child;
+ uint32_t namelen;
+ uint32_t padding;
};
struct fuse_notify_store_out {
- __u64 nodeid;
- __u64 offset;
- __u32 size;
- __u32 padding;
+ uint64_t nodeid;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t padding;
};
struct fuse_notify_retrieve_out {
- __u64 notify_unique;
- __u64 nodeid;
- __u64 offset;
- __u32 size;
- __u32 padding;
+ uint64_t notify_unique;
+ uint64_t nodeid;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t padding;
};
/* Matches the size of fuse_write_in */
struct fuse_notify_retrieve_in {
- __u64 dummy1;
- __u64 offset;
- __u32 size;
- __u32 dummy2;
- __u64 dummy3;
- __u64 dummy4;
+ uint64_t dummy1;
+ uint64_t offset;
+ uint32_t size;
+ uint32_t dummy2;
+ uint64_t dummy3;
+ uint64_t dummy4;
};
#endif /* _LINUX_FUSE_H */

View File

@@ -94,6 +94,13 @@ def url_for_version(self, version):
sha256="94d5c6d9785471147506851b023cb111ef2081d1c0e695728037bbf4f64ce30a",
when="@:2",
)
# fixed in v3.x, but some packages still require v2.x
# backport of https://github.com/libfuse/libfuse/commit/6b02a7082ae4c560427ff95b51aa8930bb4a6e1f
patch(
"fix_aarch64_compile.patch",
sha256="6ced88c987543d8e62614fa9bd796e7ede7238d55cc50910ece4355c9c4e57d6",
when="@:2 target=aarch64:",
)
executables = ["^fusermount3?$"]

View File

@@ -14,11 +14,13 @@ class Libgtop(AutotoolsPackage):
license("GPLv2", checked_by="teaguesterling")
version("2.41.3", sha256="775676df958e2ea2452f7568f28b2ea581063d312773dd5c0b7624c1b9b2da8c")
version("2.41.2", sha256="d9026cd8a48d27cdffd332f8d60a92764b56424e522c420cd13a01f40daf92c3")
version("2.41.1", sha256="43ea9ad13f7caf98303e64172b191be9b96bab340b019deeec72251ee140fe3b")
version("2.41.2", sha256="d9026cd8a48d27cdffd332f8d60a92764b56424e522c420cd13a01f40daf92c3")
version("2.41.1", sha256="43ea9ad13f7caf98303e64172b191be9b96bab340b019deeec72251ee140fe3b")
depends_on("c", type="build") # generated
depends_on("pkgconfig", type="build")
with default_args(type=("build", "link", "run")):
depends_on("glib@2.65:", when="@2.40:")

View File

@@ -50,7 +50,7 @@ class Libunwind(AutotoolsPackage):
variant(
"components",
values=any_combination_of("coredump", "ptrace", "setjump"),
values=any_combination_of("coredump", "ptrace", "setjmp"),
description="Build specified libunwind libraries",
)

View File

@@ -308,15 +308,13 @@ def cmake_args(self):
# Make sure that the compiler paths are in the LD_LIBRARY_PATH
def setup_run_environment(self, env):
llvm_amdgpu_home = self.spec["llvm-amdgpu"].prefix
env.prepend_path("LD_LIBRARY_PATH", llvm_amdgpu_home + "/lib")
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
# Make sure that the compiler paths are in the LD_LIBRARY_PATH
def setup_dependent_run_environment(self, env, dependent_spec):
llvm_amdgpu_home = self.spec["llvm-amdgpu"].prefix
env.prepend_path("LD_LIBRARY_PATH", llvm_amdgpu_home + "/lib")
env.prepend_path("LD_LIBRARY_PATH", self.prefix.lib)
# Required for enabling asan on dependent packages
for root, _, files in os.walk(self.spec["llvm-amdgpu"].prefix):
for root, _, files in os.walk(self.prefix):
if "libclang_rt.asan-x86_64.so" in files:
env.prepend_path("LD_LIBRARY_PATH", root)
env.prune_duplicate_paths("LD_LIBRARY_PATH")
@@ -339,7 +337,7 @@ def post_install(self):
# Required for enabling asan on dependent packages
def setup_dependent_build_environment(self, env, dependent_spec):
for root, _, files in os.walk(self.spec["llvm-amdgpu"].prefix):
for root, _, files in os.walk(self.prefix):
if "libclang_rt.asan-x86_64.so" in files:
env.prepend_path("LD_LIBRARY_PATH", root)
env.prune_duplicate_paths("LD_LIBRARY_PATH")

View File

@@ -36,8 +36,4 @@ class Lxc(AutotoolsPackage):
depends_on("m4", type="build")
def configure_args(self):
args = [
"bashcompdir="
+ join_path(self.spec["lxc"].prefix, "share", "bash-completion", "completions")
]
return args
return [f"bashcompdir={join_path(self.prefix, 'share', 'bash-completion', 'completions')}"]

View File

@@ -27,5 +27,4 @@ class Moosefs(AutotoolsPackage):
depends_on("c", type="build") # generated
def configure_args(self):
args = ["--with-systemdsystemunitdir=" + self.spec["moosefs"].prefix.lib.systemd.system]
return args
return [f"--with-systemdsystemunitdir={self.prefix.lib.systemd.system}"]

View File

@@ -77,6 +77,7 @@ class Mpich(MpichEnvironmentModifications, AutotoolsPackage, CudaPackage, ROCmPa
license("mpich2")
version("develop", submodules=True)
version("4.3.0", sha256="5e04132984ad83cab9cc53f76072d2b5ef5a6d24b0a9ff9047a8ff96121bcc63")
version("4.2.3", sha256="7a019180c51d1738ad9c5d8d452314de65e828ee240bcb2d1f80de9a65be88a8")
version("4.2.2", sha256="883f5bb3aeabf627cb8492ca02a03b191d09836bbe0f599d8508351179781d41")
version("4.2.1", sha256="23331b2299f287c3419727edc2df8922d7e7abbb9fd0ac74e03b9966f9ad42d7")

View File

@@ -26,6 +26,7 @@ class Mvapich(MpichEnvironmentModifications, AutotoolsPackage):
license("Unlicense")
# Prefer the latest stable release
version("4.0", sha256="c532f7bdd5cca71f78c12e0885c492f6e276e283711806c84d0b0f80bb3e3b74")
version("3.0", sha256="ee076c4e672d18d6bf8dd2250e4a91fa96aac1db2c788e4572b5513d86936efb")
depends_on("c", type="build")
@@ -67,8 +68,8 @@ class Mvapich(MpichEnvironmentModifications, AutotoolsPackage):
variant(
"pmi_version",
description="Which pmi version to be used. If using pmi2 add it to your CFLAGS",
default="simple",
values=("simple", "pmi2", "pmix"),
default="none",
values=("none", "pmi1", "pmi2", "pmix"),
multi=False,
)
@@ -163,7 +164,6 @@ def process_manager_options(self):
if "process_managers=slurm" in spec:
opts = [
"--with-pm=slurm",
"--with-pmi=simple",
"--with-slurm={0}".format(spec["slurm"].prefix),
"CFLAGS=-I{0}/include/slurm".format(spec["slurm"].prefix),
]
@@ -231,7 +231,8 @@ def configure_args(self):
]
args.extend(self.enable_or_disable("alloca"))
args.append("--with-pmi=" + spec.variants["pmi_version"].value)
if not spec.satisfies("pmi_version=none"):
args.append("--with-pmi=" + spec.variants["pmi_version"].value)
if "pmi_version=pmix" in spec:
args.append("--with-pmix={0}".format(spec["pmix"].prefix))

View File

@@ -0,0 +1,69 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class NvplScalapack(Package):
"""NVPL ScaLAPACK (NVIDIA Performance Libraries ScaLAPACK)."""
homepage = "https://docs.nvidia.com/nvpl/latest/scalapack/index.html"
url = (
"https://developer.download.nvidia.com/compute/nvpl/redist/nvpl_scalapack/"
"linux-sbsa/nvpl_scalapack-linux-sbsa-0.2.1-archive.tar.xz"
)
maintainers("RMeli")
version("0.2.1", sha256="dada4d1ecf044d90609b9e62750b383d11be9b22c87e109414bcc07dce3c83c9")
provides("scalapack")
variant("ilp64", default=False, description="Force 64-bit Fortran native integers")
depends_on("nvpl-blas +ilp64", when="+ilp64")
depends_on("nvpl-blas ~ilp64", when="~ilp64")
depends_on("nvpl-lapack +ilp64", when="+ilp64")
depends_on("nvpl-lapack ~ilp64", when="~ilp64")
depends_on("mpi")
requires("target=armv8.2a:", msg="Any CPU with Arm-v8.2a+ microarch")
conflicts("%gcc@:7")
conflicts("%clang@:13")
def url_for_version(self, version):
"""Spack can't detect the version in the URL above"""
url = "https://developer.download.nvidia.com/compute/nvpl/redist/nvpl_scalapack/linux-sbsa/nvpl_scalapack-linux-sbsa-{0}-archive.tar.xz"
return url.format(version)
@property
def scalapack_headers(self):
return find_all_headers(self.spec.prefix.include)
@property
def scalapack_libs(self):
spec = self.spec
int_type = "ilp64" if spec.satisfies("+ilp64") else "lp64"
if any(
spec.satisfies(f"^[virtuals=mpi] {mpi_library}")
for mpi_library in ["mpich", "cray-mpich", "mvapich", "mvapich2"]
):
mpi_type = "mpich"
elif spec.satisfies("^[virtuals=mpi] openmpi"):
mpi_type = "openmpi" + spec["openmpi"].version.up_to(1)
else:
raise InstallError(
f"Unsupported MPI library {spec['mpi']}.\n"
"Add support to the Spack package, if needed."
)
name = [f"libnvpl_blacs_{int_type}_{mpi_type}", f"libnvpl_scalapack_{int_type}"]
return find_libraries(name, spec.prefix.lib, shared=True, recursive=True)
def install(self, spec, prefix):
install_tree(".", prefix)

View File

@@ -265,6 +265,8 @@ class Openfoam(Package):
version("develop", branch="develop", submodules="True")
version("master", branch="master", submodules="True")
version("2412", sha256="c353930105c39b75dac7fa7cfbfc346390caa633a868130fd8c9816ef5f732cd")
version("2406", sha256="8d1450fb89eec1e7cecc55c3bb7bc486ccbf63d069379d1d5d7518fa16a4686a")
version("2312", sha256="f113183a4d027c93939212af8967053c5f8fe76fb62e5848cb11bbcf8e829552")
version("2306", sha256="d7fba773658c0f06ad17f90199565f32e9bf502b7bb03077503642064e1f5344")
version(
@@ -379,6 +381,9 @@ class Openfoam(Package):
depends_on("flex@:2.6.1,2.6.4:")
depends_on("cmake", type="build")
depends_on("m4", type="build")
depends_on("json-c")
depends_on("libyaml")
depends_on("readline")
# Require scotch with ptscotch - corresponds to standard OpenFOAM setup
depends_on("scotch~metis+mpi~int64", when="+scotch~int64")

View File

@@ -1084,10 +1084,16 @@ def configure_args(self):
config_args.extend(["--enable-debug"])
# Package dependencies
for dep in ["libevent", "lustre", "singularity", "valgrind"]:
for dep in ["lustre", "singularity", "valgrind"]:
if "^" + dep in spec:
config_args.append("--with-{0}={1}".format(dep, spec[dep].prefix))
# libevent support
if spec.satisfies("+internal-libevent"):
config_args.append("--with-libevent=internal")
elif "^libevent" in spec:
config_args.append("--with-libevent={0}".format(spec["libevent"].prefix))
# PMIx support
if spec.satisfies("+internal-pmix"):
config_args.append("--with-pmix=internal")

View File

@@ -291,10 +291,7 @@ def setup_run_environment(self, env):
# Find openspeedshop library path
oss_libdir = find_libraries(
"libopenss-framework",
root=self.spec["openspeedshop-utils"].prefix,
shared=True,
recursive=True,
"libopenss-framework", root=self.prefix, shared=True, recursive=True
)
env.prepend_path("LD_LIBRARY_PATH", os.path.dirname(oss_libdir.joined()))

View File

@@ -27,63 +27,39 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package
license("Apache-2.0")
version("3.4.0", sha256="e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf")
version("3.3.2", sha256="2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281")
version("3.2.3", sha256="52b5f1c6b8022bc5868c308c54fb77705e702d6c6f4594f99a0df216acf46239")
version("3.1.7", sha256="053a31fa80cf4aebe1068c987d2ef1e44ce418881427c4464751ae800c31d06c")
version("3.0.15", sha256="23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533")
version("3.4.1", sha256="002a2d6b30b58bf4bea46c43bdd96365aaf8daa6c428782aa4feee06da197df3")
version("3.3.3", sha256="712590fd20aaa60ec75d778fe5b810d6b829ca7fb1e530577917a131f9105539")
version("3.2.4", sha256="b23ad7fd9f73e43ad1767e636040e88ba7c9e5775bfa5618436a0dd2c17c3716")
version("3.1.8", sha256="d319da6aecde3aa6f426b44bbf997406d95275c5c59ab6f6ef53caaa079f456f")
version("3.0.16", sha256="57e03c50feab5d31b152af2b764f10379aecd8ee92f16c985983ce4a99f7ef86")
version(
"3.3.1",
sha256="777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e",
deprecated=True,
)
version(
"3.3.0",
sha256="53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02",
deprecated=True,
)
version(
"3.2.2",
sha256="197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7",
deprecated=True,
)
version(
"3.2.1",
sha256="83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39",
deprecated=True,
)
version(
"3.1.6",
sha256="5d2be4036b478ef3cb0a854ca9b353072c3a0e26d8a56f8f0ab9fb6ed32d38d7",
deprecated=True,
)
version(
"3.1.5",
sha256="6ae015467dabf0469b139ada93319327be24b98251ffaeceda0221848dc09262",
deprecated=True,
)
version(
"3.0.14",
sha256="eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca",
deprecated=True,
)
version(
"3.0.13",
sha256="88525753f79d3bec27d2fa7c66aa0b92b3aa9498dafd93d7cfa4b3780cdae313",
deprecated=True,
)
with default_args(deprecated=True):
version("3.4.0", sha256="e15dda82fe2fe8139dc2ac21a36d4ca01d5313c75f99f46c4e8a27709b7294bf")
version("3.3.1", sha256="777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e")
version("3.3.2", sha256="2e8a40b01979afe8be0bbfb3de5dc1c6709fedb46d6c89c10da114ab5fc3d281")
version("3.3.0", sha256="53e66b043322a606abf0087e7699a0e033a37fa13feb9742df35c3a33b18fb02")
version("3.2.3", sha256="52b5f1c6b8022bc5868c308c54fb77705e702d6c6f4594f99a0df216acf46239")
version("3.2.2", sha256="197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7")
version("3.2.1", sha256="83c7329fe52c850677d75e5d0b0ca245309b97e8ecbcfdc1dfdc4ab9fac35b39")
version("3.1.7", sha256="053a31fa80cf4aebe1068c987d2ef1e44ce418881427c4464751ae800c31d06c")
version("3.1.6", sha256="5d2be4036b478ef3cb0a854ca9b353072c3a0e26d8a56f8f0ab9fb6ed32d38d7")
version("3.1.5", sha256="6ae015467dabf0469b139ada93319327be24b98251ffaeceda0221848dc09262")
version(
"3.0.15", sha256="23c666d0edf20f14249b3d8f0368acaee9ab585b09e1de82107c66e1f3ec9533"
)
version(
"3.0.14", sha256="eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca"
)
version(
"3.0.13", sha256="88525753f79d3bec27d2fa7c66aa0b92b3aa9498dafd93d7cfa4b3780cdae313"
)
version(
"1.1.1w",
sha256="cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8",
deprecated=True,
)
version(
"1.0.2u",
sha256="ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16",
deprecated=True,
)
version(
"1.1.1w", sha256="cf3098950cb4d853ad95c0841f1f9c6d3dc102dccfcacd521d93925208b76ac8"
)
version(
"1.0.2u", sha256="ecd0c6ffb493dd06707d38b14bb4d8c2288bb7033735606569d8f90f89669d16"
)
depends_on("c", type="build") # generated

View File

@@ -42,10 +42,8 @@ def autoreconf(self, spec, prefix):
def configure_args(self):
args = [
"--enable-parallel-netcdf",
"--with-web-server-path={0}/html".format(
self.spec["ophidia-analytics-framework"].prefix
),
f"--with-web-server-path={self.prefix}/html",
"--with-web-server-url=http://127.0.0.1/ophidia",
"--with-ophidiaio-server-path={0}".format(self.spec["ophidia-io-server"].prefix),
f"--with-ophidiaio-server-path={self.spec['ophidia-io-server'].prefix}",
]
return args

View File

@@ -88,6 +88,7 @@ def cmake_args(self):
define("GENF90_PATH", join_path(src, "genf90")),
define_from_variant("BUILD_SHARED_LIBS", "shared"),
define("PIO_ENABLE_EXAMPLES", False),
define_from_variant("WITH_PNETCDF", "pnetcdf"),
]
if spec.satisfies("+ncint"):
args.extend([define("PIO_ENABLE_NETCDF_INTEGRATION", True)])

View File

@@ -231,11 +231,21 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage):
depends_on("mpi", when="+mpi")
conflicts("mpi", when="~mpi")
depends_on("qt@:4", when="@:5.2.0+qt")
depends_on("qt+sql", when="+qt")
with when("+qt"):
depends_on("qt+opengl", when="@5.3.0:+opengl2")
depends_on("qt~opengl", when="@5.3.0:~opengl2")
depends_on("qmake", when="@5.12.0:")
depends_on("qt", when="@5.3.0:5.11")
depends_on("qt@:4", when="@:5.2.0")
with when("^[virtuals=qmake] qt-base"):
depends_on("qt-base+gui+network+widgets")
depends_on("qt-base+opengl", when="+opengl2")
depends_on("qt-base~opengl", when="~opengl2")
depends_on("qt-tools +assistant") # Qt::Help
depends_on("qt-5compat")
depends_on("qt-svg")
with when("^[virtuals=qmake] qt"):
depends_on("qt+sql")
depends_on("qt+opengl", when="+opengl2")
depends_on("qt~opengl", when="~opengl2")
depends_on("gl@3.2:", when="+opengl2")
depends_on("gl@1.2:", when="~opengl2")
@@ -384,6 +394,12 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage):
patch("kits_with_catalyst_5_12.patch", when="@5.12.0")
# https://github.com/Kitware/VTK-m/commit/c805a6039ea500cb96158cfc11271987c9f67aa4
patch("vtkm-remove-unused-method-from-mir-tables.patch", when="@5.13.2 %oneapi@2025:")
# https://github.com/Kitware/VTK-m/commit/48e385af319543800398656645327243a29babfb
patch("vtkm-fix-problems-in-class-member-names.patch", when="@5.13.2 %oneapi@2025:")
generator("ninja", "make", default="ninja")
# https://gitlab.kitware.com/paraview/paraview/-/issues/21223
conflicts("generator=ninja", when="%xl")
@@ -438,6 +454,10 @@ def flag_handler(self, name, flags):
if self.spec["hdf5"].satisfies("@1.12:"):
flags.append("-DH5_USE_110_API")
if self.spec.satisfies("%oneapi@2025:"):
flags.append("-Wno-error=missing-template-arg-list-after-template-kw")
flags.append("-Wno-missing-template-arg-list-after-template-kw")
return flags, None, None
def setup_run_environment(self, env):
@@ -594,7 +614,7 @@ def use_x11():
# The assumed qt version changed to QT5 (as of paraview 5.2.1),
# so explicitly specify which QT major version is actually being used
if spec.satisfies("+qt"):
cmake_args.extend(["-DPARAVIEW_QT_VERSION=%s" % spec["qt"].version[0]])
cmake_args.extend(["-DPARAVIEW_QT_VERSION=%s" % spec["qmake"].version[0]])
if IS_WINDOWS:
# Windows does not currently support Qt Quick
cmake_args.append("-DVTK_MODULE_ENABLE_VTK_GUISupportQtQuick:STRING=NO")
@@ -748,19 +768,15 @@ def use_x11():
def test_smoke_test(self):
"""Simple smoke test for ParaView"""
spec = self.spec
pvserver = Executable(spec["paraview"].prefix.bin.pvserver)
pvserver = Executable(self.prefix.bin.pvserver)
pvserver("--help")
def test_pvpython(self):
"""Test pvpython"""
spec = self.spec
if "~python" in spec:
if "~python" in self.spec:
raise SkipTest("Package must be installed with +python")
pvpython = Executable(spec["paraview"].prefix.bin.pvpython)
pvpython = Executable(self.prefix.bin.pvpython)
pvpython("-c", "import paraview")
def test_mpi_ensemble(self):
@@ -771,8 +787,8 @@ def test_mpi_ensemble(self):
raise SkipTest("Package must be installed with +mpi and +python")
mpirun = spec["mpi"].prefix.bin.mpirun
pvserver = spec["paraview"].prefix.bin.pvserver
pvpython = Executable(spec["paraview"].prefix.bin.pvpython)
pvserver = self.prefix.bin.pvserver
pvpython = Executable(self.prefix.bin.pvpython)
with working_dir("smoke_test_build", create=True):
with Popen(

View File

@@ -0,0 +1,22 @@
diff --git a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
index acd5eca2b..5a23705db 100644
--- a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
+++ b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h
@@ -663,7 +663,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
auto hyperarcsPortal = this->Hyperarcs.ReadPortal();
auto regularNodeGlobalIdsPortal = this->RegularNodeGlobalIds.ReadPortal();
auto whichIterationPortal = this->WhichIteration.ReadPortal();
- auto whichRoundPortal = this->whichRound.ReadPortal();
+ auto whichRoundPortal = this->WhichRound.ReadPortal();
auto superarcsPortal = this->Superarcs.ReadPortal();
auto superparentsPortal = this->Superparents.ReadPortal();
for (vtkm::Id supernode = 0; supernode < this->Supernodes.GetNumberOfValues(); supernode++)
@@ -708,7 +708,7 @@ std::string HierarchicalContourTree<FieldType>::PrintDotSuperStructure(const cha
if (contourtree_augmented::NoSuchElement(superarcTo))
{ // no superarc
// if it occurred on the final round, it's the global root and is shown as the NULL node
- if (whichRoundPortal.Get(superarcFrom) == this->NRounds)
+ if (whichRoundPortal.Get(superarcFrom) == this->NumRounds)
{ // root node
outstream << "\tSN" << std::setw(1) << superarcFrom << " -> SA" << std::setw(1) << superarc
<< " [label=\"S" << std::setw(1) << superarc << "\",style=dotted]\n";

View File

@@ -0,0 +1,16 @@
diff --git a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h
index 3dff3329e..a6f4d4f1f 100644
--- a/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h
+++ b/VTK/ThirdParty/vtkm/vtkvtkm/vtk-m/vtkm/filter/contour/worklet/mir/MIRTables.h
@@ -11400,11 +11400,6 @@ public:
return FacesLookup[shape];
}
- VTKM_EXEC vtkm::UInt8 GetPoint(vtkm::Id pointIndex) const
- {
- return this->CellFacePortal.Get(pointIndex);
- }
-
private:
typename vtkm::cont::ArrayHandle<vtkm::UInt8>::ReadPortalType MIRTablesDataPortal;
typename vtkm::cont::ArrayHandle<vtkm::UInt16>::ReadPortalType MIRTablesIndicesPortal;

View File

@@ -458,17 +458,15 @@ def symlink_windows(self):
@run_after("install")
def install_cpanm(self):
spec = self.spec
maker = make
cpan_dir = join_path("cpanm", "cpanm")
if sys.platform == "win32":
maker = nmake
cpan_dir = join_path(self.stage.source_path, cpan_dir)
cpan_dir = windows_sfn(cpan_dir)
if "+cpanm" in spec:
if "+cpanm" in self.spec:
with working_dir(cpan_dir):
perl = spec["perl"].command
perl("Makefile.PL")
self.command("Makefile.PL")
maker()
maker("install")
@@ -502,7 +500,7 @@ def setup_dependent_package(self, module, dependent_spec):
if dependent_spec.package.is_extension:
# perl extension builds can have a global perl
# executable function
module.perl = self.spec["perl"].command
module.perl = self.command
# Add variables for library directory
module.perl_lib_dir = dependent_spec.prefix.lib.perl5
@@ -541,8 +539,7 @@ def filter_config_dot_pm(self):
kwargs = {"ignore_absent": True, "backup": False, "string": False}
# Find the actual path to the installed Config.pm file.
perl = self.spec["perl"].command
config_dot_pm = perl(
config_dot_pm = self.command(
"-MModule::Loaded", "-MConfig", "-e", "print is_loaded(Config)", output=str
)
@@ -606,17 +603,15 @@ def command(self):
ext = ""
if sys.platform == "win32":
ext = ".exe"
path = os.path.join(self.prefix.bin, "{0}{1}{2}".format(self.spec.name, ver, ext))
path = os.path.join(self.prefix.bin, f"{self.spec.name}{ver}{ext}")
if os.path.exists(path):
return Executable(path)
else:
msg = "Unable to locate {0} command in {1}"
raise RuntimeError(msg.format(self.spec.name, self.prefix.bin))
raise RuntimeError(f"Unable to locate {self.spec.name} command in {self.prefix.bin}")
def test_version(self):
"""check version"""
perl = self.spec["perl"].command
out = perl("--version", output=str.split, error=str.split)
out = self.command("--version", output=str.split, error=str.split)
expected = ["perl", str(self.spec.version)]
for expect in expected:
assert expect in out
@@ -626,6 +621,5 @@ def test_hello(self):
msg = "Hello, World!"
options = ["-e", "use warnings; use strict;\nprint('%s\n');" % msg]
perl = self.spec["perl"].command
out = perl(*options, output=str.split, error=str.split)
out = self.command(*options, output=str.split, error=str.split)
assert msg in out

View File

@@ -15,7 +15,7 @@ class Petsc(Package, CudaPackage, ROCmPackage):
homepage = "https://petsc.org"
url = "https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-3.20.0.tar.gz"
git = "https://gitlab.com/petsc/petsc.git"
maintainers("balay", "barrysmith", "jedbrown")
maintainers("balay", "jczhang07", "joseeroman")
tags = ["e4s"]

View File

@@ -13,11 +13,14 @@ class Plink2(MakefilePackage):
url = "https://github.com/chrchang/plink-ng/archive/refs/tags/v2.00a5.11.tar.gz"
list_url = "https://github.com/chrchang/plink-ng/tags"
maintainers("teaguesterling")
license("GPLv3", checked_by="teaguesterling")
# See: https://github.com/chrchang/plink-ng/blob/master/2.0/COPYING
maintainers("teaguesterling")
version(
"2.0.0-a.6.9", sha256="492fc1e87b60b2209b7c3c1d616a01c1126978424cf795184d013ecf8a47e028"
)
version("2.00a5.11", sha256="8b664baa0b603f374123c32818ea2f053272840ba60e998d06cb864f3a6f1c38")
version("2.00a5.10", sha256="53d845c6a04f8fc701e6f58f6431654e36cbf6b79bff25099862d169a8199a45")
version("2.00a4.3", sha256="3cd1d26ac6dd1c451b42440f479789aa19d2b57642c118aac530a5ff1b0b4ce6")
@@ -34,6 +37,9 @@ class Plink2(MakefilePackage):
build_directory = "2.0/build_dynamic"
def url_for_version(self, version):
return f"https://github.com/chrchang/plink-ng/archive/refs/tags/v{version!s}.tar.gz"
def edit(self, spec, prefix):
with working_dir(self.build_directory):
makefile = FileFilter("Makefile")

View File

@@ -244,7 +244,7 @@ def apply_patch(self, other):
def setup_dependent_package(self, module, dependent_spec):
# Make plumed visible from dependent packages
module.plumed = dependent_spec["plumed"].command
module.plumed = self.command
@property
def plumed_inc(self):

View File

@@ -121,8 +121,7 @@ def check_install(self):
with working_dir(checkdir, create=True):
source = join_path(os.path.dirname(self.module.__file__), "example1.c")
cflags = spec["pocl"].headers.cpp_flags.split()
# ldflags = spec["pocl"].libs.ld_flags.split()
ldflags = ["-L%s" % spec["pocl"].prefix.lib, "-lOpenCL", "-lpoclu"]
ldflags = [f"-L{self.prefix.lib}", "-lOpenCL", "-lpoclu"]
output = compile_c_and_execute(source, cflags, ldflags)
compare_output_file(
output, join_path(os.path.dirname(self.module.__file__), "example1.out")

View File

@@ -0,0 +1,175 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class Psblas(AutotoolsPackage):
"""PSBLAS: Parallel Sparse BLAS. A library of distributed sparse
linear algebra with support for GPU and Multithread acceleration.
Part of the PSCToolkit: Parallel Sparse Computation Toolkit."""
# Url for your package's homepage here.
homepage = "https://psctoolkit.github.io/"
git = "https://github.com/sfilippone/psblas3.git"
url = "https://github.com/sfilippone/psblas3/archive/refs/tags/v3.9.0-rc1.tar.gz"
# List of GitHub accounts to notify when the package is updated.
maintainers("cirdans-home", "sfilippone")
# SPDX identifier of the project's license below.
license("BSD-3-Clause", checked_by="cirdans-home")
version("development", branch="development")
version(
"3.9.0-rc1",
sha256="7a7091ce52582b6fc442e8793e36461be36c0947272ea803ad72736ec2d56da8",
preferred=True,
)
version("3.8.1-2", sha256="285ddb7c9a793ea7ecb428d68cf23f4cc04f1c567631aa84bc2bedb65a3d1b0c")
version("3.8.1", sha256="02e1f00e644426eb15eb08c735cf9c8ae692392f35c2cfe4f7474e1ab91575dc")
version("3.8.0-2", sha256="86a76bb0987edddd4c10c810d7f18e13742aadc66ac14ad3679669809c1184fa")
# Explicit phases: autoreconf, configure, build, install, and post_install
# which compiles the examples in the prefix/samples folder
phases = ["configure", "build", "install", "samples"]
# Variants:
# LPK/IPK: Integer precision variants
variant("LPK", default=8, values=int, description="Length in bytes for long integers (8 or 4)")
variant(
"IPK", default=4, values=int, description="Length in bytes for short integers (8 or 4)"
)
# MPI
variant("mpi", default=True, description="Activates MPI support")
# CUDA
variant(
"cuda", default=False, description="Activate CUDA support", when="@development,3.9.0-rc1"
)
variant(
"cudacc",
default="70,75,80,86,89,90",
multi=True,
description="Specify CUDA Compute Capabilities",
when="+cuda",
)
# METIS
variant("metis", default=False, description="Activate METIS support")
# SuiteSparse: Enable AMD library support via SuiteSparse
variant("amd", default=False, description="Activate AMD support via SuiteSparse")
# OpenMP
variant(
"openmp",
default=False,
description="Activates OpenMP support",
when="@development,3.9.0-rc1",
)
# OpenACC support (requires GCC >= 14.2.0)
variant(
"openacc",
default=False,
description="Activate OpenACC support",
when="@development,3.9.0-rc1",
)
# Additional configure options
variant("ccopt", default="none", description="Additional CCOPT flags")
variant("cxxopt", default="none", description="Additional CXXOPT flags")
variant("fcopt", default="none", description="Additional FCOPT flags")
variant("extra_opt", default="none", description="Additional EXTRA_OPT flags")
variant("libs", default="none", description="Additional link flags")
variant("clibs", default="none", description="Additional CLIBS flags")
variant("flibs", default="none", description="Additional FLIBS flags")
variant("extra_nvcc", default="none", description="Additional EXTRA_NVCC flags", when="+cuda")
variant(
"extraopenacc",
default="none",
description="Additional EXTRAOPENACC flags",
when="+openacc",
)
variant("ccopenacc", default="none", description="Additional CCOPENACC flags", when="+openacc")
variant(
"cxxopenacc", default="none", description="Additional CXXOPENACC flags", when="+openacc"
)
variant("fcopenacc", default="none", description="Additional FCOPENACC flags", when="+openacc")
# Dependencies:
# Languages: Fortran for much of the library, c for the interfaces,
# c++ for the matching routines
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("fortran", type="build")
# MPI
depends_on("mpi", when="+mpi")
# BLAS/LAPACK
depends_on("blas")
depends_on("lapack")
# CUDA
depends_on("cuda", when="+cuda")
# Metis
depends_on("metis@5:+int64", when="+metis LPK=8")
depends_on("metis@5:~int64", when="+metis LPK=4")
depends_on("metis@5:+int64", when="+metis")
# SuiteSparse: Enable AMD library support via SuiteSparse
depends_on("suite-sparse", when="+amd")
# OpenACC support (requires GCC >= 14.2.0)
depends_on("gcc@14.2.0:+nvptx", when="+openacc", type="build")
def configure_args(self):
args = [f"--prefix={self.prefix}"]
# LPK/IPK Choice for integer configuration
args.append(f"--with-lpk={self.spec.variants['LPK'].value}")
args.append(f"--with-ipk={self.spec.variants['IPK'].value}")
# MPI/serial configuration
if "+mpi" in self.spec:
pass
else:
args.append("--enable-serial")
# OPENMP
args.extend(self.enable_or_disable("openmp"))
# CUDA
args.extend(self.enable_or_disable("cuda"))
if "+cuda" in self.spec:
cudacc_values = ",".join(self.spec.variants["cudacc"].value)
args.append(f"--with-cudacc={cudacc_values}")
args.append(f"--with-cudadir={self.spec['cuda'].prefix}")
for opt in ["extra_nvcc"]:
val = self.spec.variants[opt].value
if val != "none":
args.append(f"--with-{opt.replace('_', '-')}={val}")
# OpenACC configuration
args.extend(self.enable_or_disable("openacc"))
if "+openacc" in self.spec:
for opt in ["extraopenacc", "ccopenacc", "cxxopenacc", "fcopenacc"]:
val = self.spec.variants[opt].value
if val != "none":
args.append(f"--with-{opt.replace('_', '-')}={val}")
# METIS configuration
if "+metis" in self.spec:
args.append(f"--with-metisincdir={self.spec['metis'].prefix}/include")
args.append(f"--with-metislibdir={self.spec['metis'].prefix}/lib")
# SuiteSparse configuration for AMD library support
if "+amd" in self.spec:
args.append(f"--with-amddir={self.spec['suite-sparse'].prefix}")
# All the other options
for opt in ["ccopt", "cxxopt", "fcopt", "extra_opt", "libs", "clibs", "flibs"]:
val = self.spec.variants[opt].value
if val != "none":
args.append(f"--with-{opt.replace('_', '-')}={val}")
return args
def configure(self, spec, prefix):
configure = Executable("./configure")
configure(*self.configure_args())
def build(self, spec, prefix):
make()
def install(self, spec, prefix):
make("install")
def samples(self, spec, prefix):
with working_dir(prefix.samples.fileread):
make()
with working_dir(prefix.samples.pargen):
make()

View File

@@ -96,7 +96,7 @@ def filter_compilers(self):
"-I{0}".format(
" -I".join(
[
os.path.join(spec["psi4"].prefix.include, "psi4"),
os.path.join(self.prefix.include, "psi4"),
os.path.join(spec["boost"].prefix.include, "boost"),
os.path.join(spec["python"].headers.directories[0]),
spec["lapack"].prefix.include,

View File

@@ -21,34 +21,10 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage):
version("develop", branch="development")
version("25.03", sha256="5a65545d46b49dd3f2bca2647a174c3ee0384e49791dc3e335a3a39d9a045350")
version(
"25.02",
sha256="c743086b317f9fa90639d825db32a92376cde8dc5e1eab47a4c6a82af36d5b5c",
deprecated=True,
)
version(
"24.10",
sha256="dc1752ed3fbd5113dcfdbddcfe6c3c458e572b288ac9d41ed3ed7db130591d74",
deprecated=True,
)
version(
"24.08",
sha256="e7179d88261f64744f392a2194ff2744fe323fe0e21d0742ba60458709a1b47e",
deprecated=True,
)
version(
"24.04",
sha256="ab85695bb9644b702d0fc84e77205d264d27ba94999cab912c8a3212a7eb77fc",
deprecated=True,
)
with default_args(deprecated=True):
version("25.02", sha256="c743086b317f9fa90639d825db32a92376cde8dc5e1eab47a4c6a82af36d5b5c")
version(
"24.03",
sha256="bf85b4ad35b623278cbaae2c07e22138545dec0732d15c4ab7c53be76a7f2315",
deprecated=True,
)
for v in ["25.03", "25.02", "24.10", "24.08", "24.04", "24.03"]:
for v in ["25.03", "25.02", "develop"]:
depends_on("amrex@{0}".format(v), when="@{0}".format(v), type=("build", "link"))
variant(
@@ -77,8 +53,7 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage):
depends_on("c", type="build")
depends_on("cxx", type="build")
depends_on("cmake@3.20:3", type="build", when="@:24.08")
depends_on("cmake@3.24:3", type="build", when="@24.09:")
depends_on("cmake@3.24:3", type="build")
depends_on("pkgconfig", type="build") # amrex +fft
depends_on("python@3.8:", type=("build", "run"))
depends_on("py-mpi4py@2.1.0:", type=("build", "run"), when="+mpi")
@@ -128,38 +103,29 @@ class PyAmrex(CMakePackage, PythonExtension, CudaPackage, ROCmPackage):
depends_on("py-pandas", type="test")
depends_on("py-cupy", type="test", when="+cuda")
phases = ("cmake", "build", "install", "pip_install_nodeps")
build_targets = ["all", "pip_wheel"]
phases = ("cmake", "build", "install")
build_targets = ["all", "pip_wheel", "pip_install_nodeps"]
tests_src_dir = "tests/"
def cmake_args(self):
args = ["-DpyAMReX_amrex_internal=OFF", "-DpyAMReX_pybind11_internal=OFF"]
return args
pip_args = PythonPipBuilder.std_args(self) + [f"--prefix={self.prefix}"]
idx = pip_args.index("install")
# Docs: https://pyamrex.readthedocs.io/en/24.10/install/cmake.html#build-options
def pip_install_nodeps(self, spec, prefix):
"""Install everything from build directory."""
pip = spec["python"].command
pip.add_default_arg("-m", "pip")
args = PythonPipBuilder.std_args(self) + [
f"--prefix={prefix}",
"--find-links=amrex-whl",
"amrex",
return [
"-DpyAMReX_amrex_internal=OFF",
"-DpyAMReX_pybind11_internal=OFF",
"-DPY_PIP_OPTIONS=" + ";".join(pip_args[:idx]),
"-DPY_PIP_INSTALL_OPTIONS=" + ";".join(pip_args[idx + 1 :]),
]
with working_dir(self.build_directory):
pip(*args)
# todo: from PythonPipBuilder
# ....execute_install_time_tests()
def check(self):
"""Checks after the build phase"""
pytest = which("pytest")
pytest(join_path(self.stage.source_path, self.tests_src_dir))
@run_after("pip_install_nodeps")
@run_after("install")
def copy_test_sources(self):
"""Copy the example test files after the package is installed to an
install test subdirectory for use during `spack test run`."""

View File

@@ -0,0 +1,30 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class PyAsdfAstropy(PythonPackage):
"""ASDF serialization support for astropy"""
homepage = "https://asdf-astropy.readthedocs.io/"
pypi = "asdf_astropy/asdf_astropy-0.7.1.tar.gz"
license("BSD-3-Clause", checked_by="lgarrison")
version("0.7.1", sha256="5aa5a448ee0945bd834a9ba8fb86cf43b39e85d24260e1339b734173ab6024c7")
depends_on("python@3.10:", type=("build", "run"))
depends_on("py-setuptools@60:", type="build")
depends_on("py-setuptools-scm@3.4: +toml", type="build")
depends_on("py-asdf@2.14.4:", type=("build", "run"))
depends_on("py-asdf-coordinates-schemas@0.3:", type=("build", "run"))
depends_on("py-asdf-transform-schemas@0.5:", type=("build", "run"))
depends_on("py-asdf-standard@1.1.0:", type=("build", "run"))
# depends_on("py-astropy@5.2.0:", type=("build", "run"))
conflicts("py-astropy@:5.1")
depends_on("py-numpy@1.24:", type=("build", "run"))
depends_on("py-packaging@19:", type=("build", "run"))

View File

@@ -0,0 +1,26 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class PyAsdfCoordinatesSchemas(PythonPackage):
"""ASDF schemas for coordinates"""
homepage = "https://www.asdf-format.org/projects/asdf-coordinates-schemas/"
pypi = "asdf_coordinates_schemas/asdf_coordinates_schemas-0.3.0.tar.gz"
maintainers("lgarrison")
license("BSD-3-Clause", checked_by="lgarrison")
version("0.3.0", sha256="c98b6015dcec87a158fcde7798583f0615d08125fa6e1e9de16c4eb03fcd604e")
depends_on("python@3.9:", type=("build", "run"))
depends_on("py-setuptools@60:", type="build")
depends_on("py-setuptools-scm@3.4: +toml", type="build")
depends_on("py-asdf@2.12.1:", type=("build", "run"))
depends_on("py-asdf-standard@1.1.0:", type=("build", "run"))

View File

@@ -15,12 +15,15 @@ class PyAsdfTransformSchemas(PythonPackage):
license("BSD-3-Clause")
version("0.5.0", sha256="82cf4c782575734a895327f25ff583ce9499d7e2b836fe8880b2d7961c6b462b")
version("0.3.0", sha256="0cf2ff7b22ccb408fe58ddd9b2441a59ba73fe323e416d59b9e0a4728a7d2dd6")
depends_on("python@3.9:", when="@0.5.0:", type=("build", "run"))
depends_on("python@3.8:", type=("build", "run"))
depends_on("py-setuptools@42:", type="build")
depends_on("py-setuptools-scm@3.4: +toml", type="build")
depends_on("py-asdf-standard@1.1.0:", when="@0.5.0:", type=("build", "run"))
depends_on("py-asdf-standard@1.0.1:", type=("build", "run"))
depends_on("py-importlib-resources@3:", type=("build", "run"), when="^python@:3.8")
depends_on("py-importlib-resources@3:", type=("build", "run"), when="@:0.3.0 ^python@:3.8")

View File

@@ -17,6 +17,7 @@ class PyAsdf(PythonPackage):
license("BSD-3-Clause")
version("4.1.0", sha256="0ff44992c85fd768bd9a9512ab7f012afb52ddcee390e9caf67e30d404122da1")
version("3.5.0", sha256="047ad7bdd8f40b04b8625abfd119a35d18b344301c60ea9ddf63964e7ce19669")
version("2.15.0", sha256="686f1c91ebf987d41f915cfb6aa70940d7ad17f87ede0be70463147ad2314587")
version("2.4.2", sha256="6ff3557190c6a33781dae3fd635a8edf0fa0c24c6aca27d8679af36408ea8ff2")

View File

@@ -14,6 +14,8 @@ class PyCachecontrol(PythonPackage):
license("Apache-2.0")
version("0.14.2", sha256="7d47d19f866409b98ff6025b6a0fca8e4c791fb31abbd95f622093894ce903a2")
version("0.14.0", sha256="7db1195b41c81f8274a7bbd97c956f44e8348265a1bc7641c37dfebc39f0c938")
version("0.13.1", sha256="f012366b79d2243a6118309ce73151bf52a38d4a5dac8ea57f09bd29087e506b")
version("0.13.0", sha256="fd3fd2cb0ca66b9a6c1d56cc9709e7e49c63dbd19b1b1bcbd8d3f94cedfe8ce5")
version("0.12.11", sha256="a5b9fcc986b184db101aa280b42ecdcdfc524892596f606858e0b7a8b4d9e144")
@@ -22,12 +24,13 @@ class PyCachecontrol(PythonPackage):
variant("filecache", default=False, description="Add lockfile dependency")
variant("redis", default=False, description="Add redis dependency")
depends_on("py-flit-core@3.2:3", when="@0.13.1", type="build")
depends_on("py-flit-core@3.2:3", when="@0.13.1:", type="build")
depends_on("py-setuptools", when="@:0.13.0", type="build")
depends_on("py-requests@2.16.0:", when="@0.13", type=("build", "run"))
depends_on("py-requests@2.16.0:", when="@0.13:", type=("build", "run"))
depends_on("py-requests", type=("build", "run"))
depends_on("py-msgpack@0.5.2:", type=("build", "run"))
depends_on("py-filelock@3.8.0:", when="@0.13+filecache", type=("build", "run"))
depends_on("py-msgpack@0.5.2:1", when="@0.14:", type=("build", "run"))
depends_on("py-filelock@3.8.0:", when="@0.13:+filecache", type=("build", "run"))
depends_on("py-lockfile@0.9:", when="@0.12+filecache", type=("build", "run"))
depends_on("py-redis@2.10.5:", when="+redis", type=("build", "run"))

View File

@@ -15,6 +15,7 @@ class PyChex(PythonPackage):
license("Apache-2.0")
version("0.1.89", sha256="78f856e6a0a8459edfcbb402c2c044d2b8102eac4b633838cbdfdcdb09c6c8e0")
version("0.1.86", sha256="e8b0f96330eba4144659e1617c0f7a57b161e8cbb021e55c6d5056c7378091d1")
version("0.1.85", sha256="a27cfe87119d6e1fe24ccc1438a59195e6dc1d6e0e10099fcf618c3f64771faf")
version("0.1.5", sha256="686858320f8f220c82a6c7eeb54dcdcaa4f3d7f66690dacd13a24baa1ee8299e")

View File

@@ -0,0 +1,35 @@
# Copyright Spack Project Developers. See COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)
from spack.package import *
class PyCorrfunc(PythonPackage):
"""Blazing fast correlation functions on the CPU."""
homepage = "https://corrfunc.readthedocs.io/"
pypi = "corrfunc/corrfunc-2.5.3.tar.gz"
maintainers("lgarrison")
license("MIT", checked_by="lgarrison")
version("2.5.3", sha256="32836235e2389f55f028664231f0d6f5716ac0d4226c620c0bbac9407dc225a1")
depends_on("c", type="build")
depends_on("python@3.9:", type=("build", "run"))
depends_on("py-setuptools", type="build")
depends_on("gmake", type="build")
depends_on("py-numpy@1.20:", type=("build", "run"))
depends_on("py-future", type=("build", "run"))
depends_on("py-wurlitzer", type=("build", "run"))
depends_on("gsl@2.4:", type=("build", "link"))
def patch(self):
filter_file(r"^\s*CC\s*[:\?]?=.*", f"CC := {spack_cc}", "common.mk")
filter_file("-march=native", "", "common.mk")

View File

@@ -16,9 +16,11 @@ class PyCwlUtils(PythonPackage):
license("Apache-2.0")
version("0.37", sha256="7b69c948f8593fdf44b44852bd8ef94c666736ce0ac12cf6e66e2a72ad16a773")
version("0.21", sha256="583f05010f7572f3a69310325472ccb6efc2db7f43dc6428d03552e0ffcbaaf9")
depends_on("python@3.6:", type=("build", "run"))
depends_on("python@3.8:", when="@0.29:", type=("build", "run"))
depends_on("py-setuptools", type="build")
depends_on("py-cwl-upgrader@1.2.3:", type=("build", "run"))
@@ -26,4 +28,17 @@ class PyCwlUtils(PythonPackage):
depends_on("py-rdflib", type=("build", "run"))
depends_on("py-requests", type=("build", "run"))
depends_on("py-cachecontrol", type=("build", "run"))
depends_on("py-schema-salad@8.3.20220825114525:8", type=("build", "run"))
depends_on("py-schema-salad@8.3.20220825114525:8", when="@:0.31", type=("build", "run"))
# intermediate versions 0.32:0.36 may not require 8.8, but should work with this stricter
# requirement
depends_on("py-schema-salad@8.8.20250205075315:8", when="@0.32:", type=("build", "run"))
depends_on("py-ruamel-yaml@0.17.6:0.18", when="@0.30:", type=("build", "run"))
depends_on("py-typing-extensions", when="@0.37 ^python@:3.9", type=("build", "run"))
def url_for_version(self, version):
url = "https://files.pythonhosted.org/packages/source/c/cwl-utils/cwl{}utils-{}.tar.gz"
if version >= Version("0.34"):
sep = "_"
else:
sep = "-"
return url.format(sep, version)

Some files were not shown because too many files have changed in this diff Show More