Skip to content

Merge feature/update_to_spack_v1 into spack-stack-dev#572

Merged
climbfuji merged 1049 commits intospack-stack-devfrom
feature/update_to_spack_v1
Dec 4, 2025
Merged

Merge feature/update_to_spack_v1 into spack-stack-dev#572
climbfuji merged 1049 commits intospack-stack-devfrom
feature/update_to_spack_v1

Conversation

@climbfuji
Copy link
Copy Markdown
Collaborator

@climbfuji climbfuji commented Dec 4, 2025

Description

This PR merges the long-lived feature branch feature/update_to_spack_v1 into spack-stack-dev.

Testing

See JCSDA/spack-stack#1830

Issues

See JCSDA/spack-stack#1830

adamjstewart and others added 30 commits June 2, 2025 17:54
* py-pycocotools: numpy 2.3 not yet supported
* Update homepage
* py-pycocotools: add v2.0.9
Adds support for Spack package repositories from external git repos.

```yaml
repos:
  my_repo:
    git: https://example.com/example/example.git
    destination: ~/example  # optional
    paths:  # optional
    - subdir/spack_repo/example/x
    - subdir/spack_repo/example/y
```

If `destination` is not configured, Spack clones the git repo to `~/.spack/git_repos/{hash(repository)}`.

Package repositories can put a file `spack-repo-index.yaml` in their root with relative paths to roots of package repositories (i.e. directories that contain `repo.yaml`):

```yaml
repo_index:
  paths:
  - subdir/spack_repo/example/x
  - subdir/spack_repo/example/y
```

so users don't have to put that under `paths` in config. The `spack-repo-index.yaml` is simply a list of paths under `repo_index`. The idea is to avoid duplicating data such as "namespace" already specified in `<git repo>/<repo path>/repo.yaml`, to avoid that there are two sources of truth that go out of sync.

Further, `paths` in user config takes precedence, which allows users to enable specific package repositories in case the git monorepo provides multiple.

Remote package repositories are cloned/initialized in:
* `spack.main`
* `spack repo add`

This is process safe due to the lock in `$SPACK_USER_CACHE_PATH/package-repository.lock`; only one process can clone at a time.

The `spack repo add` command has a few new flags and a new positional arg:

```
spack repo add [-h] [--name NAME] [--path PATH] [--scope ...] path_or_repo [destination]
```

The signature is similar to the familiar `git clone <repository> <directory>`.

The `path_or_repo` argument is detected as a remote git repo if it contains a `:` not preceded by a `/`, which is what git does as well. If in the future we would support package repositories other than local file paths and remote git repos, we can resolve ambiguities with a new flag `[--git | --path | --<other-type>]`, but this is currently unnecessary.

The positional `destination` argument allows users to pick their own clone path, and only applies in case of git repos.

The flag `--path` corresponds to `repos:<name>:paths` and can be repeated to select specific package repositories in a git monorepo, and is also required if the git repo does not provide a `spack-repo-index.yaml` file in its root. Spack will never scan for `repo.yaml` files recursively, it only relies on `spack-repo-index.yaml` and `--repo-path` for package repository roots inside a git repo.

The flag `--name` applies to the *config* name/key in `repos.yaml` under `repos:<name>`. This flag is optional in the common case of adding just one package repository: it is set to the package repository's namespace. In case of monorepos with multiple package repositories, the `--name` flag is required.
spack#50656)

intel-oneapi-compilers added to optim_opts
Transfer cflags, cxxflags from Spack to COPTS, CXXOPTS.

---------

Co-authored-by: teabagk7 <[email protected]>
Move the functions responsible for retrieving buildcache manifests into the
url_buildcache.py module, and generalize the API so that manifests for any
type of buildcache component (specs, indices, keys, etc) can be fetched the
same way.
spack.repo.PATH is constructed either in:

1. spack.main.setup_main_options (entrypoint of Spack)
2. or spack.repo.PATH.__getattr__ (singleton, in sub-processes that
   don't run main)

The latter was using an old named constructor of RepoPath, which had
regressed.
* Bump Trilinos/Kokkos dependency
  Signed-off-by: Samuel E. Browne <[email protected]>
* Pin Kokkos/KokkosKernels more specifically for releases
Signed-off-by: Samuel E. Browne <[email protected]>

---------

Signed-off-by: Samuel E. Browne <[email protected]>
* set release channel for non nightly builds

* style

* use .satisfies

Co-authored-by: Alec Scott <[email protected]>

---------

Co-authored-by: Alec Scott <[email protected]>
* RepoSplit/tests: sync mock packages for build_systems.py

* Switch to use of underscore in package directories
* Define components for GitVersion provenance

Adding binary provenance requires we track the commit.
Typically this has been an optional form for the encompassing git ref.
Moving towards always defining a commit means we need to have space
to store a user requested ref that will then be paired with a commit
sha.

* Convert internal members to new names

* Style fixes

* Update lib/spack/spack/spec.py

* Update lib/spack/spack/spec.py

* commit variant concretizes and check is commit

* Add tests

* Add version attribute restrictions for commit variant

* dev_path and commit mutually exclusive

* Have fetcher respect the commit variant

Ensure that if a commit variant is on the spec fetch operations
use the commit

* Add package class hook for SNL work

* Fix commit check

* Add a more specific function for shas

* Handler for overlapping attributes

* Fix tests

* Add additional reserved variants

* Add unit-tests to verify requirements

* Write tests and stub out core changes

* Attempt to add solver constraint

* Fix lp constraint

* First new unit test passes

* Review fixes

* WIP: refactor test

* Add lookup check tests

* Add package tests

* New test on version satisfaction

* Rework test

* Fix  problem

* Revert random style changes

* Style

* Rework concretizer rules still not passing

* WIP: More rules

* Ideas for facts that will close the loop

* Style and fixes

* Disable failing tests

* Update core.py

* Update packages.py

* Fix tests and test reuse

* Remove Philter

* Add docs

* Relocate test package

* Okay dir

* Move test package

* Use underscores

* Fix package

* [@spackbot] updating style on behalf of psakievich

* Update path

* Respond to review comments

* Fix test

---------

Co-authored-by: psakievich <[email protected]>
* fix qt bounds hdf5 patch

* bound qt at paraview < 6
alalazo and others added 17 commits August 21, 2025 13:07
Speed up the concretizer, guided by the profiling results from the development version of clingo v6:

- Use a positive fact `concrete(PackageNode)`, instead of `not build(PackageNode)`
- Simplify construction of `condition_set` given the current set of rules 

Signed-off-by: Massimiliano Culpo <[email protected]>
Tracks unsupported targets explicitly to avoid clingo
having to figure out a negative statement. This should
improve solver performance.

Signed-off-by: Massimiliano Culpo <[email protected]>
In this way trying to solve more input specs is at higher priority than trying to satisfy strong preferences or requirements.

Fixes a regression introduced by spack#44373

Signed-off-by: Massimiliano Culpo <[email protected]>
…ts.yaml to use new script REMOVE_SPACK_STACK_MODS_FOR_CI.sh to revert spack-stack extensions
[feature/update_to_spack_v1] Update to spack version 1.0.1
…ases (spack#50477)

* Append to install-time test log for multiple test phases

Signed-off-by: Alex Richert <[email protected]>

* log.py: fix tmp dir arg

Signed-off-by: Alex Richert <[email protected]>

* log.py: fix typo (:)

Signed-off-by: Alex Richert <[email protected]>

* use existing tests/pkg

Signed-off-by: Alex Richert <[email protected]>

* remove new test file/pkg

Signed-off-by: Alex Richert <[email protected]>

* test/cmd/install.py: skip log append check for win32

Signed-off-by: Alex Richert <[email protected]>

* test/cmd/install.py: skip install 'tests' for win32

Signed-off-by: Alex Richert <[email protected]>

* test/cmd/install.py: fix install test-skip logic (win32)

Signed-off-by: Alex Richert <[email protected]>

* test/cmd/install.py: skip test_package_output for windows

Signed-off-by: Alex Richert <[email protected]>

* Revert "test/cmd/install.py: skip test_package_output for windows"

This reverts commit f14beed.

Signed-off-by: Alex Richert <[email protected]>

---------

Signed-off-by: Alex Richert <[email protected]>
install_test.py: append to install-time test log for multiple test phases (spack#50477)
@climbfuji climbfuji merged commit 553caf2 into spack-stack-dev Dec 4, 2025
2 checks passed
@github-project-automation github-project-automation bot moved this from In Progress to Done in spack-stack-2.0.x (2025 Q4) Dec 4, 2025
@climbfuji climbfuji deleted the feature/update_to_spack_v1 branch January 30, 2026 15:49
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

No open projects

Development

Successfully merging this pull request may close these issues.