Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CI Timing Statistics #38598

Merged

Conversation

kwryankrattiger
Copy link
Contributor

@kwryankrattiger kwryankrattiger commented Jun 27, 2023

Getting timing statistics for all of the packages installed in CI

Spack and Spack CI

  • Add timing logs to packages installed via a build cache
  • Rework timer to better handle nested timers (cache install phases extract and relocate)
  • Collect all install_times.json for upload
  • Include all timing logs in CI artifacts

Spack infrastructure

  • Scrape timing logs and store data in database
  • Create dashboard(s) for exploring timing data

CC: @tgamblin

@spackbot-app spackbot-app bot added binary-packages core PR affects Spack core functionality utilities labels Jun 27, 2023
@kwryankrattiger kwryankrattiger force-pushed the ci/install-statistics-summary branch 2 times, most recently from 944da2c to 512435b Compare June 28, 2023 15:55
@spackbot-app spackbot-app bot added the gitlab Issues related to gitlab integration label Jun 28, 2023
@kwryankrattiger kwryankrattiger force-pushed the ci/install-statistics-summary branch 4 times, most recently from eaaa48f to b44d051 Compare June 28, 2023 16:29
@kwryankrattiger kwryankrattiger marked this pull request as ready for review June 28, 2023 16:34
@kwryankrattiger
Copy link
Contributor Author

The result of this change is the packages installed from cache also dump a install_times.jsonand CI aggregates all of the install_times.json files for all packages into a single artifact for the job.

** Note ** two new fields are now present in the install_times.json, name and cache. One question I have to @tgamblin and others is whether or not it makes sense to also include the spec hash in this file, or what extra meta data should be included in the timer json output if any.

From cache:
zlib-install_times.json.txt

From source:
zstd-install_times.json.txt

Aggregated install_times.json files from all installed packages
aggregated_install_times.json.txt

@@ -86,6 +86,16 @@
STATUS_REMOVED = "removed"


def _write_timer_json(pkg, timer, cache):
extra_attributes = {"name": pkg.name, "cache": cache}
try:
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this try really shouldn't be required, but for some reason the _install_from_cache routine doesn't actually install anything in the test_install_from_cache_ok test.

@haampie
Copy link
Member

haampie commented Jun 30, 2023

Just thinking out loud: what about an interface timer.start(identifier), timer.stop(identifier), with timer.measure(identifier), where all these operation just push an event tuple (time, start/stop, identifier) to a list, and we do processing only afterwards by looping over the list? Then you can construct whatever type of format out of it, whether it's a tree, or a reduction on identifier, etc.

Also worth checking if there is some standard format for this

@kwryankrattiger kwryankrattiger force-pushed the ci/install-statistics-summary branch 2 times, most recently from 56a62fa to 9925546 Compare July 6, 2023 05:30
@kwryankrattiger kwryankrattiger force-pushed the ci/install-statistics-summary branch 2 times, most recently from 4faedf7 to 00463bf Compare July 11, 2023 20:14
haampie
haampie previously approved these changes Aug 21, 2023

# _global is the overal timer since the instance was created
self._timers[global_timer_name] = Interval(self._now(), end=None)
self._events: list(TimerEvent) = []
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
self._events: list(TimerEvent) = []
self._events: List[TimerEvent] = []

Comment on lines +136 to +165
def _flatten(self):
for event in self._events:
if event.running:
if event.label not in self._timer_stack:
self._timer_stack.append(event.label)
# Only start the timer if it is on top of the stack
# restart doesn't work after a subtimer is started
if event.label == self._timer_stack[-1]:
timer_path = "/".join(self._timer_stack[1:])
tracker = self._timers.get(
event.label, TimeTracker(0.0, event.time, 0, timer_path)
)
assert tracker.path == timer_path
self._timers[event.label] = TimeTracker(
tracker.total, event.time, tracker.count, tracker.path
)
else: # if not event.running:
if event.label in self._timer_stack:
index = self._timer_stack.index(event.label)
for label in self._timer_stack[index:]:
tracker = self._timers[label]
self._timers[label] = TimeTracker(
tracker.total + (event.time - tracker.start),
None,
tracker.count + 1,
tracker.path,
)
self._timer_stack = self._timer_stack[: max(0, index)]
# clear events
self._events = []
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you follow up with a PR that makes this code actually readable? It's hard to see the intent, probably also for you after a couple months.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Like more comments, or re-written in a more pythonic way?

tracker.count + 1,
tracker.path,
)
self._timer_stack = self._timer_stack[: max(0, index)]
Copy link
Member

@haampie haampie Aug 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(let's fix this in a follow-up PR) there's no need to use max here. In fact del self._timer_stack[index:] is what you want?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Basically I am trying to truncate all of the timer labels in the timer stack after and including "index"

tracker.total, event.time, tracker.count, tracker.path
)
else: # if not event.running:
if event.label in self._timer_stack:
Copy link
Member

@haampie haampie Aug 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What if this is not true? (let's fix this in a follow-up PR if necessary)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If it isn't true, you are stopping a timer that was never started, so it is just a noop. Is there something you think should be done in that case?

if event.label == self._timer_stack[-1]:
timer_path = "/".join(self._timer_stack[1:])
tracker = self._timers.get(
event.label, TimeTracker(0.0, event.time, 0, timer_path)
Copy link
Member

@haampie haampie Aug 21, 2023

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(let's fix this in a follow-up PR) This always allocates a TimeTracker(...), also when self._timers[event.label] exists. So, then it's better to use a standard if-else, or use defaultdict.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I was not aware of deafultdict, noted for the update later to improve the code clarity.

@haampie
Copy link
Member

haampie commented Aug 21, 2023

Maybe I'm missing something, but (a) the flag --timer-summary-file is not set for Gitlab CI and (b) db lock acquire time only makes sense when installing dependencies in parallel, whereas this timer seems to be for a single process? Are you planning to run spack install --timer-summary-file=... for each process?

@kwryankrattiger
Copy link
Contributor Author

@haampie I talked about this with @scottwittenburg today and we agree this file is kind of useless. I originally wanted to do the timer aggregation with this flag, but since the parallelism is handled by Make and not Spack it is not so straightforward as to how to write the lock timer information. Instead of this flag, I added a timer to the spack ci rebuild sub-command to collect information on the unaccounted for overhead of runnering rebuild, ie. locks, makefile generation, etc. and will remove the --time-summary-file

Copy link
Contributor

@scottwittenburg scottwittenburg left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I've been using this as the base for some branches I'm testing, here, and it seems to be providing the data we expect. Unless there are objections, I vote to merge it.

@kwryankrattiger kwryankrattiger merged commit 8ec1657 into spack:develop Sep 7, 2023
34 checks passed
@kwryankrattiger kwryankrattiger deleted the ci/install-statistics-summary branch September 7, 2023 20:41
mpokorny pushed a commit to mpokorny/spack that referenced this pull request Sep 18, 2023
* Write timing information for installs from cache

* CI: aggregate and upload install_times.json to artifacts

* CI: Don't change root directory for artifact generation

* Flat event based timer variation

Event based timer allows for easily starting and stopping timers without
wiping sub-timer data. It also requires less branching logic when
tracking time.

The json output is non-hierarchical in this version and hierarchy is
less rigidly enforced between starting and stopping.

* Add and write timers for top level install

* Update completion

* remove unused subtimer api

* Fix unit tests

* Suppress timing summary option

* Save timers summaries to user_data artifacts

* Remove completion from fish

* Move spack python to script section

* Write timer correctly for non-cache installs

* Re-add hash to timer file

* Fish completion updates

* Fix null timer yield value

* fix type hints

* Remove timer-summary-file option

* Add "." in front of non-package timer name

---------

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
marcmengel added a commit to FNALssi/spack that referenced this pull request Sep 21, 2023
* Use correct hash for 3.0 (#39743)

* xyce: add version 7.7.0 and specialize patch (#39696)

* cgns: Add -fPIC to Fortan/C compilation flags (#39700)

* cgns: Add -fPIC to Fortan/C compilation flags
  This should fix #39699
* cgns: Add -fPIC compilation flags when +fortran
  Incorporating suggestions of @aumuell with addition of making +pic required when +fortran

* seacas: Set TPL_ENABLE_Pthread=ON when +thread_safe (#39703)

* seacas: Set TPL_ENABLE_Pthread=ON when +thread_safe
  This should fix #39702
  Basically, following suggestion of error message and setting
  TPL_ENABLE_Pthread to the value of the boolean spack variant thread_safe
* seacas: Fix style issue
  Add space after comment #

* CUDA 10.1/10.2: Fix conflicts with PGI 19+. (#39747)

The condition probably did not get updated when the behavior of the version specifier changed.

* r-tinytiger: Add tinytiger R package. (#39828)

* r-tinytiger: Add tinytiger R package.
* Fix homepage.

---------

Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

* duckdb: add v0.8.1 (#39851)

* Add Figcone Package (#39804)

* Add Figcone Package
* Fix the style
* add url
* fix style removing whitespace of a blanck line
* remove versions

* r-functional: Add the functional R package. (#39826)

Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

* r-furrr: Add furrr R package. (#39814)

Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

* lua: unzip also required during build (#39802)

Unzip required during build otherwise configuration of luarocks fails during installation of lua@5.3.6 on ubuntu 22.04 w/o system unzip.

* move determine_number_of_jobs into spack.util.cpus, use it in concretize (#37620)

* Automated deployment to update package flux-security 2023-09-07 (#39855)

Co-authored-by: github-actions <github-actions@users.noreply.github.com>

* Automated deployment to update package flux-core 2023-09-07 (#39856)

Co-authored-by: github-actions <github-actions@users.noreply.github.com>

* add SUNDIALS v6.6.1 (#39853)

* neko: add v0.6.1 and fix package (#39751)

* neko: add v0.6.1 and fix package
* Change to a conditional variant for gslib

* Allow to build latest released version of CP2K with CMake (#39782)

* allow to build latest version of cp2k with cmake
* apply black

* Make Cabana a Cuda/ROCm package (matching ArborX) (#39809)

* epics-base package: use the Spack compiler wrappers (#39752)

Edit configuration file to use the Spack compiler wrappers.

* CI Timing Statistics (#38598)

* Write timing information for installs from cache

* CI: aggregate and upload install_times.json to artifacts

* CI: Don't change root directory for artifact generation

* Flat event based timer variation

Event based timer allows for easily starting and stopping timers without
wiping sub-timer data. It also requires less branching logic when
tracking time.

The json output is non-hierarchical in this version and hierarchy is
less rigidly enforced between starting and stopping.

* Add and write timers for top level install

* Update completion

* remove unused subtimer api

* Fix unit tests

* Suppress timing summary option

* Save timers summaries to user_data artifacts

* Remove completion from fish

* Move spack python to script section

* Write timer correctly for non-cache installs

* Re-add hash to timer file

* Fish completion updates

* Fix null timer yield value

* fix type hints

* Remove timer-summary-file option

* Add "." in front of non-package timer name

---------

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>

* Docs/Packaging guide: Add BundlePackage (#39691)

* Docs/Packaging guide: Add BundlePackage
* Adjusted version ordering note to reflect convention.

* build(deps): bump pytest from 7.4.1 to 7.4.2 in /lib/spack/docs (#39883)

Bumps [pytest](https://github.com/pytest-dev/pytest) from 7.4.1 to 7.4.2.
- [Release notes](https://github.com/pytest-dev/pytest/releases)
- [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst)
- [Commits](https://github.com/pytest-dev/pytest/compare/7.4.1...7.4.2)

---
updated-dependencies:
- dependency-name: pytest
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* crosstool-ng: add new package (#39865)

* Speed-up `spack external find` execution (#39843)

* Perform external spec detection with multiple workers

The logic to perform external spec detection has been refactored
into classes. These classes use the GoF "template" pattern to account
for the small differences between searching for "executables" and
for "libraries", while unifying the larger part of the algorithm.

A ProcessPoolExecutor is used to parallelize the work.

* Speed-up external find by tagging detectable packages automatically

Querying packages by tag is much faster than inspecting the repository,
since tags are cached. This commit adds a "detectable" tag to every
package that implements the detection protocol, and external detection
uses it to search for packages.

* Pass package names instead of package classes to workers

The slowest part of the search is importing the Python modules
associated with candidate packages. The import is done serially
before we distribute the work to the pool of executors.

This commit pushes the import of the Python module to the job
performed by the workers, and passes just the name of the packages
to the executors.

In this way imports can be done in parallel.

* Rework unit-tests for Windows

Some unit tests were doing a full e2e run of a command
just to check a input handling. Make the test more
focused by just stressing a specific function.

Mark as xfailed 2 tests on Windows, that will be fixed
by a PR in the queue. The tests are failing because we
monkeypatch internals in the parent process, but the
monkeypatching is not done in the "spawned" child
process.

* BUILD_TESTING is a CMake variable and should not be scoped (#39866)

* bugfix: only complete aliases for potential aliases (#39887)

Smart alias completion introduced in #39499 wasn't as smart as it needed to be, and
would complete any invalid command prefix and some env names with alias names.

- [x] don't complete aliases if there are no potential completions
      e.g., don't convert `spack isnotacommand` -> `spack concretize`

- [x] don't complete with an aliases if we're not looking at a top-level subcommand.

* Windows decompression: fix removal of intermediate file (#38958)

Extensionless archives requiring two-stage decompression and extraction
require intermediate archives to be renamed after decompression/extraction
to prevent collision. Prior behavior attempted to cleanup the intermediate
archive with the original name, this PR ensures the renamed folder is
cleaned instead.

Co-authored-by: Dan Lipsa <dan.lipsa@khq.kitware.com>
Co-authored-by: John Parent <john.parent@kitware.com>

* Cloverleaf-ref: proposal for a -ref version only (#39894)

* Cloverleaf-ref: proposal for a -ref version only
* Cloverleaf-ref: fixing typo.

---------

Co-authored-by: fpanichi <fpanichi@amd.com>

* Spack on Windows: fix shell scripts when root contains a space (#39875)

Enclose variable tracking root in quotes.

* veloc: add v1.7 (#39465)

* updates for VELOC 1.6

* veloc: add v1.7

---------

Co-authored-by: Bogdan Nicolae <bogdan.nicolae@acm.org>

* NMake Builder: change property name (#39824)

NMake makefiles are still called makefiles. The corresponding builder
variable was called "nmakefile", which is a bit unintuitive and lead
to a few easy-to-make, hard-to-notice mistakes when creating packages.
This commit renames the builder property to be "makefile"

* root: add latest available tag (#39895)

* build(deps): bump actions/upload-artifact from 3.1.2 to 3.1.3 (#39852)

Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact) from 3.1.2 to 3.1.3.
- [Release notes](https://github.com/actions/upload-artifact/releases)
- [Commits](https://github.com/actions/upload-artifact/compare/0b7f8abb1508181956e8e162db84b466c27e18ce...a8a3f3ad30e3422c9c7b888a15615d19a852ae32)

---
updated-dependencies:
- dependency-name: actions/upload-artifact
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump docker/build-push-action from 4.1.1 to 4.2.1 (#39901)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.1.1 to 4.2.1.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/2eb1c1961a95fc15694676618e422e8ba1d63825...0a97817b6ade9f46837855d676c4cca3a2471fc9)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* spglib: add v2.1.0 (#39910)

* ensure umpire~cuda~rocm when ~cuda~rocm

* update spglib

* Update package H5Z-ZFP to 1.1.1 (#39740)

* update to 1.1.1

* add maintainers

* add 1.1.0; set default

* singularity: fix package name in comment (#39822)

* DisCoTec: add new package (#35239)


Co-authored-by: Alexander Van Craen <40516079+vancraar@users.noreply.github.com>
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>

* intel-oneapi-mkl: hpcx-mpi support (#39750)

* wrf: fix patches for 4.2 to 4.4.2 for aarch64 config (#39900)

* gffcompare: new package @0.12.6 (#39917)

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* transdecoder: add 5.7.1 (#39916)

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* openfoam-org: zoltan renumbering and decompsition (#39915)

* likwid: search library path for compilation with hwloc (#39659)

* Garfield++: Add the patch to fix the missing headers and Set the environment variable HEED_DATABASE (#39904)

* sp: add develop version, build precision, and OpenMP support (#39874)

Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

* acfl: map rocky9 to RHEL-9 (#39892)

* w3emc: add develop version and more variants (#39884)

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>

* gitlab ci: Use image with awscli for rebuild-index job (#39636)

Instead of pointing to the image on DockerHub, which rate limits us and
causes pipeline failures durying busy times, use the version at ghcr.

And we might as well use the ghcr version everywhere else too.

* sirius: fix cuda_arch flags (#39889)

* celeritas: add v0.3.2 (#39879)

* elpa: Add --enable-scalapack-tests to configure when +autotune (#39728)

When building elpa +autotune, we apparently need to add
the configure option --enable-scalapack-tests

* Support of versions of cp2k below 7 marked as deprecated (#39652)

SIRIUS was introduced in version 7 of cp2k but could be used
in practice in version 9 (input format and functionalities).
SIRIUS with version 6 and below are marked as a dependency
conflict until CP2K version 9.

Co-authored-by: Mikael Simberg <mikael.simberg@iki.fi>

* Update archspec to latest commit (#39920)

- [x] Intel flags for old architectures
- [x] Support for Sapphire Rapids
- [x] Cache the "ancestors" computation

* glibc: fix deps, drop pre 2.17 (#39806)

* glibc: add missing deps, drop < 2.17

Building glibc 2.17 requires linking libgcc_{s,eh}.a, which themselves
depend on whatever glibc the current gcc uses for its runtime libraries.

Newer gcc depends on gnu extensions of libdl it seems, so that means you
simply cannot build old glibc with gcc-using-new-glibc.

The relevant fix in glibc is this commit:

commit 95f5a9a866695da4e038aa4e6ccbbfd5d9cf63b7
Author: Joseph Myers <joseph@codesourcery.com>
Date:   Tue Jul 3 19:14:59 2012 +0000

    Avoid use of libgcc_s and libgcc_eh when building glibc.

See also references to that commit in the glibc mailing list.

* update the gmake bound

* add --without-selinux

* py-dunamai: add 1.18.0 (#39849)

* NUMAPROF: add v1.1.5 (#39891)

* MALT: add v1.2.2 (#39890)

* ctffind: extend a Power 9 patch to AArch64 (#39137)

* dd4hep: make sure to find libraries correctly (#39516)

* dakota: add v6.18 (#39882)


Co-authored-by: Travis Drayna <tdrayna@loki.local>

* py-enum-tools: add new package and dependencies (#39672)

* Adds package 'enum-tools'

* Fixes syntax

* py-enum-tools: update pypi link and dependencies

* py-whey: add new package

* py-consolekit: add new package

* py-shippinglabel: add new package

* py-project-parser: add new package

* py-handy-archives: add new package

* py-domdf-python-tools: add new package

* py-dom-toml: add new package

* py-dist-meta: add new package

* py-deprecation-alias: add new package

* py-pygments: add versions 2.16.0 and 2.16.1

* py-mistletoe: add new package

* py-apeye: add new package

* py-apeye-core: add new package

* Fix dependencies' names and remove redundancies

* Fix style

* py-enum-tools: fix dependencies

* py-mistletoe: update dependencies

* Apply suggestions from code review

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* py-whey: fix dependencies

* py-whey: fix style

* py-apeye: fix dependencies

---------

Co-authored-by: Fábio de Andrade Barboza <f168817@dac.unicamp.br>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* SLEPc: add v3.19.2 (#39805)

Co-authored-by: Satish Balay <balay@mcs.anl.gov>

* py-pipdeptree: add new package; py-hatchling: add 1.18.0 (#39697)

* py-hatchling: add 1.18.0

* py-pipdeptree: add new package

* py-hatchling: add Python 3.8 dependency

* Apply suggestion from code review

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

---------

Co-authored-by: Fábio de Andrade Barboza <f168817@dac.unicamp.br>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* gdrcopy: inherit from CudaPackage, update dependencies (#39596)

* Add another url for whizard (#37354)

Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>

* update q-e-sirius package (#39744)

* Update MDAnalysis (#39787)

* ensure umpire~cuda~rocm when ~cuda~rocm

* update mdanalysis

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

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

---------

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* spectre: add v2023.08.18 and v2023.09.07 (#39925)

* py-fairscale and dependencies py-pgzip libgit2 py-pygit2 (#39220)

* simple build of py-openai

* added variants to py-openai

* py-pandas-stubs is a dependency for py-openai

* fixed format and flake8 errors for py-openai

* black format error for py-pandas-stubs

* [@spackbot] updating style on behalf of sidpbury

* made style and format changes to py-openai

* made style and format changes to py-pandas-stubs

* py-types-pytz is a dependency for py-openai

* [@spackbot] updating style on behalf of sidpbury

* updated py-openpyxl for ver 3.0.7 and 3.1.2

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* ajs requested changes for py-openai

* updated py-openpyxl for supported python

* [@spackbot] updating style on behalf of sidpbury

* updated py-openpyxl

* removed requirement.txt dependencies in  py-openpyxl

* removed python depends on from openpyxl

* updated package to support newer versions

* updated version of py-pygit2

* py-fairscale is a new package in support of torch

* py-pgzip is a dependency for py-fairscale

* switch fairscale pypi, added extra variant for convenience

* removed python dependency

* changed multiple requirement versions

* changes for upstream py-fairscale

* changes for upsteam py-pygit2

* Update package.py

* Update package.py

* sorted out some of the dependency versions

* removed version 1.12.2 because dependency could not be met

* updated py-cached-property dependency

* suggested changes from adamjstewart

---------

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* cuda: add versions 12.2.0 and 12.2.1 (#39684)

* fpchecker: add version 0.4.0 (#39924)

* correct py-bx-python@0.8.8 python dependency (#39766)

* correct python dependency for 0.8.8

* add missing zlib dependency

* restore missing whitespace

* correct versions for 0.9.0, clarify rules for future releases

* Update package.py

* Remove whitespace for black check

* tidynamics: add v1.1.2 (#39911)

* ensure umpire~cuda~rocm when ~cuda~rocm

* update tydynamics

* py-tomlkit: add 0.12.1 (#39922)

* py-tinycss2: add 1.2.1 (#39921)

* py-tifffile: add 2023.8.30 (#39918)

* py-black: add v23.9 (#39931)

* package_qscintilla_build_with_qt6 (#39544)

* package_qscintilla_build_with_qt6

* Update var/spack/repos/builtin/packages/qscintilla/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* improve

* fix Qsci.abi3.so install

* simplify, fix, tidy

* fix style

* fix style

* fix style

* Update var/spack/repos/builtin/packages/qscintilla/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/qscintilla/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/qscintilla/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/qscintilla/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Update var/spack/repos/builtin/packages/qscintilla/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* improve

* improve style

* fix style

* make black happy

* add ver 2.14.1

* update

* make black happy

* Update var/spack/repos/builtin/packages/qscintilla/package.py

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* improve

---------

Co-authored-by: Sinan81 <Sinan@world>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Add awscli@1.29.41 and its dependency py-botocore@1.31.41 (#39878)

* Add awscli@1.29.41 and its dependency py-botocore@1.31.41

* Update var/spack/repos/builtin/packages/awscli/package.py

Co-authored-by: Manuela Kuhn <36827019+manuelakuhn@users.noreply.github.com>

---------

Co-authored-by: Manuela Kuhn <36827019+manuelakuhn@users.noreply.github.com>

* py-build: add v1 (#39930)

* fish: add 3.6.0, 3.6.1, update cmake requirement (#39899)

* [gromacs] Fix 2021.2 build error (#39722)

* [gromacs] Fix 2021.2 build error

See https://gromacs.bioexcel.eu/t/compilation-failure-for-gromacs-2021-1-and-2021-2-with-cmake-3-20-2/2129

* Update var/spack/repos/builtin/packages/gromacs/package.py

Co-authored-by: Andrey Alekseenko <al42and@gmail.com>

---------

Co-authored-by: Andrey Alekseenko <al42and@gmail.com>

* lbann: make two variants sticky (#39710)

* Make the state of the Python Front End (PFE) and Python data reader
support sticky so that the concretizer does not arbitrarily disable
them.

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>

* build(deps): bump black from 23.7.0 to 23.9.1 in /lib/spack/docs (#39937)

Bumps [black](https://github.com/psf/black) from 23.7.0 to 23.9.1.
- [Release notes](https://github.com/psf/black/releases)
- [Changelog](https://github.com/psf/black/blob/main/CHANGES.md)
- [Commits](https://github.com/psf/black/compare/23.7.0...23.9.1)

---
updated-dependencies:
- dependency-name: black
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* filtlong: add v0.2.1, patch for %gcc@13: (#39775)

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* Add gperftools 2.13 (#39940)

* asp.py: fix deprecation warning (#39943)

* openssl: deprecate 1.1.1 (#39942)

* Update PennyLane packages to v0.32. (#39688)

* Update PennyLane packages to v0.32.

* Reformat.

* Couple small fixes.

* Fix Lightning cmake_args.

* Couple dep fixes in py-pennylane + plugins.

* Fix scipy condition.

* Add comment on conflicting requirement.

* openexr: add 2.4.3, 2.5.9, 3.1.11 & 3.2.0 (#39863)

* openexr: add 2.4.3, 2.5.9, 3.1.11 & 3.2.0

- 2.5.9 is the latest version compatible with OpenScenGraph
- improved compatibility with GCC 13

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* openexr: drop unsupported debug variant

--disable/enable-debug is not supported by ./configure in 1.3, 1.7, 2.0, 2.2 and 2.3

* openexr: transform into multi-build system package

simplifies package considerably, as nothing special seems to be required

* openexr: pkg-config is also used by @3

* openexr: use system libdeflate instead of internal

if no libdeflate is found, openexr would download and build its own starting with 3.2.0

* openexr: disable tests

would download lots of data during cmake and make build times noticably longer

---------

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* amrex: add v23.09 (#39788)

* g2 package bugfix (#39923)

* g2 package bugfix

* g2: fix w3emc dep

* fix setup_run_environment

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* Update package.py

* style fix

* Update var/spack/repos/builtin/packages/g2/package.py

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>

* Update var/spack/repos/builtin/packages/g2/package.py

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>

---------

Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>

* Filter spack compiler wrappers for h4cc in var/spack/repos/builtin/packages/hdf/package.py (#39870)

* libjpeg-turbo: Fix Darwin lib install name (#39834)

* Fix Darwin lib install name in var/spack/repos/builtin/packages/libjpeg-turbo/package.py

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

Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

---------

Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>

* mpifileutils: switch to main branch (#39525)

* CI/Add superlu-dist to broken stand-alone tests due to hang (#38908)

* Add superlu-dist to broken stand-alone CI tests
* Revert "disable superlu test (#38894)"
  This reverts commit e16397b5d865d402c749482d05bb2bdc09b96661.

* bam-readcount: add 1.0.1, correct build flags (#39950)

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* binutils: add v2.41 (#39483)

* r-pl94171: Add R package PL94171 (#39926)

* r-piggyback: Add `R` package `piggyback` (#39932)

* ci: Tag reindex job to match the image architecture (#39958)

* Fix typo in metaclasses (#39947)

* py-lightly: add v1.4.18 (#39960)

* Update g2c recipe: add develop version and misc. variants (#39965)

* Update g2c recipe: add develop version and misc. variants
* add testing to g2c
* Update package.py

* py-maestrowf: new version, fix artificial py-cryptography dep, support openssl 3 (#39946)

* py-maestrowf: add new version 1.1.9, deprecate development releases

* py-maestrowf: drop py-cryptography in 1.1.9

* py-maestrowf: drop py-cryptography dependency entirely, since it is not a direct dependency

* py-merlin: new version, ensure openssl 3 compat

* py-merlin: drop py-coloredlogs@10: lowerbound

* py-maestrowf: add py-rich, reorder deps

* py-celery: explain why upperbound is in spack but not in requirements.txt

* unifyfs: support openssl 3 (#39945)

* unifyfs: drop upperbound on deprecated openssl

The package uses deprecated MD5 functions from OpenSSL, which causes
warnings, but (a) Spack by default disables -Werror, and (b) those
functions will continue to exist in OpenSSL 3.

* unifyfs: enable parallel build, only make check sequential

* unifyfs: order class methods by install phases

* gitlab ci: temporarily disable darwin aarch64 (#39974)

as there are no or few runners available

* Spec.tree: add type hints (#39948)

* ASP-based solver: don't declare deprecated versions unless required (#38181)

Currently, the concretizer emits facts for all versions known to Spack, including deprecated versions, and has a specific optimization objective to minimize their use.

This commit simplifies how deprecated versions are handled by considering possible versions for a spec only if they appear in a spec literal, or if the `config:deprecated:true` is set directly or through the `--deprecated` flag. The optimization objective has also been removed, in favor of just ordering versions and having deprecated ones last.

This results in:

a) no delayed errors on install, but concretization errors when deprecated versions would be the only option. This is in particular relevant for CI where it's better to get errors early
b) a slight concretization speed-up due to fewer facts
c) a simplification of the logic program.

Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>

* Add cmake package for v2.1.0 and master (git) versions of libfirefly (#39778)

* libfirefly: Add cmake package for v2.1.0 and master (git) versions

* Separate git URL from version declaration

Co-authored-by: Alec Scott <alec@bcs.sh>

* CP2K package: various AOCC compatibility fixes (#39773)

* cp2k: patch several old versions to help newer compilers
* cp2k: use -O2 optimization for AOCC compiler
* cp2k: do not support old AOCC compilers
* cp2k: simplify when clause due to conflicting out old compilers
* cp2k: give a more meaningful message for confilcts

Co-authored-by: Ning Li <ning.li@amd.com>
Co-authored-by: Phil Tooley <phil.tooley@amd.com>

* GDAL: add v3.7.2 (#39979)

* glibc: add older versions (#39978)

* hiop: Add version 1.0.0 (#39972)

* scorep: Change in configuration option for nvhpc compiler  (#39919)

* scorep version 8.1 added
* configure finds cudart and cupti in the nvhpcsdk suite
* style fixed
* changes to find libcuda.so in cuda directory

---------

Co-authored-by: Laura Bellentani <lbellen1@login01.leonardo.local>

* Revert "ASP-based solver: don't declare deprecated versions unless required (#38181)" (#40010)

This reverts commit babd29da5015d740748329006487b7d7f96df169.

* add charliecloud 0.34, deprecate previous (#40008)

* interproscan: adding new version and variant to include databases. (#40009)

* Update upp recipe (#40006)

* Add check() to sp recipe (#40005)

* Add develop version to wrfio (#40004)

* Add develop version to sigio (#40003)

* Add develop version to sfcio (#40002)

* Add develop version to sfcio
* Update package.py

* Add develop version to nemsiogfs (#40001)

* Add develop version for nemsio (#40000)

* Add two versions to ncio recipe (#39999)

* Add develop version to landsfcutil (#39998)

* Add develop version for gfsio (#39995)

* Add develop version for gfsio
* Update package.py

* Add develop version to g2tmpl (#39994)

* Add develop version to g2tmpl
* Update package.py

* ip recipe updates (#39997)

* Add pic and shared variants to GSL (#37961)

* Add pic and shared variants for gsl

* fix gsl variant logic

* make +pic default for gsl

* Add libs property/find_libraries to libiconv (#37962)

* Add static-only option for udunits (#38099)

* Add static-only option for udunits

* add maintainer to udunits

* add trompeloeil package (#39944)

* add trompeloeil package
* remove maintainer as he wish not to be
* fix style

* Allow git to compile against static curl (#37960)

* Add pic variant for libpng (#37964)

* Support static case for find_libraries() in xz (#38100)

* Update xz

* add maintainer to xz

* [@spackbot] updating style on behalf of AlexanderRichert-NOAA

* data-vis-sdk: make llvm~libomptarget the default (#40007)

Currently the configuration of the pipeline is such that
there are multiple "optimal" solutions. This is due to
the pipeline making ~lld the default for LLVM, but leaving
+libomptarget from package.py

Since LLVM recipe has a:

conflicts("~lld", "+libomptarget")

clingo is forced to change one of the two defaults, and
the penalty for doing so is the same for each. Hence, it
is random whether we'll get +libomptarget+lld
or ~libomptarget~lld.

This fixes it by changing also the default for libomptarget.

* Add efficient `deptype` flag and `spack.deptypes` module (#39472)

This commit replaces the internal representation of deptypes with `int`, which is more compact
and faster to operate with.

Double loops like:
```
any(x in ys for x in xs)
```
are replaced by constant operations bool(xs & ys), where xs and ys are dependency types. 

Global constants are exposed for convenience in `spack.deptypes`

* Add OIDC tokens to gitlab-ci jobs (#39813)

* Add OIDC tokens to gitlab-ci jobs

This should allow us to start issuing just-in-time generated
credentials for CI jobs that need to modify binary mirrors. The "aud"
claim of the token describes what the token is allowed to do. The
claim is verified against a set of rules on the IAM role using signed
information from GitLab. See spack-infrastructure for the claim
verification logic.

---------

Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>

* Ensure PythonExtension is consistent when finding externals (#40012)

PythonExtension is a base class for PythonPackage, and
is meant to be used for any package that is a Python
extension but is not built using "python_pip".

The "update_external_dependency" method in the base
class calls another method that is defined in the derived
class.

Push "get_external_python_for_prefix" up in the hierarchy
to make method calls consistent.

* Add pic option & maintainer to lz4 (#38095)

Co-authored-by: Greg Becker <becker33@llnl.gov>

* Set # of ninja procs to 'make_jobs' for scipy (#293) (#38831)

* gffread: new package @0.12.7 (#40015)

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* meme: add 5.5.4, correct dependencies (#40014)

* meme: add 5.5.4, correct dependencies
* variant renaming

---------

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* gitlab ci: Put Cray binaries in public mirrors (#39938)

* Add Scine QCMaquis recipe to builtin packages (#39709)

* Add Scine QCMaquis recipe to builtin packages
* Format scine-qcmaquis recipe using black
* Remove import os from scine-qcmaquis recipe
* Reduce length of symmetries line in scine-qcmaquis
* Add myself as a maintainer of the scine-qcmaquis recipe
* Update Scine-QCMaquis recipe following the review
  PR URL: https://github.com/spack/spack/pull/39709
  Changes:
  - Updated Symmetries variant to us multi feature
  - Added dependency to boost+chrono since it was undocumented
  - Use define_from_variant to setup CMake args
  - Make version 3.1.2 be preferred since 3.1.3 build is broken
* Change build_tests boolean condition

---------

Co-authored-by: Adam Grofe <adamgrofe@microsoft.com>

* Add shared and pic variants to libxml2 (#38094)

* build(deps): bump sphinx from 7.2.5 to 7.2.6 in /lib/spack/docs (#40029)

Bumps [sphinx](https://github.com/sphinx-doc/sphinx) from 7.2.5 to 7.2.6.
- [Release notes](https://github.com/sphinx-doc/sphinx/releases)
- [Changelog](https://github.com/sphinx-doc/sphinx/blob/master/CHANGES.rst)
- [Commits](https://github.com/sphinx-doc/sphinx/compare/v7.2.5...v7.2.6)

---
updated-dependencies:
- dependency-name: sphinx
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* Sandia OpenSHMEM: Update to include version 1.5.2 (#40025)

* Group primitive url/path handling functions together (#40028)

* update sha256 after new tarball uploads (#40030)

* linux-headers: drop rsync dep, add new version (#39867)

* Windows RPATHing: fix symlink error (#39933)

With 349ba83, you cannot symlink() if the link already exists.
Update the simulated RPATHing logic on Windows to account for that.

* gitlab ci: submit the correct audience for protected publish jobs (#40046)

* CI: add spec to job vars (#39905)

* CI: add details about built spec to ci job variables

Co-authored-by: Alec Scott <alec@bcs.sh>
Co-authored-by: Alec Scott <hi@alecbcs.com>

* grass: Update spec for gdal dependency (#38396)

* Julia: Fix sha256 for some LLVM patches (#40041)

* coin3d: apply upstream patches to fix build on Centos 8 (#39839)

fixes undefined references to dlerror, dlopen, dlsym, dlclose and
XDefaultScreenOfDisplay, XScreenNumberOfScreen, XCreatePixmap, XFree, XFreePixmap, XCloseDisplay, XOpenDisplay

* checksum: use FIXME instead of FIX ME when adding versions (#40050)

The former is highlighted by editors, while the latter is not.

* chexmix: new package (#38441)

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* Nextflow: add 22.04.3 (#40034)

* [chore] py-aniso8601: Add version 7.0.0 (#39808)

* [chore] py-aniso8601: Add version 3.0.2 required by py-graphene

* py-aniso8601: Add version 7.0.0 and constraints on python version

* py-aniso8601: fix style

* [fix] py-aniso8601: remove version 3.0.2 which depends on removed version of python; set the minimal version of python to 3.7

* py-aniso8601: remove version constraint on python

* py-rseqc: add 5.0.1 (#39953)

* py-rseqec: add 5.0.1

* Update package.py

* style ...

---------

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* py-trove-classifiers: add 2023.8.7 (#39977)

* py-traits: add 6.4.2 (#39976)

* [add] py-ldap3: new recipe, required by py-metomi-rose (#39982)

* python: Don't prefer 3.10 (#40036)

* Enabled building GCC 13.1 on darwin/aarch64. (#38667)

* py-werkzeug: Add version 0.12.2 required by py-graphene-tornado @2.6.1 (#39984)

* build(deps): bump docker/build-push-action from 4.2.1 to 5.0.0 (#39969)

Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 4.2.1 to 5.0.0.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/0a97817b6ade9f46837855d676c4cca3a2471fc9...0565240e2d4ab88bba5387d719585280857ece09)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump docker/setup-qemu-action from 2.2.0 to 3.0.0 (#39968)

Bumps [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/2b82ce82d56a2a04d2637cd93a637ae1b359c0a7...68827325e0b33c7199eb31dd4e31fbe9023e06e3)

---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* build(deps): bump docker/login-action from 2.2.0 to 3.0.0 (#39966)

Bumps [docker/login-action](https://github.com/docker/login-action) from 2.2.0 to 3.0.0.
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/465a07811f14bebb1938fbed4728c6a1ff8901fc...343f7c4344506bcbf9b4de18042ae17996df046d)

---
updated-dependencies:
- dependency-name: docker/login-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* py-types-setuptools: add 68.2.0.0 (#40040)

* py-types-requests: add 2.31.0.2 (#40039)

* py-types-python-dateutil: add 2.8.19.14 (#40038)

* cpat: new package @3.0.4 (#40022)

* cpat: new package @3.0.4

* Update package.py

---------

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* py-types-urllib3: add 1.26.25.14 (#40048)

* py-types-urllib3: add 1.26.25.14

* Fix style

* py-types-typed-ast: add 1.5.8.7 (#40047)

* Fix several build errors for hdf-eos2 (not only but in particular on macOS w/ apple-clang) (#39877)

Fix permissions for configure file in var/spack/repos/builtin/packages/hdf-eos2/package.py, fix dependencies to match what hdf provides, update compiler flags for apple-clang

* py-types-psutil: add 5.9.5.16 (#40027)

* py-twine: add 4.0.2 (#40026)

* py-tornado: add 6.3.3 (#39949)

* py-tornado: add 6.3.3

* Fix style

* SeLaLib: add new package (#39847)

* Revert "gitlab ci: temporarily disable darwin aarch64 (#39974)" (#40052)

This reverts commit 2c13361b09c552427623f9e8a728fad94e3de4e9.

* py-tqdm: add 4.66.1 (#39952)

* Add cuda as a variant to opa-psm2 (#39754)



Signed-off-by: Raafat Feki <rfeki@cornelisnetworks.com>

* xxdiff: add new package  (#40021)

* Add new package xxdiff

* style fixes

* Versioning updates to match best practices

* Full hash and flex, bison as build deps

* pmix: new versions (#40055)

* grads: add versions and variants (#40017)

* Add grads versions, variants, and dependency
* Bugfix for hdf4 libs and style fixes
* Switch boolean variant checking syntax

* r-wru: Add `R` package `wru` (#39935)

* new package composable kernel (#39222)

* initial commit to add composable kernel package
* change dependencies to type build and add amdgpu_target variant
* fix spacing
* fix styling
* remove rocmmlir from miopen-hip recipe
* enable miopen with ck after 5.5.1
* fix typo

* Better detection of Python libs/headers (#39308)

* mdspan: new package (#40024)

* new package mdspan

* Update var/spack/repos/builtin/packages/mdspan/package.py

Co-authored-by: Alec Scott <alec@bcs.sh>

* mdspan- fix style

---------

Co-authored-by: Alec Scott <alec@bcs.sh>

* build(deps): bump docker/setup-buildx-action from 2.10.0 to 3.0.0 (#39967)

Bumps [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) from 2.10.0 to 3.0.0.
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/885d1462b80bc1c1c7f0b00334ad271f09369c55...f95db51fddba0c2d1ec667646a06c2ce06100226)

---
updated-dependencies:
- dependency-name: docker/setup-buildx-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>

* adios2: add smoke tests (#39970)

* py-rarfile: add v4.1 (#40054)

* py-lightning: add v2.0.8/9 (#40058)

* py-typing-extensions: add 4.8.0 (#40049)

* extrae: add versions 4.0.5, 4.0.6 (#40063)

* Lammps: don't apply AOCC patches to versions containing the backport (#39844)


Co-authored-by: Phil Tooley <phil.tooley@amd.com>

* ASP-based solver: declare deprecated versions iff config:deprecated:true (#40011)

By default, do not let deprecated versions enter the solve.

Previously you could concretize to something deprecated, only to get errors on install.

With this commit, we get errors on concretization, so the issue is caught earlier.

* ci: drop redundant packages.yaml (#40068)

* Use process pool executors for web-crawling and retrieving archives (#39888)

Fix a race condition when searching urls, and updating a shared
set '_visited'.

* conquest: add new package (#40053)

* ci: dont use nightly image tag (#40070)

* python version dependency for supporting nwchem-702 build (#40072)

Co-authored-by: viveshar <vivek.sharma2@amd.com>

* eospac: expose version 6.5.7 (#40060)

Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>

* FleCSI updates (#40087)

* flecsi: update description and flog variant help
* flecsi: use kokkos_cxx when needed

* Fix error in qt5.15 building qtlocation with gcc13 (#40091)

* Add details on error messages from requirements (#40092)

* Add 23 to the cxxstd variant of fmt (#40080)

* DLA-Future: add v0.2.1 (#40098)

* cython: add build-tools tag (#40100)

* Fix a leftover typo from depflag rework (#40101)

* Add 23 and 26 to the cxxstd variant for boost (#40081)

* Add support for C++23 in pika and pika-algorithms packages (#40078)

* Add C++23 support for pika

* Add C++23 support for pika-algorithms as well

* Revert PR 40091 which duplicates PR 38987 (#40107)

* ESMF package: fix netcdf static libs and variant combinations (#39738)

Add "snapshot" variant for identifying UFS WM support

* gptune: doesnt depend on cython (#40104)

* py-gevent: relax dependency constraints (#40117)

* e4s-cray: drop in ci as there are no runners (#40122)

* Bazel patch specs were too restrictive (#40084)

These patches should always be applied - the existing Bazel code is always wrong, working on some older compilers was a lucky fluke.

* py-scikit-sparse: add 0.4.11, 0.4.12 (#40077)

* py-vcrpy: add 5.1.0 (#40075)

* [add] py-ansimarkup: new recipe required by py-cylc-flow (#39989)

* [add] py-ansimarkup: new recipe required by py-cylc-flow

* py-ansimarkup: remove version constraint on python, add version 2.1.0

* package:pylint fix isort dependency versions (#40094)

Co-authored-by: sbulut <sbulut@3vgeomatics.com>

* cython: fix recythonize by default patch (#40096)

* py-versioneer: add 0.29 (#40076)

* Revert "Merge pull request #132 from greenc-FNAL/feature/reusable-externals-from-buildcache"

This reverts commit 45f8936b0a00e66f725af4db631085037b89313e, reversing
changes made to 4343707720cf4d8e44e9727005a3710ff515855d.

* e4s: drop python 3.8 preference (#40123)

* Remove Python 3.6 from bootstrap tests on Ubuntu, add 3.11 (#40131)

* Restore virtuals normalization on edge construction (#40130)

Put back normalization of the "virtuals" input as a sorted tuple. 

Without this we might get edges that differ just for the order of 
virtuals, or that have lists, which are not hashable.

Add unit-tests to prevent regressions.

* reuse concretization: allow externals from remote when locally configured

This looks to me like the best compromise regarding externals in a
buildcache. I wouldn't want `spack install` on my machine to install
specs that were marked external on another. At the same time there are
centers that control the target systems on which spack is used, and
would want to use external in buildcaches.

As a solution, reuse concretization will now consider those externals
used in buildcaches that match a locally configured external in
packages.yaml.

So for example person A installs and pushes specs with this config:

```yaml
packages:
  ncurses:
    externals:
    - spec: ncurses@6.0.12345 +feature
      prefix: /usr
```

and person B concretizes and installs using that buildcache with the
following config:

```yaml
packages:
  ncurses:
    externals:
    - spec: ncurses@6
    prefix: /usr
```

the spec will be reused (or rather, will be considered for reuse...)

* aocl-sparse: use `.libs` instead of hard-coded value for library computation (#39868)

Co-authored-by: matooley <phil.tooley@amd.com>

* Harden compiler detection against errors (#39736)

Fixes #39622

Add a timeout to compiler detection and allow Spack to proceed when
this timeout occurs.

In all cases, the timeout is 120 seconds: it is assumed any compiler
invocation we do for the purposes of verifying it would resolve in
that amount of time.

Also refine executables that are tested as being possible MSVC
instances, and limit where we try to detect MSVC. In more detail:

* Compiler detection should timeout after a certain period of time.
  Because compiler detection executes arbitrary executables on the
  system, we could encounter a program that just hangs, or even a
  compiler that hangs on a license key or similar. A timeout
  prevents this from hanging Spack.
* Prevents things like cl-.* from being detected as potential MSVC
  installs. cl is always just cl in all cases that Spack supports.
  Change the MSVC class to indicate this.
* Prevent compilers unsupported on certain platforms from being
  detected there (i.e. don't look for MSVC on systems other than
  Windows).

The first point alone is sufficient to address #39622, but the
next two reduce the likelihood of timeouts (which is useful since
those slow down the user even if they are survivable).

* [add] py-graphql-ws: new recipe, required by py-cylc-uiserver (#39991)

* [add] py-graphql-ws: new recipe, required by py-cylc-uiserver

* py-graphql-ws: remove constraint on version for python

* py-nanobind add cmake path (#40079)

* py-nanobind add cmake path

* fix style

---------

Co-authored-by: Robert Underwood <runderwood@anl.gov>

* Fix false detection of llvm-amdgpu as llvm and llvm-doe (#40113)

* SIRIUS: remove old versions (#40105)

* phist: fix compatibility with python@3.11: (#40082)

* relion: add 4.0.1, fix build on Rocky8 (#40074)

Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>

* lorene: add C++ headers to the install (#39909)

* Add missing platform in Charm++ (#40051)

Add missing `linux` platform in Charm++ when building for `arm8`.

* py-fenics-dolfinx: add version upper bound for Python dependency (#40125)

* py-fenics-dolfinx: add upper bound on Python version

* Small fix

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

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

---------

Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>

* Accumulated tweaks from Marc M.

Be less specific about gettext with ~libxml2

can use libc+iconv or gettext with or without libxml2

initial round of ups compatability from prev release

readonly bootstrap (cvmfs) workaround

package updates from fnal-develop

added ups compat files

more missing files

moderncmakedomain package

per_os_scope

Redo of FNALssi/spack #94

redo of FNALssi #162

Revert "redo of FNALssi #162"

This reverts commit f92ed6e74a6e755d5314774ea2197148d24c8d60.

Someone fixed the geant4 recipe with a for loop in the recipe instead,
so not doing this after all.

redo of FNALssi #161

more cleanups from fnal-develop

More lib64 fun

speling of startswith

version

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Raafat Feki <rfeki@cornelisnetworks.com>
Co-authored-by: Brian Vanderwende <vanderwb@ucar.edu>
Co-authored-by: Paul Kuberry <pakuber@sandia.gov>
Co-authored-by: Tom Payerle <payerle@umd.edu>
Co-authored-by: Rémi Lacroix <remi.lacroix@idris.fr>
Co-authored-by: Johann Gaebler <43016598+jgaeb@users.noreply.github.com>
Co-authored-by: Tamara Dahlgren <35777542+tldahlgren@users.noreply.github.com>
Co-authored-by: Geoffrey Lentner <glentner@purdue.edu>
Co-authored-by: Matheus Henrique <matheushmshenrique@gmail.com>
Co-authored-by: Martin Aumüller <aumuell@reserv.at>
Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Co-authored-by: Vanessasaurus <814322+vsoch@users.noreply.github.com>
Co-authored-by: github-actions <github-actions@users.noreply.github.com>
Co-authored-by: David Gardner <gardner48@llnl.gov>
Co-authored-by: Niclas Jansson <njansson@kth.se>
Co-authored-by: Rocco Meli <r.meli@bluemail.ch>
Co-authored-by: Sam Reeve <6740307+streeve@users.noreply.github.com>
Co-authored-by: eflumerf <61473357+eflumerf@users.noreply.github.com>
Co-authored-by: kwryankrattiger <80296582+kwryankrattiger@users.noreply.github.com>
Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Massimiliano Culpo <massimiliano.culpo@gmail.com>
Co-authored-by: Anton Kozhevnikov <toxa81@gmail.com>
Co-authored-by: Todd Gamblin <tgamblin@llnl.gov>
Co-authored-by: Dan Lipsa <dan.lipsa@kitware.com>
Co-authored-by: Dan Lipsa <dan.lipsa@khq.kitware.com>
Co-authored-by: John Parent <john.parent@kitware.com>
Co-authored-by: AMD Toolchain Support <73240730+amd-toolchain-support@users.noreply.github.com>
Co-authored-by: fpanichi <fpanichi@amd.com>
Co-authored-by: John W. Parent <45471568+johnwparent@users.noreply.github.com>
Co-authored-by: eugeneswalker <38933153+eugeneswalker@users.noreply.github.com>
Co-authored-by: Bogdan Nicolae <bogdan.nicolae@acm.org>
Co-authored-by: Thomas Madlener <thomas.madlener@desy.de>
Co-authored-by: Mark (he/his) C. Miller <miller86@llnl.gov>
Co-authored-by: Adam Fidel <ledif@users.noreply.github.com>
Co-authored-by: Freifrau von Bleifrei <freifrauvonbleifrei@users.noreply.github.com>
Co-authored-by: Alexander Van Craen <40516079+vancraar@users.noreply.github.com>
Co-authored-by: Robert Cohn <robert.s.cohn@intel.com>
Co-authored-by: Annop Wongwathanarat <annop.wongwathanarat@gmail.com>
Co-authored-by: George Young <A-N-Other@users.noreply.github.com>
Co-authored-by: LMS Bioinformatics <bioinformatics@lms.mrc.ac.uk>
Co-authored-by: kjrstory <kjrstory@gmail.com>
Co-authored-by: Thomas Gruber <Thomas.Roehl@googlemail.com>
Co-authored-by: Tao Lin <831611+mirguest@users.noreply.github.com>
Co-authored-by: Alex Richert <82525672+AlexanderRichert-NOAA@users.noreply.github.com>
Co-authored-by: Scott Wittenburg <scott.wittenburg@kitware.com>
Co-authored-by: Simon Pintarelli <1237199+simonpintarelli@users.noreply.github.com>
Co-authored-by: Seth R. Johnson <johnsonsr@ornl.gov>
Co-authored-by: Taillefumier Mathieu <29380261+mtaillefumier@users.noreply.github.com>
Co-authored-by: Mikael Simberg <mikael.simberg@iki.fi>
Co-authored-by: Manuela Kuhn <36827019+manuelakuhn@users.noreply.github.com>
Co-authored-by: Sébastien Valat <sebastien.valat@inria.fr>
Co-authored-by: dslarm <38504854+dslarm@users.noreply.github.com>
Co-authored-by: Travis <128559955+tdrayna@users.noreply.github.com>
Co-authored-by: Travis Drayna <tdrayna@loki.local>
Co-authored-by: Fábio de Andrade Barboza <69045579+Barbozafab@users.noreply.github.com>
Co-authored-by: Fábio de Andrade Barboza <f168817@dac.unicamp.br>
Co-authored-by: Adam J. Stewart <ajstewart426@gmail.com>
Co-authored-by: Jose E. Roman <jroman@dsic.upv.es>
Co-authored-by: Satish Balay <balay@mcs.anl.gov>
Co-authored-by: Scot Halverson <shalverson@nvidia.com>
Co-authored-by: Juan Miguel Carceller <22276694+jmcarcell@users.noreply.github.com>
Co-authored-by: jmcarcell <jmcarcell@users.noreply.github.com>
Co-authored-by: Nils Vu <owls@nilsvu.de>
Co-authored-by: sid <48367591+sidpbury@users.noreply.github.com>
Co-authored-by: Richard Berger <rberger@lanl.gov>
Co-authored-by: Tim Haines <thaines.astro@gmail.com>
Co-authored-by: Mike Renfro <mike+github@renf.ro>
Co-authored-by: Sinan <sbulutw@gmail.com>
Co-authored-by: Sinan81 <Sinan@world>
Co-authored-by: Dom Heinzeller <dom.heinzeller@icloud.com>
Co-authored-by: Caetano Melone <cmelone@users.noreply.github.com>
Co-authored-by: Stephen Sachs <stephenmsachs@gmail.com>
Co-authored-by: Andrey Alekseenko <al42and@gmail.com>
Co-authored-by: Brian Van Essen <vanessen1@llnl.gov>
Co-authored-by: Vincent Michaud-Rioux <vincent.michaud-rioux@xanadu.ai>
Co-authored-by: Weiqun Zhang <WeiqunZhang@lbl.gov>
Co-authored-by: Adam Moody <moody20@llnl.gov>
Co-authored-by: Gurkirat Singh <tbhaxor@gmail.com>
Co-authored-by: Alec Scott <alec@bcs.sh>
Co-authored-by: Ning Li <ning.li@amd.com>
Co-authored-by: Phil Tooley <phil.tooley@amd.com>
Co-authored-by: Cameron Rutherford <robert.rutherford@pnnl.gov>
Co-authored-by: Laura Bellentani <l.bellentani@cineca.it>
Co-authored-by: Laura Bellentani <lbellen1@login01.leonardo.local>
Co-authored-by: Jordan Ogas <jogas@lanl.gov>
Co-authored-by: snehring <7978778+snehring@users.noreply.github.com>
Co-authored-by: Billae <65948826+Billae@users.noreply.github.com>
Co-authored-by: Dan LaManna <danlamanna@users.noreply.github.com>
Co-authored-by: Greg Becker <becker33@llnl.gov>
Co-authored-by: Adam Grofe <agrofe1417@gmail.com>
Co-authored-by: Adam Grofe <adamgrofe@microsoft.com>
Co-authored-by: Jack Morrison <32687739+jack-morrison@users.noreply.github.com>
Co-authored-by: Alec Scott <hi@alecbcs.com>
Co-authored-by: Joscha Legewie <joscha.legewie@gmail.com>
Co-authored-by: Michael Kuhn <michael.kuhn@ovgu.de>
Co-authored-by: Diego Alvarez S <dialvarezs@gmail.com>
Co-authored-by: Lydéric Debusschère <lyderic.de@gmail.com>
Co-authored-by: Ben Cowan <ben@bencowan.org>
Co-authored-by: rfeki <113144418+rfeki@users.noreply.github.com>
Co-authored-by: afzpatel <122491982+afzpatel@users.noreply.github.com>
Co-authored-by: Andrew-Dunning-NNL <67964561+Andrew-Dunning-NNL@users.noreply.github.com>
Co-authored-by: Tuomas Koskela <t.koskela@ucl.ac.uk>
Co-authored-by: viveshar <vivek.sharma2@amd.com>
Co-authored-by: Daryl W. Grunau <DarylGrunau@gmail.com>
Co-authored-by: Daryl W. Grunau <dwg@lanl.gov>
Co-authored-by: Patrick Gartung <gartung@fnal.gov>
Co-authored-by: Marc Mengel <mengel@fnal.gov>
Co-authored-by: Auriane R <48684432+aurianer@users.noreply.github.com>
Co-authored-by: Raffaele Solcà <rasolca@cscs.ch>
Co-authored-by: Thomas Dickerson <elfprince13@gmail.com>
Co-authored-by: Christian Glusa <cgcgcg@users.noreply.github.com>
Co-authored-by: sbulut <sbulut@3vgeomatics.com>
Co-authored-by: Robert Underwood <robertu94@users.noreply.github.com>
Co-authored-by: Robert Underwood <runderwood@anl.gov>
Co-authored-by: Wileam Y. Phan <50928756+wyphan@users.noreply.github.com>
Co-authored-by: Jonas Thies <16190001+jthies@users.noreply.github.com>
Co-authored-by: Steven R. Brandt <sbrandt@cct.lsu.edu>
Co-authored-by: Garth N. Wells <gnw20@cam.ac.uk>
RikkiButler20 pushed a commit to RikkiButler20/spack that referenced this pull request Sep 25, 2023
* Write timing information for installs from cache

* CI: aggregate and upload install_times.json to artifacts

* CI: Don't change root directory for artifact generation

* Flat event based timer variation

Event based timer allows for easily starting and stopping timers without
wiping sub-timer data. It also requires less branching logic when
tracking time.

The json output is non-hierarchical in this version and hierarchy is
less rigidly enforced between starting and stopping.

* Add and write timers for top level install

* Update completion

* remove unused subtimer api

* Fix unit tests

* Suppress timing summary option

* Save timers summaries to user_data artifacts

* Remove completion from fish

* Move spack python to script section

* Write timer correctly for non-cache installs

* Re-add hash to timer file

* Fish completion updates

* Fix null timer yield value

* fix type hints

* Remove timer-summary-file option

* Add "." in front of non-package timer name

---------

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
jhdavis8 pushed a commit to hpcgroup/spack that referenced this pull request Sep 30, 2023
* Write timing information for installs from cache

* CI: aggregate and upload install_times.json to artifacts

* CI: Don't change root directory for artifact generation

* Flat event based timer variation

Event based timer allows for easily starting and stopping timers without
wiping sub-timer data. It also requires less branching logic when
tracking time.

The json output is non-hierarchical in this version and hierarchy is
less rigidly enforced between starting and stopping.

* Add and write timers for top level install

* Update completion

* remove unused subtimer api

* Fix unit tests

* Suppress timing summary option

* Save timers summaries to user_data artifacts

* Remove completion from fish

* Move spack python to script section

* Write timer correctly for non-cache installs

* Re-add hash to timer file

* Fish completion updates

* Fix null timer yield value

* fix type hints

* Remove timer-summary-file option

* Add "." in front of non-package timer name

---------

Co-authored-by: Harmen Stoppels <harmenstoppels@gmail.com>
Co-authored-by: Harmen Stoppels <me@harmenstoppels.nl>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
binary-packages commands core PR affects Spack core functionality gitlab Issues related to gitlab integration new-variant python shell-support tests General test capability(ies) update-package utilities
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants