diff --git a/.github/workflows/audit.yaml b/.github/workflows/audit.yaml index 4cd04440215408..54760393578f92 100644 --- a/.github/workflows/audit.yaml +++ b/.github/workflows/audit.yaml @@ -28,8 +28,8 @@ jobs: run: shell: ${{ matrix.system.shell }} steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: ${{inputs.python_version}} - name: Install Python packages diff --git a/.github/workflows/bin/bootstrap-test.sh b/.github/workflows/bin/bootstrap-test.sh index 563eb286433c4f..0d774c248c3a6a 100755 --- a/.github/workflows/bin/bootstrap-test.sh +++ b/.github/workflows/bin/bootstrap-test.sh @@ -1,7 +1,7 @@ #!/bin/bash set -e source share/spack/setup-env.sh -$PYTHON bin/spack bootstrap disable github-actions-v0.4 +$PYTHON bin/spack bootstrap disable github-actions-v0.5 $PYTHON bin/spack bootstrap disable spack-install $PYTHON bin/spack $SPACK_FLAGS solve zlib tree $BOOTSTRAP/store diff --git a/.github/workflows/bootstrap.yml b/.github/workflows/bootstrap.yml index c9e69d3026df58..90b31a098ae90d 100644 --- a/.github/workflows/bootstrap.yml +++ b/.github/workflows/bootstrap.yml @@ -37,14 +37,14 @@ jobs: make patch unzip which xz python3 python3-devel tree \ cmake bison - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - name: Bootstrap clingo run: | source share/spack/setup-env.sh + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack external find cmake bison spack -d solve zlib tree ~/.spack/bootstrap/store/ @@ -60,17 +60,17 @@ jobs: run: | brew install cmake bison tree - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: "3.12" - name: Bootstrap clingo run: | source share/spack/setup-env.sh + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack external find --not-buildable cmake bison spack -d solve zlib tree $HOME/.spack/bootstrap/store/ @@ -83,22 +83,22 @@ jobs: steps: - name: Setup macOS if: ${{ matrix.runner != 'ubuntu-latest' }} + run: brew install tree gawk + - name: Remove system executables run: | - brew install tree gawk - sudo rm -rf $(command -v gpg gpg2) - - name: Setup Ubuntu - if: ${{ matrix.runner == 'ubuntu-latest' }} - run: sudo rm -rf $(command -v gpg gpg2 patchelf) + while [ -n "$(command -v gpg gpg2 patchelf)" ]; do + sudo rm $(command -v gpg gpg2 patchelf) + done - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - name: Bootstrap GnuPG run: | source share/spack/setup-env.sh spack solve zlib + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack -d gpg list tree ~/.spack/bootstrap/store/ @@ -110,19 +110,17 @@ jobs: steps: - name: Setup macOS if: ${{ matrix.runner != 'ubuntu-latest' }} + run: brew install tree + - name: Remove system executables run: | - brew install tree - # Remove GnuPG since we want to bootstrap it - sudo rm -rf /usr/local/bin/gpg - - name: Setup Ubuntu - if: ${{ matrix.runner == 'ubuntu-latest' }} - run: | - sudo rm -rf $(which gpg) $(which gpg2) $(which patchelf) + while [ -n "$(command -v gpg gpg2 patchelf)" ]; do + sudo rm $(command -v gpg gpg2 patchelf) + done - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: | 3.8 @@ -130,15 +128,16 @@ jobs: 3.10 3.11 3.12 + 3.13 - name: Set bootstrap sources run: | source share/spack/setup-env.sh - spack bootstrap disable github-actions-v0.4 + spack bootstrap disable github-actions-v0.5 spack bootstrap disable spack-install - name: Bootstrap clingo run: | set -e - for ver in '3.8' '3.9' '3.10' '3.11' '3.12' ; do + for ver in '3.8' '3.9' '3.10' '3.11' '3.12' '3.13'; do not_found=1 ver_dir="$(find $RUNNER_TOOL_CACHE/Python -wholename "*/${ver}.*/*/bin" | grep . || true)" if [[ -d "$ver_dir" ]] ; then @@ -172,10 +171,10 @@ jobs: runs-on: "windows-latest" steps: - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: "3.12" - name: Setup Windows @@ -185,8 +184,8 @@ jobs: - name: Bootstrap clingo run: | ./share/spack/setup-env.ps1 + spack bootstrap disable github-actions-v0.6 spack bootstrap disable github-actions-v0.5 - spack bootstrap disable github-actions-v0.4 spack external find --not-buildable cmake bison spack -d solve zlib ./share/spack/qa/validate_last_exit.ps1 diff --git a/.github/workflows/build-containers.yml b/.github/workflows/build-containers.yml index a2d76855353096..8c39a4cdd1c48c 100644 --- a/.github/workflows/build-containers.yml +++ b/.github/workflows/build-containers.yml @@ -55,7 +55,7 @@ jobs: if: github.repository == 'spack/spack' steps: - name: Checkout - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - uses: docker/metadata-action@8e5442c4ef9f78752691e2d8f8d19755c6f78e81 id: docker_meta diff --git a/.github/workflows/ci.yaml b/.github/workflows/ci.yaml index 18e914713bc668..79e478a94f9ebc 100644 --- a/.github/workflows/ci.yaml +++ b/.github/workflows/ci.yaml @@ -24,7 +24,7 @@ jobs: core: ${{ steps.filter.outputs.core }} packages: ${{ steps.filter.outputs.packages }} steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 if: ${{ github.event_name == 'push' }} with: fetch-depth: 0 @@ -83,10 +83,17 @@ jobs: all-prechecks: needs: [ prechecks ] + if: ${{ always() }} runs-on: ubuntu-latest steps: - name: Success - run: "true" + run: | + if [ "${{ needs.prechecks.result }}" == "failure" ] || [ "${{ needs.prechecks.result }}" == "canceled" ]; then + echo "Unit tests failed." + exit 1 + else + exit 0 + fi coverage: needs: [ unit-tests, prechecks ] @@ -94,8 +101,19 @@ jobs: secrets: inherit all: - needs: [ coverage, bootstrap ] + needs: [ unit-tests, coverage, bootstrap ] + if: ${{ always() }} runs-on: ubuntu-latest + # See https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#needs-context steps: - - name: Success - run: "true" + - name: Status summary + run: | + if [ "${{ needs.unit-tests.result }}" == "failure" ] || [ "${{ needs.unit-tests.result }}" == "canceled" ]; then + echo "Unit tests failed." + exit 1 + elif [ "${{ needs.bootstrap.result }}" == "failure" ] || [ "${{ needs.bootstrap.result }}" == "canceled" ]; then + echo "Bootstrap tests failed." + exit 1 + else + exit 0 + fi diff --git a/.github/workflows/coverage.yml b/.github/workflows/coverage.yml index 1456645b2a63d8..c9f1a2e004a62c 100644 --- a/.github/workflows/coverage.yml +++ b/.github/workflows/coverage.yml @@ -8,8 +8,8 @@ jobs: upload: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' cache: 'pip' diff --git a/.github/workflows/nightly-win-builds.yml b/.github/workflows/nightly-win-builds.yml index 4e040a05ea2a6a..5a6e53ce71238b 100644 --- a/.github/workflows/nightly-win-builds.yml +++ b/.github/workflows/nightly-win-builds.yml @@ -14,10 +14,10 @@ jobs: build-paraview-deps: runs-on: windows-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: 3.9 - name: Install Python packages diff --git a/.github/workflows/requirements/style/requirements.txt b/.github/workflows/requirements/style/requirements.txt index 6cd71ed1280f30..93ab7eaa7f78cf 100644 --- a/.github/workflows/requirements/style/requirements.txt +++ b/.github/workflows/requirements/style/requirements.txt @@ -1,7 +1,7 @@ -black==24.8.0 +black==24.10.0 clingo==5.7.1 flake8==7.1.1 isort==5.13.2 mypy==1.8.0 -types-six==1.16.21.20240513 +types-six==1.16.21.20241105 vermin==1.6.0 diff --git a/.github/workflows/unit_tests.yaml b/.github/workflows/unit_tests.yaml index 310e635735d15e..2d7935fe11a87f 100644 --- a/.github/workflows/unit_tests.yaml +++ b/.github/workflows/unit_tests.yaml @@ -40,10 +40,10 @@ jobs: on_develop: false steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: ${{ matrix.python-version }} - name: Install System packages @@ -89,10 +89,10 @@ jobs: shell: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' - name: Install System packages @@ -130,7 +130,7 @@ jobs: dnf install -y \ bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ make patch tcl unzip which xz - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: Setup repo and non-root user run: | git --version @@ -149,10 +149,10 @@ jobs: clingo-cffi: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.13' - name: Install System packages @@ -170,11 +170,11 @@ jobs: run: | . share/spack/setup-env.sh spack bootstrap disable spack-install - spack bootstrap disable github-actions-v0.4 spack bootstrap disable github-actions-v0.5 + spack bootstrap disable github-actions-v0.6 spack bootstrap status spack solve zlib - spack unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml lib/spack/spack/test/concretize.py + spack unit-test --verbose --cov --cov-config=pyproject.toml --cov-report=xml:coverage.xml lib/spack/spack/test/concretization/core.py - uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 with: name: coverage-clingo-cffi @@ -188,10 +188,10 @@ jobs: os: [macos-13, macos-14] python-version: ["3.11"] steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: ${{ matrix.python-version }} - name: Install Python packages @@ -226,10 +226,10 @@ jobs: powershell Invoke-Expression -Command "./share/spack/qa/windows_test_setup.ps1"; {0} runs-on: windows-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: 3.9 - name: Install Python packages diff --git a/.github/workflows/valid-style.yml b/.github/workflows/valid-style.yml index d107fdb1978b1d..ad96ff2cc5604c 100644 --- a/.github/workflows/valid-style.yml +++ b/.github/workflows/valid-style.yml @@ -18,8 +18,8 @@ jobs: validate: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' cache: 'pip' @@ -35,10 +35,10 @@ jobs: style: runs-on: ubuntu-latest steps: - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 0 - - uses: actions/setup-python@f677139bbe7f9c59b41e40162b753c062f5d49a3 + - uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b with: python-version: '3.11' cache: 'pip' @@ -70,7 +70,7 @@ jobs: dnf install -y \ bzip2 curl file gcc-c++ gcc gcc-gfortran git gnupg2 gzip \ make patch tcl unzip which xz - - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 - name: Setup repo and non-root user run: | git --version @@ -98,14 +98,14 @@ jobs: # PR: use the base of the PR as the old commit - name: Checkout PR base commit if: github.event_name == 'pull_request' - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: ref: ${{ github.event.pull_request.base.sha }} path: old # not a PR: use the previous commit as the old commit - name: Checkout previous commit if: github.event_name != 'pull_request' - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: fetch-depth: 2 path: old @@ -114,14 +114,14 @@ jobs: run: git -C old reset --hard HEAD^ - name: Checkout new commit - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: path: new - name: Install circular import checker - uses: actions/checkout@eef61447b9ff4aafe5dcd4e0bbf5d482be7e7871 + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 with: repository: haampie/circular-import-fighter - ref: 555519c6fd5564fd2eb844e7b87e84f4d12602e2 + ref: 9f60f51bc7134e0be73f27623f1b0357d1718427 path: circular-import-fighter - name: Install dependencies working-directory: circular-import-fighter diff --git a/.readthedocs.yml b/.readthedocs.yml index ff477536131e6b..012a6e6e0ae1d6 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -14,3 +14,26 @@ sphinx: python: install: - requirements: lib/spack/docs/requirements.txt + +search: + ranking: + spack.html: -10 + spack.*.html: -10 + llnl.html: -10 + llnl.*.html: -10 + _modules/*: -10 + command_index.html: -9 + basic_usage.html: 5 + configuration.html: 5 + config_yaml.html: 5 + packages_yaml.html: 5 + build_settings.html: 5 + environments.html: 5 + containers.html: 5 + mirrors.html: 5 + module_file_support.html: 5 + repositories.html: 5 + binary_caches.html: 5 + chain.html: 5 + pipelines.html: 5 + packaging_guide.html: 5 diff --git a/CHANGELOG.md b/CHANGELOG.md index b39f065e045e89..4f18c386cb796c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,365 @@ +# v0.23.0 (2024-11-13) + +`v0.23.0` is a major feature release. + +We are planning to make this the last major release before Spack `v1.0` +in June 2025. Alongside `v0.23`, we will be making pre-releases (alpha, +beta, etc.) of `v1.0`, and we encourage users to try them and send us +feedback, either on GitHub or on Slack. You can track the road to +`v1.0` here: + + * https://github.com/spack/spack/releases + * https://github.com/spack/spack/discussions/30634 + +## Features in this Release + +1. **Language virtuals** + + Your packages can now explicitly depend on the languages they require. + Historically, Spack has considered C, C++, and Fortran compiler + dependencies to be implicit. In `v0.23`, you should ensure that + new packages add relevant C, C++, and Fortran dependencies like this: + + ```python + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") + ``` + + We encourage you to add these annotations to your packages now, to prepare + for Spack `v1.0.0`. In `v1.0.0`, these annotations will be necessary for + your package to use C, C++, and Fortran compilers. Note that you should + *not* add language dependencies to packages that don't need them, e.g., + pure python packages. + + We have already auto-generated these dependencies for packages in the + `builtin` repository (see #45217), based on the types of source files + present in each package's source code. We *may* have added too many or too + few language dependencies, so please submit pull requests to correct + packages if you find that the language dependencies are incorrect. + + Note that we have also backported support for these dependencies to + `v0.21.3` and `v0.22.2`, to make all of them forward-compatible with + `v0.23`. This should allow you to move easily between older and newer Spack + releases without breaking your packages. + +2. **Spec splicing** + + We are working to make binary installation more seamless in Spack. `v0.23` + introduces "splicing", which allows users to deploy binaries using local, + optimized versions of a binary interface, even if they were not built with + that interface. For example, this would allow you to build binaries in the + cloud using `mpich` and install them on a system using a local, optimized + version of `mvapich2` *without rebuilding*. Spack preserves full provenance + for the installed packages and knows that they were built one way but + deployed another. + + Our intent is to leverage this across many key HPC binary packages, + e.g. MPI, CUDA, ROCm, and libfabric. + + Fundamentally, splicing allows Spack to redeploy an existing spec with + different dependencies than how it was built. There are two interfaces to + splicing. + + a. Explicit Splicing + + #39136 introduced the explicit splicing interface. In the + concretizer config, you can specify a target spec and a replacement + by hash. + + ```yaml + concretizer: + splice: + explicit: + - target: mpi + replacement: mpich/abcdef + ``` + + Here, every installation that would normally use the target spec will + instead use its replacement. Above, any spec using *any* `mpi` will be + spliced to depend on the specific `mpich` installation requested. This + *can* go wrong if you try to replace something built with, e.g., + `openmpi` with `mpich`, and it is on the user to ensure ABI + compatibility between target and replacement specs. This currently + requires some expertise to use, but it will allow users to reuse the + binaries they create across more machines and environments. + + b. Automatic Splicing (experimental) + + #46729 introduced automatic splicing. In the concretizer config, enable + automatic splicing: + + ```yaml + concretizer: + splice: + automatic: true + ``` + + or run: + + ```console + spack config add concretizer:splice:automatic:true + ``` + + The concretizer will select splices for ABI compatibility to maximize + package reuse. Packages can denote ABI compatibility using the + `can_splice` directive. No packages in Spack yet use this directive, so + if you want to use this feature you will need to add `can_splice` + annotations to your packages. We are working on ways to add more ABI + compatibility information to the Spack package repository, and this + directive may change in the future. + + See the documentation for more details: + * https://spack.readthedocs.io/en/latest/build_settings.html#splicing + * https://spack.readthedocs.io/en/latest/packaging_guide.html#specifying-abi-compatibility + +3. Broader variant propagation + + Since #42931, you can specify propagated variants like `hdf5 + build_type==RelWithDebInfo` or `trilinos ++openmp` to propagate a variant + to all dependencies for which it is relevant. This is valid *even* if the + variant does not exist on the package or its dependencies. + + See https://spack.readthedocs.io/en/latest/basic_usage.html#variants. + +4. Query specs by namespace + + #45416 allows a package's namespace (indicating the repository it came from) + to be treated like a variant. You can request packages from particular repos + like this: + + ```console + spack find zlib namespace=builtin + spack find zlib namespace=myrepo + ``` + + Previously, the spec syntax only allowed namespaces to be prefixes of spec + names, e.g. `builtin.zlib`. The previous syntax still works. + +5. `spack spec` respects environment settings and `unify:true` + + `spack spec` did not previously respect environment lockfiles or + unification settings, which made it difficult to see exactly how a spec + would concretize within an environment. Now it does, so the output you get + with `spack spec` will be *the same* as what your environment will + concretize to when you run `spack concretize`. Similarly, if you provide + multiple specs on the command line with `spack spec`, it will concretize + them together if `unify:true` is set. + + See #47556 and #44843. + +6. Less noisy `spack spec` output + + `spack spec` previously showed output like this: + + ```console + > spack spec /v5fn6xo + Input spec + -------------------------------- + - /v5fn6xo + + Concretized + -------------------------------- + [+] openssl@3.3.1%apple-clang@16.0.0~docs+shared arch=darwin-sequoia-m1 + ... + ``` + + But the input spec is redundant, and we know we run `spack spec` to concretize + the input spec. `spack spec` now *only* shows the concretized spec. See #47574. + +7. Better output for `spack find -c` + + In an environmnet, `spack find -c` lets you search the concretized, but not + yet installed, specs, just as you would the installed ones. As with `spack + spec`, this should make it easier for you to see what *will* be built + before building and installing it. See #44713. + +8. `spack -C `: use an environment's configuration without activation + + Spack environments allow you to associate: + 1. a set of (possibly concretized) specs, and + 2. configuration + + When you activate an environment, you're using both of these. Previously, we + supported: + * `spack -e ` to run spack in the context of a specific environment, and + * `spack -C ` to run spack using a directory with configuration files. + + You can now also pass an environment to `spack -C` to use *only* the environment's + configuration, but not the specs or lockfile. See #45046. + +## New commands, options, and directives + +* The new `spack env track` command (#41897) takes a non-managed Spack + environment and adds a symlink to Spack's `$environments_root` directory, so + that it will be included for reference counting for commands like `spack + uninstall` and `spack gc`. If you use free-standing directory environments, + this is useful for preventing Spack from removing things required by your + environments. You can undo this tracking with the `spack env untrack` + command. + +* Add `-t` short option for `spack --backtrace` (#47227) + + `spack -d / --debug` enables backtraces on error, but it can be very + verbose, and sometimes you just want the backtrace. `spack -t / --backtrace` + provides that option. + +* `gc`: restrict to specific specs (#46790) + + If you only want to garbage-collect specific packages, you can now provide + them on the command line. This gives users finer-grained control over what + is uninstalled. + +* oci buildcaches now support `--only=package`. You can now push *just* a + package and not its dependencies to an OCI registry. This allows dependents + of non-redistributable specs to be stored in OCI registries without an + error. See #45775. + +## Notable refactors +* Variants are now fully conditional + + The `variants` dictionary on packages was previously keyed by variant name, + and allowed only one definition of any given variant. Spack is now smart + enough to understand that variants may have different values and defaults + for different versions. For example, `warpx` prior to `23.06` only supported + builds for one dimensionality, and newer `warpx` versions could be built + with support for many different dimensions: + + ```python + variant( + "dims", + default="3", + values=("1", "2", "3", "rz"), + multi=False, + description="Number of spatial dimensions", + when="@:23.05", + ) + variant( + "dims", + default="1,2,rz,3", + values=("1", "2", "3", "rz"), + multi=True, + description="Number of spatial dimensions", + when="@23.06:", + ) + ``` + + Previously, the default for the old version of `warpx` was not respected and + had to be specified manually. Now, Spack will select the right variant + definition for each version at concretization time. This allows variants to + evolve more smoothly over time. See #44425 for details. + +## Highlighted bugfixes + +1. Externals no longer override the preferred provider (#45025). + + External definitions could interfere with package preferences. Now, if + `openmpi` is the preferred `mpi`, and an external `mpich` is defined, a new + `openmpi` *will* be built if building it is possible. Previously we would + prefer `mpich` despite the preference. + +2. Composable `cflags` (#41049). + + This release fixes a longstanding bug that concretization would fail if + there were different `cflags` specified in `packages.yaml`, + `compilers.yaml`, or on `the` CLI. Flags and their ordering are now tracked + in the concretizer and flags from multiple sources will be merged. + +3. Fix concretizer Unification for included environments (#45139). + +## Deprecations, removals, and syntax changes + +1. The old concretizer has been removed from Spack, along with the + `config:concretizer` config option. Spack will emit a warning if the option + is present in user configuration, since it now has no effect. Spack now + uses a simpler bootstrapping mechanism, where a JSON prototype is tweaked + slightly to get an initial concrete spec to download. See #45215. + +2. Best-effort expansion of spec matrices has been removed. This feature did + not work with the "new" ASP-based concretizer, and did not work with + `unify: True` or `unify: when_possible`. Use the + [exclude key](https://spack.readthedocs.io/en/latest/environments.html#spec-matrices) + for the environment to exclude invalid components, or use multiple spec + matrices to combine the list of specs for which the constraint is valid and + the list of specs for which it is not. See #40792. + +3. The old Cray `platform` (based on Cray PE modules) has been removed, and + `platform=cray` is no longer supported. Since `v0.19`, Spack has handled + Cray machines like Linux clusters with extra packages, and we have + encouraged using this option to support Cray. The new approach allows us to + correctly handle Cray machines with non-SLES operating systems, and it is + much more reliable than making assumptions about Cray modules. See the + `v0.19` release notes and #43796 for more details. + +4. The `config:install_missing_compilers` config option has been deprecated, + and it is a no-op when set in `v0.23`. Our new compiler dependency model + will replace it with a much more reliable and robust mechanism in `v1.0`. + See #46237. + +5. Config options that deprecated in `v0.21` have been removed in `v0.23`. You + can now only specify preferences for `compilers`, `targets`, and + `providers` globally via the `packages:all:` section. Similarly, you can + only specify `versions:` locally for a specific package. See #44061 and + #31261 for details. + +6. Spack's old test interface has been removed (#45752), having been + deprecated in `v0.22.0` (#34236). All `builtin` packages have been updated + to use the new interface. See the [stand-alone test documentation]( + https://spack.readthedocs.io/en/latest/packaging_guide.html#stand-alone-tests) + +7. The `spack versions --safe-only` option, deprecated since `v0.21.0`, has + been removed. See #45765. + +* The `--dependencies` and `--optimize` arguments to `spack ci` have been + deprecated. See #45005. + +## Binary caches +1. Public binary caches now include an ML stack for Linux/aarch64 (#39666)We + now build an ML stack for Linux/aarch64 for all pull requests and on + develop. The ML stack includes both CPU-only and CUDA builds for Horovod, + Hugging Face, JAX, Keras, PyTorch,scikit-learn, TensorBoard, and + TensorFlow, and related packages. The CPU-only stack also includes XGBoost. + See https://cache.spack.io/tag/develop/?stack=ml-linux-aarch64-cuda. + +2. There is also now an stack of developer tools for macOS (#46910), which is + analogous to the Linux devtools stack. You can use this to avoid building + many common build dependencies. See + https://cache.spack.io/tag/develop/?stack=developer-tools-darwin. + +## Architecture support +* archspec has been updated to `v0.2.5`, with support for `zen5` +* Spack's CUDA package now supports the Grace Hopper `9.0a` compute capability (#45540) + +## Windows +* Windows bootstrapping: `file` and `gpg` (#41810) +* `scripts` directory added to PATH on Windows for python extensions (#45427) +* Fix `spack load --list` and `spack unload` on Windows (#35720) + +## Other notable changes +* Bugfix: `spack find -x` in environments (#46798) +* Spec splices are now robust to duplicate nodes with the same name in a spec (#46382) +* Cache per-compiler libc calculations for performance (#47213) +* Fixed a bug in external detection for openmpi (#47541) +* Mirror configuration allows username/password as environment variables (#46549) +* Default library search caps maximum depth (#41945) +* Unify interface for `spack spec` and `spack solve` commands (#47182) +* Spack no longer RPATHs directories in the default library search path (#44686) +* Improved performance of Spack database (#46554) +* Enable package reuse for packages with versions from git refs (#43859) +* Improved handling for `uuid` virtual on macos (#43002) +* Improved tracking of task queueing/requeueing in the installer (#46293) + +## Spack community stats + +* Over 2,000 pull requests updated package recipes +* 8,307 total packages, 329 new since `v0.22.0` + * 140 new Python packages + * 14 new R packages +* 373 people contributed to this release + * 357 committers to packages + * 60 committers to core + + # v0.22.2 (2024-09-21) ## Bugfixes diff --git a/bin/spack_cmd.bat b/bin/spack_cmd.bat index 392e42d29b63db..da7b67e3bc5ae6 100644 --- a/bin/spack_cmd.bat +++ b/bin/spack_cmd.bat @@ -1,71 +1,11 @@ @ECHO OFF -setlocal EnableDelayedExpansion :: (c) 2021 Lawrence Livermore National Laboratory :: To use this file independently of Spack's installer, execute this script in its directory, or add the :: associated bin directory to your PATH. Invoke to launch Spack Shell. :: :: source_dir/spack/bin/spack_cmd.bat :: -pushd %~dp0.. -set SPACK_ROOT=%CD% -pushd %CD%\.. -set spackinstdir=%CD% -popd - -:: Check if Python is on the PATH -if not defined python_pf_ver ( -(for /f "delims=" %%F in ('where python.exe') do ( - set "python_pf_ver=%%F" - goto :found_python - ) ) 2> NUL -) -:found_python -if not defined python_pf_ver ( - :: If not, look for Python from the Spack installer - :get_builtin - (for /f "tokens=*" %%g in ('dir /b /a:d "!spackinstdir!\Python*"') do ( - set "python_ver=%%g")) 2> NUL - - if not defined python_ver ( - echo Python was not found on your system. - echo Please install Python or add Python to your PATH. - ) else ( - set "py_path=!spackinstdir!\!python_ver!" - set "py_exe=!py_path!\python.exe" - ) - goto :exitpoint -) else ( - :: Python is already on the path - set "py_exe=!python_pf_ver!" - (for /F "tokens=* USEBACKQ" %%F in ( - `"!py_exe!" --version`) do (set "output=%%F")) 2>NUL - if not "!output:Microsoft Store=!"=="!output!" goto :get_builtin - goto :exitpoint -) -:exitpoint - -set "PATH=%SPACK_ROOT%\bin\;%PATH%" -if defined py_path ( - set "PATH=%py_path%;%PATH%" -) - -if defined py_exe ( - "%py_exe%" "%SPACK_ROOT%\bin\haspywin.py" -) - -set "EDITOR=notepad" - -DOSKEY spacktivate=spack env activate $* - -@echo ********************************************************************** -@echo ** Spack Package Manager -@echo ********************************************************************** - -IF "%1"=="" GOTO CONTINUE -set -GOTO:EOF - -:continue -set PROMPT=[spack] %PROMPT% -%comspec% /k +call "%~dp0..\share\spack\setup-env.bat" +pushd %SPACK_ROOT% +%comspec% /K diff --git a/etc/spack/defaults/bootstrap.yaml b/etc/spack/defaults/bootstrap.yaml index 6f2dbe171c5f60..b2e2c0f37385ed 100644 --- a/etc/spack/defaults/bootstrap.yaml +++ b/etc/spack/defaults/bootstrap.yaml @@ -9,15 +9,15 @@ bootstrap: # may not be able to bootstrap all the software that Spack needs, # depending on its type. sources: - - name: 'github-actions-v0.5' + - name: github-actions-v0.6 + metadata: $spack/share/spack/bootstrap/github-actions-v0.6 + - name: github-actions-v0.5 metadata: $spack/share/spack/bootstrap/github-actions-v0.5 - - name: 'github-actions-v0.4' - metadata: $spack/share/spack/bootstrap/github-actions-v0.4 - - name: 'spack-install' + - name: spack-install metadata: $spack/share/spack/bootstrap/spack-install trusted: # By default we trust bootstrapping from sources and from binaries # produced on Github via the workflow + github-actions-v0.6: true github-actions-v0.5: true - github-actions-v0.4: true spack-install: true diff --git a/etc/spack/defaults/concretizer.yaml b/etc/spack/defaults/concretizer.yaml index 5bbf580bcf826a..8cce19ebab9317 100644 --- a/etc/spack/defaults/concretizer.yaml +++ b/etc/spack/defaults/concretizer.yaml @@ -39,11 +39,19 @@ concretizer: # Option to deal with possible duplicate nodes (i.e. different nodes from the same package) in the DAG. duplicates: # "none": allows a single node for any package in the DAG. - # "minimal": allows the duplication of 'build-tools' nodes only (e.g. py-setuptools, cmake etc.) + # "minimal": allows the duplication of 'build-tools' nodes only + # (e.g. py-setuptools, cmake etc.) # "full" (experimental): allows separation of the entire build-tool stack (e.g. the entire "cmake" subDAG) strategy: minimal - # Option to specify compatiblity between operating systems for reuse of compilers and packages - # Specified as a key: [list] where the key is the os that is being targeted, and the list contains the OS's - # it can reuse. Note this is a directional compatibility so mutual compatibility between two OS's + # Option to specify compatibility between operating systems for reuse of compilers and packages + # Specified as a key: [list] where the key is the os that is being targeted, and the list contains the OS's + # it can reuse. Note this is a directional compatibility so mutual compatibility between two OS's # requires two entries i.e. os_compatible: {sonoma: [monterey], monterey: [sonoma]} os_compatible: {} + + # Option to specify whether to support splicing. Splicing allows for + # the relinking of concrete package dependencies in order to better + # reuse already built packages with ABI compatible dependencies + splice: + explicit: [] + automatic: false diff --git a/etc/spack/defaults/packages.yaml b/etc/spack/defaults/packages.yaml index a7c64ad7365af4..c0804c349898c3 100644 --- a/etc/spack/defaults/packages.yaml +++ b/etc/spack/defaults/packages.yaml @@ -40,9 +40,9 @@ packages: jpeg: [libjpeg-turbo, libjpeg] lapack: [openblas, amdlibflame] libc: [glibc, musl] - libgfortran: [ gcc-runtime ] + libgfortran: [gcc-runtime] libglx: [mesa+glx] - libifcore: [ intel-oneapi-runtime ] + libifcore: [intel-oneapi-runtime] libllvm: [llvm] lua-lang: [lua, lua-luajit-openresty, lua-luajit] luajit: [lua-luajit-openresty, lua-luajit] diff --git a/lib/spack/docs/basic_usage.rst b/lib/spack/docs/basic_usage.rst index 171a82b6ea1e37..21733a256633b0 100644 --- a/lib/spack/docs/basic_usage.rst +++ b/lib/spack/docs/basic_usage.rst @@ -1359,6 +1359,10 @@ For example, for the ``stackstart`` variant: mpileaks stackstart==4 # variant will be propagated to dependencies mpileaks stackstart=4 # only mpileaks will have this variant value +Spack also allows variants to be propagated from a package that does +not have that variant. + + ^^^^^^^^^^^^^^ Compiler Flags ^^^^^^^^^^^^^^ diff --git a/lib/spack/docs/build_settings.rst b/lib/spack/docs/build_settings.rst index 97c81bf17a40ea..bdad8c8a51464c 100644 --- a/lib/spack/docs/build_settings.rst +++ b/lib/spack/docs/build_settings.rst @@ -237,3 +237,35 @@ is optional -- by default, splices will be transitive. ``mpich/abcdef`` instead of ``mvapich2`` as the MPI provider. Spack will warn the user in this case, but will not fail the concretization. + +.. _automatic_splicing: + +^^^^^^^^^^^^^^^^^^ +Automatic Splicing +^^^^^^^^^^^^^^^^^^ + +The Spack solver can be configured to do automatic splicing for +ABI-compatible packages. Automatic splices are enabled in the concretizer +config section + +.. code-block:: yaml + + concretizer: + splice: + automatic: True + +Packages can include ABI-compatibility information using the +``can_splice`` directive. See :ref:`the packaging +guide` for instructions on specifying ABI +compatibility using the ``can_splice`` directive. + +.. note:: + + The ``can_splice`` directive is experimental and may be changed in + future versions. + +When automatic splicing is enabled, the concretizer will combine any +number of ABI-compatible specs if possible to reuse installed packages +and packages available from binary caches. The end result of these +specs is equivalent to a series of transitive/intransitive splices, +but the series may be non-obvious. diff --git a/lib/spack/docs/conf.py b/lib/spack/docs/conf.py index 4873e3e104d6b3..4d8592ffd930da 100644 --- a/lib/spack/docs/conf.py +++ b/lib/spack/docs/conf.py @@ -214,12 +214,14 @@ def setup(sphinx): # Spack classes that intersphinx is unable to resolve ("py:class", "spack.version.StandardVersion"), ("py:class", "spack.spec.DependencySpec"), + ("py:class", "spack.spec.ArchSpec"), ("py:class", "spack.spec.InstallStatus"), ("py:class", "spack.spec.SpecfileReaderBase"), ("py:class", "spack.install_test.Pb"), ("py:class", "spack.filesystem_view.SimpleFilesystemView"), ("py:class", "spack.traverse.EdgeAndDepth"), ("py:class", "archspec.cpu.microarchitecture.Microarchitecture"), + ("py:class", "spack.compiler.CompilerCache"), # TypeVar that is not handled correctly ("py:class", "llnl.util.lang.T"), ] diff --git a/lib/spack/docs/configuration.rst b/lib/spack/docs/configuration.rst index 7d2ceee9583444..1f62c7545557e1 100644 --- a/lib/spack/docs/configuration.rst +++ b/lib/spack/docs/configuration.rst @@ -516,6 +516,7 @@ Spack understands over a dozen special variables. These are: * ``$target_family``. The target family for the current host, as detected by ArchSpec. E.g. ``x86_64`` or ``aarch64``. * ``$date``: the current date in the format YYYY-MM-DD +* ``$spack_short_version``: the Spack version truncated to the first components. Note that, as with shell variables, you can write these as ``$varname`` diff --git a/lib/spack/docs/contribution_guide.rst b/lib/spack/docs/contribution_guide.rst index 97f181b85b7387..110bea56daf2d6 100644 --- a/lib/spack/docs/contribution_guide.rst +++ b/lib/spack/docs/contribution_guide.rst @@ -184,7 +184,7 @@ Style Tests Spack uses `Flake8 `_ to test for `PEP 8 `_ conformance and -`mypy ` for type checking. PEP 8 is +`mypy `_ for type checking. PEP 8 is a series of style guides for Python that provide suggestions for everything from variable naming to indentation. In order to limit the number of PRs that were mostly style changes, we decided to enforce PEP 8 conformance. Your PR diff --git a/lib/spack/docs/developer_guide.rst b/lib/spack/docs/developer_guide.rst index f538f75206644c..21204ba0778ed0 100644 --- a/lib/spack/docs/developer_guide.rst +++ b/lib/spack/docs/developer_guide.rst @@ -333,13 +333,9 @@ inserting them at different places in the spack code base. Whenever a hook type triggers by way of a function call, we find all the hooks of that type, and run them. -Spack defines hooks by way of a module at ``lib/spack/spack/hooks`` where we can define -types of hooks in the ``__init__.py``, and then python files in that folder -can use hook functions. The files are automatically parsed, so if you write -a new file for some integration (e.g., ``lib/spack/spack/hooks/myintegration.py`` -you can then write hook functions in that file that will be automatically detected, -and run whenever your hook is called. This section will cover the basic kind -of hooks, and how to write them. +Spack defines hooks by way of a module in the ``lib/spack/spack/hooks`` directory. +This module has to be registered in ``__init__.py`` so that Spack is aware of it. +This section will cover the basic kind of hooks, and how to write them. ^^^^^^^^^^^^^^ Types of Hooks diff --git a/lib/spack/docs/environments.rst b/lib/spack/docs/environments.rst index eec185eab89e20..2a9bb5c3f2f347 100644 --- a/lib/spack/docs/environments.rst +++ b/lib/spack/docs/environments.rst @@ -673,6 +673,9 @@ them to the environment. Environments can include files or URLs. File paths can be relative or absolute. URLs include the path to the text for individual files or can be the path to a directory containing configuration files. +Spack supports ``file``, ``http``, ``https`` and ``ftp`` protocols (or +schemes). Spack-specific, environment and user path variables may be +used in these paths. See :ref:`config-file-variables` for more information. ^^^^^^^^^^^^^^^^^^^^^^^^ Configuration precedence diff --git a/lib/spack/docs/getting_started.rst b/lib/spack/docs/getting_started.rst index cb8a586e3c94c4..6654f50e775230 100644 --- a/lib/spack/docs/getting_started.rst +++ b/lib/spack/docs/getting_started.rst @@ -35,7 +35,7 @@ A build matrix showing which packages are working on which systems is shown belo .. code-block:: console apt update - apt install build-essential ca-certificates coreutils curl environment-modules gfortran git gpg lsb-release python3 python3-distutils python3-venv unzip zip + apt install bzip2 ca-certificates file g++ gcc gfortran git gzip lsb-release patch python3 tar unzip xz-utils zstd .. tab-item:: RHEL @@ -43,14 +43,14 @@ A build matrix showing which packages are working on which systems is shown belo dnf install epel-release dnf group install "Development Tools" - dnf install curl findutils gcc-gfortran gnupg2 hostname iproute redhat-lsb-core python3 python3-pip python3-setuptools unzip python3-boto3 + dnf install gcc-gfortran redhat-lsb-core python3 unzip .. tab-item:: macOS Brew .. code-block:: console brew update - brew install curl gcc git gnupg zip + brew install gcc git zip ------------ Installation diff --git a/lib/spack/docs/index.rst b/lib/spack/docs/index.rst index e2c7219e7b38f2..accedfee98554d 100644 --- a/lib/spack/docs/index.rst +++ b/lib/spack/docs/index.rst @@ -12,10 +12,6 @@ Spack =================== -.. epigraph:: - - `These are docs for the Spack package manager. For sphere packing, see` `pyspack `_. - Spack is a package management tool designed to support multiple versions and configurations of software on a wide variety of platforms and environments. It was designed for large supercomputing centers, diff --git a/lib/spack/docs/module_file_support.rst b/lib/spack/docs/module_file_support.rst index fad1e414fcaf16..80e3c2ee668427 100644 --- a/lib/spack/docs/module_file_support.rst +++ b/lib/spack/docs/module_file_support.rst @@ -457,11 +457,11 @@ For instance, the following config options, tcl: all: suffixes: - ^python@3.12: 'python-3.12' + ^python@3: 'python{^python.version}' ^openblas: 'openblas' -will add a ``python-3.12`` version string to any packages compiled with -Python matching the spec, ``python@3.12``. This is useful to know which +will add a ``python-3.12.1`` version string to any packages compiled with +Python matching the spec, ``python@3``. This is useful to know which version of Python a set of Python extensions is associated with. Likewise, the ``openblas`` string is attached to any program that has openblas in the spec, most likely via the ``+blas`` variant specification. diff --git a/lib/spack/docs/packaging_guide.rst b/lib/spack/docs/packaging_guide.rst index a736ff8c793005..87fb184c656d1f 100644 --- a/lib/spack/docs/packaging_guide.rst +++ b/lib/spack/docs/packaging_guide.rst @@ -1267,7 +1267,7 @@ Git fetching supports the following parameters to ``version``: This feature requires ``git`` to be version ``2.25.0`` or later but is useful for large repositories that have separate portions that can be built independently. If paths provided are directories then all the subdirectories and associated files - will also be cloned. + will also be cloned. Only one of ``tag``, ``branch``, or ``commit`` can be used at a time. @@ -1367,8 +1367,8 @@ Submodules git-submodule``. Sparse-Checkout - You can supply ``git_sparse_paths`` at the package or version level to utilize git's - sparse-checkout feature. This will only clone the paths that are specified in the + You can supply ``git_sparse_paths`` at the package or version level to utilize git's + sparse-checkout feature. This will only clone the paths that are specified in the ``git_sparse_paths`` attribute for the package along with the files in the top level directory. This feature allows you to only clone what you need from a large repository. Note that this is a newer feature in git and requries git ``2.25.0`` or greater. @@ -2392,7 +2392,7 @@ by the ``--jobs`` option: .. code-block:: python :emphasize-lines: 7, 11 :linenos: - + class Xios(Package): ... def install(self, spec, prefix): @@ -2503,15 +2503,14 @@ with. For example, suppose that in the ``libdwarf`` package you write: depends_on("libelf@0.8") -Now ``libdwarf`` will require ``libelf`` at *exactly* version ``0.8``. -You can also specify a requirement for a particular variant or for -specific compiler flags: +Now ``libdwarf`` will require ``libelf`` in the range ``0.8``, which +includes patch versions ``0.8.1``, ``0.8.2``, etc. Apart from version +restrictions, you can also specify variants if this package requires +optional features of the dependency. .. code-block:: python - depends_on("libelf@0.8+debug") - depends_on("libelf debug=True") - depends_on("libelf cppflags='-fPIC'") + depends_on("libelf@0.8 +parser +pic") Both users *and* package authors can use the same spec syntax to refer to different package configurations. Users use the spec syntax on the @@ -2519,46 +2518,82 @@ command line to find installed packages or to install packages with particular constraints, and package authors can use specs to describe relationships between packages. -^^^^^^^^^^^^^^ -Version ranges -^^^^^^^^^^^^^^ +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +Specifying backward and forward compatibility +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +Packages are often compatible with a range of versions of their +dependencies. This is typically referred to as backward and forward +compatibility. Spack allows you to specify this in the ``depends_on`` +directive using version ranges. -Although some packages require a specific version for their dependencies, -most can be built with a range of versions. For example, if you are -writing a package for a legacy Python module that only works with Python -2.4 through 2.6, this would look like: +**Backwards compatibility** means that the package requires at least a +certain version of its dependency: .. code-block:: python - depends_on("python@2.4:2.6") + depends_on("python@3.10:") -Version ranges in Spack are *inclusive*, so ``2.4:2.6`` means any version -greater than or equal to ``2.4`` and up to and including any ``2.6.x``. If -you want to specify that a package works with any version of Python 3 (or -higher), this would look like: +In this case, the package requires Python 3.10 or newer. + +Commonly, packages drop support for older versions of a dependency as +they release new versions. In Spack you can conveniently add every +backward compatibility rule as a separate line: .. code-block:: python - depends_on("python@3:") + # backward compatibility with Python + depends_on("python@3.8:") + depends_on("python@3.9:", when="@1.2:") + depends_on("python@3.10:", when="@1.4:") + +This means that in general we need Python 3.8 or newer; from version +1.2 onwards we need Python 3.9 or newer; from version 1.4 onwards we +need Python 3.10 or newer. Notice that it's fine to have overlapping +ranges in the ``when`` clauses. -Here we leave out the upper bound. If you want to say that a package -requires Python 2, you can similarly leave out the lower bound: +**Forward compatibility** means that the package requires at most a +certain version of its dependency. Forward compatibility rules are +necessary when there are breaking changes in the dependency that the +package cannot handle. In Spack we often add forward compatibility +bounds only at the time a new, breaking version of a dependency is +released. As with backward compatibility, it is typical to see a list +of forward compatibility bounds in a package file as seperate lines: .. code-block:: python - depends_on("python@:2") + # forward compatibility with Python + depends_on("python@:3.12", when="@:1.10") + depends_on("python@:3.13", when="@:1.12") + +Notice how the ``:`` now appears before the version number both in the +dependency and in the ``when`` clause. This tells Spack that in general +we need Python 3.13 or older up to version ``1.12.x``, and up to version +``1.10.x`` we need Python 3.12 or older. Said differently, forward compatibility +with Python 3.13 was added in version 1.11, while version 1.13 added forward +compatibility with Python 3.14. + +Notice that a version range ``@:3.12`` includes *any* patch version +number ``3.12.x``, which is often useful when specifying forward compatibility +bounds. -Notice that we didn't use ``@:3``. Version ranges are *inclusive*, so -``@:3`` means "up to and including any 3.x version". +So far we have seen open-ended version ranges, which is by far the most +common use case. It is also possible to specify both a lower and an upper bound +on the version of a dependency, like this: -You can also simply write +.. code-block:: python + + depends_on("python@3.10:3.12") + +There is short syntax to specify that a package is compatible with say any +``3.x`` version: .. code-block:: python - depends_on("python@2.7") + depends_on("python@3") -to tell Spack that the package needs Python 2.7.x. This is equivalent to -``@2.7:2.7``. +The above is equivalent to ``depends_on("python@3:3")``, which means at least +Python version 3 and at most any version ``3.x.y``. In very rare cases, you may need to specify an exact version, for example if you need to distinguish between ``3.2`` and ``3.2.1``: @@ -5385,7 +5420,7 @@ by build recipes. Examples of checking :ref:`variant settings ` and determine whether it needs to also set up build dependencies (see :ref:`test-build-tests`). -The ``MyPackage`` package below provides two basic test examples: +The ``MyPackage`` package below provides two basic test examples: ``test_example`` and ``test_example2``. The first runs the installed ``example`` and ensures its output contains an expected string. The second runs ``example2`` without checking output so is only concerned with confirming @@ -5702,7 +5737,7 @@ subdirectory of the installation prefix. They are automatically copied to the appropriate relative paths under the test stage directory prior to executing stand-alone tests. -.. tip:: +.. tip:: *Perform test-related conversions once when copying files.* @@ -7078,6 +7113,46 @@ might write: CXXFLAGS += -I$DWARF_PREFIX/include CXXFLAGS += -L$DWARF_PREFIX/lib +.. _abi_compatibility: + +---------------------------- +Specifying ABI Compatibility +---------------------------- + +Packages can include ABI-compatibility information using the +``can_splice`` directive. For example, if ``Foo`` version 1.1 can +always replace version 1.0, then the package could have: + +.. code-block:: python + + can_splice("foo@1.0", when="@1.1") + +For virtual packages, packages can also specify ABI-compabitiliby with +other packages providing the same virtual. For example, ``zlib-ng`` +could specify: + +.. code-block:: python + + can_splice("zlib@1.3.1", when="@2.2+compat") + +Some packages have ABI-compatibility that is dependent on matching +variant values, either for all variants or for some set of +ABI-relevant variants. In those cases, it is not necessary to specify +the full combinatorial explosion. The ``match_variants`` keyword can +cover all single-value variants. + +.. code-block:: python + + can_splice("foo@1.1", when="@1.2", match_variants=["bar"]) # any value for bar as long as they're the same + can_splice("foo@1.2", when="@1.3", match_variants="*") # any variant values if all single-value variants match + +The concretizer will use ABI compatibility to determine automatic +splices when :ref:`automatic splicing` is enabled. + +.. note:: + + The ``can_splice`` directive is experimental, and may be replaced + by a higher-level interface in future versions of Spack. .. _package_class_structure: diff --git a/lib/spack/docs/pipelines.rst b/lib/spack/docs/pipelines.rst index bfcf1572d79e9a..67c8a065aab6c2 100644 --- a/lib/spack/docs/pipelines.rst +++ b/lib/spack/docs/pipelines.rst @@ -59,7 +59,7 @@ Functional Example ------------------ The simplest fully functional standalone example of a working pipeline can be -examined live at this example `project `_ +examined live at this example `project `_ on gitlab.com. Here's the ``.gitlab-ci.yml`` file from that example that builds and runs the @@ -67,39 +67,46 @@ pipeline: .. code-block:: yaml - stages: [generate, build] + stages: [ "generate", "build" ] variables: - SPACK_REPO: https://github.com/scottwittenburg/spack.git - SPACK_REF: pipelines-reproducible-builds + SPACK_REPOSITORY: "https://github.com/spack/spack.git" + SPACK_REF: "develop-2024-10-06" + SPACK_USER_CONFIG_PATH: ${CI_PROJECT_DIR} + SPACK_BACKTRACE: 1 generate-pipeline: - stage: generate tags: - - docker + - saas-linux-small-amd64 + stage: generate image: - name: ghcr.io/scottwittenburg/ecpe4s-ubuntu18.04-runner-x86_64:2020-09-01 - entrypoint: [""] - before_script: - - git clone ${SPACK_REPO} - - pushd spack && git checkout ${SPACK_REF} && popd - - . "./spack/share/spack/setup-env.sh" + name: ghcr.io/spack/ubuntu20.04-runner-x86_64:2023-01-01 script: + - git clone ${SPACK_REPOSITORY} + - cd spack && git checkout ${SPACK_REF} && cd ../ + - . "./spack/share/spack/setup-env.sh" + - spack --version - spack env activate --without-view . - - spack -d ci generate + - spack -d -v --color=always + ci generate + --check-index-only --artifacts-root "${CI_PROJECT_DIR}/jobs_scratch_dir" - --output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/pipeline.yml" + --output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/cloud-ci-pipeline.yml" artifacts: paths: - "${CI_PROJECT_DIR}/jobs_scratch_dir" - build-jobs: + build-pipeline: stage: build trigger: include: - - artifact: "jobs_scratch_dir/pipeline.yml" + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml job: generate-pipeline strategy: depend + needs: + - artifacts: True + job: generate-pipeline + The key thing to note above is that there are two jobs: The first job to run, ``generate-pipeline``, runs the ``spack ci generate`` command to generate a @@ -114,82 +121,93 @@ And here's the spack environment built by the pipeline represented as a spack: view: false concretizer: - unify: false + unify: true + reuse: false definitions: - pkgs: - zlib - - bzip2 - - arch: - - '%gcc@7.5.0 arch=linux-ubuntu18.04-x86_64' + - bzip2 ~debug + - compiler: + - '%gcc' specs: - matrix: - - $pkgs - - - $arch - - mirrors: { "mirror": "s3://spack-public/mirror" } + - - $compiler ci: - enable-artifacts-buildcache: True - rebuild-index: False + target: gitlab + pipeline-gen: - any-job: - before_script: - - git clone ${SPACK_REPO} - - pushd spack && git checkout ${SPACK_CHECKOUT_VERSION} && popd - - . "./spack/share/spack/setup-env.sh" - - build-job: - tags: [docker] + tags: + - saas-linux-small-amd64 image: - name: ghcr.io/scottwittenburg/ecpe4s-ubuntu18.04-runner-x86_64:2020-09-01 - entrypoint: [""] - + name: ghcr.io/spack/ubuntu20.04-runner-x86_64:2023-01-01 + before_script: + - git clone ${SPACK_REPOSITORY} + - cd spack && git checkout ${SPACK_REF} && cd ../ + - . "./spack/share/spack/setup-env.sh" + - spack --version + - export SPACK_USER_CONFIG_PATH=${CI_PROJECT_DIR} + - spack config blame mirrors -The elements of this file important to spack ci pipelines are described in more -detail below, but there are a couple of things to note about the above working -example: .. note:: - There is no ``script`` attribute specified for here. The reason for this is - Spack CI will automatically generate reasonable default scripts. More - detail on what is in these scripts can be found below. - - Also notice the ``before_script`` section. It is required when using any of the - default scripts to source the ``setup-env.sh`` script in order to inform - the default scripts where to find the ``spack`` executable. - -Normally ``enable-artifacts-buildcache`` is not recommended in production as it -results in large binary artifacts getting transferred back and forth between -gitlab and the runners. But in this example on gitlab.com where there is no -shared, persistent file system, and where no secrets are stored for giving -permission to write to an S3 bucket, ``enabled-buildcache-artifacts`` is the only -way to propagate binaries from jobs to their dependents. - -Also, it is usually a good idea to let the pipeline generate a final "rebuild the -buildcache index" job, so that subsequent pipeline generation can quickly determine -which specs are up to date and which need to be rebuilt (it's a good idea for other -reasons as well, but those are out of scope for this discussion). In this case we -have disabled it (using ``rebuild-index: False``) because the index would only be -generated in the artifacts mirror anyway, and consequently would not be available -during subsequent pipeline runs. + The use of ``reuse: false`` in spack environments used for pipelines is + almost always what you want, as without it your pipelines will not rebuild + packages even if package hashes have changed. This is due to the concretizer + strongly preferring known hashes when ``reuse: true``. + +The ``ci`` section in the above environment file contains the bare minimum +configuration required for ``spack ci generate`` to create a working pipeline. +The ``target: gitlab`` tells spack that the desired pipeline output is for +gitlab. However, this isn't strictly required, as currently gitlab is the +only possible output format for pipelines. The ``pipeline-gen`` section +contains the key information needed to specify attributes for the generated +jobs. Notice that it contains a list which has only a single element in +this case. In real pipelines it will almost certainly have more elements, +and in those cases, order is important: spack starts at the bottom of the +list and works upwards when applying attributes. + +But in this simple case, we use only the special key ``any-job`` to +indicate that spack should apply the specified attributes (``tags``, ``image``, +and ``before_script``) to any job it generates. This includes jobs for +building/pushing all packages, a ``rebuild-index`` job at the end of the +pipeline, as well as any ``noop`` jobs that might be needed by gitlab when +no rebuilds are required. + +Something to note is that in this simple case, we rely on spack to +generate a reasonable script for the package build jobs (it just creates +a script that invokes ``spack ci rebuild``). + +Another thing to note is the use of the ``SPACK_USER_CONFIG_DIR`` environment +variable in any generated jobs. The purpose of this is to make spack +aware of one final file in the example, the one that contains the mirror +configuration. This file, ``mirrors.yaml`` looks like this: -.. note:: - With the addition of reproducible builds (#22887) a previously working - pipeline will require some changes: +.. code-block:: yaml - * In the build-jobs, the environment location changed. - This will typically show as a ``KeyError`` in the failing job. Be sure to - point to ``${SPACK_CONCRETE_ENV_DIR}``. + mirrors: + buildcache-destination: + url: oci://registry.gitlab.com/spack/pipeline-quickstart + binary: true + access_pair: + id_variable: CI_REGISTRY_USER + secret_variable: CI_REGISTRY_PASSWORD - * When using ``include`` in your environment, be sure to make the included - files available in the build jobs. This means adding those files to the - artifact directory. Those files will also be missing in the reproducibility - artifact. - * Because the location of the environment changed, including files with - relative path may have to be adapted to work both in the project context - (generation job) and in the concrete env dir context (build job). +Note the name of the mirror is ``buildcache-destination``, which is required +as of Spack 0.23 (see below for more information). The mirror url simply +points to the container registry associated with the project, while +``id_variable`` and ``secret_variable`` refer to to environment variables +containing the access credentials for the mirror. + +When spack builds packages for this example project, they will be pushed to +the project container registry, where they will be available for subsequent +jobs to install as dependencies, or for other pipelines to use to build runnable +container images. ----------------------------------- Spack commands supporting pipelines @@ -417,15 +435,6 @@ configuration with a ``script`` attribute. Specifying a signing job without a sc does not create a signing job and the job configuration attributes will be ignored. Signing jobs are always assigned the runner tags ``aws``, ``protected``, and ``notary``. -^^^^^^^^^^^^^^^^^ -Cleanup (cleanup) -^^^^^^^^^^^^^^^^^ - -When using ``temporary-storage-url-prefix`` the cleanup job will destroy the mirror -created for the associated Gitlab pipeline. Cleanup jobs do not allow modifying the -script, but do expect that the spack command is in the path and require a -``before_script`` to be specified that sources the ``setup-env.sh`` script. - .. _noop_jobs: ^^^^^^^^^^^^ @@ -592,6 +601,77 @@ the attributes will be merged starting from the bottom match going up to the top In the case that no match is found in a submapping section, no additional attributes will be applied. + +^^^^^^^^^^^^^^^^^^^^^^^^ +Dynamic Mapping Sections +^^^^^^^^^^^^^^^^^^^^^^^^ + +For large scale CI where cost optimization is required, dynamic mapping allows for the use of real-time +mapping schemes served by a web service. This type of mapping does not support the ``-remove`` type +behavior, but it does follow the rest of the merge rules for configurations. + +The dynamic mapping service needs to implement a single REST API interface for getting +requests ``GET [:PORT][/PATH]?spec=``. + +example request. + +.. code-block:: + + https://my-dyn-mapping.spack.io/allocation?spec=zlib-ng@2.1.6 +compat+opt+shared+pic+new_strategies arch=linux-ubuntu20.04-x86_64_v3%gcc@12.0.0 + + +With an example response the updates kubernetes request variables, overrides the max retries for gitlab, +and prepends a note about the modifications made by the my-dyn-mapping.spack.io service. + +.. code-block:: + + 200 OK + + { + "variables": + { + "KUBERNETES_CPU_REQUEST": "500m", + "KUBERNETES_MEMORY_REQUEST": "2G", + }, + "retry": { "max:": "1"} + "script+:": + [ + "echo \"Job modified by my-dyn-mapping.spack.io\"" + ] + } + + +The ci.yaml configuration section takes the URL endpoint as well as a number of options to configure how responses are handled. + +It is possible to specify a list of allowed and ignored configuration attributes under ``allow`` and ``ignore`` +respectively. It is also possible to configure required attributes under ``required`` section. + +Options to configure the client timeout and SSL verification using the ``timeout`` and ``verify_ssl`` options. +By default, the ``timeout`` is set to the option in ``config:timeout`` and ``veryify_ssl`` is set the the option in ``config::verify_ssl``. + +Passing header parameters to the request can be achieved through the ``header`` section. The values of the variables passed to the +header may be environment variables that are expanded at runtime, such as a private token configured on the runner. + +Here is an example configuration pointing to ``my-dyn-mapping.spack.io/allocation``. + + +.. code-block:: yaml + + ci: + - dynamic-mapping: + endpoint: my-dyn-mapping.spack.io/allocation + timeout: 10 + verify_ssl: True + header: + PRIVATE_TOKEN: ${MY_PRIVATE_TOKEN} + MY_CONFIG: "fuzz_allocation:false" + allow: + - variables + ignore: + - script + require: [] + + ^^^^^^^^^^^^^ Bootstrapping ^^^^^^^^^^^^^ @@ -670,15 +750,6 @@ environment/stack file, and in that case no bootstrapping will be done (only the specs will be staged for building) and the runners will be expected to already have all needed compilers installed and configured for spack to use. -^^^^^^^^^^^^^^^^^^^ -Pipeline Buildcache -^^^^^^^^^^^^^^^^^^^ - -The ``enable-artifacts-buildcache`` key -takes a boolean and determines whether the pipeline uses artifacts to store and -pass along the buildcaches from one stage to the next (the default if you don't -provide this option is ``False``). - ^^^^^^^^^^^^^^^^ Broken Specs URL ^^^^^^^^^^^^^^^^ diff --git a/lib/spack/docs/requirements.txt b/lib/spack/docs/requirements.txt index a8f853e3cf1a36..d1536e9cac91ba 100644 --- a/lib/spack/docs/requirements.txt +++ b/lib/spack/docs/requirements.txt @@ -1,13 +1,13 @@ -sphinx==7.4.7 +sphinx==8.1.3 sphinxcontrib-programoutput==0.17 sphinx_design==0.6.1 -sphinx-rtd-theme==2.0.0 -python-levenshtein==0.25.1 +sphinx-rtd-theme==3.0.1 +python-levenshtein==0.26.1 docutils==0.21.2 pygments==2.18.0 urllib3==2.2.3 pytest==8.3.3 isort==5.13.2 -black==24.8.0 +black==24.10.0 flake8==7.1.1 mypy==1.11.2 diff --git a/lib/spack/env/cc b/lib/spack/env/cc index ccfc14bb89dc53..88969d3f3097f7 100755 --- a/lib/spack/env/cc +++ b/lib/spack/env/cc @@ -101,10 +101,9 @@ setsep() { esac } -# prepend LISTNAME ELEMENT [SEP] +# prepend LISTNAME ELEMENT # -# Prepend ELEMENT to the list stored in the variable LISTNAME, -# assuming the list is separated by SEP. +# Prepend ELEMENT to the list stored in the variable LISTNAME. # Handles empty lists and single-element lists. prepend() { varname="$1" @@ -238,6 +237,36 @@ esac } " +# path_list functions. Path_lists have 3 parts: spack_store_, and system_, +# which are used to prioritize paths when assembling the final command line. + +# init_path_lists LISTNAME +# Set , spack_store_, and system_ to "". +init_path_lists() { + eval "spack_store_$1=\"\"" + eval "$1=\"\"" + eval "system_$1=\"\"" +} + +# assign_path_lists LISTNAME1 LISTNAME2 +# Copy contents of LISTNAME2 into LISTNAME1, for each path_list prefix. +assign_path_lists() { + eval "spack_store_$1=\"\${spack_store_$2}\"" + eval "$1=\"\${$2}\"" + eval "system_$1=\"\${system_$2}\"" +} + +# append_path_lists LISTNAME ELT +# Append the provided ELT to the appropriate list, based on the result of path_order(). +append_path_lists() { + path_order "$2" + case $? in + 0) eval "append spack_store_$1 \"\$2\"" ;; + 1) eval "append $1 \"\$2\"" ;; + 2) eval "append system_$1 \"\$2\"" ;; + esac +} + # Check if optional parameters are defined # If we aren't asking for debug flags, don't add them if [ -z "${SPACK_ADD_DEBUG_FLAGS:-}" ]; then @@ -470,12 +499,7 @@ input_command="$*" parse_Wl() { while [ $# -ne 0 ]; do if [ "$wl_expect_rpath" = yes ]; then - path_order "$1" - case $? in - 0) append return_spack_store_rpath_dirs_list "$1" ;; - 1) append return_rpath_dirs_list "$1" ;; - 2) append return_system_rpath_dirs_list "$1" ;; - esac + append_path_lists return_rpath_dirs_list "$1" wl_expect_rpath=no else case "$1" in @@ -484,24 +508,14 @@ parse_Wl() { if [ -z "$arg" ]; then shift; continue fi - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; --rpath=*) arg="${1#--rpath=}" if [ -z "$arg" ]; then shift; continue fi - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; -rpath|--rpath) wl_expect_rpath=yes @@ -509,8 +523,7 @@ parse_Wl() { "$dtags_to_strip") ;; -Wl) - # Nested -Wl,-Wl means we're in NAG compiler territory, we don't support - # it. + # Nested -Wl,-Wl means we're in NAG compiler territory. We don't support it. return 1 ;; *) @@ -529,21 +542,10 @@ categorize_arguments() { return_other_args_list="" return_isystem_was_used="" - return_isystem_spack_store_include_dirs_list="" - return_isystem_system_include_dirs_list="" - return_isystem_include_dirs_list="" - - return_spack_store_include_dirs_list="" - return_system_include_dirs_list="" - return_include_dirs_list="" - - return_spack_store_lib_dirs_list="" - return_system_lib_dirs_list="" - return_lib_dirs_list="" - - return_spack_store_rpath_dirs_list="" - return_system_rpath_dirs_list="" - return_rpath_dirs_list="" + init_path_lists return_isystem_include_dirs_list + init_path_lists return_include_dirs_list + init_path_lists return_lib_dirs_list + init_path_lists return_rpath_dirs_list # Global state for keeping track of -Wl,-rpath -Wl,/path wl_expect_rpath=no @@ -609,32 +611,17 @@ categorize_arguments() { arg="${1#-isystem}" return_isystem_was_used=true if [ -z "$arg" ]; then shift; arg="$1"; fi - path_order "$arg" - case $? in - 0) append return_isystem_spack_store_include_dirs_list "$arg" ;; - 1) append return_isystem_include_dirs_list "$arg" ;; - 2) append return_isystem_system_include_dirs_list "$arg" ;; - esac + append_path_lists return_isystem_include_dirs_list "$arg" ;; -I*) arg="${1#-I}" if [ -z "$arg" ]; then shift; arg="$1"; fi - path_order "$arg" - case $? in - 0) append return_spack_store_include_dirs_list "$arg" ;; - 1) append return_include_dirs_list "$arg" ;; - 2) append return_system_include_dirs_list "$arg" ;; - esac + append_path_lists return_include_dirs_list "$arg" ;; -L*) arg="${1#-L}" if [ -z "$arg" ]; then shift; arg="$1"; fi - path_order "$arg" - case $? in - 0) append return_spack_store_lib_dirs_list "$arg" ;; - 1) append return_lib_dirs_list "$arg" ;; - 2) append return_system_lib_dirs_list "$arg" ;; - esac + append_path_lists return_lib_dirs_list "$arg" ;; -l*) # -loopopt=0 is generated erroneously in autoconf <= 2.69, @@ -667,32 +654,17 @@ categorize_arguments() { break elif [ "$xlinker_expect_rpath" = yes ]; then # Register the path of -Xlinker -rpath -Xlinker - path_order "$1" - case $? in - 0) append return_spack_store_rpath_dirs_list "$1" ;; - 1) append return_rpath_dirs_list "$1" ;; - 2) append return_system_rpath_dirs_list "$1" ;; - esac + append_path_lists return_rpath_dirs_list "$1" xlinker_expect_rpath=no else case "$1" in -rpath=*) arg="${1#-rpath=}" - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; --rpath=*) arg="${1#--rpath=}" - path_order "$arg" - case $? in - 0) append return_spack_store_rpath_dirs_list "$arg" ;; - 1) append return_rpath_dirs_list "$arg" ;; - 2) append return_system_rpath_dirs_list "$arg" ;; - esac + append_path_lists return_rpath_dirs_list "$arg" ;; -rpath|--rpath) xlinker_expect_rpath=yes @@ -709,7 +681,36 @@ categorize_arguments() { "$dtags_to_strip") ;; *) - append return_other_args_list "$1" + # if mode is not ld, we can just add to other args + if [ "$mode" != "ld" ]; then + append return_other_args_list "$1" + shift + continue + fi + + # if we're in linker mode, we need to parse raw RPATH args + case "$1" in + -rpath=*) + arg="${1#-rpath=}" + append_path_lists return_rpath_dirs_list "$arg" + ;; + --rpath=*) + arg="${1#--rpath=}" + append_path_lists return_rpath_dirs_list "$arg" + ;; + -rpath|--rpath) + if [ $# -eq 1 ]; then + # -rpath without value: let the linker raise an error. + append return_other_args_list "$1" + break + fi + shift + append_path_lists return_rpath_dirs_list "$1" + ;; + *) + append return_other_args_list "$1" + ;; + esac ;; esac shift @@ -731,21 +732,10 @@ categorize_arguments() { categorize_arguments "$@" -spack_store_include_dirs_list="$return_spack_store_include_dirs_list" -system_include_dirs_list="$return_system_include_dirs_list" -include_dirs_list="$return_include_dirs_list" - -spack_store_lib_dirs_list="$return_spack_store_lib_dirs_list" -system_lib_dirs_list="$return_system_lib_dirs_list" -lib_dirs_list="$return_lib_dirs_list" - -spack_store_rpath_dirs_list="$return_spack_store_rpath_dirs_list" -system_rpath_dirs_list="$return_system_rpath_dirs_list" -rpath_dirs_list="$return_rpath_dirs_list" - -isystem_spack_store_include_dirs_list="$return_isystem_spack_store_include_dirs_list" -isystem_system_include_dirs_list="$return_isystem_system_include_dirs_list" -isystem_include_dirs_list="$return_isystem_include_dirs_list" +assign_path_lists isystem_include_dirs_list return_isystem_include_dirs_list +assign_path_lists include_dirs_list return_include_dirs_list +assign_path_lists lib_dirs_list return_lib_dirs_list +assign_path_lists rpath_dirs_list return_rpath_dirs_list isystem_was_used="$return_isystem_was_used" other_args_list="$return_other_args_list" @@ -821,21 +811,10 @@ IFS="$lsep" categorize_arguments $spack_flags_list unset IFS -spack_flags_isystem_spack_store_include_dirs_list="$return_isystem_spack_store_include_dirs_list" -spack_flags_isystem_system_include_dirs_list="$return_isystem_system_include_dirs_list" -spack_flags_isystem_include_dirs_list="$return_isystem_include_dirs_list" - -spack_flags_spack_store_include_dirs_list="$return_spack_store_include_dirs_list" -spack_flags_system_include_dirs_list="$return_system_include_dirs_list" -spack_flags_include_dirs_list="$return_include_dirs_list" - -spack_flags_spack_store_lib_dirs_list="$return_spack_store_lib_dirs_list" -spack_flags_system_lib_dirs_list="$return_system_lib_dirs_list" -spack_flags_lib_dirs_list="$return_lib_dirs_list" - -spack_flags_spack_store_rpath_dirs_list="$return_spack_store_rpath_dirs_list" -spack_flags_system_rpath_dirs_list="$return_system_rpath_dirs_list" -spack_flags_rpath_dirs_list="$return_rpath_dirs_list" +assign_path_lists spack_flags_isystem_include_dirs_list return_isystem_include_dirs_list +assign_path_lists spack_flags_include_dirs_list return_include_dirs_list +assign_path_lists spack_flags_lib_dirs_list return_lib_dirs_list +assign_path_lists spack_flags_rpath_dirs_list return_rpath_dirs_list spack_flags_isystem_was_used="$return_isystem_was_used" spack_flags_other_args_list="$return_other_args_list" @@ -894,7 +873,7 @@ esac case "$mode" in cpp|cc|as|ccld) if [ "$spack_flags_isystem_was_used" = "true" ] || [ "$isystem_was_used" = "true" ]; then - extend isystem_spack_store_include_dirs_list SPACK_STORE_INCLUDE_DIRS + extend spack_store_isystem_include_dirs_list SPACK_STORE_INCLUDE_DIRS extend isystem_include_dirs_list SPACK_INCLUDE_DIRS else extend spack_store_include_dirs_list SPACK_STORE_INCLUDE_DIRS @@ -910,64 +889,63 @@ args_list="$flags_list" # Include search paths partitioned by (in store, non-sytem, system) # NOTE: adding ${lsep} to the prefix here turns every added element into two -extend args_list spack_flags_spack_store_include_dirs_list -I +extend args_list spack_store_spack_flags_include_dirs_list -I extend args_list spack_store_include_dirs_list -I extend args_list spack_flags_include_dirs_list -I extend args_list include_dirs_list -I -extend args_list spack_flags_isystem_spack_store_include_dirs_list "-isystem${lsep}" -extend args_list isystem_spack_store_include_dirs_list "-isystem${lsep}" +extend args_list spack_store_spack_flags_isystem_include_dirs_list "-isystem${lsep}" +extend args_list spack_store_isystem_include_dirs_list "-isystem${lsep}" extend args_list spack_flags_isystem_include_dirs_list "-isystem${lsep}" extend args_list isystem_include_dirs_list "-isystem${lsep}" -extend args_list spack_flags_system_include_dirs_list -I +extend args_list system_spack_flags_include_dirs_list -I extend args_list system_include_dirs_list -I -extend args_list spack_flags_isystem_system_include_dirs_list "-isystem${lsep}" -extend args_list isystem_system_include_dirs_list "-isystem${lsep}" +extend args_list system_spack_flags_isystem_include_dirs_list "-isystem${lsep}" +extend args_list system_isystem_include_dirs_list "-isystem${lsep}" # Library search paths partitioned by (in store, non-sytem, system) -extend args_list spack_flags_spack_store_lib_dirs_list "-L" +extend args_list spack_store_spack_flags_lib_dirs_list "-L" extend args_list spack_store_lib_dirs_list "-L" extend args_list spack_flags_lib_dirs_list "-L" extend args_list lib_dirs_list "-L" -extend args_list spack_flags_system_lib_dirs_list "-L" +extend args_list system_spack_flags_lib_dirs_list "-L" extend args_list system_lib_dirs_list "-L" # RPATHs arguments +rpath_prefix="" case "$mode" in ccld) if [ -n "$dtags_to_add" ] ; then append args_list "$linker_arg$dtags_to_add" fi - extend args_list spack_flags_spack_store_rpath_dirs_list "$rpath" - extend args_list spack_store_rpath_dirs_list "$rpath" - - extend args_list spack_flags_rpath_dirs_list "$rpath" - extend args_list rpath_dirs_list "$rpath" - - extend args_list spack_flags_system_rpath_dirs_list "$rpath" - extend args_list system_rpath_dirs_list "$rpath" + rpath_prefix="$rpath" ;; ld) if [ -n "$dtags_to_add" ] ; then append args_list "$dtags_to_add" fi - extend args_list spack_flags_spack_store_rpath_dirs_list "-rpath${lsep}" - extend args_list spack_store_rpath_dirs_list "-rpath${lsep}" - - extend args_list spack_flags_rpath_dirs_list "-rpath${lsep}" - extend args_list rpath_dirs_list "-rpath${lsep}" - - extend args_list spack_flags_system_rpath_dirs_list "-rpath${lsep}" - extend args_list system_rpath_dirs_list "-rpath${lsep}" + rpath_prefix="-rpath${lsep}" ;; esac +# if mode is ccld or ld, extend RPATH lists with the prefix determined above +if [ -n "$rpath_prefix" ]; then + extend args_list spack_store_spack_flags_rpath_dirs_list "$rpath_prefix" + extend args_list spack_store_rpath_dirs_list "$rpath_prefix" + + extend args_list spack_flags_rpath_dirs_list "$rpath_prefix" + extend args_list rpath_dirs_list "$rpath_prefix" + + extend args_list system_spack_flags_rpath_dirs_list "$rpath_prefix" + extend args_list system_rpath_dirs_list "$rpath_prefix" +fi + # Other arguments from the input command extend args_list other_args_list extend args_list spack_flags_other_args_list diff --git a/lib/spack/llnl/util/filesystem.py b/lib/spack/llnl/util/filesystem.py index ec7cc13c7d4237..bc70f5aa6e7499 100644 --- a/lib/spack/llnl/util/filesystem.py +++ b/lib/spack/llnl/util/filesystem.py @@ -20,11 +20,23 @@ import tempfile from contextlib import contextmanager from itertools import accumulate -from typing import Callable, Iterable, List, Match, Optional, Tuple, Union +from typing import ( + Callable, + Deque, + Dict, + Iterable, + List, + Match, + Optional, + Sequence, + Set, + Tuple, + Union, +) import llnl.util.symlink from llnl.util import tty -from llnl.util.lang import dedupe, memoized +from llnl.util.lang import dedupe, fnmatch_translate_multiple, memoized from llnl.util.symlink import islink, readlink, resolve_link_target_relative_to_the_link, symlink from ..path import path_to_os_path, system_path_filter @@ -85,6 +97,8 @@ "visit_directory_tree", ] +Path = Union[str, pathlib.Path] + if sys.version_info < (3, 7, 4): # monkeypatch shutil.copystat to fix PermissionError when copying read-only # files on Lustre when using Python < 3.7.4 @@ -1673,105 +1687,203 @@ def find_first(root: str, files: Union[Iterable[str], str], bfs_depth: int = 2) return FindFirstFile(root, *files, bfs_depth=bfs_depth).find() -def find(root, files, recursive=True): - """Search for ``files`` starting from the ``root`` directory. - - Like GNU/BSD find but written entirely in Python. - - Examples: - - .. code-block:: console - - $ find /usr -name python - - is equivalent to: - - >>> find('/usr', 'python') - - .. code-block:: console - - $ find /usr/local/bin -maxdepth 1 -name python - - is equivalent to: - - >>> find('/usr/local/bin', 'python', recursive=False) +def find( + root: Union[Path, Sequence[Path]], + files: Union[str, Sequence[str]], + recursive: bool = True, + max_depth: Optional[int] = None, +) -> List[str]: + """Finds all files matching the patterns from ``files`` starting from ``root``. This function + returns a deterministic result for the same input and directory structure when run multiple + times. Symlinked directories are followed, and unique directories are searched only once. Each + matching file is returned only once at lowest depth in case multiple paths exist due to + symlinked directories. Accepts any glob characters accepted by fnmatch: ========== ==================================== Pattern Meaning ========== ==================================== - ``*`` matches everything + ``*`` matches one or more characters ``?`` matches any single character ``[seq]`` matches any character in ``seq`` ``[!seq]`` matches any character not in ``seq`` ========== ==================================== + Examples: + + >>> find("/usr", "*.txt", recursive=True, max_depth=2) + + finds all files with the extension ``.txt`` in the directory ``/usr`` and subdirectories up to + depth 2. + + >>> find(["/usr", "/var"], ["*.txt", "*.log"], recursive=True) + + finds all files with the extension ``.txt`` or ``.log`` in the directories ``/usr`` and + ``/var`` at any depth. + + >>> find("/usr", "GL/*.h", recursive=True) + + finds all header files in a directory GL at any depth in the directory ``/usr``. + Parameters: - root (str): The root directory to start searching from - files (str or collections.abc.Sequence): Library name(s) to search for - recursive (bool): if False search only root folder, - if True descends top-down from the root. Defaults to True. + root: One or more root directories to start searching from + files: One or more filename patterns to search for + recursive: if False search only root, if True descends from roots. Defaults to True. + max_depth: if set, don't search below this depth. Cannot be set if recursive is False - Returns: - list: The files that have been found + Returns a list of absolute, matching file paths. """ + if isinstance(root, (str, pathlib.Path)): + root = [root] + elif not isinstance(root, collections.abc.Sequence): + raise TypeError(f"'root' arg must be a path or a sequence of paths, not '{type(root)}']") + if isinstance(files, str): files = [files] + elif not isinstance(files, collections.abc.Sequence): + raise TypeError(f"'files' arg must be str or a sequence of str, not '{type(files)}']") - if recursive: - tty.debug(f"Find (recursive): {root} {str(files)}") - result = _find_recursive(root, files) - else: - tty.debug(f"Find (not recursive): {root} {str(files)}") - result = _find_non_recursive(root, files) + # If recursive is false, max_depth can only be None or 0 + if max_depth and not recursive: + raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") - tty.debug(f"Find complete: {root} {str(files)}") + tty.debug(f"Find (max depth = {max_depth}): {root} {files}") + if not recursive: + max_depth = 0 + elif max_depth is None: + max_depth = sys.maxsize + result = _find_max_depth(root, files, max_depth) + tty.debug(f"Find complete: {root} {files}") return result -@system_path_filter -def _find_recursive(root, search_files): - # The variable here is **on purpose** a defaultdict. The idea is that - # we want to poke the filesystem as little as possible, but still maintain - # stability in the order of the answer. Thus we are recording each library - # found in a key, and reconstructing the stable order later. - found_files = collections.defaultdict(list) +def _log_file_access_issue(e: OSError, path: str) -> None: + errno_name = errno.errorcode.get(e.errno, "UNKNOWN") + tty.debug(f"find must skip {path}: {errno_name} {e}") - # Make the path absolute to have os.walk also return an absolute path - root = os.path.abspath(root) - for path, _, list_files in os.walk(root): - for search_file in search_files: - matches = glob.glob(os.path.join(path, search_file)) - matches = [os.path.join(path, x) for x in matches] - found_files[search_file].extend(matches) - answer = [] - for search_file in search_files: - answer.extend(found_files[search_file]) +def _file_id(s: os.stat_result) -> Tuple[int, int]: + # Note: on windows, st_ino is the file index and st_dev is the volume serial number. See + # https://github.com/python/cpython/blob/3.9/Python/fileutils.c + return (s.st_ino, s.st_dev) - return answer +def _dedupe_files(paths: List[str]) -> List[str]: + """Deduplicate files by inode and device, dropping files that cannot be accessed.""" + unique_files: List[str] = [] + # tuple of (inode, device) for each file without following symlinks + visited: Set[Tuple[int, int]] = set() + for path in paths: + try: + stat_info = os.lstat(path) + except OSError as e: + _log_file_access_issue(e, path) + continue + file_id = _file_id(stat_info) + if file_id not in visited: + unique_files.append(path) + visited.add(file_id) + return unique_files + + +def _find_max_depth( + roots: Sequence[Path], globs: Sequence[str], max_depth: int = sys.maxsize +) -> List[str]: + """See ``find`` for the public API.""" + # We optimize for the common case of simple filename only patterns: a single, combined regex + # is used. For complex patterns that include path components, we use a slower glob call from + # every directory we visit within max_depth. + filename_only_patterns = { + f"pattern_{i}": os.path.normcase(x) for i, x in enumerate(globs) if "/" not in x + } + complex_patterns = {f"pattern_{i}": x for i, x in enumerate(globs) if "/" in x} + regex = re.compile(fnmatch_translate_multiple(filename_only_patterns)) + # Ordered dictionary that keeps track of what pattern found which files + matched_paths: Dict[str, List[str]] = {f"pattern_{i}": [] for i, _ in enumerate(globs)} + # Ensure returned paths are always absolute + roots = [os.path.abspath(r) for r in roots] + # Breadth-first search queue. Each element is a tuple of (depth, dir) + dir_queue: Deque[Tuple[int, str]] = collections.deque() + # Set of visited directories. Each element is a tuple of (inode, device) + visited_dirs: Set[Tuple[int, int]] = set() + + for root in roots: + try: + stat_root = os.stat(root) + except OSError as e: + _log_file_access_issue(e, root) + continue + dir_id = _file_id(stat_root) + if dir_id not in visited_dirs: + dir_queue.appendleft((0, root)) + visited_dirs.add(dir_id) -@system_path_filter -def _find_non_recursive(root, search_files): - # The variable here is **on purpose** a defaultdict as os.list_dir - # can return files in any order (does not preserve stability) - found_files = collections.defaultdict(list) + while dir_queue: + depth, curr_dir = dir_queue.pop() + try: + dir_iter = os.scandir(curr_dir) + except OSError as e: + _log_file_access_issue(e, curr_dir) + continue - # Make the path absolute to have absolute path returned - root = os.path.abspath(root) + # Use glob.glob for complex patterns. + for pattern_name, pattern in complex_patterns.items(): + matched_paths[pattern_name].extend( + path for path in glob.glob(os.path.join(curr_dir, pattern)) + ) + + # List of subdirectories by path and (inode, device) tuple + subdirs: List[Tuple[str, Tuple[int, int]]] = [] - for search_file in search_files: - matches = glob.glob(os.path.join(root, search_file)) - matches = [os.path.join(root, x) for x in matches] - found_files[search_file].extend(matches) + with dir_iter: + for dir_entry in dir_iter: - answer = [] - for search_file in search_files: - answer.extend(found_files[search_file]) + # Match filename only patterns + if filename_only_patterns: + m = regex.match(os.path.normcase(dir_entry.name)) + if m: + for pattern_name in filename_only_patterns: + if m.group(pattern_name): + matched_paths[pattern_name].append(dir_entry.path) + break - return answer + # Collect subdirectories + if depth >= max_depth: + continue + + try: + if not dir_entry.is_dir(follow_symlinks=True): + continue + if sys.platform == "win32": + # Note: st_ino/st_dev on DirEntry.stat are not set on Windows, so we have + # to call os.stat + stat_info = os.stat(dir_entry.path, follow_symlinks=True) + else: + stat_info = dir_entry.stat(follow_symlinks=True) + except OSError as e: + # Possible permission issue, or a symlink that cannot be resolved (ELOOP). + _log_file_access_issue(e, dir_entry.path) + continue + + subdirs.append((dir_entry.path, _file_id(stat_info))) + + # Enqueue subdirectories in a deterministic order + if subdirs: + subdirs.sort(key=lambda s: os.path.basename(s[0])) + for subdir, subdir_id in subdirs: + if subdir_id not in visited_dirs: + dir_queue.appendleft((depth + 1, subdir)) + visited_dirs.add(subdir_id) + + # Sort the matched paths for deterministic output + for paths in matched_paths.values(): + paths.sort() + all_matching_paths = [path for paths in matched_paths.values() for path in paths] + + # We only dedupe files if we have any complex patterns, since only they can match the same file + # multiple times + return _dedupe_files(all_matching_paths) if complex_patterns else all_matching_paths # Utilities for libraries and headers @@ -2210,7 +2322,9 @@ def find_system_libraries(libraries, shared=True): return libraries_found -def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): +def find_libraries( + libraries, root, shared=True, recursive=False, runtime=True, max_depth: Optional[int] = None +): """Returns an iterable of full paths to libraries found in a root dir. Accepts any glob characters accepted by fnmatch: @@ -2231,6 +2345,8 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): otherwise for static. Defaults to True. recursive (bool): if False search only root folder, if True descends top-down from the root. Defaults to False. + max_depth (int): if set, don't search below this depth. Cannot be set + if recursive is False runtime (bool): Windows only option, no-op elsewhere. If true, search for runtime shared libs (.DLL), otherwise, search for .Lib files. If shared is false, this has no meaning. @@ -2239,6 +2355,7 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): Returns: LibraryList: The libraries that have been found """ + if isinstance(libraries, str): libraries = [libraries] elif not isinstance(libraries, collections.abc.Sequence): @@ -2271,8 +2388,10 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): libraries = ["{0}.{1}".format(lib, suffix) for lib in libraries for suffix in suffixes] if not recursive: + if max_depth: + raise ValueError(f"max_depth ({max_depth}) cannot be set if recursive is False") # If not recursive, look for the libraries directly in root - return LibraryList(find(root, libraries, False)) + return LibraryList(find(root, libraries, recursive=False)) # To speedup the search for external packages configured e.g. in /usr, # perform first non-recursive search in root/lib then in root/lib64 and @@ -2290,7 +2409,7 @@ def find_libraries(libraries, root, shared=True, recursive=False, runtime=True): if found_libs: break else: - found_libs = find(root, libraries, True) + found_libs = find(root, libraries, recursive=True, max_depth=max_depth) return LibraryList(found_libs) diff --git a/lib/spack/llnl/util/lang.py b/lib/spack/llnl/util/lang.py index 5efe27b8b119f4..4913a50fad930e 100644 --- a/lib/spack/llnl/util/lang.py +++ b/lib/spack/llnl/util/lang.py @@ -5,14 +5,17 @@ import collections.abc import contextlib +import fnmatch import functools import itertools import os import re import sys import traceback +import typing +import warnings from datetime import datetime, timedelta -from typing import Callable, Iterable, List, Tuple, TypeVar +from typing import Callable, Dict, Iterable, List, Tuple, TypeVar # Ignore emacs backups when listing modules ignore_modules = r"^\.#|~$" @@ -858,6 +861,19 @@ def elide_list(line_list: List[str], max_num: int = 10) -> List[str]: return line_list +if sys.version_info >= (3, 9): + PatternStr = re.Pattern[str] +else: + PatternStr = typing.Pattern[str] + + +def fnmatch_translate_multiple(named_patterns: Dict[str, str]) -> str: + """Similar to ``fnmatch.translate``, but takes an ordered dictionary where keys are pattern + names, and values are filename patterns. The output is a regex that matches any of the + patterns in order, and named capture groups are used to identify which pattern matched.""" + return "|".join(f"(?P<{n}>{fnmatch.translate(p)})" for n, p in named_patterns.items()) + + @contextlib.contextmanager def nullcontext(*args, **kwargs): """Empty context manager. @@ -870,15 +886,6 @@ class UnhashableArguments(TypeError): """Raise when an @memoized function receives unhashable arg or kwarg values.""" -def enum(**kwargs): - """Return an enum-like class. - - Args: - **kwargs: explicit dictionary of enums - """ - return type("Enum", (object,), kwargs) - - T = TypeVar("T") @@ -914,6 +921,21 @@ def ensure_last(lst, *elements): lst.append(lst.pop(lst.index(elt))) +class Const: + """Class level constant, raises when trying to set the attribute""" + + __slots__ = ["value"] + + def __init__(self, value): + self.value = value + + def __get__(self, instance, owner): + return self.value + + def __set__(self, instance, value): + raise TypeError(f"Const value does not support assignment [value={self.value}]") + + class TypedMutableSequence(collections.abc.MutableSequence): """Base class that behaves like a list, just with a different type. @@ -1018,3 +1040,42 @@ def __init__(self, callback): def __get__(self, instance, owner): return self.callback(owner) + + +class DeprecatedProperty: + """Data descriptor to error or warn when a deprecated property is accessed. + + Derived classes must define a factory method to return an adaptor for the deprecated + property, if the descriptor is not set to error. + """ + + __slots__ = ["name"] + + #: 0 - Nothing + #: 1 - Warning + #: 2 - Error + error_lvl = 0 + + def __init__(self, name: str) -> None: + self.name = name + + def __get__(self, instance, owner): + if instance is None: + return self + + if self.error_lvl == 1: + warnings.warn( + f"accessing the '{self.name}' property of '{instance}', which is deprecated" + ) + elif self.error_lvl == 2: + raise AttributeError(f"cannot access the '{self.name}' attribute of '{instance}'") + + return self.factory(instance, owner) + + def __set__(self, instance, value): + raise TypeError( + f"the deprecated property '{self.name}' of '{instance}' does not support assignment" + ) + + def factory(self, instance, owner): + raise NotImplementedError("must be implemented by derived classes") diff --git a/lib/spack/llnl/util/tty/color.py b/lib/spack/llnl/util/tty/color.py index 710196783d57e6..51a5a1b5b1e1f6 100644 --- a/lib/spack/llnl/util/tty/color.py +++ b/lib/spack/llnl/util/tty/color.py @@ -263,7 +263,9 @@ def match_to_ansi(match): f"Incomplete color format: '{match.group(0)}' in '{match.string}'" ) - ansi_code = _escape(f"{styles[style]};{colors.get(color_code, '')}", color, enclose, zsh) + color_number = colors.get(color_code, "") + semi = ";" if color_number else "" + ansi_code = _escape(f"{styles[style]}{semi}{color_number}", color, enclose, zsh) if text: return f"{ansi_code}{text}{_escape(0, color, enclose, zsh)}" else: diff --git a/lib/spack/llnl/util/tty/log.py b/lib/spack/llnl/util/tty/log.py index 56139843407977..534472dbecdf3e 100644 --- a/lib/spack/llnl/util/tty/log.py +++ b/lib/spack/llnl/util/tty/log.py @@ -10,7 +10,6 @@ import errno import io import multiprocessing -import multiprocessing.connection import os import re import select @@ -19,9 +18,10 @@ import threading import traceback from contextlib import contextmanager +from multiprocessing.connection import Connection from threading import Thread from types import ModuleType -from typing import Optional +from typing import Callable, Optional import llnl.util.tty as tty @@ -345,49 +345,6 @@ def close(self): self.file.close() -class MultiProcessFd: - """Return an object which stores a file descriptor and can be passed as an - argument to a function run with ``multiprocessing.Process``, such that - the file descriptor is available in the subprocess.""" - - def __init__(self, fd): - self._connection = None - self._fd = None - if sys.version_info >= (3, 8): - self._connection = multiprocessing.connection.Connection(fd) - else: - self._fd = fd - - @property - def fd(self): - if self._connection: - return self._connection._handle - else: - return self._fd - - def close(self): - if self._connection: - self._connection.close() - else: - os.close(self._fd) - - -def close_connection_and_file(multiprocess_fd, file): - # MultiprocessFd is intended to transmit a FD - # to a child process, this FD is then opened to a Python File object - # (using fdopen). In >= 3.8, MultiprocessFd encapsulates a - # multiprocessing.connection.Connection; Connection closes the FD - # when it is deleted, and prints a warning about duplicate closure if - # it is not explicitly closed. In < 3.8, MultiprocessFd encapsulates a - # simple FD; closing the FD here appears to conflict with - # closure of the File object (in < 3.8 that is). Therefore this needs - # to choose whether to close the File or the Connection. - if sys.version_info >= (3, 8): - multiprocess_fd.close() - else: - file.close() - - @contextmanager def replace_environment(env): """Replace the current environment (`os.environ`) with `env`. @@ -545,22 +502,20 @@ def __enter__(self): # forcing debug output. self._saved_debug = tty._debug - # OS-level pipe for redirecting output to logger - read_fd, write_fd = os.pipe() - - read_multiprocess_fd = MultiProcessFd(read_fd) + # Pipe for redirecting output to logger + read_fd, self.write_fd = multiprocessing.Pipe(duplex=False) - # Multiprocessing pipe for communication back from the daemon + # Pipe for communication back from the daemon # Currently only used to save echo value between uses - self.parent_pipe, child_pipe = multiprocessing.Pipe() + self.parent_pipe, child_pipe = multiprocessing.Pipe(duplex=False) # Sets a daemon that writes to file what it reads from a pipe try: # need to pass this b/c multiprocessing closes stdin in child. - input_multiprocess_fd = None + input_fd = None try: if sys.stdin.isatty(): - input_multiprocess_fd = MultiProcessFd(os.dup(sys.stdin.fileno())) + input_fd = Connection(os.dup(sys.stdin.fileno())) except BaseException: # just don't forward input if this fails pass @@ -569,9 +524,9 @@ def __enter__(self): self.process = multiprocessing.Process( target=_writer_daemon, args=( - input_multiprocess_fd, - read_multiprocess_fd, - write_fd, + input_fd, + read_fd, + self.write_fd, self.echo, self.log_file, child_pipe, @@ -582,9 +537,9 @@ def __enter__(self): self.process.start() finally: - if input_multiprocess_fd: - input_multiprocess_fd.close() - read_multiprocess_fd.close() + if input_fd: + input_fd.close() + read_fd.close() # Flush immediately before redirecting so that anything buffered # goes to the original stream @@ -602,9 +557,9 @@ def __enter__(self): self._saved_stderr = os.dup(sys.stderr.fileno()) # redirect to the pipe we created above - os.dup2(write_fd, sys.stdout.fileno()) - os.dup2(write_fd, sys.stderr.fileno()) - os.close(write_fd) + os.dup2(self.write_fd.fileno(), sys.stdout.fileno()) + os.dup2(self.write_fd.fileno(), sys.stderr.fileno()) + self.write_fd.close() else: # Handle I/O the Python way. This won't redirect lower-level @@ -617,7 +572,7 @@ def __enter__(self): self._saved_stderr = sys.stderr # create a file object for the pipe; redirect to it. - pipe_fd_out = os.fdopen(write_fd, "w") + pipe_fd_out = os.fdopen(self.write_fd.fileno(), "w", closefd=False) sys.stdout = pipe_fd_out sys.stderr = pipe_fd_out @@ -653,6 +608,7 @@ def __exit__(self, exc_type, exc_val, exc_tb): else: sys.stdout = self._saved_stdout sys.stderr = self._saved_stderr + self.write_fd.close() # print log contents in parent if needed. if self.log_file.write_in_parent: @@ -866,14 +822,14 @@ def force_echo(self): def _writer_daemon( - stdin_multiprocess_fd, - read_multiprocess_fd, - write_fd, - echo, - log_file_wrapper, - control_pipe, - filter_fn, -): + stdin_fd: Optional[Connection], + read_fd: Connection, + write_fd: Connection, + echo: bool, + log_file_wrapper: FileWrapper, + control_fd: Connection, + filter_fn: Optional[Callable[[str], str]], +) -> None: """Daemon used by ``log_output`` to write to a log file and to ``stdout``. The daemon receives output from the parent process and writes it both @@ -910,43 +866,37 @@ def _writer_daemon( ``StringIO`` in the parent. This is mainly for testing. Arguments: - stdin_multiprocess_fd (int): input from the terminal - read_multiprocess_fd (int): pipe for reading from parent's redirected - stdout - echo (bool): initial echo setting -- controlled by user and - preserved across multiple writer daemons - log_file_wrapper (FileWrapper): file to log all output - control_pipe (Pipe): multiprocessing pipe on which to send control - information to the parent - filter_fn (callable, optional): function to filter each line of output + stdin_fd: optional input from the terminal + read_fd: pipe for reading from parent's redirected stdout + echo: initial echo setting -- controlled by user and preserved across multiple writer + daemons + log_file_wrapper: file to log all output + control_pipe: multiprocessing pipe on which to send control information to the parent + filter_fn: optional function to filter each line of output """ - # If this process was forked, then it will inherit file descriptors from - # the parent process. This process depends on closing all instances of - # write_fd to terminate the reading loop, so we close the file descriptor - # here. Forking is the process spawning method everywhere except Mac OS - # for Python >= 3.8 and on Windows - if sys.version_info < (3, 8) or sys.platform != "darwin": - os.close(write_fd) + # This process depends on closing all instances of write_pipe to terminate the reading loop + write_fd.close() # 1. Use line buffering (3rd param = 1) since Python 3 has a bug # that prevents unbuffered text I/O. # 2. Python 3.x before 3.7 does not open with UTF-8 encoding by default - in_pipe = os.fdopen(read_multiprocess_fd.fd, "r", 1, encoding="utf-8") + # 3. closefd=False because Connection has "ownership" + read_file = os.fdopen(read_fd.fileno(), "r", 1, encoding="utf-8", closefd=False) - if stdin_multiprocess_fd: - stdin = os.fdopen(stdin_multiprocess_fd.fd) + if stdin_fd: + stdin_file = os.fdopen(stdin_fd.fileno(), closefd=False) else: - stdin = None + stdin_file = None # list of streams to select from - istreams = [in_pipe, stdin] if stdin else [in_pipe] + istreams = [read_file, stdin_file] if stdin_file else [read_file] force_echo = False # parent can force echo for certain output log_file = log_file_wrapper.unwrap() try: - with keyboard_input(stdin) as kb: + with keyboard_input(stdin_file) as kb: while True: # fix the terminal settings if we recently came to # the foreground @@ -959,12 +909,12 @@ def _writer_daemon( # Allow user to toggle echo with 'v' key. # Currently ignores other chars. # only read stdin if we're in the foreground - if stdin in rlist and not _is_background_tty(stdin): + if stdin_file and stdin_file in rlist and not _is_background_tty(stdin_file): # it's possible to be backgrounded between the above # check and the read, so we ignore SIGTTIN here. with ignore_signal(signal.SIGTTIN): try: - if stdin.read(1) == "v": + if stdin_file.read(1) == "v": echo = not echo except IOError as e: # If SIGTTIN is ignored, the system gives EIO @@ -973,13 +923,13 @@ def _writer_daemon( if e.errno != errno.EIO: raise - if in_pipe in rlist: + if read_file in rlist: line_count = 0 try: while line_count < 100: # Handle output from the calling process. try: - line = _retry(in_pipe.readline)() + line = _retry(read_file.readline)() except UnicodeDecodeError: # installs like --test=root gpgme produce non-UTF8 logs line = "\n" @@ -1008,7 +958,7 @@ def _writer_daemon( if xoff in controls: force_echo = False - if not _input_available(in_pipe): + if not _input_available(read_file): break finally: if line_count > 0: @@ -1023,14 +973,14 @@ def _writer_daemon( finally: # send written data back to parent if we used a StringIO if isinstance(log_file, io.StringIO): - control_pipe.send(log_file.getvalue()) + control_fd.send(log_file.getvalue()) log_file_wrapper.close() - close_connection_and_file(read_multiprocess_fd, in_pipe) - if stdin_multiprocess_fd: - close_connection_and_file(stdin_multiprocess_fd, stdin) + read_fd.close() + if stdin_fd: + stdin_fd.close() # send echo value back to the parent so it can be preserved. - control_pipe.send(echo) + control_fd.send(echo) def _retry(function): diff --git a/lib/spack/spack/__init__.py b/lib/spack/spack/__init__.py index cf7d62c7fd02e1..8c35e70370f25d 100644 --- a/lib/spack/spack/__init__.py +++ b/lib/spack/spack/__init__.py @@ -11,7 +11,7 @@ import spack.util.git #: PEP440 canonical ... string -__version__ = "0.23.0.dev0" +__version__ = "0.23.0" spack_version = __version__ @@ -69,4 +69,15 @@ def get_version() -> str: return spack_version -__all__ = ["spack_version_info", "spack_version", "get_version", "get_spack_commit"] +def get_short_version() -> str: + """Short Spack version.""" + return f"{spack_version_info[0]}.{spack_version_info[1]}" + + +__all__ = [ + "spack_version_info", + "spack_version", + "get_version", + "get_spack_commit", + "get_short_version", +] diff --git a/lib/spack/spack/audit.py b/lib/spack/spack/audit.py index 3ccdd5b9cd651f..273e335ade03cf 100644 --- a/lib/spack/spack/audit.py +++ b/lib/spack/spack/audit.py @@ -714,17 +714,16 @@ def _ensure_env_methods_are_ported_to_builders(pkgs, error_cls): for pkg_name in pkgs: pkg_cls = spack.repo.PATH.get_pkg_class(pkg_name) - # values are either Value objects (for conditional values) or the values themselves + # values are either ConditionalValue objects or the values themselves build_system_names = set( - v.value if isinstance(v, spack.variant.Value) else v + v.value if isinstance(v, spack.variant.ConditionalValue) else v for _, variant in pkg_cls.variant_definitions("build_system") for v in variant.values ) builder_cls_names = [spack.builder.BUILDER_CLS[x].__name__ for x in build_system_names] - module = pkg_cls.module has_builders_in_package_py = any( - getattr(module, name, False) for name in builder_cls_names + spack.builder.get_builder_class(pkg_cls, name) for name in builder_cls_names ) if not has_builders_in_package_py: continue @@ -806,7 +805,7 @@ def _uses_deprecated_globals(pkgs, error_cls): file = spack.repo.PATH.filename_for_package_name(pkg_name) tree = ast.parse(open(file).read()) - visitor = DeprecatedMagicGlobals(("std_cmake_args",)) + visitor = DeprecatedMagicGlobals(("std_cmake_args", "std_meson_args", "std_pip_args")) visitor.visit(tree) if visitor.references_to_globals: errors.append( diff --git a/lib/spack/spack/binary_distribution.py b/lib/spack/spack/binary_distribution.py index 1f0d33f00eea1d..dcc82130e77441 100644 --- a/lib/spack/spack/binary_distribution.py +++ b/lib/spack/spack/binary_distribution.py @@ -252,7 +252,7 @@ def _associate_built_specs_with_mirror(self, cache_key, mirror_url): spec_list = [ s - for s in db.query_local(installed=any, in_buildcache=any) + for s in db.query_local(installed=any) if s.external or db.query_local_by_spec_hash(s.dag_hash()).in_buildcache ] @@ -1182,6 +1182,9 @@ def __init__(self, mirror: spack.mirror.Mirror, force: bool, update_index: bool) self.tmpdir: str self.executor: concurrent.futures.Executor + # Verify if the mirror meets the requirements to push + self.mirror.ensure_mirror_usable("push") + def __enter__(self): self._tmpdir = tempfile.TemporaryDirectory(dir=spack.stage.get_stage_root()) self._executor = spack.util.parallel.make_concurrent_executor() @@ -2562,7 +2565,13 @@ def _ensure_common_prefix(tar: tarfile.TarFile) -> str: return pkg_prefix -def install_root_node(spec, unsigned=False, force=False, sha256=None): +def install_root_node( + spec: spack.spec.Spec, + unsigned=False, + force: bool = False, + sha256: Optional[str] = None, + allow_missing: bool = False, +) -> None: """Install the root node of a concrete spec from a buildcache. Checking the sha256 sum of a node before installation is usually needed only @@ -2571,11 +2580,10 @@ def install_root_node(spec, unsigned=False, force=False, sha256=None): Args: spec: spec to be installed (note that only the root node will be installed) - unsigned (bool): if True allows installing unsigned binaries - force (bool): force installation if the spec is already present in the - local store - sha256 (str): optional sha256 of the binary package, to be checked - before installation + unsigned: if True allows installing unsigned binaries + force: force installation if the spec is already present in the local store + sha256: optional sha256 of the binary package, to be checked before installation + allow_missing: when true, allows installing a node with missing dependencies """ # Early termination if spec.external or spec.virtual: @@ -2613,7 +2621,7 @@ def install_root_node(spec, unsigned=False, force=False, sha256=None): spec, spack.store.STORE.layout.spec_file_path(spec) ) spack.hooks.post_install(spec, False) - spack.store.STORE.db.add(spec) + spack.store.STORE.db.add(spec, allow_missing=allow_missing) def install_single_spec(spec, unsigned=False, force=False): diff --git a/lib/spack/spack/bootstrap/_common.py b/lib/spack/spack/bootstrap/_common.py index e56890f22b74de..2a33fa9aba02de 100644 --- a/lib/spack/spack/bootstrap/_common.py +++ b/lib/spack/spack/bootstrap/_common.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) """Common basic functions used through the spack.bootstrap package""" import fnmatch +import glob import importlib import os.path import re @@ -60,10 +61,19 @@ def _try_import_from_store( python, *_ = candidate_spec.dependencies("python-venv") else: python, *_ = candidate_spec.dependencies("python") - module_paths = [ - os.path.join(candidate_spec.prefix, python.package.purelib), - os.path.join(candidate_spec.prefix, python.package.platlib), - ] + + # if python is installed, ask it for the layout + if python.installed: + module_paths = [ + os.path.join(candidate_spec.prefix, python.package.purelib), + os.path.join(candidate_spec.prefix, python.package.platlib), + ] + # otherwise search for the site-packages directory + # (clingo from binaries with truncated python-venv runtime) + else: + module_paths = glob.glob( + os.path.join(candidate_spec.prefix, "lib", "python*", "site-packages") + ) path_before = list(sys.path) # NOTE: try module_paths first and last, last allows an existing version in path diff --git a/lib/spack/spack/bootstrap/core.py b/lib/spack/spack/bootstrap/core.py index 6f1d9fdb9dff52..0c6127e63e8289 100644 --- a/lib/spack/spack/bootstrap/core.py +++ b/lib/spack/spack/bootstrap/core.py @@ -37,6 +37,7 @@ import spack.binary_distribution import spack.config import spack.detection +import spack.mirror import spack.platforms import spack.spec import spack.store @@ -44,7 +45,6 @@ import spack.util.executable import spack.util.path import spack.util.spack_yaml -import spack.util.url import spack.version from spack.installer import PackageInstaller @@ -91,12 +91,7 @@ def __init__(self, conf: ConfigDictionary) -> None: self.metadata_dir = spack.util.path.canonicalize_path(conf["metadata"]) # Promote (relative) paths to file urls - url = conf["info"]["url"] - if spack.util.url.is_path_instead_of_url(url): - if not os.path.isabs(url): - url = os.path.join(self.metadata_dir, url) - url = spack.util.url.path_to_file_url(url) - self.url = url + self.url = spack.mirror.Mirror(conf["info"]["url"]).fetch_url @property def mirror_scope(self) -> spack.config.InternalConfigScope: @@ -175,7 +170,15 @@ def _install_by_hash( query = spack.binary_distribution.BinaryCacheQuery(all_architectures=True) for match in spack.store.find([f"/{pkg_hash}"], multiple=False, query_fn=query): spack.binary_distribution.install_root_node( - match, unsigned=True, force=True, sha256=pkg_sha256 + # allow_missing is true since when bootstrapping clingo we truncate runtime + # deps such as gcc-runtime, since we link libstdc++ statically, and the other + # further runtime deps are loaded by the Python interpreter. This just silences + # warnings about missing dependencies. + match, + unsigned=True, + force=True, + sha256=pkg_sha256, + allow_missing=True, ) def _install_and_test( @@ -599,7 +602,10 @@ def bootstrapping_sources(scope: Optional[str] = None): current = copy.copy(entry) metadata_dir = spack.util.path.canonicalize_path(entry["metadata"]) metadata_yaml = os.path.join(metadata_dir, METADATA_YAML_FILENAME) - with open(metadata_yaml, encoding="utf-8") as stream: - current.update(spack.util.spack_yaml.load(stream)) - list_of_sources.append(current) + try: + with open(metadata_yaml, encoding="utf-8") as stream: + current.update(spack.util.spack_yaml.load(stream)) + list_of_sources.append(current) + except OSError: + pass return list_of_sources diff --git a/lib/spack/spack/build_environment.py b/lib/spack/spack/build_environment.py index af6d0f4e76da85..33586eccde2974 100644 --- a/lib/spack/spack/build_environment.py +++ b/lib/spack/spack/build_environment.py @@ -44,6 +44,7 @@ from collections import defaultdict from enum import Flag, auto from itertools import chain +from multiprocessing.connection import Connection from typing import Callable, Dict, List, Optional, Set, Tuple import archspec.cpu @@ -54,7 +55,6 @@ from llnl.util.lang import dedupe, stable_partition from llnl.util.symlink import symlink from llnl.util.tty.color import cescape, colorize -from llnl.util.tty.log import MultiProcessFd import spack.build_systems._checks import spack.build_systems.cmake @@ -617,14 +617,12 @@ def set_package_py_globals(pkg, context: Context = Context.BUILD): """ module = ModuleChangePropagator(pkg) + jobs = spack.config.determine_number_of_jobs(parallel=pkg.parallel) + module.make_jobs = jobs if context == Context.BUILD: - module.std_cmake_args = spack.build_systems.cmake.CMakeBuilder.std_args(pkg) module.std_meson_args = spack.build_systems.meson.MesonBuilder.std_args(pkg) module.std_pip_args = spack.build_systems.python.PythonPipBuilder.std_args(pkg) - jobs = spack.config.determine_number_of_jobs(parallel=pkg.parallel) - module.make_jobs = jobs - # TODO: make these build deps that can be installed if not found. module.make = MakeExecutable("make", jobs) module.gmake = MakeExecutable("gmake", jobs) @@ -1048,6 +1046,12 @@ def set_all_package_py_globals(self): # This includes runtime dependencies, also runtime deps of direct build deps. set_package_py_globals(pkg, context=Context.RUN) + # Looping over the set of packages a second time + # ensures all globals are loaded into the module space prior to + # any package setup. This guarantees package setup methods have + # access to expected module level definitions such as "spack_cc" + for dspec, flag in chain(self.external, self.nonexternal): + pkg = dspec.package for spec in dspec.dependents(): # Note: some specs have dependents that are unreachable from the root, so avoid # setting globals for those. @@ -1057,6 +1061,15 @@ def set_all_package_py_globals(self): pkg.setup_dependent_package(dependent_module, spec) dependent_module.propagate_changes_to_mro() + if self.context == Context.BUILD: + pkg = self.specs[0].package + module = ModuleChangePropagator(pkg) + # std_cmake_args is not sufficiently static to be defined + # in set_package_py_globals and is deprecated so its handled + # here as a special case + module.std_cmake_args = spack.build_systems.cmake.CMakeBuilder.std_args(pkg) + module.propagate_changes_to_mro() + def get_env_modifications(self) -> EnvironmentModifications: """Returns the environment variable modifications for the given input specs and context. Environment modifications include: @@ -1130,10 +1143,10 @@ def _setup_pkg_and_run( serialized_pkg: "spack.subprocess_context.PackageInstallContext", function: Callable, kwargs: Dict, - write_pipe: multiprocessing.connection.Connection, - input_multiprocess_fd: Optional[MultiProcessFd], - jsfd1: Optional[MultiProcessFd], - jsfd2: Optional[MultiProcessFd], + write_pipe: Connection, + input_pipe: Optional[Connection], + jsfd1: Optional[Connection], + jsfd2: Optional[Connection], ): """Main entry point in the child process for Spack builds. @@ -1175,13 +1188,12 @@ def _setup_pkg_and_run( context: str = kwargs.get("context", "build") try: - # We are in the child process. Python sets sys.stdin to - # open(os.devnull) to prevent our process and its parent from - # simultaneously reading from the original stdin. But, we assume - # that the parent process is not going to read from it till we - # are done with the child, so we undo Python's precaution. - if input_multiprocess_fd is not None: - sys.stdin = os.fdopen(input_multiprocess_fd.fd) + # We are in the child process. Python sets sys.stdin to open(os.devnull) to prevent our + # process and its parent from simultaneously reading from the original stdin. But, we + # assume that the parent process is not going to read from it till we are done with the + # child, so we undo Python's precaution. closefd=False since Connection has ownership. + if input_pipe is not None: + sys.stdin = os.fdopen(input_pipe.fileno(), closefd=False) pkg = serialized_pkg.restore() @@ -1204,7 +1216,7 @@ def _setup_pkg_and_run( # objects can't be sent to the parent. exc_type = type(e) tb = e.__traceback__ - tb_string = traceback.format_exception(exc_type, e, tb) + tb_string = "".join(traceback.format_exception(exc_type, e, tb)) # build up some context from the offending package so we can # show that, too. @@ -1250,8 +1262,8 @@ def _setup_pkg_and_run( finally: write_pipe.close() - if input_multiprocess_fd is not None: - input_multiprocess_fd.close() + if input_pipe is not None: + input_pipe.close() def start_build_process(pkg, function, kwargs): @@ -1278,23 +1290,9 @@ def child_fun(): If something goes wrong, the child process catches the error and passes it to the parent wrapped in a ChildError. The parent is expected to handle (or re-raise) the ChildError. - - This uses `multiprocessing.Process` to create the child process. The - mechanism used to create the process differs on different operating - systems and for different versions of Python. In some cases "fork" - is used (i.e. the "fork" system call) and some cases it starts an - entirely new Python interpreter process (in the docs this is referred - to as the "spawn" start method). Breaking it down by OS: - - - Linux always uses fork. - - Mac OS uses fork before Python 3.8 and "spawn" for 3.8 and after. - - Windows always uses the "spawn" start method. - - For more information on `multiprocessing` child process creation - mechanisms, see https://docs.python.org/3/library/multiprocessing.html#contexts-and-start-methods """ read_pipe, write_pipe = multiprocessing.Pipe(duplex=False) - input_multiprocess_fd = None + input_fd = None jobserver_fd1 = None jobserver_fd2 = None @@ -1303,14 +1301,13 @@ def child_fun(): try: # Forward sys.stdin when appropriate, to allow toggling verbosity if sys.platform != "win32" and sys.stdin.isatty() and hasattr(sys.stdin, "fileno"): - input_fd = os.dup(sys.stdin.fileno()) - input_multiprocess_fd = MultiProcessFd(input_fd) + input_fd = Connection(os.dup(sys.stdin.fileno())) mflags = os.environ.get("MAKEFLAGS", False) if mflags: m = re.search(r"--jobserver-[^=]*=(\d),(\d)", mflags) if m: - jobserver_fd1 = MultiProcessFd(int(m.group(1))) - jobserver_fd2 = MultiProcessFd(int(m.group(2))) + jobserver_fd1 = Connection(int(m.group(1))) + jobserver_fd2 = Connection(int(m.group(2))) p = multiprocessing.Process( target=_setup_pkg_and_run, @@ -1319,7 +1316,7 @@ def child_fun(): function, kwargs, write_pipe, - input_multiprocess_fd, + input_fd, jobserver_fd1, jobserver_fd2, ), @@ -1339,8 +1336,8 @@ def child_fun(): finally: # Close the input stream in the parent process - if input_multiprocess_fd is not None: - input_multiprocess_fd.close() + if input_fd is not None: + input_fd.close() def exitcode_msg(p): typ = "exit" if p.exitcode >= 0 else "signal" diff --git a/lib/spack/spack/builder.py b/lib/spack/spack/builder.py index 098f583d534d2d..b767f15b6dc765 100644 --- a/lib/spack/spack/builder.py +++ b/lib/spack/spack/builder.py @@ -12,6 +12,7 @@ import spack.error import spack.multimethod +import spack.repo #: Builder classes, as registered by the "builder" decorator BUILDER_CLS = {} @@ -74,6 +75,14 @@ def __call__(self, spec, prefix): return self.phase_fn(self.builder.pkg, spec, prefix) +def get_builder_class(pkg, name: str) -> Optional[type]: + """Return the builder class if a package module defines it.""" + cls = getattr(pkg.module, name, None) + if cls and cls.__module__.startswith(spack.repo.ROOT_PYTHON_NAMESPACE): + return cls + return None + + def _create(pkg): """Return a new builder object for the package object being passed as argument. @@ -99,9 +108,10 @@ class hierarchy (look at AspellDictPackage for an example of that) package_buildsystem = buildsystem_name(pkg) default_builder_cls = BUILDER_CLS[package_buildsystem] builder_cls_name = default_builder_cls.__name__ - builder_cls = getattr(pkg.module, builder_cls_name, None) - if builder_cls: - return builder_cls(pkg) + builder_class = get_builder_class(pkg, builder_cls_name) + + if builder_class: + return builder_class(pkg) # Specialized version of a given buildsystem can subclass some # base classes and specialize certain phases or methods or attributes. diff --git a/lib/spack/spack/caches.py b/lib/spack/spack/caches.py index 58594059a58d09..f2d4bfeec07a33 100644 --- a/lib/spack/spack/caches.py +++ b/lib/spack/spack/caches.py @@ -5,7 +5,6 @@ """Caches used by Spack to store data""" import os -from typing import Union import llnl.util.lang from llnl.util.filesystem import mkdirp @@ -32,12 +31,8 @@ def _misc_cache(): return spack.util.file_cache.FileCache(path) -FileCacheType = Union[spack.util.file_cache.FileCache, llnl.util.lang.Singleton] - #: Spack's cache for small data -MISC_CACHE: Union[spack.util.file_cache.FileCache, llnl.util.lang.Singleton] = ( - llnl.util.lang.Singleton(_misc_cache) -) +MISC_CACHE: spack.util.file_cache.FileCache = llnl.util.lang.Singleton(_misc_cache) # type: ignore def fetch_cache_location(): @@ -74,6 +69,4 @@ def store(self, fetcher, relative_dest): #: Spack's local cache for downloaded source archives -FETCH_CACHE: Union[spack.fetch_strategy.FsCache, llnl.util.lang.Singleton] = ( - llnl.util.lang.Singleton(_fetch_cache) -) +FETCH_CACHE: spack.fetch_strategy.FsCache = llnl.util.lang.Singleton(_fetch_cache) # type: ignore diff --git a/lib/spack/spack/ci.py b/lib/spack/spack/ci.py index f360137ede41bc..5a8b2ae1e7d49a 100644 --- a/lib/spack/spack/ci.py +++ b/lib/spack/spack/ci.py @@ -10,6 +10,7 @@ import os import re import shutil +import ssl import stat import subprocess import sys @@ -19,21 +20,21 @@ from collections import defaultdict, namedtuple from typing import Dict, List, Optional, Set, Tuple from urllib.error import HTTPError, URLError -from urllib.parse import urlencode -from urllib.request import HTTPHandler, Request, build_opener +from urllib.parse import quote, urlencode, urlparse +from urllib.request import HTTPHandler, HTTPSHandler, Request, build_opener import ruamel.yaml import llnl.util.filesystem as fs import llnl.util.tty as tty -from llnl.util.lang import memoized +from llnl.util.lang import Singleton, memoized from llnl.util.tty.color import cescape, colorize import spack import spack.binary_distribution as bindist import spack.concretize import spack.config as cfg -import spack.environment as ev +import spack.error import spack.main import spack.mirror import spack.paths @@ -50,6 +51,31 @@ from spack.reporters.cdash import SPACK_CDASH_TIMEOUT from spack.reporters.cdash import build_stamp as cdash_build_stamp + +def _urlopen(): + error_handler = web_util.SpackHTTPDefaultErrorHandler() + + # One opener with HTTPS ssl enabled + with_ssl = build_opener( + HTTPHandler(), HTTPSHandler(context=web_util.ssl_create_default_context()), error_handler + ) + + # One opener with HTTPS ssl disabled + without_ssl = build_opener( + HTTPHandler(), HTTPSHandler(context=ssl._create_unverified_context()), error_handler + ) + + # And dynamically dispatch based on the config:verify_ssl. + def dispatch_open(fullurl, data=None, timeout=None, verify_ssl=True): + opener = with_ssl if verify_ssl else without_ssl + timeout = timeout or spack.config.get("config:connect_timeout", 1) + return opener.open(fullurl, data, timeout) + + return dispatch_open + + +_dyn_mapping_urlopener = Singleton(_urlopen) + # See https://docs.gitlab.com/ee/ci/yaml/#retry for descriptions of conditions JOB_RETRY_CONDITIONS = [ # "always", @@ -69,8 +95,6 @@ TEMP_STORAGE_MIRROR_NAME = "ci_temporary_mirror" SPACK_RESERVED_TAGS = ["public", "protected", "notary"] -# TODO: Remove this in Spack 0.23 -SHARED_PR_MIRROR_URL = "s3://spack-binaries-prs/shared_pr_mirror" JOB_NAME_FORMAT = ( "{name}{@version} {/hash:7} {%compiler.name}{@compiler.version}{ arch=architecture}" ) @@ -175,11 +199,11 @@ def _remove_satisfied_deps(deps, satisfied_list): return nodes, edges, stages -def _print_staging_summary(spec_labels, stages, mirrors_to_check, rebuild_decisions): +def _print_staging_summary(spec_labels, stages, rebuild_decisions): if not stages: return - mirrors = spack.mirror.MirrorCollection(mirrors=mirrors_to_check, binary=True) + mirrors = spack.mirror.MirrorCollection(binary=True) tty.msg("Checked the following mirrors for binaries:") for m in mirrors.values(): tty.msg(f" {m.fetch_url}") @@ -226,21 +250,14 @@ def _spec_matches(spec, match_string): return spec.intersects(match_string) -def _format_job_needs( - dep_jobs, build_group, prune_dag, rebuild_decisions, enable_artifacts_buildcache -): +def _format_job_needs(dep_jobs, build_group, prune_dag, rebuild_decisions): needs_list = [] for dep_job in dep_jobs: dep_spec_key = _spec_ci_label(dep_job) rebuild = rebuild_decisions[dep_spec_key].rebuild if not prune_dag or rebuild: - needs_list.append( - { - "job": get_job_name(dep_job, build_group), - "artifacts": enable_artifacts_buildcache, - } - ) + needs_list.append({"job": get_job_name(dep_job, build_group), "artifacts": False}) return needs_list @@ -384,12 +401,6 @@ def __init__(self, ci_config, spec_labels, stages): self.ir = { "jobs": {}, - "temporary-storage-url-prefix": self.ci_config.get( - "temporary-storage-url-prefix", None - ), - "enable-artifacts-buildcache": self.ci_config.get( - "enable-artifacts-buildcache", False - ), "rebuild-index": self.ci_config.get("rebuild-index", True), "broken-specs-url": self.ci_config.get("broken-specs-url", None), "broken-tests-packages": self.ci_config.get("broken-tests-packages", []), @@ -405,9 +416,20 @@ def __init__(self, ci_config, spec_labels, stages): if name not in ["any", "build"]: jobs[name] = self.__init_job("") - def __init_job(self, spec): + def __init_job(self, release_spec): """Initialize job object""" - return {"spec": spec, "attributes": {}} + job_object = {"spec": release_spec, "attributes": {}} + if release_spec: + job_vars = job_object["attributes"].setdefault("variables", {}) + job_vars["SPACK_JOB_SPEC_DAG_HASH"] = release_spec.dag_hash() + job_vars["SPACK_JOB_SPEC_PKG_NAME"] = release_spec.name + job_vars["SPACK_JOB_SPEC_PKG_VERSION"] = release_spec.format("{version}") + job_vars["SPACK_JOB_SPEC_COMPILER_NAME"] = release_spec.format("{compiler.name}") + job_vars["SPACK_JOB_SPEC_COMPILER_VERSION"] = release_spec.format("{compiler.version}") + job_vars["SPACK_JOB_SPEC_ARCH"] = release_spec.format("{architecture}") + job_vars["SPACK_JOB_SPEC_VARIANTS"] = release_spec.format("{variants}") + + return job_object def __is_named(self, section): """Check if a pipeline-gen configuration section is for a named job, @@ -500,6 +522,7 @@ def generate_ir(self): for section in reversed(pipeline_gen): name = self.__is_named(section) has_submapping = "submapping" in section + has_dynmapping = "dynamic-mapping" in section section = cfg.InternalConfigScope._process_dict_keyname_overrides(section) if name: @@ -542,6 +565,108 @@ def _apply_section(dest, src): job["attributes"] = self.__apply_submapping( job["attributes"], job["spec"], section ) + elif has_dynmapping: + mapping = section["dynamic-mapping"] + + dynmap_name = mapping.get("name") + + # Check if this section should be skipped + dynmap_skip = os.environ.get("SPACK_CI_SKIP_DYNAMIC_MAPPING") + if dynmap_name and dynmap_skip: + if re.match(dynmap_skip, dynmap_name): + continue + + # Get the endpoint + endpoint = mapping["endpoint"] + endpoint_url = urlparse(endpoint) + + # Configure the request header + header = {"User-Agent": web_util.SPACK_USER_AGENT} + header.update(mapping.get("header", {})) + + # Expand header environment variables + # ie. if tokens are passed + for value in header.values(): + value = os.path.expandvars(value) + + verify_ssl = mapping.get("verify_ssl", spack.config.get("config:verify_ssl", True)) + timeout = mapping.get("timeout", spack.config.get("config:connect_timeout", 1)) + + required = mapping.get("require", []) + allowed = mapping.get("allow", []) + ignored = mapping.get("ignore", []) + + # required keys are implicitly allowed + allowed = sorted(set(allowed + required)) + ignored = sorted(set(ignored)) + required = sorted(set(required)) + + # Make sure required things are not also ignored + assert not any([ikey in required for ikey in ignored]) + + def job_query(job): + job_vars = job["attributes"]["variables"] + query = ( + "{SPACK_JOB_SPEC_PKG_NAME}@{SPACK_JOB_SPEC_PKG_VERSION}" + # The preceding spaces are required (ref. https://github.com/spack/spack-gantry/blob/develop/docs/api.md#allocation) + " {SPACK_JOB_SPEC_VARIANTS}" + " arch={SPACK_JOB_SPEC_ARCH}" + "%{SPACK_JOB_SPEC_COMPILER_NAME}@{SPACK_JOB_SPEC_COMPILER_VERSION}" + ).format_map(job_vars) + return f"spec={quote(query)}" + + for job in jobs.values(): + if not job["spec"]: + continue + + # Create request for this job + query = job_query(job) + request = Request( + endpoint_url._replace(query=query).geturl(), headers=header, method="GET" + ) + try: + response = _dyn_mapping_urlopener( + request, verify_ssl=verify_ssl, timeout=timeout + ) + except Exception as e: + # For now just ignore any errors from dynamic mapping and continue + # This is still experimental, and failures should not stop CI + # from running normally + tty.warn(f"Failed to fetch dynamic mapping for query:\n\t{query}") + tty.warn(f"{e}") + continue + + config = json.load(codecs.getreader("utf-8")(response)) + + # Strip ignore keys + if ignored: + for key in ignored: + if key in config: + config.pop(key) + + # Only keep allowed keys + clean_config = {} + if allowed: + for key in allowed: + if key in config: + clean_config[key] = config[key] + else: + clean_config = config + + # Verify all of the required keys are present + if required: + missing_keys = [] + for key in required: + if key not in clean_config.keys(): + missing_keys.append(key) + + if missing_keys: + tty.warn(f"Response missing required keys: {missing_keys}") + + if clean_config: + job["attributes"] = spack.config.merge_yaml( + job.get("attributes", {}), clean_config + ) for _, job in jobs.items(): if job["spec"]: @@ -558,14 +683,13 @@ def generate_gitlab_ci_yaml( prune_dag=False, check_index_only=False, artifacts_root=None, - remote_mirror_override=None, ): """Generate a gitlab yaml file to run a dynamic child pipeline from the spec matrix in the active environment. Arguments: env (spack.environment.Environment): Activated environment object - which must contain a gitlab-ci section describing how to map + which must contain a ci section describing how to map specs to runners print_summary (bool): Should we print a summary of all the jobs in the stages in which they were placed. @@ -580,39 +704,21 @@ def generate_gitlab_ci_yaml( artifacts_root (str): Path where artifacts like logs, environment files (spack.yaml, spack.lock), etc should be written. GitLab requires this to be within the project directory. - remote_mirror_override (str): Typically only needed when one spack.yaml - is used to populate several mirrors with binaries, based on some - criteria. Spack protected pipelines populate different mirrors based - on branch name, facilitated by this option. DEPRECATED """ with spack.concretize.disable_compiler_existence_check(): with env.write_transaction(): env.concretize() env.write() - yaml_root = env.manifest[ev.TOP_LEVEL_KEY] - # Get the joined "ci" config with all of the current scopes resolved ci_config = cfg.get("ci") - config_deprecated = False if not ci_config: - tty.warn("Environment does not have `ci` a configuration") - gitlabci_config = yaml_root.get("gitlab-ci") - if not gitlabci_config: - tty.die("Environment yaml does not have `gitlab-ci` config section. Cannot recover.") - - tty.warn( - "The `gitlab-ci` configuration is deprecated in favor of `ci`.\n", - "To update run \n\t$ spack env update /path/to/ci/spack.yaml", - ) - translate_deprecated_config(gitlabci_config) - ci_config = gitlabci_config - config_deprecated = True + raise SpackCIError("Environment does not have a `ci` configuration") # Default target is gitlab...and only target is gitlab if not ci_config.get("target", "gitlab") == "gitlab": - tty.die('Spack CI module only generates target "gitlab"') + raise SpackCIError('Spack CI module only generates target "gitlab"') cdash_config = cfg.get("cdash") cdash_handler = CDashHandler(cdash_config) if "build-group" in cdash_config else None @@ -673,12 +779,6 @@ def generate_gitlab_ci_yaml( spack_pipeline_type = os.environ.get("SPACK_PIPELINE_TYPE", None) copy_only_pipeline = spack_pipeline_type == "spack_copy_only" - if copy_only_pipeline and config_deprecated: - tty.warn( - "SPACK_PIPELINE_TYPE=spack_copy_only is not supported when using\n", - "deprecated ci configuration, a no-op pipeline will be generated\n", - "instead.", - ) def ensure_expected_target_path(path): """Returns passed paths with all Windows path separators exchanged @@ -697,38 +797,16 @@ def ensure_expected_target_path(path): return path pipeline_mirrors = spack.mirror.MirrorCollection(binary=True) - deprecated_mirror_config = False buildcache_destination = None - if "buildcache-destination" in pipeline_mirrors: - if remote_mirror_override: - tty.die( - "Using the deprecated --buildcache-destination cli option and " - "having a mirror named 'buildcache-destination' at the same time " - "is not allowed" - ) - buildcache_destination = pipeline_mirrors["buildcache-destination"] - else: - deprecated_mirror_config = True - # TODO: This will be an error in Spack 0.23 + if "buildcache-destination" not in pipeline_mirrors: + raise SpackCIError("spack ci generate requires a mirror named 'buildcache-destination'") - # TODO: Remove this block in spack 0.23 - remote_mirror_url = None - if deprecated_mirror_config: - if "mirrors" not in yaml_root or len(yaml_root["mirrors"].values()) < 1: - tty.die("spack ci generate requires an env containing a mirror") - - ci_mirrors = yaml_root["mirrors"] - mirror_urls = [url for url in ci_mirrors.values()] - remote_mirror_url = mirror_urls[0] + buildcache_destination = pipeline_mirrors["buildcache-destination"] spack_buildcache_copy = os.environ.get("SPACK_COPY_BUILDCACHE", None) if spack_buildcache_copy: buildcache_copies = {} - buildcache_copy_src_prefix = ( - buildcache_destination.fetch_url - if buildcache_destination - else remote_mirror_override or remote_mirror_url - ) + buildcache_copy_src_prefix = buildcache_destination.fetch_url buildcache_copy_dest_prefix = spack_buildcache_copy # Check for a list of "known broken" specs that we should not bother @@ -738,55 +816,10 @@ def ensure_expected_target_path(path): if "broken-specs-url" in ci_config: broken_specs_url = ci_config["broken-specs-url"] - enable_artifacts_buildcache = False - if "enable-artifacts-buildcache" in ci_config: - tty.warn("Support for enable-artifacts-buildcache will be removed in Spack 0.23") - enable_artifacts_buildcache = ci_config["enable-artifacts-buildcache"] - rebuild_index_enabled = True if "rebuild-index" in ci_config and ci_config["rebuild-index"] is False: rebuild_index_enabled = False - temp_storage_url_prefix = None - if "temporary-storage-url-prefix" in ci_config: - tty.warn("Support for temporary-storage-url-prefix will be removed in Spack 0.23") - temp_storage_url_prefix = ci_config["temporary-storage-url-prefix"] - - # If a remote mirror override (alternate buildcache destination) was - # specified, add it here in case it has already built hashes we might - # generate. - # TODO: Remove this block in Spack 0.23 - mirrors_to_check = None - if deprecated_mirror_config and remote_mirror_override: - if spack_pipeline_type == "spack_protected_branch": - # Overriding the main mirror in this case might result - # in skipping jobs on a release pipeline because specs are - # up to date in develop. Eventually we want to notice and take - # advantage of this by scheduling a job to copy the spec from - # develop to the release, but until we have that, this makes - # sure we schedule a rebuild job if the spec isn't already in - # override mirror. - mirrors_to_check = {"override": remote_mirror_override} - - # If we have a remote override and we want generate pipeline using - # --check-index-only, then the override mirror needs to be added to - # the configured mirrors when bindist.update() is run, or else we - # won't fetch its index and include in our local cache. - spack.mirror.add( - spack.mirror.Mirror(remote_mirror_override, name="ci_pr_mirror"), - cfg.default_modify_scope(), - ) - - # TODO: Remove this block in Spack 0.23 - shared_pr_mirror = None - if deprecated_mirror_config and spack_pipeline_type == "spack_pull_request": - stack_name = os.environ.get("SPACK_CI_STACK_NAME", "") - shared_pr_mirror = url_util.join(SHARED_PR_MIRROR_URL, stack_name) - spack.mirror.add( - spack.mirror.Mirror(shared_pr_mirror, name="ci_shared_pr_mirror"), - cfg.default_modify_scope(), - ) - pipeline_artifacts_dir = artifacts_root if not pipeline_artifacts_dir: proj_dir = os.environ.get("CI_PROJECT_DIR", os.getcwd()) @@ -795,9 +828,8 @@ def ensure_expected_target_path(path): pipeline_artifacts_dir = os.path.abspath(pipeline_artifacts_dir) concrete_env_dir = os.path.join(pipeline_artifacts_dir, "concrete_environment") - # Now that we've added the mirrors we know about, they should be properly - # reflected in the environment manifest file, so copy that into the - # concrete environment directory, along with the spack.lock file. + # Copy the environment manifest file into the concrete environment directory, + # along with the spack.lock file. if not os.path.exists(concrete_env_dir): os.makedirs(concrete_env_dir) shutil.copyfile(env.manifest_path, os.path.join(concrete_env_dir, "spack.yaml")) @@ -822,18 +854,12 @@ def ensure_expected_target_path(path): env_includes.extend(include_scopes) env_yaml_root["spack"]["include"] = [ensure_expected_target_path(i) for i in env_includes] - if "gitlab-ci" in env_yaml_root["spack"] and "ci" not in env_yaml_root["spack"]: - env_yaml_root["spack"]["ci"] = env_yaml_root["spack"].pop("gitlab-ci") - translate_deprecated_config(env_yaml_root["spack"]["ci"]) - with open(os.path.join(concrete_env_dir, "spack.yaml"), "w") as fd: fd.write(syaml.dump_config(env_yaml_root, default_flow_style=False)) job_log_dir = os.path.join(pipeline_artifacts_dir, "logs") job_repro_dir = os.path.join(pipeline_artifacts_dir, "reproduction") job_test_dir = os.path.join(pipeline_artifacts_dir, "tests") - # TODO: Remove this line in Spack 0.23 - local_mirror_dir = os.path.join(pipeline_artifacts_dir, "mirror") user_artifacts_dir = os.path.join(pipeline_artifacts_dir, "user_data") # We communicate relative paths to the downstream jobs to avoid issues in @@ -847,8 +873,6 @@ def ensure_expected_target_path(path): rel_job_log_dir = os.path.relpath(job_log_dir, ci_project_dir) rel_job_repro_dir = os.path.relpath(job_repro_dir, ci_project_dir) rel_job_test_dir = os.path.relpath(job_test_dir, ci_project_dir) - # TODO: Remove this line in Spack 0.23 - rel_local_mirror_dir = os.path.join(local_mirror_dir, ci_project_dir) rel_user_artifacts_dir = os.path.relpath(user_artifacts_dir, ci_project_dir) # Speed up staging by first fetching binary indices from all mirrors @@ -910,7 +934,7 @@ def ensure_expected_target_path(path): continue up_to_date_mirrors = bindist.get_mirrors_for_spec( - spec=release_spec, mirrors_to_check=mirrors_to_check, index_only=check_index_only + spec=release_spec, index_only=check_index_only ) spec_record.rebuild = not up_to_date_mirrors @@ -952,36 +976,16 @@ def main_script_replacements(cmd): job_name = get_job_name(release_spec, build_group) - job_vars = job_object.setdefault("variables", {}) - job_vars["SPACK_JOB_SPEC_DAG_HASH"] = release_spec_dag_hash - job_vars["SPACK_JOB_SPEC_PKG_NAME"] = release_spec.name - job_vars["SPACK_JOB_SPEC_PKG_VERSION"] = release_spec.format("{version}") - job_vars["SPACK_JOB_SPEC_COMPILER_NAME"] = release_spec.format("{compiler.name}") - job_vars["SPACK_JOB_SPEC_COMPILER_VERSION"] = release_spec.format("{compiler.version}") - job_vars["SPACK_JOB_SPEC_ARCH"] = release_spec.format("{architecture}") - job_vars["SPACK_JOB_SPEC_VARIANTS"] = release_spec.format("{variants}") - job_object["needs"] = [] if spec_label in dependencies: - if enable_artifacts_buildcache: - # Get dependencies transitively, so they're all - # available in the artifacts buildcache. - dep_jobs = [d for d in release_spec.traverse(deptype="all", root=False)] - else: - # In this case, "needs" is only used for scheduling - # purposes, so we only get the direct dependencies. - dep_jobs = [] - for dep_label in dependencies[spec_label]: - dep_jobs.append(spec_labels[dep_label]) + # In this case, "needs" is only used for scheduling + # purposes, so we only get the direct dependencies. + dep_jobs = [] + for dep_label in dependencies[spec_label]: + dep_jobs.append(spec_labels[dep_label]) job_object["needs"].extend( - _format_job_needs( - dep_jobs, - build_group, - prune_dag, - rebuild_decisions, - enable_artifacts_buildcache, - ) + _format_job_needs(dep_jobs, build_group, prune_dag, rebuild_decisions) ) rebuild_spec = spec_record.rebuild @@ -1038,6 +1042,7 @@ def main_script_replacements(cmd): # Let downstream jobs know whether the spec needed rebuilding, regardless # whether DAG pruning was enabled or not. + job_vars = job_object["variables"] job_vars["SPACK_SPEC_NEEDS_REBUILD"] = str(rebuild_spec) if cdash_handler: @@ -1062,19 +1067,6 @@ def main_script_replacements(cmd): }, ) - # TODO: Remove this block in Spack 0.23 - if enable_artifacts_buildcache: - bc_root = os.path.join(local_mirror_dir, "build_cache") - job_object["artifacts"]["paths"].extend( - [ - os.path.join(bc_root, p) - for p in [ - bindist.tarball_name(release_spec, ".spec.json"), - bindist.tarball_directory_name(release_spec), - ] - ] - ) - job_object["stage"] = stage_name job_object["retry"] = {"max": 2, "when": JOB_RETRY_CONDITIONS} job_object["interruptible"] = True @@ -1089,15 +1081,7 @@ def main_script_replacements(cmd): job_id += 1 if print_summary: - _print_staging_summary(spec_labels, stages, mirrors_to_check, rebuild_decisions) - - # Clean up remote mirror override if enabled - # TODO: Remove this block in Spack 0.23 - if deprecated_mirror_config: - if remote_mirror_override: - spack.mirror.remove("ci_pr_mirror", cfg.default_modify_scope()) - if spack_pipeline_type == "spack_pull_request": - spack.mirror.remove("ci_shared_pr_mirror", cfg.default_modify_scope()) + _print_staging_summary(spec_labels, stages, rebuild_decisions) tty.debug(f"{job_id} build jobs generated in {stage_id} stages") @@ -1119,7 +1103,7 @@ def main_script_replacements(cmd): "when": ["runner_system_failure", "stuck_or_timeout_failure", "script_failure"], } - if copy_only_pipeline and not config_deprecated: + if copy_only_pipeline: stage_names.append("copy") sync_job = copy.deepcopy(spack_ci_ir["jobs"]["copy"]["attributes"]) sync_job["stage"] = "copy" @@ -1129,17 +1113,12 @@ def main_script_replacements(cmd): if "variables" not in sync_job: sync_job["variables"] = {} - sync_job["variables"]["SPACK_COPY_ONLY_DESTINATION"] = ( - buildcache_destination.fetch_url - if buildcache_destination - else remote_mirror_override or remote_mirror_url - ) + sync_job["variables"]["SPACK_COPY_ONLY_DESTINATION"] = buildcache_destination.fetch_url - if "buildcache-source" in pipeline_mirrors: - buildcache_source = pipeline_mirrors["buildcache-source"].fetch_url - else: - # TODO: Remove this condition in Spack 0.23 - buildcache_source = os.environ.get("SPACK_SOURCE_MIRROR", None) + if "buildcache-source" not in pipeline_mirrors: + raise SpackCIError("Copy-only pipelines require a mirror named 'buildcache-source'") + + buildcache_source = pipeline_mirrors["buildcache-source"].fetch_url sync_job["variables"]["SPACK_BUILDCACHE_SOURCE"] = buildcache_source sync_job["dependencies"] = [] @@ -1147,27 +1126,6 @@ def main_script_replacements(cmd): job_id += 1 if job_id > 0: - # TODO: Remove this block in Spack 0.23 - if temp_storage_url_prefix: - # There were some rebuild jobs scheduled, so we will need to - # schedule a job to clean up the temporary storage location - # associated with this pipeline. - stage_names.append("cleanup-temp-storage") - cleanup_job = copy.deepcopy(spack_ci_ir["jobs"]["cleanup"]["attributes"]) - - cleanup_job["stage"] = "cleanup-temp-storage" - cleanup_job["when"] = "always" - cleanup_job["retry"] = service_job_retries - cleanup_job["interruptible"] = True - - cleanup_job["script"] = _unpack_script( - cleanup_job["script"], - op=lambda cmd: cmd.replace("mirror_prefix", temp_storage_url_prefix), - ) - - cleanup_job["dependencies"] = [] - output_object["cleanup"] = cleanup_job - if ( "script" in spack_ci_ir["jobs"]["signing"]["attributes"] and spack_pipeline_type == "spack_protected_branch" @@ -1184,11 +1142,9 @@ def main_script_replacements(cmd): signing_job["interruptible"] = True if "variables" not in signing_job: signing_job["variables"] = {} - signing_job["variables"]["SPACK_BUILDCACHE_DESTINATION"] = ( - buildcache_destination.push_url # need the s3 url for aws s3 sync - if buildcache_destination - else remote_mirror_override or remote_mirror_url - ) + signing_job["variables"][ + "SPACK_BUILDCACHE_DESTINATION" + ] = buildcache_destination.push_url signing_job["dependencies"] = [] output_object["sign-pkgs"] = signing_job @@ -1199,9 +1155,7 @@ def main_script_replacements(cmd): final_job = spack_ci_ir["jobs"]["reindex"]["attributes"] final_job["stage"] = "stage-rebuild-index" - target_mirror = remote_mirror_override or remote_mirror_url - if buildcache_destination: - target_mirror = buildcache_destination.push_url + target_mirror = buildcache_destination.push_url final_job["script"] = _unpack_script( final_job["script"], op=lambda cmd: cmd.replace("{index_target_mirror}", target_mirror), @@ -1227,17 +1181,11 @@ def main_script_replacements(cmd): "SPACK_CONCRETE_ENV_DIR": rel_concrete_env_dir, "SPACK_VERSION": spack_version, "SPACK_CHECKOUT_VERSION": version_to_clone, - # TODO: Remove this line in Spack 0.23 - "SPACK_REMOTE_MIRROR_URL": remote_mirror_url, "SPACK_JOB_LOG_DIR": rel_job_log_dir, "SPACK_JOB_REPRO_DIR": rel_job_repro_dir, "SPACK_JOB_TEST_DIR": rel_job_test_dir, - # TODO: Remove this line in Spack 0.23 - "SPACK_LOCAL_MIRROR_DIR": rel_local_mirror_dir, "SPACK_PIPELINE_TYPE": str(spack_pipeline_type), "SPACK_CI_STACK_NAME": os.environ.get("SPACK_CI_STACK_NAME", "None"), - # TODO: Remove this line in Spack 0.23 - "SPACK_CI_SHARED_PR_MIRROR_URL": shared_pr_mirror or "None", "SPACK_REBUILD_CHECK_UP_TO_DATE": str(prune_dag), "SPACK_REBUILD_EVERYTHING": str(rebuild_everything), "SPACK_REQUIRE_SIGNING": os.environ.get("SPACK_REQUIRE_SIGNING", "False"), @@ -1246,10 +1194,6 @@ def main_script_replacements(cmd): for item, val in output_vars.items(): output_vars[item] = ensure_expected_target_path(val) - # TODO: Remove this block in Spack 0.23 - if deprecated_mirror_config and remote_mirror_override: - (output_object["variables"]["SPACK_REMOTE_MIRROR_OVERRIDE"]) = remote_mirror_override - spack_stack_name = os.environ.get("SPACK_CI_STACK_NAME", None) if spack_stack_name: output_object["variables"]["SPACK_CI_STACK_NAME"] = spack_stack_name @@ -1276,15 +1220,8 @@ def main_script_replacements(cmd): noop_job["retry"] = 0 noop_job["allow_failure"] = True - if copy_only_pipeline and config_deprecated: - tty.debug("Generating no-op job as copy-only is unsupported here.") - noop_job["script"] = [ - 'echo "copy-only pipelines are not supported with deprecated ci configs"' - ] - output_object = {"unsupported-copy": noop_job} - else: - tty.debug("No specs to rebuild, generating no-op job") - output_object = {"no-specs-to-rebuild": noop_job} + tty.debug("No specs to rebuild, generating no-op job") + output_object = {"no-specs-to-rebuild": noop_job} # Ensure the child pipeline always runs output_object["workflow"] = {"rules": [{"when": "always"}]} @@ -2322,83 +2259,6 @@ def report_skipped(self, spec: spack.spec.Spec, report_dir: str, reason: Optiona reporter.test_skipped_report(report_dir, spec, reason) -def translate_deprecated_config(config): - # Remove all deprecated keys from config - mappings = config.pop("mappings", []) - match_behavior = config.pop("match_behavior", "first") - - build_job = {} - if "image" in config: - build_job["image"] = config.pop("image") - if "tags" in config: - build_job["tags"] = config.pop("tags") - if "variables" in config: - build_job["variables"] = config.pop("variables") - - # Scripts always override in old CI - if "before_script" in config: - build_job["before_script:"] = config.pop("before_script") - if "script" in config: - build_job["script:"] = config.pop("script") - if "after_script" in config: - build_job["after_script:"] = config.pop("after_script") - - signing_job = None - if "signing-job-attributes" in config: - signing_job = {"signing-job": config.pop("signing-job-attributes")} - - service_job_attributes = None - if "service-job-attributes" in config: - service_job_attributes = config.pop("service-job-attributes") - - # If this config already has pipeline-gen do not more - if "pipeline-gen" in config: - return True if mappings or build_job or signing_job or service_job_attributes else False - - config["target"] = "gitlab" - - config["pipeline-gen"] = [] - pipeline_gen = config["pipeline-gen"] - - # Build Job - submapping = [] - for section in mappings: - submapping_section = {"match": section["match"]} - if "runner-attributes" in section: - remapped_attributes = {} - if match_behavior == "first": - for key, value in section["runner-attributes"].items(): - # Scripts always override in old CI - if key == "script": - remapped_attributes["script:"] = value - elif key == "before_script": - remapped_attributes["before_script:"] = value - elif key == "after_script": - remapped_attributes["after_script:"] = value - else: - remapped_attributes[key] = value - else: - # Handle "merge" behavior be allowing scripts to merge in submapping section - remapped_attributes = section["runner-attributes"] - submapping_section["build-job"] = remapped_attributes - - if "remove-attributes" in section: - # Old format only allowed tags in this section, so no extra checks are needed - submapping_section["build-job-remove"] = section["remove-attributes"] - submapping.append(submapping_section) - pipeline_gen.append({"submapping": submapping, "match_behavior": match_behavior}) - - if build_job: - pipeline_gen.append({"build-job": build_job}) - - # Signing Job - if signing_job: - pipeline_gen.append(signing_job) - - # Service Jobs - if service_job_attributes: - pipeline_gen.append({"reindex-job": service_job_attributes}) - pipeline_gen.append({"noop-job": service_job_attributes}) - pipeline_gen.append({"cleanup-job": service_job_attributes}) - - return True +class SpackCIError(spack.error.SpackError): + def __init__(self, msg): + super().__init__(msg) diff --git a/lib/spack/spack/cmd/__init__.py b/lib/spack/spack/cmd/__init__.py index c481e931312988..11569a34c70b44 100644 --- a/lib/spack/spack/cmd/__init__.py +++ b/lib/spack/spack/cmd/__init__.py @@ -8,6 +8,7 @@ import os import re import sys +from collections import Counter from typing import List, Union import llnl.string @@ -17,12 +18,14 @@ from llnl.util.tty.colify import colify from llnl.util.tty.color import colorize +import spack.concretize import spack.config # breaks a cycle. import spack.environment as ev import spack.error import spack.extensions import spack.parser import spack.paths +import spack.repo import spack.spec import spack.store import spack.traverse as traverse @@ -173,10 +176,66 @@ def parse_specs( arg_string = " ".join([quote_kvp(arg) for arg in args]) specs = spack.parser.parse(arg_string) - for spec in specs: - if concretize: - spec.concretize(tests=tests) - return specs + if not concretize: + return specs + + to_concretize = [(s, None) for s in specs] + return _concretize_spec_pairs(to_concretize, tests=tests) + + +def _concretize_spec_pairs(to_concretize, tests=False): + """Helper method that concretizes abstract specs from a list of abstract,concrete pairs. + + Any spec with a concrete spec associated with it will concretize to that spec. Any spec + with ``None`` for its concrete spec will be newly concretized. This method respects unification + rules from config.""" + unify = spack.config.get("concretizer:unify", False) + + # Special case for concretizing a single spec + if len(to_concretize) == 1: + abstract, concrete = to_concretize[0] + return [concrete or abstract.concretized()] + + # Special case if every spec is either concrete or has an abstract hash + if all( + concrete or abstract.concrete or abstract.abstract_hash + for abstract, concrete in to_concretize + ): + # Get all the concrete specs + ret = [ + concrete or (abstract if abstract.concrete else abstract.lookup_hash()) + for abstract, concrete in to_concretize + ] + + # If unify: true, check that specs don't conflict + # Since all concrete, "when_possible" is not relevant + if unify is True: # True, "when_possible", False are possible values + runtimes = spack.repo.PATH.packages_with_tags("runtime") + specs_per_name = Counter( + spec.name + for spec in traverse.traverse_nodes( + ret, deptype=("link", "run"), key=traverse.by_dag_hash + ) + if spec.name not in runtimes # runtimes are allowed multiple times + ) + + conflicts = sorted(name for name, count in specs_per_name.items() if count > 1) + if conflicts: + raise spack.error.SpecError( + "Specs conflict and `concretizer:unify` is configured true.", + f" specs depend on multiple versions of {', '.join(conflicts)}", + ) + return ret + + # Standard case + concretize_method = spack.concretize.concretize_separately # unify: false + if unify is True: + concretize_method = spack.concretize.concretize_together + elif unify == "when_possible": + concretize_method = spack.concretize.concretize_together_when_possible + + concretized = concretize_method(to_concretize, tests=tests) + return [concrete for _, concrete in concretized] def matching_spec_from_env(spec): @@ -192,6 +251,22 @@ def matching_spec_from_env(spec): return spec.concretized() +def matching_specs_from_env(specs): + """ + Same as ``matching_spec_from_env`` but respects spec unification rules. + + For each spec, if there is a matching spec in the environment it is used. If no + matching spec is found, this will return the given spec but concretized in the + context of the active environment and other given specs, with unification rules applied. + """ + env = ev.active_environment() + spec_pairs = [(spec, env.matching_spec(spec) if env else None) for spec in specs] + additional_concrete_specs = ( + [(concrete, concrete) for _, concrete in env.concretized_specs()] if env else [] + ) + return _concretize_spec_pairs(spec_pairs + additional_concrete_specs)[: len(spec_pairs)] + + def disambiguate_spec(spec, env, local=False, installed=True, first=False): """Given a spec, figure out which installed package it refers to. @@ -509,6 +584,18 @@ def __init__(self, name): super().__init__("{0} is not a permissible Spack command name.".format(name)) +class MultipleSpecsMatch(Exception): + """Raised when multiple specs match a constraint, in a context where + this is not allowed. + """ + + +class NoSpecMatches(Exception): + """Raised when no spec matches a constraint, in a context where + this is not allowed. + """ + + ######################################## # argparse types for argument validation ######################################## diff --git a/lib/spack/spack/cmd/arch.py b/lib/spack/spack/cmd/arch.py index 163478414863a7..c684a5fa4b3d30 100644 --- a/lib/spack/spack/cmd/arch.py +++ b/lib/spack/spack/cmd/arch.py @@ -19,12 +19,23 @@ def setup_parser(subparser): + # DEPRECATED: equivalent to --generic --target subparser.add_argument( - "-g", "--generic-target", action="store_true", help="show the best generic target" + "-g", + "--generic-target", + action="store_true", + help="show the best generic target (deprecated)", ) subparser.add_argument( "--known-targets", action="store_true", help="show a list of all known targets and exit" ) + target_type = subparser.add_mutually_exclusive_group() + target_type.add_argument( + "--family", action="store_true", help="print generic ISA (x86_64, aarch64, ppc64le, ...)" + ) + target_type.add_argument( + "--generic", action="store_true", help="print feature level (x86_64_v3, armv8.4a, ...)" + ) parts = subparser.add_mutually_exclusive_group() parts2 = subparser.add_mutually_exclusive_group() parts.add_argument( @@ -80,6 +91,7 @@ def display_target_group(header, target_group): def arch(parser, args): if args.generic_target: + # TODO: add deprecation warning in 0.24 print(archspec.cpu.host().generic) return @@ -96,6 +108,10 @@ def arch(parser, args): host_platform = spack.platforms.host() host_os = host_platform.operating_system(os_args) host_target = host_platform.target(target_args) + if args.family: + host_target = host_target.family + elif args.generic: + host_target = host_target.generic architecture = spack.spec.ArchSpec((str(host_platform), str(host_os), str(host_target))) if args.platform: diff --git a/lib/spack/spack/cmd/ci.py b/lib/spack/spack/cmd/ci.py index 44557488fef6d0..8d835b0af41f59 100644 --- a/lib/spack/spack/cmd/ci.py +++ b/lib/spack/spack/cmd/ci.py @@ -62,13 +62,6 @@ def setup_parser(subparser): "path to the file where generated jobs file should be written. " "default is .gitlab-ci.yml in the root of the repository", ) - generate.add_argument( - "--copy-to", - default=None, - help="path to additional directory for job files\n\n" - "this option provides an absolute path to a directory where the generated " - "jobs yaml file should be copied. default is not to copy", - ) generate.add_argument( "--optimize", action="store_true", @@ -83,12 +76,6 @@ def setup_parser(subparser): default=False, help="(DEPRECATED) disable DAG scheduling (use 'plain' dependencies)", ) - generate.add_argument( - "--buildcache-destination", - default=None, - help="override the mirror configured in the environment\n\n" - "allows for pushing binaries from the generated pipeline to a different location", - ) prune_group = generate.add_mutually_exclusive_group() prune_group.add_argument( "--prune-dag", @@ -214,20 +201,10 @@ def ci_generate(args): env = spack.cmd.require_active_env(cmd_name="ci generate") - if args.copy_to: - tty.warn("The flag --copy-to is deprecated and will be removed in Spack 0.23") - - if args.buildcache_destination: - tty.warn( - "The flag --buildcache-destination is deprecated and will be removed in Spack 0.23" - ) - output_file = args.output_file - copy_yaml_to = args.copy_to prune_dag = args.prune_dag index_only = args.index_only artifacts_root = args.artifacts_root - buildcache_destination = args.buildcache_destination if not output_file: output_file = os.path.abspath(".gitlab-ci.yml") @@ -245,15 +222,8 @@ def ci_generate(args): prune_dag=prune_dag, check_index_only=index_only, artifacts_root=artifacts_root, - remote_mirror_override=buildcache_destination, ) - if copy_yaml_to: - copy_to_dir = os.path.dirname(copy_yaml_to) - if not os.path.exists(copy_to_dir): - os.makedirs(copy_to_dir) - shutil.copyfile(output_file, copy_yaml_to) - def ci_reindex(args): """rebuild the buildcache index for the remote mirror @@ -298,22 +268,13 @@ def ci_rebuild(args): job_log_dir = os.environ.get("SPACK_JOB_LOG_DIR") job_test_dir = os.environ.get("SPACK_JOB_TEST_DIR") repro_dir = os.environ.get("SPACK_JOB_REPRO_DIR") - # TODO: Remove this in Spack 0.23 - local_mirror_dir = os.environ.get("SPACK_LOCAL_MIRROR_DIR") concrete_env_dir = os.environ.get("SPACK_CONCRETE_ENV_DIR") - ci_pipeline_id = os.environ.get("CI_PIPELINE_ID") ci_job_name = os.environ.get("CI_JOB_NAME") signing_key = os.environ.get("SPACK_SIGNING_KEY") job_spec_pkg_name = os.environ.get("SPACK_JOB_SPEC_PKG_NAME") job_spec_dag_hash = os.environ.get("SPACK_JOB_SPEC_DAG_HASH") spack_pipeline_type = os.environ.get("SPACK_PIPELINE_TYPE") - # TODO: Remove this in Spack 0.23 - remote_mirror_override = os.environ.get("SPACK_REMOTE_MIRROR_OVERRIDE") - # TODO: Remove this in Spack 0.23 - remote_mirror_url = os.environ.get("SPACK_REMOTE_MIRROR_URL") spack_ci_stack_name = os.environ.get("SPACK_CI_STACK_NAME") - # TODO: Remove this in Spack 0.23 - shared_pr_mirror_url = os.environ.get("SPACK_CI_SHARED_PR_MIRROR_URL") rebuild_everything = os.environ.get("SPACK_REBUILD_EVERYTHING") require_signing = os.environ.get("SPACK_REQUIRE_SIGNING") @@ -333,12 +294,10 @@ def ci_rebuild(args): job_log_dir = os.path.join(ci_project_dir, job_log_dir) job_test_dir = os.path.join(ci_project_dir, job_test_dir) repro_dir = os.path.join(ci_project_dir, repro_dir) - local_mirror_dir = os.path.join(ci_project_dir, local_mirror_dir) concrete_env_dir = os.path.join(ci_project_dir, concrete_env_dir) # Debug print some of the key environment variables we should have received tty.debug("pipeline_artifacts_dir = {0}".format(pipeline_artifacts_dir)) - tty.debug("remote_mirror_url = {0}".format(remote_mirror_url)) tty.debug("job_spec_pkg_name = {0}".format(job_spec_pkg_name)) # Query the environment manifest to find out whether we're reporting to a @@ -370,51 +329,11 @@ def ci_rebuild(args): full_rebuild = True if rebuild_everything and rebuild_everything.lower() == "true" else False pipeline_mirrors = spack.mirror.MirrorCollection(binary=True) - deprecated_mirror_config = False buildcache_destination = None - if "buildcache-destination" in pipeline_mirrors: - buildcache_destination = pipeline_mirrors["buildcache-destination"] - else: - deprecated_mirror_config = True - # TODO: This will be an error in Spack 0.23 - - # If no override url exists, then just push binary package to the - # normal remote mirror url. - # TODO: Remove in Spack 0.23 - buildcache_mirror_url = remote_mirror_override or remote_mirror_url - if buildcache_destination: - buildcache_mirror_url = buildcache_destination.push_url - - # Figure out what is our temporary storage mirror: Is it artifacts - # buildcache? Or temporary-storage-url-prefix? In some cases we need to - # force something or pipelines might not have a way to propagate build - # artifacts from upstream to downstream jobs. - # TODO: Remove this in Spack 0.23 - pipeline_mirror_url = None - - # TODO: Remove this in Spack 0.23 - temp_storage_url_prefix = None - if "temporary-storage-url-prefix" in ci_config: - temp_storage_url_prefix = ci_config["temporary-storage-url-prefix"] - pipeline_mirror_url = url_util.join(temp_storage_url_prefix, ci_pipeline_id) - - # TODO: Remove this in Spack 0.23 - enable_artifacts_mirror = False - if "enable-artifacts-buildcache" in ci_config: - enable_artifacts_mirror = ci_config["enable-artifacts-buildcache"] - if enable_artifacts_mirror or ( - spack_is_pr_pipeline and not enable_artifacts_mirror and not temp_storage_url_prefix - ): - # If you explicitly enabled the artifacts buildcache feature, or - # if this is a PR pipeline but you did not enable either of the - # per-pipeline temporary storage features, we force the use of - # artifacts buildcache. Otherwise jobs will not have binary - # dependencies from previous stages available since we do not - # allow pushing binaries to the remote mirror during PR pipelines. - enable_artifacts_mirror = True - pipeline_mirror_url = url_util.path_to_file_url(local_mirror_dir) - mirror_msg = "artifact buildcache enabled, mirror url: {0}".format(pipeline_mirror_url) - tty.debug(mirror_msg) + if "buildcache-destination" not in pipeline_mirrors: + tty.die("spack ci rebuild requires a mirror named 'buildcache-destination") + + buildcache_destination = pipeline_mirrors["buildcache-destination"] # Get the concrete spec to be built by this job. try: @@ -489,48 +408,7 @@ def ci_rebuild(args): fd.write(spack_info.encode("utf8")) fd.write(b"\n") - pipeline_mirrors = [] - - # If we decided there should be a temporary storage mechanism, add that - # mirror now so it's used when we check for a hash match already - # built for this spec. - # TODO: Remove this block in Spack 0.23 - if pipeline_mirror_url: - mirror = spack.mirror.Mirror(pipeline_mirror_url, name=spack_ci.TEMP_STORAGE_MIRROR_NAME) - spack.mirror.add(mirror, cfg.default_modify_scope()) - pipeline_mirrors.append(pipeline_mirror_url) - - # Check configured mirrors for a built spec with a matching hash - # TODO: Remove this block in Spack 0.23 - mirrors_to_check = None - if remote_mirror_override: - if spack_pipeline_type == "spack_protected_branch": - # Passing "mirrors_to_check" below means we *only* look in the override - # mirror to see if we should skip building, which is what we want. - mirrors_to_check = {"override": remote_mirror_override} - - # Adding this mirror to the list of configured mirrors means dependencies - # could be installed from either the override mirror or any other configured - # mirror (e.g. remote_mirror_url which is defined in the environment or - # pipeline_mirror_url), which is also what we want. - spack.mirror.add( - spack.mirror.Mirror(remote_mirror_override, name="mirror_override"), - cfg.default_modify_scope(), - ) - pipeline_mirrors.append(remote_mirror_override) - - # TODO: Remove this in Spack 0.23 - if deprecated_mirror_config and spack_pipeline_type == "spack_pull_request": - if shared_pr_mirror_url != "None": - pipeline_mirrors.append(shared_pr_mirror_url) - - matches = ( - None - if full_rebuild - else bindist.get_mirrors_for_spec( - job_spec, mirrors_to_check=mirrors_to_check, index_only=False - ) - ) + matches = None if full_rebuild else bindist.get_mirrors_for_spec(job_spec, index_only=False) if matches: # Got a hash match on at least one configured mirror. All @@ -542,25 +420,10 @@ def ci_rebuild(args): tty.msg("No need to rebuild {0}, found hash match at: ".format(job_spec_pkg_name)) for match in matches: tty.msg(" {0}".format(match["mirror_url"])) - # TODO: Remove this block in Spack 0.23 - if enable_artifacts_mirror: - matching_mirror = matches[0]["mirror_url"] - build_cache_dir = os.path.join(local_mirror_dir, "build_cache") - tty.debug("Getting {0} buildcache from {1}".format(job_spec_pkg_name, matching_mirror)) - tty.debug("Downloading to {0}".format(build_cache_dir)) - bindist.download_single_spec(job_spec, build_cache_dir, mirror_url=matching_mirror) # Now we are done and successful return 0 - # Before beginning the install, if this is a "rebuild everything" pipeline, we - # only want to keep the mirror being used by the current pipeline as it's binary - # package destination. This ensures that the when we rebuild everything, we only - # consume binary dependencies built in this pipeline. - # TODO: Remove this in Spack 0.23 - if deprecated_mirror_config and full_rebuild: - spack_ci.remove_other_mirrors(pipeline_mirrors, cfg.default_modify_scope()) - # No hash match anywhere means we need to rebuild spec # Start with spack arguments @@ -681,17 +544,11 @@ def ci_rebuild(args): cdash_handler.copy_test_results(reports_dir, job_test_dir) if install_exit_code == 0: - # If the install succeeded, push it to one or more mirrors. Failure to push to any mirror + # If the install succeeded, push it to the buildcache destination. Failure to push # will result in a non-zero exit code. Pushing is best-effort. - mirror_urls = [buildcache_mirror_url] - - # TODO: Remove this block in Spack 0.23 - if pipeline_mirror_url: - mirror_urls.append(pipeline_mirror_url) - for result in spack_ci.create_buildcache( input_spec=job_spec, - destination_mirror_urls=mirror_urls, + destination_mirror_urls=[buildcache_destination.push_url], sign_binaries=spack_ci.can_sign_binaries(), ): if not result.success: diff --git a/lib/spack/spack/cmd/clean.py b/lib/spack/spack/cmd/clean.py index 0b8fb6d6bbf6f2..59d650fd12a7cc 100644 --- a/lib/spack/spack/cmd/clean.py +++ b/lib/spack/spack/cmd/clean.py @@ -105,7 +105,8 @@ def clean(parser, args): # Then do the cleaning falling through the cases if args.specs: specs = spack.cmd.parse_specs(args.specs, concretize=False) - specs = list(spack.cmd.matching_spec_from_env(x) for x in specs) + specs = spack.cmd.matching_specs_from_env(specs) + for spec in specs: msg = "Cleaning build stage [{0}]" tty.msg(msg.format(spec.short_spec)) diff --git a/lib/spack/spack/cmd/common/arguments.py b/lib/spack/spack/cmd/common/arguments.py index 456ad0f5ac2260..7ddafd4d14c566 100644 --- a/lib/spack/spack/cmd/common/arguments.py +++ b/lib/spack/spack/cmd/common/arguments.py @@ -581,23 +581,51 @@ def add_concretizer_args(subparser): def add_connection_args(subparser, add_help): - subparser.add_argument( - "--s3-access-key-id", help="ID string to use to connect to this S3 mirror" + def add_argument_string_or_variable(parser, arg: str, *, deprecate_str: bool = True, **kwargs): + group = parser.add_mutually_exclusive_group() + group.add_argument(arg, **kwargs) + # Update help string + if "help" in kwargs: + kwargs["help"] = "environment variable containing " + kwargs["help"] + group.add_argument(arg + "-variable", **kwargs) + + s3_connection_parser = subparser.add_argument_group("S3 Connection") + + add_argument_string_or_variable( + s3_connection_parser, + "--s3-access-key-id", + help="ID string to use to connect to this S3 mirror", ) - subparser.add_argument( - "--s3-access-key-secret", help="secret string to use to connect to this S3 mirror" + add_argument_string_or_variable( + s3_connection_parser, + "--s3-access-key-secret", + help="secret string to use to connect to this S3 mirror", ) - subparser.add_argument( - "--s3-access-token", help="access token to use to connect to this S3 mirror" + add_argument_string_or_variable( + s3_connection_parser, + "--s3-access-token", + help="access token to use to connect to this S3 mirror", ) - subparser.add_argument( + s3_connection_parser.add_argument( "--s3-profile", help="S3 profile name to use to connect to this S3 mirror", default=None ) - subparser.add_argument( + s3_connection_parser.add_argument( "--s3-endpoint-url", help="endpoint URL to use to connect to this S3 mirror" ) - subparser.add_argument("--oci-username", help="username to use to connect to this OCI mirror") - subparser.add_argument("--oci-password", help="password to use to connect to this OCI mirror") + + oci_connection_parser = subparser.add_argument_group("OCI Connection") + + add_argument_string_or_variable( + oci_connection_parser, + "--oci-username", + deprecate_str=False, + help="username to use to connect to this OCI mirror", + ) + add_argument_string_or_variable( + oci_connection_parser, + "--oci-password", + help="password to use to connect to this OCI mirror", + ) def use_buildcache(cli_arg_value): @@ -660,34 +688,32 @@ def mirror_name_or_url(m): # accidentally to a dir in the current working directory. # If there's a \ or / in the name, it's interpreted as a path or url. - if "/" in m or "\\" in m: + if "/" in m or "\\" in m or m in (".", ".."): return spack.mirror.Mirror(m) # Otherwise, the named mirror is required to exist. try: return spack.mirror.require_mirror_name(m) except ValueError as e: - raise argparse.ArgumentTypeError( - str(e) + ". Did you mean {}?".format(os.path.join(".", m)) - ) + raise argparse.ArgumentTypeError(f"{e}. Did you mean {os.path.join('.', m)}?") from e def mirror_url(url): try: return spack.mirror.Mirror.from_url(url) except ValueError as e: - raise argparse.ArgumentTypeError(str(e)) + raise argparse.ArgumentTypeError(str(e)) from e def mirror_directory(path): try: return spack.mirror.Mirror.from_local_path(path) except ValueError as e: - raise argparse.ArgumentTypeError(str(e)) + raise argparse.ArgumentTypeError(str(e)) from e def mirror_name(name): try: return spack.mirror.require_mirror_name(name) except ValueError as e: - raise argparse.ArgumentTypeError(str(e)) + raise argparse.ArgumentTypeError(str(e)) from e diff --git a/lib/spack/spack/cmd/deconcretize.py b/lib/spack/spack/cmd/deconcretize.py index ffb05eebe71ffa..7e2feab5aa0926 100644 --- a/lib/spack/spack/cmd/deconcretize.py +++ b/lib/spack/spack/cmd/deconcretize.py @@ -99,5 +99,5 @@ def deconcretize(parser, args): " Use `spack deconcretize --all` to deconcretize ALL specs.", ) - specs = spack.cmd.parse_specs(args.specs) if args.specs else [any] + specs = spack.cmd.parse_specs(args.specs) if args.specs else [None] deconcretize_specs(args, specs) diff --git a/lib/spack/spack/cmd/env.py b/lib/spack/spack/cmd/env.py index c4596af469c15a..5a80f0e1a8a8e3 100644 --- a/lib/spack/spack/cmd/env.py +++ b/lib/spack/spack/cmd/env.py @@ -10,11 +10,12 @@ import sys import tempfile from pathlib import Path -from typing import List, Optional +from typing import List, Optional, Set import llnl.string as string import llnl.util.filesystem as fs import llnl.util.tty as tty +from llnl.util.symlink import islink, symlink from llnl.util.tty.colify import colify from llnl.util.tty.color import cescape, colorize @@ -50,6 +51,8 @@ "update", "revert", "depfile", + "track", + "untrack", ] @@ -57,35 +60,41 @@ # env create # def env_create_setup_parser(subparser): - """create a new environment""" - subparser.add_argument("env_name", metavar="env", help="name or directory of environment") + """create a new environment + + create a new environment or, optionally, copy an existing environment + + a manifest file results in a new abstract environment while a lock file + creates a new concrete environment + """ + subparser.add_argument( + "env_name", metavar="env", help="name or directory of the new environment" + ) subparser.add_argument( "-d", "--dir", action="store_true", help="create an environment in a specific directory" ) subparser.add_argument( "--keep-relative", action="store_true", - help="copy relative develop paths verbatim into the new environment" - " when initializing from envfile", + help="copy envfile's relative develop paths verbatim", ) view_opts = subparser.add_mutually_exclusive_group() view_opts.add_argument( "--without-view", action="store_true", help="do not maintain a view for this environment" ) view_opts.add_argument( - "--with-view", - help="specify that this environment should maintain a view at the" - " specified path (by default the view is maintained in the" - " environment directory)", + "--with-view", help="maintain view at WITH_VIEW (vs. environment's directory)" ) subparser.add_argument( "envfile", nargs="?", default=None, - help="either a lockfile (must end with '.json' or '.lock') or a manifest file", + help="manifest or lock file (ends with '.json' or '.lock')", ) subparser.add_argument( - "--include-concrete", action="append", help="name of old environment to copy specs from" + "--include-concrete", + action="append", + help="copy concrete specs from INCLUDE_CONCRETE's environment", ) @@ -173,7 +182,7 @@ def _env_create( # env activate # def env_activate_setup_parser(subparser): - """set the current environment""" + """set the active environment""" shells = subparser.add_mutually_exclusive_group() shells.add_argument( "--sh", @@ -213,14 +222,14 @@ def env_activate_setup_parser(subparser): view_options = subparser.add_mutually_exclusive_group() view_options.add_argument( - "--with-view", "-v", + "--with-view", metavar="name", - help="set runtime environment variables for specific view", + help="set runtime environment variables for the named view", ) view_options.add_argument( - "--without-view", "-V", + "--without-view", action="store_true", help="do not set runtime environment variables for any view", ) @@ -230,14 +239,14 @@ def env_activate_setup_parser(subparser): "--prompt", action="store_true", default=False, - help="decorate the command line prompt when activating", + help="add the active environment to the command line prompt", ) subparser.add_argument( "--temp", action="store_true", default=False, - help="create and activate an environment in a temporary directory", + help="create and activate in a temporary directory", ) subparser.add_argument( "--create", @@ -249,13 +258,12 @@ def env_activate_setup_parser(subparser): "--envfile", nargs="?", default=None, - help="either a lockfile (must end with '.json' or '.lock') or a manifest file", + help="manifest or lock file (ends with '.json' or '.lock')", ) subparser.add_argument( "--keep-relative", action="store_true", - help="copy relative develop paths verbatim into the new environment" - " when initializing from envfile", + help="copy envfile's relative develop paths verbatim when create", ) subparser.add_argument( "-d", @@ -269,10 +277,7 @@ def env_activate_setup_parser(subparser): dest="env_name", nargs="?", default=None, - help=( - "name of managed environment or directory of the independent env" - " (when using --dir/-d) to activate" - ), + help=("name or directory of the environment being activated"), ) @@ -385,7 +390,7 @@ def env_activate(args): # env deactivate # def env_deactivate_setup_parser(subparser): - """deactivate any active environment in the shell""" + """deactivate the active environment""" shells = subparser.add_mutually_exclusive_group() shells.add_argument( "--sh", @@ -445,103 +450,252 @@ def env_deactivate(args): # -# env remove +# env track # -def env_remove_setup_parser(subparser): - """remove an existing environment""" - subparser.add_argument("rm_env", metavar="env", nargs="+", help="environment(s) to remove") +def env_track_setup_parser(subparser): + """track an environment from a directory in Spack""" + subparser.add_argument("-n", "--name", help="custom environment name") + subparser.add_argument("dir", help="path to environment") arguments.add_common_arguments(subparser, ["yes_to_all"]) - subparser.add_argument( - "-f", - "--force", - action="store_true", - help="remove the environment even if it is included in another environment", + + +def env_track(args): + src_path = os.path.abspath(args.dir) + if not ev.is_env_dir(src_path): + tty.die("Cannot track environment. Path doesn't contain an environment") + + if args.name: + name = args.name + else: + name = os.path.basename(src_path) + + try: + dst_path = ev.environment_dir_from_name(name, exists_ok=False) + except ev.SpackEnvironmentError: + tty.die( + f"An environment named {name} already exists. Set a name with:" + "\n\n" + f" spack env track --name NAME {src_path}\n" + ) + + symlink(src_path, dst_path) + + tty.msg(f"Tracking environment in {src_path}") + tty.msg( + "You can now activate this environment with the following command:\n\n" + f" spack env activate {name}\n" ) -def env_remove(args): - """Remove a *named* environment. +# +# env remove & untrack helpers +# +def filter_managed_env_names(env_names: Set[str]) -> Set[str]: + tracked_env_names = {e for e in env_names if islink(ev.environment_dir_from_name(e))} + managed_env_names = env_names - set(tracked_env_names) + + num_managed_envs = len(managed_env_names) + managed_envs_str = " ".join(managed_env_names) + if num_managed_envs >= 2: + tty.error( + f"The following are not tracked environments. " + "To remove them completely run," + "\n\n" + f" spack env rm {managed_envs_str}\n" + ) + + elif num_managed_envs > 0: + tty.error( + f"'{managed_envs_str}' is not a tracked env. " + "To remove it completely run," + "\n\n" + f" spack env rm {managed_envs_str}\n" + ) + + return tracked_env_names - This removes an environment managed by Spack. Directory environments - and manifests embedded in repositories should be removed manually. - """ - remove_envs = [] - valid_envs = [] - bad_envs = [] - for env_name in ev.all_environment_names(): +def get_valid_envs(env_names: Set[str]) -> Set[ev.Environment]: + valid_envs = set() + for env_name in env_names: try: env = ev.read(env_name) - valid_envs.append(env) + valid_envs.add(env) - if env_name in args.rm_env: - remove_envs.append(env) except (spack.config.ConfigFormatError, ev.SpackEnvironmentConfigError): - if env_name in args.rm_env: - bad_envs.append(env_name) + pass + + return valid_envs + + +def _env_untrack_or_remove( + env_names: List[str], remove: bool = False, force: bool = False, yes_to_all: bool = False +): + all_env_names = set(ev.all_environment_names()) + known_env_names = set(env_names).intersection(all_env_names) + unknown_env_names = set(env_names) - known_env_names + + # print error for unknown environments + for env_name in unknown_env_names: + tty.error(f"Environment '{env_name}' does not exist") + + # if only unlinking is allowed, remove all environments + # which do not point internally at symlinks + if not remove: + env_names_to_remove = filter_managed_env_names(known_env_names) + else: + env_names_to_remove = known_env_names + + # initalize all environments with valid spack.yaml configs + all_valid_envs = get_valid_envs(all_env_names) - # Check if remove_env is included from another env before trying to remove - for env in valid_envs: - for remove_env in remove_envs: - # don't check if environment is included to itself + # build a task list of environments and bad env names to remove + envs_to_remove = [e for e in all_valid_envs if e.name in env_names_to_remove] + bad_env_names_to_remove = env_names_to_remove - {e.name for e in envs_to_remove} + for remove_env in envs_to_remove: + for env in all_valid_envs: + # don't check if an environment is included to itself if env.name == remove_env.name: continue + # check if an environment is included un another if remove_env.path in env.included_concrete_envs: - msg = f'Environment "{remove_env.name}" is being used by environment "{env.name}"' - if args.force: + msg = f"Environment '{remove_env.name}' is used by environment '{env.name}'" + if force: tty.warn(msg) else: - tty.die(msg) - - if not args.yes_to_all: - environments = string.plural(len(args.rm_env), "environment", show_n=False) - envs = string.comma_and(args.rm_env) - answer = tty.get_yes_or_no(f"Really remove {environments} {envs}?", default=False) + tty.error(msg) + envs_to_remove.remove(remove_env) + + # ask the user if they really want to remove the known environments + # force should do the same as yes to all here following the symantics of rm + if not (yes_to_all or force) and (envs_to_remove or bad_env_names_to_remove): + environments = string.plural(len(env_names_to_remove), "environment", show_n=False) + envs = string.comma_and(list(env_names_to_remove)) + answer = tty.get_yes_or_no( + f"Really {'remove' if remove else 'untrack'} {environments} {envs}?", default=False + ) if not answer: tty.die("Will not remove any environments") - for env in remove_envs: + # keep track of the environments we remove for later printing the exit code + removed_env_names = [] + for env in envs_to_remove: name = env.name - if env.active: - tty.die(f"Environment {name} can't be removed while activated.") - env.destroy() - tty.msg(f"Successfully removed environment '{name}'") + if not force and env.active: + tty.error( + f"Environment '{name}' can't be " + f"{'removed' if remove else 'untracked'} while activated." + ) + continue + # Get path to check if environment is a tracked / symlinked environment + if islink(env.path): + real_env_path = os.path.realpath(env.path) + os.unlink(env.path) + tty.msg( + f"Sucessfully untracked environment '{name}', " + "but it can still be found at:\n\n" + f" {real_env_path}\n" + ) + else: + env.destroy() + tty.msg(f"Successfully removed environment '{name}'") - for bad_env_name in bad_envs: + removed_env_names.append(env.name) + + for bad_env_name in bad_env_names_to_remove: shutil.rmtree( spack.environment.environment.environment_dir_from_name(bad_env_name, exists_ok=True) ) tty.msg(f"Successfully removed environment '{bad_env_name}'") + removed_env_names.append(env.name) + + # Following the design of linux rm we should exit with a status of 1 + # anytime we cannot delete every environment the user asks for. + # However, we should still process all the environments we know about + # and delete them instead of failing on the first unknown enviornment. + if len(removed_env_names) < len(known_env_names): + sys.exit(1) # -# env rename +# env untrack # -def env_rename_setup_parser(subparser): - """rename an existing environment""" +def env_untrack_setup_parser(subparser): + """track an environment from a directory in Spack""" + subparser.add_argument("env", nargs="+", help="tracked environment name") subparser.add_argument( - "mv_from", metavar="from", help="name (or path) of existing environment" + "-f", "--force", action="store_true", help="force unlink even when environment is active" ) + arguments.add_common_arguments(subparser, ["yes_to_all"]) + + +def env_untrack(args): + _env_untrack_or_remove( + env_names=args.env, force=args.force, yes_to_all=args.yes_to_all, remove=False + ) + + +# +# env remove +# +def env_remove_setup_parser(subparser): + """remove managed environment(s) + + remove existing environment(s) managed by Spack + + directory environments and manifests embedded in repositories must be + removed manually + """ + subparser.add_argument( + "rm_env", metavar="env", nargs="+", help="name(s) of the environment(s) being removed" + ) + arguments.add_common_arguments(subparser, ["yes_to_all"]) + subparser.add_argument( + "-f", + "--force", + action="store_true", + help="force removal even when included in other environment(s)", + ) + + +def env_remove(args): + """remove existing environment(s)""" + _env_untrack_or_remove( + env_names=args.rm_env, remove=True, force=args.force, yes_to_all=args.yes_to_all + ) + + +# +# env rename +# +def env_rename_setup_parser(subparser): + """rename an existing environment + + rename a managed environment or move an independent/directory environment + + operation cannot be performed to or from an active environment + """ subparser.add_argument( - "mv_to", metavar="to", help="new name (or path) for existing environment" + "mv_from", metavar="from", help="current name or directory of the environment" ) + subparser.add_argument("mv_to", metavar="to", help="new name or directory for the environment") subparser.add_argument( "-d", "--dir", action="store_true", - help="the specified arguments correspond to directory paths", + help="positional arguments are environment directory paths", ) subparser.add_argument( - "-f", "--force", action="store_true", help="allow overwriting of an existing environment" + "-f", + "--force", + action="store_true", + help="force renaming even if overwriting an existing environment", ) def env_rename(args): - """Rename an environment. - - This renames a managed environment or moves an independent environment. - """ + """rename or move an existing environment""" # Directory option has been specified if args.dir: @@ -590,7 +744,7 @@ def env_rename(args): # env list # def env_list_setup_parser(subparser): - """list managed environments""" + """list all managed environments""" def env_list(args): @@ -626,13 +780,14 @@ def actions(): # env view # def env_view_setup_parser(subparser): - """manage a view associated with the environment""" + """manage the environment's view + + provide the path when enabling a view with a non-default path + """ subparser.add_argument( "action", choices=ViewAction.actions(), help="action to take for the environment's view" ) - subparser.add_argument( - "view_path", nargs="?", help="when enabling a view, optionally set the path manually" - ) + subparser.add_argument("view_path", nargs="?", help="view's non-default path when enabling it") def env_view(args): @@ -660,7 +815,7 @@ def env_view(args): # env status # def env_status_setup_parser(subparser): - """print whether there is an active environment""" + """print active environment status""" def env_status(args): @@ -720,14 +875,22 @@ def env_loads(args): def env_update_setup_parser(subparser): - """update environments to the latest format""" + """update the environment manifest to the latest schema format + + update the environment to the latest schema format, which may not be + readable by older versions of spack + + a backup copy of the manifest is retained in case there is a need to revert + this operation + """ subparser.add_argument( - metavar="env", dest="update_env", help="name or directory of the environment to activate" + metavar="env", dest="update_env", help="name or directory of the environment" ) spack.cmd.common.arguments.add_common_arguments(subparser, ["yes_to_all"]) def env_update(args): + """update the manifest to the latest format""" manifest_file = ev.manifest_file(args.update_env) backup_file = manifest_file + ".bkp" @@ -757,14 +920,22 @@ def env_update(args): def env_revert_setup_parser(subparser): - """restore environments to their state before update""" + """restore the environment manifest to its previous format + + revert the environment's manifest to the schema format from its last + 'spack env update' + + the current manifest will be overwritten by the backup copy and the backup + copy will be removed + """ subparser.add_argument( - metavar="env", dest="revert_env", help="name or directory of the environment to activate" + metavar="env", dest="revert_env", help="name or directory of the environment" ) spack.cmd.common.arguments.add_common_arguments(subparser, ["yes_to_all"]) def env_revert(args): + """restore the environment manifest to its previous format""" manifest_file = ev.manifest_file(args.revert_env) backup_file = manifest_file + ".bkp" @@ -796,15 +967,19 @@ def env_revert(args): def env_depfile_setup_parser(subparser): - """generate a depfile from the concrete environment specs""" + """generate a depfile to exploit parallel builds across specs + + requires the active environment to be concrete + """ subparser.add_argument( "--make-prefix", "--make-target-prefix", default=None, metavar="TARGET", - help="prefix Makefile targets (and variables) with /\n\nby default " - "the absolute path to the directory makedeps under the environment metadata dir is " - "used. can be set to an empty string --make-prefix ''", + help="prefix Makefile targets/variables with /,\n" + "which can be an empty string (--make-prefix '')\n" + "defaults to the absolute path of the environment's makedeps\n" + "environment metadata dir\n", ) subparser.add_argument( "--make-disable-jobserver", @@ -819,8 +994,8 @@ def env_depfile_setup_parser(subparser): type=arguments.use_buildcache, default="package:auto,dependencies:auto", metavar="[{auto,only,never},][package:{auto,only,never},][dependencies:{auto,only,never}]", - help="when using `only`, redundant build dependencies are pruned from the DAG\n\n" - "this flag is passed on to the generated spack install commands", + help="use `only` to prune redundant build dependencies\n" + "option is also passed to generated spack install commands", ) subparser.add_argument( "-o", @@ -834,14 +1009,14 @@ def env_depfile_setup_parser(subparser): "--generator", default="make", choices=("make",), - help="specify the depfile type\n\ncurrently only make is supported", + help="specify the depfile type (only supports `make`)", ) subparser.add_argument( metavar="specs", dest="specs", nargs=argparse.REMAINDER, default=None, - help="generate a depfile only for matching specs in the environment", + help="limit the generated file to matching specs", ) @@ -910,7 +1085,12 @@ def setup_parser(subparser): setup_parser_cmd_name = "env_%s_setup_parser" % name setup_parser_cmd = globals()[setup_parser_cmd_name] - subsubparser = sp.add_parser(name, aliases=aliases, help=setup_parser_cmd.__doc__) + subsubparser = sp.add_parser( + name, + aliases=aliases, + description=setup_parser_cmd.__doc__, + help=spack.cmd.first_line(setup_parser_cmd.__doc__), + ) setup_parser_cmd(subsubparser) diff --git a/lib/spack/spack/cmd/find.py b/lib/spack/spack/cmd/find.py index 2f25683c5ece6b..c6930097ac3ad1 100644 --- a/lib/spack/spack/cmd/find.py +++ b/lib/spack/spack/cmd/find.py @@ -174,17 +174,17 @@ def query_arguments(args): if (args.missing or args.only_missing) and not args.only_deprecated: installed.append(InstallStatuses.MISSING) - known = any + predicate_fn = None if args.unknown: - known = False + predicate_fn = lambda x: not spack.repo.PATH.exists(x.spec.name) - explicit = any + explicit = None if args.explicit: explicit = True if args.implicit: explicit = False - q_args = {"installed": installed, "known": known, "explicit": explicit} + q_args = {"installed": installed, "predicate_fn": predicate_fn, "explicit": explicit} install_tree = args.install_tree upstreams = spack.config.get("upstreams", {}) @@ -222,11 +222,9 @@ def decorator(spec, fmt): def display_env(env, args, decorator, results): """Display extra find output when running in an environment. - Find in an environment outputs 2 or 3 sections: - - 1. Root specs - 2. Concretized roots (if asked for with -c) - 3. Installed specs + In an environment, `spack find` outputs a preliminary section + showing the root specs of the environment (this is in addition + to the section listing out specs matching the query parameters). """ tty.msg("In environment %s" % env.name) @@ -299,42 +297,70 @@ def root_decorator(spec, string): print() -def find(parser, args): - env = ev.active_environment() - - if not env and args.only_roots: - tty.die("-r / --only-roots requires an active environment") - if not env and args.show_concretized: - tty.die("-c / --show-concretized requires an active environment") - +def _find_query(args, env): + q_args = query_arguments(args) + concretized_but_not_installed = list() if env: + all_env_specs = env.all_specs() if args.constraint: - init_specs = spack.cmd.parse_specs(args.constraint) - results = env.all_matching_specs(*init_specs) + init_specs = cmd.parse_specs(args.constraint) + env_specs = env.all_matching_specs(*init_specs) else: - results = env.all_specs() + env_specs = all_env_specs + + spec_hashes = set(x.dag_hash() for x in env_specs) + specs_meeting_q_args = set(spack.store.STORE.db.query(hashes=spec_hashes, **q_args)) + + results = list() + with spack.store.STORE.db.read_transaction(): + for spec in env_specs: + if not spec.installed: + concretized_but_not_installed.append(spec) + if spec in specs_meeting_q_args: + results.append(spec) else: - q_args = query_arguments(args) results = args.specs(**q_args) - decorator = make_env_decorator(env) if env else lambda s, f: f - # use groups by default except with format. if args.groups is None: args.groups = not args.format # Exit early with an error code if no package matches the constraint - if not results and args.constraint: - constraint_str = " ".join(str(s) for s in args.constraint_specs) - tty.die(f"No package matches the query: {constraint_str}") + if concretized_but_not_installed and args.show_concretized: + pass + elif results: + pass + elif args.constraint: + raise cmd.NoSpecMatches() # If tags have been specified on the command line, filter by tags if args.tags: packages_with_tags = spack.repo.PATH.packages_with_tags(*args.tags) results = [x for x in results if x.name in packages_with_tags] + concretized_but_not_installed = [ + x for x in concretized_but_not_installed if x.name in packages_with_tags + ] if args.loaded: - results = spack.cmd.filter_loaded_specs(results) + results = cmd.filter_loaded_specs(results) + + return results, concretized_but_not_installed + + +def find(parser, args): + env = ev.active_environment() + + if not env and args.only_roots: + tty.die("-r / --only-roots requires an active environment") + if not env and args.show_concretized: + tty.die("-c / --show-concretized requires an active environment") + + try: + results, concretized_but_not_installed = _find_query(args, env) + except cmd.NoSpecMatches: + # Note: this uses args.constraint vs. args.constraint_specs because + # the latter only exists if you call args.specs() + tty.die(f"No package matches the query: {' '.join(args.constraint)}") if args.install_status or args.show_concretized: status_fn = spack.spec.Spec.install_status @@ -345,14 +371,16 @@ def find(parser, args): if args.json: cmd.display_specs_as_json(results, deps=args.deps) else: + decorator = make_env_decorator(env) if env else lambda s, f: f + if not args.format: if env: display_env(env, args, decorator, results) if not args.only_roots: - display_results = results - if not args.show_concretized: - display_results = list(x for x in results if x.installed) + display_results = list(results) + if args.show_concretized: + display_results += concretized_but_not_installed cmd.display_specs( display_results, args, decorator=decorator, all_headers=True, status_fn=status_fn ) @@ -370,13 +398,9 @@ def find(parser, args): concretized_suffix += " (show with `spack find -c`)" pkg_type = "loaded" if args.loaded else "installed" - spack.cmd.print_how_many_pkgs( - list(x for x in results if x.installed), pkg_type, suffix=installed_suffix - ) + cmd.print_how_many_pkgs(results, pkg_type, suffix=installed_suffix) if env: - spack.cmd.print_how_many_pkgs( - list(x for x in results if not x.installed), - "concretized", - suffix=concretized_suffix, + cmd.print_how_many_pkgs( + concretized_but_not_installed, "concretized", suffix=concretized_suffix ) diff --git a/lib/spack/spack/cmd/mark.py b/lib/spack/spack/cmd/mark.py index 38701b97475547..66a84fb9076212 100644 --- a/lib/spack/spack/cmd/mark.py +++ b/lib/spack/spack/cmd/mark.py @@ -80,8 +80,8 @@ def find_matching_specs(specs, allow_multiple_matches=False): has_errors = True # No installed package matches the query - if len(matching) == 0 and spec is not any: - tty.die("{0} does not match any installed packages.".format(spec)) + if len(matching) == 0 and spec is not None: + tty.die(f"{spec} does not match any installed packages.") specs_from_cli.extend(matching) @@ -98,8 +98,9 @@ def do_mark(specs, explicit): specs (list): list of specs to be marked explicit (bool): whether to mark specs as explicitly installed """ - for spec in specs: - spack.store.STORE.db.update_explicit(spec, explicit) + with spack.store.STORE.db.write_transaction(): + for spec in specs: + spack.store.STORE.db.mark(spec, "explicit", explicit) def mark_specs(args, specs): @@ -116,6 +117,6 @@ def mark(parser, args): " Use `spack mark --all` to mark ALL packages.", ) - # [any] here handles the --all case by forcing all specs to be returned - specs = spack.cmd.parse_specs(args.specs) if args.specs else [any] + # [None] here handles the --all case by forcing all specs to be returned + specs = spack.cmd.parse_specs(args.specs) if args.specs else [None] mark_specs(args, specs) diff --git a/lib/spack/spack/cmd/mirror.py b/lib/spack/spack/cmd/mirror.py index af6a45e3990752..ede042949796c0 100644 --- a/lib/spack/spack/cmd/mirror.py +++ b/lib/spack/spack/cmd/mirror.py @@ -231,31 +231,133 @@ def setup_parser(subparser): ) +def _configure_access_pair( + args, id_tok, id_variable_tok, secret_tok, secret_variable_tok, default=None +): + """Configure the access_pair options""" + + # Check if any of the arguments are set to update this access_pair. + # If none are set, then skip computing the new access pair + args_id = getattr(args, id_tok) + args_id_variable = getattr(args, id_variable_tok) + args_secret = getattr(args, secret_tok) + args_secret_variable = getattr(args, secret_variable_tok) + if not any([args_id, args_id_variable, args_secret, args_secret_variable]): + return None + + def _default_value(id_): + if isinstance(default, list): + return default[0] if id_ == "id" else default[1] + elif isinstance(default, dict): + return default.get(id_) + else: + return None + + def _default_variable(id_): + if isinstance(default, dict): + return default.get(id_ + "_variable") + else: + return None + + id_ = None + id_variable = None + secret = None + secret_variable = None + + # Get the value/default value if the argument of the inverse + if not args_id_variable: + id_ = getattr(args, id_tok) or _default_value("id") + if not args_id: + id_variable = getattr(args, id_variable_tok) or _default_variable("id") + if not args_secret_variable: + secret = getattr(args, secret_tok) or _default_value("secret") + if not args_secret: + secret_variable = getattr(args, secret_variable_tok) or _default_variable("secret") + + if (id_ or id_variable) and (secret or secret_variable): + if secret: + if not id_: + raise SpackError("Cannot add mirror with a variable id and text secret") + + return [id_, secret] + else: + return dict( + [ + (("id", id_) if id_ else ("id_variable", id_variable)), + ("secret_variable", secret_variable), + ] + ) + else: + if id_ or id_variable or secret or secret_variable is not None: + id_arg_tok = id_tok.replace("_", "-") + secret_arg_tok = secret_tok.replace("_", "-") + tty.warn( + "Expected both parts of the access pair to be specified. " + f"(i.e. --{id_arg_tok} and --{secret_arg_tok})" + ) + + return None + + def mirror_add(args): """add a mirror to Spack""" if ( args.s3_access_key_id or args.s3_access_key_secret or args.s3_access_token + or args.s3_access_key_id_variable + or args.s3_access_key_secret_variable + or args.s3_access_token_variable or args.s3_profile or args.s3_endpoint_url or args.type or args.oci_username or args.oci_password + or args.oci_username_variable + or args.oci_password_variable or args.autopush or args.signed is not None ): connection = {"url": args.url} - if args.s3_access_key_id and args.s3_access_key_secret: - connection["access_pair"] = [args.s3_access_key_id, args.s3_access_key_secret] + # S3 Connection + if args.s3_access_key_secret: + tty.warn( + "Configuring mirror secrets as plain text with --s3-access-key-secret is " + "deprecated. Use --s3-access-key-secret-variable instead" + ) + if args.oci_password: + tty.warn( + "Configuring mirror secrets as plain text with --oci-password is deprecated. " + "Use --oci-password-variable instead" + ) + access_pair = _configure_access_pair( + args, + "s3_access_key_id", + "s3_access_key_id_variable", + "s3_access_key_secret", + "s3_access_key_secret_variable", + ) + if access_pair: + connection["access_pair"] = access_pair + if args.s3_access_token: connection["access_token"] = args.s3_access_token + elif args.s3_access_token_variable: + connection["access_token_variable"] = args.s3_access_token_variable + if args.s3_profile: connection["profile"] = args.s3_profile + if args.s3_endpoint_url: connection["endpoint_url"] = args.s3_endpoint_url - if args.oci_username and args.oci_password: - connection["access_pair"] = [args.oci_username, args.oci_password] + + # OCI Connection + access_pair = _configure_access_pair( + args, "oci_username", "oci_username_variable", "oci_password", "oci_password_variable" + ) + if access_pair: + connection["access_pair"] = access_pair + if args.type: connection["binary"] = "binary" in args.type connection["source"] = "source" in args.type @@ -285,16 +387,35 @@ def _configure_mirror(args): changes = {} if args.url: changes["url"] = args.url - if args.s3_access_key_id and args.s3_access_key_secret: - changes["access_pair"] = [args.s3_access_key_id, args.s3_access_key_secret] + + default_access_pair = entry._get_value("access_pair", direction or "fetch") + # TODO: Init access_pair args with the fetch/push/base values in the current mirror state + access_pair = _configure_access_pair( + args, + "s3_access_key_id", + "s3_access_key_id_variable", + "s3_access_key_secret", + "s3_access_key_secret_variable", + default=default_access_pair, + ) + if access_pair: + changes["access_pair"] = access_pair if args.s3_access_token: changes["access_token"] = args.s3_access_token if args.s3_profile: changes["profile"] = args.s3_profile if args.s3_endpoint_url: changes["endpoint_url"] = args.s3_endpoint_url - if args.oci_username and args.oci_password: - changes["access_pair"] = [args.oci_username, args.oci_password] + access_pair = _configure_access_pair( + args, + "oci_username", + "oci_username_variable", + "oci_password", + "oci_password_variable", + default=default_access_pair, + ) + if access_pair: + changes["access_pair"] = access_pair if getattr(args, "signed", None) is not None: changes["signed"] = args.signed if getattr(args, "autopush", None) is not None: diff --git a/lib/spack/spack/cmd/modules/__init__.py b/lib/spack/spack/cmd/modules/__init__.py index b11063714f75c7..013f4723dba05f 100644 --- a/lib/spack/spack/cmd/modules/__init__.py +++ b/lib/spack/spack/cmd/modules/__init__.py @@ -19,6 +19,7 @@ import spack.modules import spack.modules.common import spack.repo +from spack.cmd import MultipleSpecsMatch, NoSpecMatches from spack.cmd.common import arguments description = "manipulate module files" @@ -91,18 +92,6 @@ def add_loads_arguments(subparser): arguments.add_common_arguments(subparser, ["recurse_dependencies"]) -class MultipleSpecsMatch(Exception): - """Raised when multiple specs match a constraint, in a context where - this is not allowed. - """ - - -class NoSpecMatches(Exception): - """Raised when no spec matches a constraint, in a context where - this is not allowed. - """ - - def one_spec_or_raise(specs): """Ensures exactly one spec has been selected, or raises the appropriate exception. @@ -378,7 +367,10 @@ def refresh(module_type, specs, args): def modules_cmd(parser, args, module_type, callbacks=callbacks): # Qualifiers to be used when querying the db for specs constraint_qualifiers = { - "refresh": {"installed": True, "known": lambda x: not spack.repo.PATH.exists(x)} + "refresh": { + "installed": True, + "predicate_fn": lambda x: spack.repo.PATH.exists(x.spec.name), + } } query_args = constraint_qualifiers.get(args.subparser_name, {}) diff --git a/lib/spack/spack/cmd/patch.py b/lib/spack/spack/cmd/patch.py index 885ff2f746c352..dbd18f7948a1c4 100644 --- a/lib/spack/spack/cmd/patch.py +++ b/lib/spack/spack/cmd/patch.py @@ -33,8 +33,9 @@ def patch(parser, args): spack.config.set("config:checksum", False, scope="command_line") specs = spack.cmd.parse_specs(args.specs, concretize=False) + specs = spack.cmd.matching_specs_from_env(specs) for spec in specs: - _patch(spack.cmd.matching_spec_from_env(spec).package) + _patch(spec.package) def _patch_env(env: ev.Environment): diff --git a/lib/spack/spack/cmd/solve.py b/lib/spack/spack/cmd/solve.py index f5a9c09c3d395c..8adc06fdfbe24c 100644 --- a/lib/spack/spack/cmd/solve.py +++ b/lib/spack/spack/cmd/solve.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import argparse import re import sys @@ -12,13 +11,12 @@ import spack import spack.cmd -import spack.cmd.common.arguments +import spack.cmd.spec import spack.config import spack.environment import spack.hash_types as ht import spack.solver.asp as asp import spack.spec -from spack.cmd.common import arguments description = "concretize a specs using an ASP solver" section = "developer" @@ -41,42 +39,6 @@ def setup_parser(subparser): " solutions models found by asp program\n" " all all of the above", ) - - # Below are arguments w.r.t. spec display (like spack spec) - arguments.add_common_arguments(subparser, ["long", "very_long", "namespaces"]) - - install_status_group = subparser.add_mutually_exclusive_group() - arguments.add_common_arguments(install_status_group, ["install_status", "no_install_status"]) - - subparser.add_argument( - "-y", - "--yaml", - action="store_const", - dest="format", - default=None, - const="yaml", - help="print concrete spec as yaml", - ) - subparser.add_argument( - "-j", - "--json", - action="store_const", - dest="format", - default=None, - const="json", - help="print concrete spec as json", - ) - subparser.add_argument( - "-c", - "--cover", - action="store", - default="nodes", - choices=["nodes", "edges", "paths"], - help="how extensively to traverse the DAG (default: nodes)", - ) - subparser.add_argument( - "-t", "--types", action="store_true", default=False, help="show dependency types" - ) subparser.add_argument( "--timers", action="store_true", @@ -86,9 +48,8 @@ def setup_parser(subparser): subparser.add_argument( "--stats", action="store_true", default=False, help="print out statistics from clingo" ) - subparser.add_argument("specs", nargs=argparse.REMAINDER, help="specs of packages") - spack.cmd.common.arguments.add_concretizer_args(subparser) + spack.cmd.spec.setup_parser(subparser) def _process_result(result, show, required_format, kwargs): @@ -164,11 +125,12 @@ def solve(parser, args): # If we have an active environment, pick the specs from there env = spack.environment.active_environment() - if env and args.specs: - msg = "cannot give explicit specs when an environment is active" - raise RuntimeError(msg) - - specs = list(env.user_specs) if env else spack.cmd.parse_specs(args.specs) + if args.specs: + specs = spack.cmd.parse_specs(args.specs) + elif env: + specs = list(env.user_specs) + else: + tty.die("spack solve requires at least one spec or an active environment") solver = asp.Solver() output = sys.stdout if "asp" in show else None diff --git a/lib/spack/spack/cmd/spec.py b/lib/spack/spack/cmd/spec.py index e5cc951d695d40..d1278a71753970 100644 --- a/lib/spack/spack/cmd/spec.py +++ b/lib/spack/spack/cmd/spec.py @@ -82,64 +82,44 @@ def spec(parser, args): if args.namespaces: fmt = "{namespace}." + fmt - tree_kwargs = { - "cover": args.cover, - "format": fmt, - "hashlen": None if args.very_long else 7, - "show_types": args.types, - "status_fn": install_status_fn if args.install_status else None, - } - # use a read transaction if we are getting install status for every # spec in the DAG. This avoids repeatedly querying the DB. tree_context = lang.nullcontext if args.install_status: tree_context = spack.store.STORE.db.read_transaction - # Use command line specified specs, otherwise try to use environment specs. + env = ev.active_environment() + if args.specs: - input_specs = spack.cmd.parse_specs(args.specs) - concretized_specs = spack.cmd.parse_specs(args.specs, concretize=True) - specs = list(zip(input_specs, concretized_specs)) + concrete_specs = spack.cmd.parse_specs(args.specs, concretize=True) + elif env: + env.concretize() + concrete_specs = env.concrete_roots() else: - env = ev.active_environment() - if env: - env.concretize() - specs = env.concretized_specs() - - # environments are printed together in a combined tree() invocation, - # except when using --yaml or --json, which we print spec by spec below. - if not args.format: - tree_kwargs["key"] = spack.traverse.by_dag_hash - tree_kwargs["hashes"] = args.long or args.very_long - print(spack.spec.tree([concrete for _, concrete in specs], **tree_kwargs)) - return - else: - tty.die("spack spec requires at least one spec or an active environment") - - for input, output in specs: - # With --yaml or --json, just print the raw specs to output - if args.format: + tty.die("spack spec requires at least one spec or an active environment") + + # With --yaml, --json, or --format, just print the raw specs to output + if args.format: + for spec in concrete_specs: if args.format == "yaml": # use write because to_yaml already has a newline. - sys.stdout.write(output.to_yaml(hash=ht.dag_hash)) + sys.stdout.write(spec.to_yaml(hash=ht.dag_hash)) elif args.format == "json": - print(output.to_json(hash=ht.dag_hash)) + print(spec.to_json(hash=ht.dag_hash)) else: - print(output.format(args.format)) - continue - - with tree_context(): - # Only show the headers for input specs that are not concrete to avoid - # repeated output. This happens because parse_specs outputs concrete - # specs for `/hash` inputs. - if not input.concrete: - tree_kwargs["hashes"] = False # Always False for input spec - print("Input spec") - print("--------------------------------") - print(input.tree(**tree_kwargs)) - print("Concretized") - print("--------------------------------") - - tree_kwargs["hashes"] = args.long or args.very_long - print(output.tree(**tree_kwargs)) + print(spec.format(args.format)) + return + + with tree_context(): + print( + spack.spec.tree( + concrete_specs, + cover=args.cover, + format=fmt, + hashlen=None if args.very_long else 7, + show_types=args.types, + status_fn=install_status_fn if args.install_status else None, + hashes=args.long or args.very_long, + key=spack.traverse.by_dag_hash, + ) + ) diff --git a/lib/spack/spack/cmd/stage.py b/lib/spack/spack/cmd/stage.py index af5fa412ea7e1a..20da92926f8104 100644 --- a/lib/spack/spack/cmd/stage.py +++ b/lib/spack/spack/cmd/stage.py @@ -47,8 +47,8 @@ def stage(parser, args): if len(specs) > 1 and custom_path: tty.die("`--path` requires a single spec, but multiple were provided") + specs = spack.cmd.matching_specs_from_env(specs) for spec in specs: - spec = spack.cmd.matching_spec_from_env(spec) pkg = spec.package if custom_path: diff --git a/lib/spack/spack/cmd/test.py b/lib/spack/spack/cmd/test.py index d3d45dbe463cc7..14578043829a4b 100644 --- a/lib/spack/spack/cmd/test.py +++ b/lib/spack/spack/cmd/test.py @@ -165,7 +165,7 @@ def test_run(args): if args.fail_fast: spack.config.set("config:fail_fast", True, scope="command_line") - explicit = args.explicit or any + explicit = args.explicit or None explicit_str = "explicitly " if args.explicit else "" # Get specs to test diff --git a/lib/spack/spack/cmd/tutorial.py b/lib/spack/spack/cmd/tutorial.py index 478ca52b7f565b..678a9262369c3f 100644 --- a/lib/spack/spack/cmd/tutorial.py +++ b/lib/spack/spack/cmd/tutorial.py @@ -24,7 +24,7 @@ # tutorial configuration parameters -tutorial_branch = "releases/v0.22" +tutorial_branch = "releases/v0.23" tutorial_mirror = "file:///mirror" tutorial_key = os.path.join(spack.paths.share_path, "keys", "tutorial.pub") diff --git a/lib/spack/spack/cmd/uninstall.py b/lib/spack/spack/cmd/uninstall.py index d51a8f8e3bc06e..5d6779eea9195a 100644 --- a/lib/spack/spack/cmd/uninstall.py +++ b/lib/spack/spack/cmd/uninstall.py @@ -90,6 +90,7 @@ def find_matching_specs( env: optional active environment specs: list of specs to be matched against installed packages allow_multiple_matches: if True multiple matches are admitted + origin: origin of the spec Return: list: list of specs @@ -98,7 +99,7 @@ def find_matching_specs( hashes = env.all_hashes() if env else None # List of specs that match expressions given via command line - specs_from_cli = [] + specs_from_cli: List["spack.spec.Spec"] = [] has_errors = False for spec in specs: install_query = [InstallStatuses.INSTALLED, InstallStatuses.DEPRECATED] @@ -116,7 +117,7 @@ def find_matching_specs( has_errors = True # No installed package matches the query - if len(matching) == 0 and spec is not any: + if len(matching) == 0 and spec is not None: if env: pkg_type = "packages in environment '%s'" % env.name else: @@ -213,7 +214,7 @@ def get_uninstall_list(args, specs: List[spack.spec.Spec], env: Optional[ev.Envi # Gets the list of installed specs that match the ones given via cli # args.all takes care of the case where '-a' is given in the cli - matching_specs = find_matching_specs(env, specs, args.all) + matching_specs = find_matching_specs(env, specs, args.all, origin=args.origin) dependent_specs = installed_dependents(matching_specs) all_uninstall_specs = matching_specs + dependent_specs if args.dependents else matching_specs other_dependent_envs = dependent_environments(all_uninstall_specs, current_env=env) @@ -301,6 +302,6 @@ def uninstall(parser, args): " Use `spack uninstall --all` to uninstall ALL packages.", ) - # [any] here handles the --all case by forcing all specs to be returned - specs = spack.cmd.parse_specs(args.specs) if args.specs else [any] + # [None] here handles the --all case by forcing all specs to be returned + specs = spack.cmd.parse_specs(args.specs) if args.specs else [None] uninstall_specs(args, specs) diff --git a/lib/spack/spack/compiler.py b/lib/spack/spack/compiler.py index 8ed125ae24fdfe..e16e4a2725c194 100644 --- a/lib/spack/spack/compiler.py +++ b/lib/spack/spack/compiler.py @@ -4,20 +4,23 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import contextlib +import hashlib import itertools +import json import os import platform import re import shutil import sys import tempfile -from typing import List, Optional, Sequence +from typing import Dict, List, Optional, Sequence import llnl.path import llnl.util.lang import llnl.util.tty as tty from llnl.util.filesystem import path_contains_subdirectory, paths_containing_libs +import spack.caches import spack.error import spack.schema.environment import spack.spec @@ -26,6 +29,7 @@ import spack.util.module_cmd import spack.version from spack.util.environment import filter_system_paths +from spack.util.file_cache import FileCache __all__ = ["Compiler"] @@ -34,7 +38,7 @@ @llnl.util.lang.memoized -def _get_compiler_version_output(compiler_path, version_arg, ignore_errors=()): +def _get_compiler_version_output(compiler_path, version_arg, ignore_errors=()) -> str: """Invokes the compiler at a given path passing a single version argument and returns the output. @@ -57,7 +61,7 @@ def _get_compiler_version_output(compiler_path, version_arg, ignore_errors=()): return output -def get_compiler_version_output(compiler_path, *args, **kwargs): +def get_compiler_version_output(compiler_path, *args, **kwargs) -> str: """Wrapper for _get_compiler_version_output().""" # This ensures that we memoize compiler output by *absolute path*, # not just executable name. If we don't do this, and the path changes @@ -275,7 +279,7 @@ def __init__( operating_system, target, paths, - modules=None, + modules: Optional[List[str]] = None, alias=None, environment=None, extra_rpaths=None, @@ -290,6 +294,7 @@ def __init__( self.environment = environment or {} self.extra_rpaths = extra_rpaths or [] self.enable_implicit_rpaths = enable_implicit_rpaths + self.cache = COMPILER_CACHE self.cc = paths[0] self.cxx = paths[1] @@ -390,15 +395,11 @@ def real_version(self): E.g. C++11 flag checks. """ - if not self._real_version: - try: - real_version = spack.version.Version(self.get_real_version()) - if real_version == spack.version.Version("unknown"): - return self.version - self._real_version = real_version - except spack.util.executable.ProcessError: - self._real_version = self.version - return self._real_version + real_version_str = self.cache.get(self).real_version + if not real_version_str or real_version_str == "unknown": + return self.version + + return spack.version.StandardVersion.from_string(real_version_str) def implicit_rpaths(self) -> List[str]: if self.enable_implicit_rpaths is False: @@ -427,6 +428,11 @@ def default_dynamic_linker(self) -> Optional[str]: @property def default_libc(self) -> Optional["spack.spec.Spec"]: """Determine libc targeted by the compiler from link line""" + # technically this should be testing the target platform of the compiler, but we don't have + # that, so stick to host platform for now. + if sys.platform in ("darwin", "win32"): + return None + dynamic_linker = self.default_dynamic_linker if not dynamic_linker: @@ -445,19 +451,23 @@ def required_libs(self): @property def compiler_verbose_output(self) -> Optional[str]: """Verbose output from compiling a dummy C source file. Output is cached.""" - if not hasattr(self, "_compile_c_source_output"): - self._compile_c_source_output = self._compile_dummy_c_source() - return self._compile_c_source_output + return self.cache.get(self).c_compiler_output def _compile_dummy_c_source(self) -> Optional[str]: - cc = self.cc if self.cc else self.cxx + if self.cc: + cc = self.cc + ext = "c" + else: + cc = self.cxx + ext = "cc" + if not cc or not self.verbose_flag: return None try: tmpdir = tempfile.mkdtemp(prefix="spack-implicit-link-info") fout = os.path.join(tmpdir, "output") - fin = os.path.join(tmpdir, "main.c") + fin = os.path.join(tmpdir, f"main.{ext}") with open(fin, "w") as csource: csource.write( @@ -559,7 +569,7 @@ def fc_pic_flag(self): # Note: This is not a class method. The class methods are used to detect # compilers on PATH based systems, and do not set up the run environment of # the compiler. This method can be called on `module` based systems as well - def get_real_version(self): + def get_real_version(self) -> str: """Query the compiler for its version. This is the "real" compiler version, regardless of what is in the @@ -569,14 +579,17 @@ def get_real_version(self): modifications) to enable the compiler to run properly on any platform. """ cc = spack.util.executable.Executable(self.cc) - with self.compiler_environment(): - output = cc( - self.version_argument, - output=str, - error=str, - ignore_errors=tuple(self.ignore_version_errors), - ) - return self.extract_version_from_output(output) + try: + with self.compiler_environment(): + output = cc( + self.version_argument, + output=str, + error=str, + ignore_errors=tuple(self.ignore_version_errors), + ) + return self.extract_version_from_output(output) + except spack.util.executable.ProcessError: + return "unknown" @property def prefix(self): @@ -603,7 +616,7 @@ def default_version(cls, cc): @classmethod @llnl.util.lang.memoized - def extract_version_from_output(cls, output): + def extract_version_from_output(cls, output: str) -> str: """Extracts the version from compiler's output.""" match = re.search(cls.version_regex, output) return match.group(1) if match else "unknown" @@ -732,3 +745,106 @@ def __init__(self, compiler, feature, flag_name, ver_string=None): ) + " implement the {0} property and submit a pull request or issue.".format(flag_name), ) + + +class CompilerCacheEntry: + """Deserialized cache entry for a compiler""" + + __slots__ = ["c_compiler_output", "real_version"] + + def __init__(self, c_compiler_output: Optional[str], real_version: str): + self.c_compiler_output = c_compiler_output + self.real_version = real_version + + @classmethod + def from_dict(cls, data: Dict[str, Optional[str]]): + if not isinstance(data, dict): + raise ValueError(f"Invalid {cls.__name__} data") + c_compiler_output = data.get("c_compiler_output") + real_version = data.get("real_version") + if not isinstance(real_version, str) or not isinstance( + c_compiler_output, (str, type(None)) + ): + raise ValueError(f"Invalid {cls.__name__} data") + return cls(c_compiler_output, real_version) + + +class CompilerCache: + """Base class for compiler output cache. Default implementation does not cache anything.""" + + def value(self, compiler: Compiler) -> Dict[str, Optional[str]]: + return { + "c_compiler_output": compiler._compile_dummy_c_source(), + "real_version": compiler.get_real_version(), + } + + def get(self, compiler: Compiler) -> CompilerCacheEntry: + return CompilerCacheEntry.from_dict(self.value(compiler)) + + +class FileCompilerCache(CompilerCache): + """Cache for compiler output, which is used to determine implicit link paths, the default libc + version, and the compiler version.""" + + name = os.path.join("compilers", "compilers.json") + + def __init__(self, cache: "FileCache") -> None: + self.cache = cache + self.cache.init_entry(self.name) + self._data: Dict[str, Dict[str, Optional[str]]] = {} + + def _get_entry(self, key: str) -> Optional[CompilerCacheEntry]: + try: + return CompilerCacheEntry.from_dict(self._data[key]) + except ValueError: + del self._data[key] + except KeyError: + pass + return None + + def get(self, compiler: Compiler) -> CompilerCacheEntry: + # Cache hit + try: + with self.cache.read_transaction(self.name) as f: + assert f is not None + self._data = json.loads(f.read()) + assert isinstance(self._data, dict) + except (json.JSONDecodeError, AssertionError): + self._data = {} + + key = self._key(compiler) + value = self._get_entry(key) + if value is not None: + return value + + # Cache miss + with self.cache.write_transaction(self.name) as (old, new): + try: + assert old is not None + self._data = json.loads(old.read()) + assert isinstance(self._data, dict) + except (json.JSONDecodeError, AssertionError): + self._data = {} + + # Use cache entry that may have been created by another process in the meantime. + entry = self._get_entry(key) + + # Finally compute the cache entry + if entry is None: + self._data[key] = self.value(compiler) + entry = CompilerCacheEntry.from_dict(self._data[key]) + + new.write(json.dumps(self._data, separators=(",", ":"))) + + return entry + + def _key(self, compiler: Compiler) -> str: + as_bytes = json.dumps(compiler.to_dict(), separators=(",", ":")).encode("utf-8") + return hashlib.sha256(as_bytes).hexdigest() + + +def _make_compiler_cache(): + return FileCompilerCache(spack.caches.MISC_CACHE) + + +COMPILER_CACHE: CompilerCache = llnl.util.lang.Singleton(_make_compiler_cache) # type: ignore diff --git a/lib/spack/spack/compilers/aocc.py b/lib/spack/spack/compilers/aocc.py index 7ac861c745733d..920e7d049263c2 100644 --- a/lib/spack/spack/compilers/aocc.py +++ b/lib/spack/spack/compilers/aocc.py @@ -116,5 +116,5 @@ def fflags(self): def _handle_default_flag_addtions(self): # This is a known issue for AOCC 3.0 see: # https://developer.amd.com/wp-content/resources/AOCC-3.0-Install-Guide.pdf - if self.real_version.satisfies(ver("3.0.0")): + if self.version.satisfies(ver("3.0.0")): return "-Wno-unused-command-line-argument " "-mllvm -eliminate-similar-expr=false" diff --git a/lib/spack/spack/compilers/intel.py b/lib/spack/spack/compilers/intel.py index 4990da3cb06aa5..3002ba7f6e72c2 100644 --- a/lib/spack/spack/compilers/intel.py +++ b/lib/spack/spack/compilers/intel.py @@ -124,9 +124,8 @@ def setup_custom_environment(self, pkg, env): # Edge cases for Intel's oneAPI compilers when using the legacy classic compilers: # Always pass flags to disable deprecation warnings, since these warnings can # confuse tools that parse the output of compiler commands (e.g. version checks). - if self.cc and self.cc.endswith("icc") and self.real_version >= Version("2021"): + if self.real_version >= Version("2021") and self.real_version <= Version("2023"): env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441") - if self.cxx and self.cxx.endswith("icpc") and self.real_version >= Version("2021"): env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441") - if self.fc and self.fc.endswith("ifort") and self.real_version >= Version("2021"): + if self.real_version >= Version("2021") and self.real_version <= Version("2024"): env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448") diff --git a/lib/spack/spack/compilers/oneapi.py b/lib/spack/spack/compilers/oneapi.py index ee279433c321a4..c06a55f39621b7 100644 --- a/lib/spack/spack/compilers/oneapi.py +++ b/lib/spack/spack/compilers/oneapi.py @@ -7,7 +7,9 @@ from os.path import dirname, join from llnl.util import tty +from llnl.util.filesystem import ancestor +import spack.util.executable from spack.compiler import Compiler from spack.version import Version @@ -116,6 +118,24 @@ def fc_pic_flag(self): def stdcxx_libs(self): return ("-cxxlib",) + @property + def prefix(self): + # OneAPI reports its install prefix when running ``--version`` + # on the line ``InstalledDir: /bin/compiler``. + cc = spack.util.executable.Executable(self.cc) + with self.compiler_environment(): + oneapi_output = cc("--version", output=str, error=str) + + for line in oneapi_output.splitlines(): + if line.startswith("InstalledDir:"): + oneapi_prefix = line.split(":")[1].strip() + # Go from /bin/compiler to + return ancestor(oneapi_prefix, 2) + + raise RuntimeError( + "could not find install prefix of OneAPI from output:\n\t{}".format(oneapi_output) + ) + def setup_custom_environment(self, pkg, env): # workaround bug in icpx driver where it requires sycl-post-link is on the PATH # It is located in the same directory as the driver. Error message: @@ -131,11 +151,14 @@ def setup_custom_environment(self, pkg, env): # Edge cases for Intel's oneAPI compilers when using the legacy classic compilers: # Always pass flags to disable deprecation warnings, since these warnings can # confuse tools that parse the output of compiler commands (e.g. version checks). - if self.cc and self.cc.endswith("icc") and self.real_version >= Version("2021"): + # This is really only needed for Fortran, since oneapi@ should be using either + # icx+icpx+ifx or icx+icpx+ifort. But to be on the safe side (some users may + # want to try to swap icpx against icpc, for example), and since the Intel LLVM + # compilers accept these diag-disable flags, we apply them for all compilers. + if self.real_version >= Version("2021") and self.real_version <= Version("2023"): env.append_flags("SPACK_ALWAYS_CFLAGS", "-diag-disable=10441") - if self.cxx and self.cxx.endswith("icpc") and self.real_version >= Version("2021"): env.append_flags("SPACK_ALWAYS_CXXFLAGS", "-diag-disable=10441") - if self.fc and self.fc.endswith("ifort") and self.real_version >= Version("2021"): + if self.real_version >= Version("2021") and self.real_version <= Version("2024"): env.append_flags("SPACK_ALWAYS_FFLAGS", "-diag-disable=10448") # 2024 release bumped the libsycl version because of an ABI diff --git a/lib/spack/spack/concretize.py b/lib/spack/spack/concretize.py index 387c7f2de27efd..cccfc02bd046a3 100644 --- a/lib/spack/spack/concretize.py +++ b/lib/spack/spack/concretize.py @@ -2,14 +2,20 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -""" -(DEPRECATED) Used to contain the code for the original concretizer -""" +"""High-level functions to concretize list of specs""" +import sys +import time from contextlib import contextmanager -from itertools import chain +from typing import Iterable, Optional, Sequence, Tuple, Union +import llnl.util.tty as tty + +import spack.compilers import spack.config import spack.error +import spack.repo +import spack.util.parallel +from spack.spec import ArchSpec, CompilerSpec, Spec CHECK_COMPILER_EXISTENCE = True @@ -30,67 +36,167 @@ def enable_compiler_existence_check(): CHECK_COMPILER_EXISTENCE = saved -def find_spec(spec, condition, default=None): - """Searches the dag from spec in an intelligent order and looks - for a spec that matches a condition""" - # First search parents, then search children - deptype = ("build", "link") - dagiter = chain( - spec.traverse(direction="parents", deptype=deptype, root=False), - spec.traverse(direction="children", deptype=deptype, root=False), - ) - visited = set() - for relative in dagiter: - if condition(relative): - return relative - visited.add(id(relative)) - - # Then search all other relatives in the DAG *except* spec - for relative in spec.root.traverse(deptype="all"): - if relative is spec: - continue - if id(relative) in visited: - continue - if condition(relative): - return relative - - # Finally search spec itself. - if condition(spec): - return spec - - return default # Nothing matched the condition; return default. - - -def concretize_specs_together(*abstract_specs, **kwargs): +SpecPair = Tuple[Spec, Spec] +SpecLike = Union[Spec, str] +TestsType = Union[bool, Iterable[str]] + + +def concretize_specs_together( + abstract_specs: Sequence[SpecLike], tests: TestsType = False +) -> Sequence[Spec]: """Given a number of specs as input, tries to concretize them together. Args: - tests (bool or list or set): False to run no tests, True to test - all packages, or a list of package names to run tests for some - *abstract_specs: abstract specs to be concretized, given either - as Specs or strings - - Returns: - List of concretized specs + abstract_specs: abstract specs to be concretized + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. """ import spack.solver.asp allow_deprecated = spack.config.get("config:deprecated", False) solver = spack.solver.asp.Solver() - result = solver.solve( - abstract_specs, tests=kwargs.get("tests", False), allow_deprecated=allow_deprecated - ) + result = solver.solve(abstract_specs, tests=tests, allow_deprecated=allow_deprecated) return [s.copy() for s in result.specs] +def concretize_together( + spec_list: Sequence[SpecPair], tests: TestsType = False +) -> Sequence[SpecPair]: + """Given a number of specs as input, tries to concretize them together. + + Args: + spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + already concrete spec or None if not yet concretized + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. + """ + to_concretize = [concrete if concrete else abstract for abstract, concrete in spec_list] + abstract_specs = [abstract for abstract, _ in spec_list] + concrete_specs = concretize_specs_together(to_concretize, tests=tests) + return list(zip(abstract_specs, concrete_specs)) + + +def concretize_together_when_possible( + spec_list: Sequence[SpecPair], tests: TestsType = False +) -> Sequence[SpecPair]: + """Given a number of specs as input, tries to concretize them together to the extent possible. + + See documentation for ``unify: when_possible`` concretization for the precise definition of + "to the extent possible". + + Args: + spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + already concrete spec or None if not yet concretized + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. + """ + import spack.solver.asp + + to_concretize = [concrete if concrete else abstract for abstract, concrete in spec_list] + old_concrete_to_abstract = { + concrete: abstract for (abstract, concrete) in spec_list if concrete + } + + result_by_user_spec = {} + solver = spack.solver.asp.Solver() + allow_deprecated = spack.config.get("config:deprecated", False) + for result in solver.solve_in_rounds( + to_concretize, tests=tests, allow_deprecated=allow_deprecated + ): + result_by_user_spec.update(result.specs_by_input) + + # If the "abstract" spec is a concrete spec from the previous concretization + # translate it back to an abstract spec. Otherwise, keep the abstract spec + return [ + (old_concrete_to_abstract.get(abstract, abstract), concrete) + for abstract, concrete in sorted(result_by_user_spec.items()) + ] + + +def concretize_separately( + spec_list: Sequence[SpecPair], tests: TestsType = False +) -> Sequence[SpecPair]: + """Concretizes the input specs separately from each other. + + Args: + spec_list: list of tuples to concretize. First entry is abstract spec, second entry is + already concrete spec or None if not yet concretized + tests: list of package names for which to consider tests dependencies. If True, all nodes + will have test dependencies. If False, test dependencies will be disregarded. + """ + import spack.bootstrap + + to_concretize = [abstract for abstract, concrete in spec_list if not concrete] + args = [ + (i, str(abstract), tests) + for i, abstract in enumerate(to_concretize) + if not abstract.concrete + ] + ret = [(i, abstract) for i, abstract in enumerate(to_concretize) if abstract.concrete] + # Ensure we don't try to bootstrap clingo in parallel + with spack.bootstrap.ensure_bootstrap_configuration(): + spack.bootstrap.ensure_clingo_importable_or_raise() + + # Ensure all the indexes have been built or updated, since + # otherwise the processes in the pool may timeout on waiting + # for a write lock. We do this indirectly by retrieving the + # provider index, which should in turn trigger the update of + # all the indexes if there's any need for that. + _ = spack.repo.PATH.provider_index + + # Ensure we have compilers in compilers.yaml to avoid that + # processes try to write the config file in parallel + _ = spack.compilers.all_compilers_config(spack.config.CONFIG) + + # Early return if there is nothing to do + if len(args) == 0: + # Still have to combine the things that were passed in as abstract with the things + # that were passed in as pairs + return [(abstract, concrete) for abstract, (_, concrete) in zip(to_concretize, ret)] + [ + (abstract, concrete) for abstract, concrete in spec_list if concrete + ] + + # Solve the environment in parallel on Linux + # TODO: support parallel concretization on macOS and Windows + num_procs = min(len(args), spack.config.determine_number_of_jobs(parallel=True)) + + for j, (i, concrete, duration) in enumerate( + spack.util.parallel.imap_unordered( + _concretize_task, args, processes=num_procs, debug=tty.is_debug(), maxtaskperchild=1 + ) + ): + ret.append((i, concrete)) + percentage = (j + 1) / len(args) * 100 + tty.verbose( + f"{duration:6.1f}s [{percentage:3.0f}%] {concrete.cformat('{hash:7}')} " + f"{to_concretize[i].colored_str}" + ) + sys.stdout.flush() + + # Add specs in original order + ret.sort(key=lambda x: x[0]) + + return [(abstract, concrete) for abstract, (_, concrete) in zip(to_concretize, ret)] + [ + (abstract, concrete) for abstract, concrete in spec_list if concrete + ] + + +def _concretize_task(packed_arguments: Tuple[int, str, TestsType]) -> Tuple[int, Spec, float]: + index, spec_str, tests = packed_arguments + with tty.SuppressOutput(msg_enabled=False): + start = time.time() + spec = Spec(spec_str).concretized(tests=tests) + return index, spec, time.time() - start + + class UnavailableCompilerVersionError(spack.error.SpackError): """Raised when there is no available compiler that satisfies a compiler spec.""" - def __init__(self, compiler_spec, arch=None): - err_msg = "No compilers with spec {0} found".format(compiler_spec) + def __init__(self, compiler_spec: CompilerSpec, arch: Optional[ArchSpec] = None) -> None: + err_msg = f"No compilers with spec {compiler_spec} found" if arch: - err_msg += " for operating system {0} and target {1}.".format(arch.os, arch.target) + err_msg += f" for operating system {arch.os} and target {arch.target}." super().__init__( err_msg, diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py index a8b8d0b49d16d2..749caa90ae326a 100644 --- a/lib/spack/spack/config.py +++ b/lib/spack/spack/config.py @@ -435,6 +435,10 @@ def __init__(self, *scopes: ConfigScope) -> None: self.push_scope(scope) self.format_updates: Dict[str, List[ConfigScope]] = collections.defaultdict(list) + def ensure_unwrapped(self) -> "Configuration": + """Ensure we unwrap this object from any dynamic wrapper (like Singleton)""" + return self + @_config_mutator def push_scope(self, scope: ConfigScope) -> None: """Add a higher precedence scope to the Configuration.""" @@ -723,7 +727,7 @@ def _non_platform_scopes(self): @contextlib.contextmanager def override( path_or_scope: Union[ConfigScope, str], value: Optional[Any] = None -) -> Generator[Union[lang.Singleton, Configuration], None, None]: +) -> Generator[Configuration, None, None]: """Simple way to override config settings within a context. Arguments: @@ -799,9 +803,7 @@ def config_paths_from_entry_points() -> List[Tuple[str, str]]: return config_paths -def _add_command_line_scopes( - cfg: Union[Configuration, lang.Singleton], command_line_scopes: List[str] -) -> None: +def _add_command_line_scopes(cfg: Configuration, command_line_scopes: List[str]) -> None: """Add additional scopes from the --config-scope argument, either envs or dirs.""" import spack.environment.environment as env # circular import @@ -871,18 +873,11 @@ def create() -> Configuration: # Each scope can have per-platfom overrides in subdirectories _add_platform_scopes(cfg, name, path) - # add command-line scopes - _add_command_line_scopes(cfg, COMMAND_LINE_SCOPES) - - # we make a special scope for spack commands so that they can - # override configuration options. - cfg.push_scope(InternalConfigScope("command_line")) - return cfg #: This is the singleton configuration instance for Spack. -CONFIG: Union[Configuration, lang.Singleton] = lang.Singleton(create) +CONFIG: Configuration = lang.Singleton(create) # type: ignore def add_from_file(filename: str, scope: Optional[str] = None) -> None: diff --git a/lib/spack/spack/database.py b/lib/spack/spack/database.py index 907b73c5db71a6..e53dd817a52b1d 100644 --- a/lib/spack/spack/database.py +++ b/lib/spack/spack/database.py @@ -32,6 +32,7 @@ Container, Dict, Generator, + Iterable, List, NamedTuple, Optional, @@ -290,55 +291,6 @@ def __reduce__(self): return ForbiddenLock, tuple() -_QUERY_DOCSTRING = """ - - Args: - query_spec: queries iterate through specs in the database and - return those that satisfy the supplied ``query_spec``. If - query_spec is `any`, This will match all specs in the - database. If it is a spec, we'll evaluate - ``spec.satisfies(query_spec)`` - - known (bool or None): Specs that are "known" are those - for which Spack can locate a ``package.py`` file -- i.e., - Spack "knows" how to install them. Specs that are unknown may - represent packages that existed in a previous version of - Spack, but have since either changed their name or - been removed - - installed (bool or InstallStatus or typing.Iterable or None): - if ``True``, includes only installed - specs in the search; if ``False`` only missing specs, and if - ``any``, all specs in database. If an InstallStatus or iterable - of InstallStatus, returns specs whose install status - (installed, deprecated, or missing) matches (one of) the - InstallStatus. (default: True) - - explicit (bool or None): A spec that was installed - following a specific user request is marked as explicit. If - instead it was pulled-in as a dependency of a user requested - spec it's considered implicit. - - start_date (datetime.datetime or None): filters the query - discarding specs that have been installed before ``start_date``. - - end_date (datetime.datetime or None): filters the query discarding - specs that have been installed after ``end_date``. - - hashes (Container): list or set of hashes that we can use to - restrict the search - - in_buildcache (bool or None): Specs that are marked in - this database as part of an associated binary cache are - ``in_buildcache``. All other specs are not. This field is used - for querying mirror indices. Default is ``any``. - - Returns: - list of specs that match the query - - """ - - class LockConfiguration(NamedTuple): """Data class to configure locks in Database objects @@ -604,6 +556,9 @@ def _path(self, spec: "spack.spec.Spec") -> pathlib.Path: return self.dir / f"{spec.name}-{spec.dag_hash()}" +SelectType = Callable[[InstallRecord], bool] + + class Database: #: Fields written for each install record record_fields: Tuple[str, ...] = DEFAULT_INSTALL_RECORD_FIELDS @@ -1245,7 +1200,7 @@ def _add( self._data[key].explicit = explicit @_autospec - def add(self, spec: "spack.spec.Spec", *, explicit: bool = False) -> None: + def add(self, spec: "spack.spec.Spec", *, explicit: bool = False, allow_missing=False) -> None: """Add spec at path to database, locking and reading DB to sync. ``add()`` will lock and read from the DB on disk. @@ -1254,7 +1209,7 @@ def add(self, spec: "spack.spec.Spec", *, explicit: bool = False) -> None: # TODO: ensure that spec is concrete? # Entire add is transactional. with self.write_transaction(): - self._add(spec, explicit=explicit) + self._add(spec, explicit=explicit, allow_missing=allow_missing) def _get_matching_spec_key(self, spec: "spack.spec.Spec", **kwargs) -> str: """Get the exact spec OR get a single spec that matches.""" @@ -1381,7 +1336,7 @@ def _deprecate(self, spec: "spack.spec.Spec", deprecator: "spack.spec.Spec") -> self._data[spec_key] = spec_rec @_autospec - def mark(self, spec: "spack.spec.Spec", key, value) -> None: + def mark(self, spec: "spack.spec.Spec", key: str, value: Any) -> None: """Mark an arbitrary record on a spec.""" with self.write_transaction(): return self._mark(spec, key, value) @@ -1525,62 +1480,51 @@ def get_by_hash(self, dag_hash, default=None, installed=any): def _query( self, - query_spec=any, - known=any, - installed=True, - explicit=any, - start_date=None, - end_date=None, - hashes=None, - in_buildcache=any, - origin=None, - ): - """Run a query on the database.""" - - # TODO: Specs are a lot like queries. Should there be a - # TODO: wildcard spec object, and should specs have attributes - # TODO: like installed and known that can be queried? Or are - # TODO: these really special cases that only belong here? - - if query_spec is not any: - if not isinstance(query_spec, spack.spec.Spec): - query_spec = spack.spec.Spec(query_spec) - - # Just look up concrete specs with hashes; no fancy search. - if query_spec.concrete: - # TODO: handling of hashes restriction is not particularly elegant. - hash_key = query_spec.dag_hash() - if hash_key in self._data and (not hashes or hash_key in hashes): - return [self._data[hash_key].spec] - else: - return [] - - # Abstract specs require more work -- currently we test - # against everything. + query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, + *, + predicate_fn: Optional[SelectType] = None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + explicit: Optional[bool] = None, + start_date: Optional[datetime.datetime] = None, + end_date: Optional[datetime.datetime] = None, + hashes: Optional[Iterable[str]] = None, + in_buildcache: Optional[bool] = None, + origin: Optional[str] = None, + ) -> List["spack.spec.Spec"]: + + # Restrict the set of records over which we iterate first + matching_hashes = self._data + if hashes is not None: + matching_hashes = {h: self._data[h] for h in hashes if h in self._data} + + if isinstance(query_spec, str): + query_spec = spack.spec.Spec(query_spec) + + if query_spec is not None and query_spec.concrete: + hash_key = query_spec.dag_hash() + if hash_key not in matching_hashes: + return [] + matching_hashes = {hash_key: matching_hashes[hash_key]} + results = [] start_date = start_date or datetime.datetime.min end_date = end_date or datetime.datetime.max - # save specs whose name doesn't match for last, to avoid a virtual check deferred = [] - - for key, rec in self._data.items(): - if hashes is not None and rec.spec.dag_hash() not in hashes: - continue - + for rec in matching_hashes.values(): if origin and not (origin == rec.origin): continue if not rec.install_type_matches(installed): continue - if in_buildcache is not any and rec.in_buildcache != in_buildcache: + if in_buildcache is not None and rec.in_buildcache != in_buildcache: continue - if explicit is not any and rec.explicit != explicit: + if explicit is not None and rec.explicit != explicit: continue - if known is not any and known(rec.spec.name): + if predicate_fn is not None and not predicate_fn(rec): continue if start_date or end_date: @@ -1588,7 +1532,7 @@ def _query( if not (start_date < inst_date < end_date): continue - if query_spec is any: + if query_spec is None or query_spec.concrete: results.append(rec.spec) continue @@ -1606,36 +1550,118 @@ def _query( # If we did fine something, the query spec can't be virtual b/c we matched an actual # package installation, so skip the virtual check entirely. If we *didn't* find anything, # check all the deferred specs *if* the query is virtual. - if not results and query_spec is not any and deferred and query_spec.virtual: + if not results and query_spec is not None and deferred and query_spec.virtual: results = [spec for spec in deferred if spec.satisfies(query_spec)] return results - if _query.__doc__ is None: - _query.__doc__ = "" - _query.__doc__ += _QUERY_DOCSTRING + def query_local( + self, + query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, + *, + predicate_fn: Optional[SelectType] = None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + explicit: Optional[bool] = None, + start_date: Optional[datetime.datetime] = None, + end_date: Optional[datetime.datetime] = None, + hashes: Optional[List[str]] = None, + in_buildcache: Optional[bool] = None, + origin: Optional[str] = None, + ) -> List["spack.spec.Spec"]: + """Queries the local Spack database. - def query_local(self, *args, **kwargs): - """Query only the local Spack database. + This function doesn't guarantee any sorting of the returned data for performance reason, + since comparing specs for __lt__ may be an expensive operation. - This function doesn't guarantee any sorting of the returned - data for performance reason, since comparing specs for __lt__ - may be an expensive operation. + Args: + query_spec: if query_spec is ``None``, match all specs in the database. + If it is a spec, return all specs matching ``spec.satisfies(query_spec)``. + + predicate_fn: optional predicate taking an InstallRecord as argument, and returning + whether that record is selected for the query. It can be used to craft criteria + that need some data for selection not provided by the Database itself. + + installed: if ``True``, includes only installed specs in the search. If ``False`` only + missing specs, and if ``any``, all specs in database. If an InstallStatus or + iterable of InstallStatus, returns specs whose install status matches at least + one of the InstallStatus. + + explicit: a spec that was installed following a specific user request is marked as + explicit. If instead it was pulled-in as a dependency of a user requested spec + it's considered implicit. + + start_date: if set considers only specs installed from the starting date. + + end_date: if set considers only specs installed until the ending date. + + in_buildcache: specs that are marked in this database as part of an associated binary + cache are ``in_buildcache``. All other specs are not. This field is used for + querying mirror indices. By default, it does not check this status. + + hashes: list of hashes used to restrict the search + + origin: origin of the spec """ with self.read_transaction(): - return self._query(*args, **kwargs) + return self._query( + query_spec, + predicate_fn=predicate_fn, + installed=installed, + explicit=explicit, + start_date=start_date, + end_date=end_date, + hashes=hashes, + in_buildcache=in_buildcache, + origin=origin, + ) + + def query( + self, + query_spec: Optional[Union[str, "spack.spec.Spec"]] = None, + *, + predicate_fn: Optional[SelectType] = None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + explicit: Optional[bool] = None, + start_date: Optional[datetime.datetime] = None, + end_date: Optional[datetime.datetime] = None, + in_buildcache: Optional[bool] = None, + hashes: Optional[List[str]] = None, + origin: Optional[str] = None, + install_tree: str = "all", + ): + """Queries the Spack database including all upstream databases. + + Args: + query_spec: if query_spec is ``None``, match all specs in the database. + If it is a spec, return all specs matching ``spec.satisfies(query_spec)``. - if query_local.__doc__ is None: - query_local.__doc__ = "" - query_local.__doc__ += _QUERY_DOCSTRING + predicate_fn: optional predicate taking an InstallRecord as argument, and returning + whether that record is selected for the query. It can be used to craft criteria + that need some data for selection not provided by the Database itself. - def query(self, *args, **kwargs): - """Query the Spack database including all upstream databases. + installed: if ``True``, includes only installed specs in the search. If ``False`` only + missing specs, and if ``any``, all specs in database. If an InstallStatus or + iterable of InstallStatus, returns specs whose install status matches at least + one of the InstallStatus. - Additional Arguments: - install_tree (str): query 'all' (default), 'local', 'upstream', or upstream path + explicit: a spec that was installed following a specific user request is marked as + explicit. If instead it was pulled-in as a dependency of a user requested spec + it's considered implicit. + + start_date: if set considers only specs installed from the starting date. + + end_date: if set considers only specs installed until the ending date. + + in_buildcache: specs that are marked in this database as part of an associated binary + cache are ``in_buildcache``. All other specs are not. This field is used for + querying mirror indices. By default, it does not check this status. + + hashes: list of hashes used to restrict the search + + install_tree: query 'all' (default), 'local', 'upstream', or upstream path + + origin: origin of the spec """ - install_tree = kwargs.pop("install_tree", "all") valid_trees = ["all", "upstream", "local", self.root] + [u.root for u in self.upstream_dbs] if install_tree not in valid_trees: msg = "Invalid install_tree argument to Database.query()\n" @@ -1651,28 +1677,54 @@ def query(self, *args, **kwargs): # queries for upstream DBs need to *not* lock - we may not # have permissions to do this and the upstream DBs won't know about # us anyway (so e.g. they should never uninstall specs) - upstream_results.extend(upstream_db._query(*args, **kwargs) or []) + upstream_results.extend( + upstream_db._query( + query_spec, + predicate_fn=predicate_fn, + installed=installed, + explicit=explicit, + start_date=start_date, + end_date=end_date, + hashes=hashes, + in_buildcache=in_buildcache, + origin=origin, + ) + or [] + ) - local_results = [] + local_results: Set["spack.spec.Spec"] = set() if install_tree in ("all", "local") or self.root == install_tree: - local_results = set(self.query_local(*args, **kwargs)) + local_results = set( + self.query_local( + query_spec, + predicate_fn=predicate_fn, + installed=installed, + explicit=explicit, + start_date=start_date, + end_date=end_date, + hashes=hashes, + in_buildcache=in_buildcache, + origin=origin, + ) + ) results = list(local_results) + list(x for x in upstream_results if x not in local_results) - return sorted(results) - if query.__doc__ is None: - query.__doc__ = "" - query.__doc__ += _QUERY_DOCSTRING - - def query_one(self, query_spec, known=any, installed=True): + def query_one( + self, + query_spec: Optional[Union[str, "spack.spec.Spec"]], + predicate_fn: Optional[SelectType] = None, + installed: Union[bool, InstallStatus, List[InstallStatus]] = True, + ) -> Optional["spack.spec.Spec"]: """Query for exactly one spec that matches the query spec. - Raises an assertion error if more than one spec matches the - query. Returns None if no installed package matches. + Returns None if no installed package matches. + Raises: + AssertionError: if more than one spec matches the query. """ - concrete_specs = self.query(query_spec, known=known, installed=installed) + concrete_specs = self.query(query_spec, predicate_fn=predicate_fn, installed=installed) assert len(concrete_specs) <= 1 return concrete_specs[0] if concrete_specs else None @@ -1719,24 +1771,6 @@ def root(key, record): if id(rec.spec) not in needed and rec.installed ] - def update_explicit(self, spec, explicit): - """ - Update the spec's explicit state in the database. - - Args: - spec (spack.spec.Spec): the spec whose install record is being updated - explicit (bool): ``True`` if the package was requested explicitly - by the user, ``False`` if it was pulled in as a dependency of - an explicit package. - """ - rec = self.get_record(spec) - if explicit != rec.explicit: - with self.write_transaction(): - message = "{s.name}@{s.version} : marking the package {0}" - status = "explicit" if explicit else "implicit" - tty.debug(message.format(status, s=spec)) - rec.explicit = explicit - class NoUpstreamVisitor: """Gives edges to upstream specs, but does follow edges from upstream specs.""" diff --git a/lib/spack/spack/detection/path.py b/lib/spack/spack/detection/path.py index e8081f6e3c6e18..d529f94f290ee6 100644 --- a/lib/spack/spack/detection/path.py +++ b/lib/spack/spack/detection/path.py @@ -11,6 +11,7 @@ import os.path import re import sys +import traceback import warnings from typing import Dict, Iterable, List, Optional, Set, Tuple, Type @@ -18,6 +19,7 @@ import llnl.util.lang import llnl.util.tty +import spack.error import spack.spec import spack.util.elf as elf_utils import spack.util.environment @@ -274,8 +276,12 @@ def detect_specs( ) except Exception as e: specs = [] + if spack.error.SHOW_BACKTRACE: + details = traceback.format_exc() + else: + details = f"[{e.__class__.__name__}: {e}]" warnings.warn( - f'error detecting "{pkg.name}" from prefix {candidate_path} [{str(e)}]' + f'error detecting "{pkg.name}" from prefix {candidate_path}: {details}' ) if not specs: @@ -449,9 +455,9 @@ def by_path( llnl.util.tty.debug( f"[EXTERNAL DETECTION] Skipping {pkg_name}: timeout reached" ) - except Exception as e: + except Exception: llnl.util.tty.debug( - f"[EXTERNAL DETECTION] Skipping {pkg_name}: exception occured {e}" + f"[EXTERNAL DETECTION] Skipping {pkg_name}: {traceback.format_exc()}" ) return result diff --git a/lib/spack/spack/directives.py b/lib/spack/spack/directives.py index c3db11a18b77ef..61f7676f860d8c 100644 --- a/lib/spack/spack/directives.py +++ b/lib/spack/spack/directives.py @@ -64,6 +64,7 @@ class OpenMpi(Package): "DirectiveMeta", "DisableRedistribute", "version", + "conditional", "conflicts", "depends_on", "extends", @@ -76,6 +77,7 @@ class OpenMpi(Package): "build_system", "requires", "redistribute", + "can_splice", ] _patch_order_index = 0 @@ -533,6 +535,43 @@ def _execute_provides(pkg: "spack.package_base.PackageBase"): return _execute_provides +@directive("splice_specs") +def can_splice( + target: SpecType, *, when: SpecType, match_variants: Union[None, str, List[str]] = None +): + """Packages can declare whether they are ABI-compatible with another package + and thus can be spliced into concrete versions of that package. + + Args: + target: The spec that the current package is ABI-compatible with. + + when: An anonymous spec constraining current package for when it is + ABI-compatible with target. + + match_variants: A list of variants that must match + between target spec and current package, with special value '*' + which matches all variants. Example: a variant is defined on both + packages called json, and they are ABI-compatible whenever they agree on + the json variant (regardless of whether it is turned on or off). Note + that this cannot be applied to multi-valued variants and multi-valued + variants will be skipped by '*'. + """ + + def _execute_can_splice(pkg: "spack.package_base.PackageBase"): + when_spec = _make_when_spec(when) + if isinstance(match_variants, str) and match_variants != "*": + raise ValueError( + "* is the only valid string for match_variants " + "if looking to provide a single variant, use " + f"[{match_variants}] instead" + ) + if when_spec is None: + return + pkg.splice_specs[when_spec] = (spack.spec.Spec(target), match_variants) + + return _execute_can_splice + + @directive("patches") def patch( url_or_filename: str, @@ -606,6 +645,15 @@ def _execute_patch(pkg_or_dep: Union["spack.package_base.PackageBase", Dependenc return _execute_patch +def conditional(*values: List[Any], when: Optional[WhenType] = None): + """Conditional values that can be used in variant declarations.""" + # _make_when_spec returns None when the condition is statically false. + when = _make_when_spec(when) + return spack.variant.ConditionalVariantValues( + spack.variant.ConditionalValue(x, when=when) for x in values + ) + + @directive("variants") def variant( name: str, diff --git a/lib/spack/spack/directives_meta.py b/lib/spack/spack/directives_meta.py index 0768a40664f4e6..70ba0298a88a82 100644 --- a/lib/spack/spack/directives_meta.py +++ b/lib/spack/spack/directives_meta.py @@ -10,6 +10,7 @@ import llnl.util.lang import spack.error +import spack.repo import spack.spec #: Names of possible directives. This list is mostly populated using the @directive decorator. @@ -63,7 +64,7 @@ def __init__(cls, name, bases, attr_dict): # The instance is being initialized: if it is a package we must ensure # that the directives are called to set it up. - if "spack.pkg" in cls.__module__: + if cls.__module__.startswith(spack.repo.ROOT_PYTHON_NAMESPACE): # Ensure the presence of the dictionaries associated with the directives. # All dictionaries are defaultdicts that create lists for missing keys. for d in DirectiveMeta._directive_dict_names: diff --git a/lib/spack/spack/environment/__init__.py b/lib/spack/spack/environment/__init__.py index fb083594e00fb5..62445e04379134 100644 --- a/lib/spack/spack/environment/__init__.py +++ b/lib/spack/spack/environment/__init__.py @@ -473,6 +473,7 @@ active_environment, all_environment_names, all_environments, + as_env_dir, create, create_in_dir, deactivate, @@ -480,6 +481,7 @@ default_view_name, display_specs, environment_dir_from_name, + environment_from_name_or_dir, exists, initialize_environment_dir, installed_specs, @@ -507,6 +509,7 @@ "active_environment", "all_environment_names", "all_environments", + "as_env_dir", "create", "create_in_dir", "deactivate", @@ -514,6 +517,7 @@ "default_view_name", "display_specs", "environment_dir_from_name", + "environment_from_name_or_dir", "exists", "initialize_environment_dir", "installed_specs", diff --git a/lib/spack/spack/environment/environment.py b/lib/spack/spack/environment/environment.py index 8837e2cecd8ee1..9a3361c7347466 100644 --- a/lib/spack/spack/environment/environment.py +++ b/lib/spack/spack/environment/environment.py @@ -11,22 +11,19 @@ import re import shutil import stat -import sys -import time import urllib.parse import urllib.request import warnings -from typing import Any, Dict, Iterable, List, Optional, Set, Tuple, Union +from typing import Any, Dict, Iterable, List, Optional, Sequence, Tuple, Union import llnl.util.filesystem as fs import llnl.util.tty as tty import llnl.util.tty.color as clr from llnl.util.link_tree import ConflictingSpecsError -from llnl.util.symlink import readlink, symlink +from llnl.util.symlink import islink, readlink, symlink import spack import spack.caches -import spack.compilers import spack.concretize import spack.config import spack.deptypes as dt @@ -45,7 +42,6 @@ import spack.util.environment import spack.util.hash import spack.util.lock as lk -import spack.util.parallel import spack.util.path import spack.util.spack_json as sjson import spack.util.spack_yaml as syaml @@ -57,6 +53,8 @@ from spack.spec_list import SpecList from spack.util.path import substitute_path_variables +SpecPair = spack.concretize.SpecPair + #: environment variable used to indicate the active environment spack_env_var = "SPACK_ENV" @@ -277,6 +275,22 @@ def is_env_dir(path): return os.path.isdir(path) and os.path.exists(os.path.join(path, manifest_name)) +def as_env_dir(name_or_dir): + """Translate an environment name or directory to the environment directory""" + if is_env_dir(name_or_dir): + return name_or_dir + else: + validate_env_name(name_or_dir) + if not exists(name_or_dir): + raise SpackEnvironmentError("no such environment '%s'" % name_or_dir) + return root(name_or_dir) + + +def environment_from_name_or_dir(name_or_dir): + """Get an environment with the supplied name.""" + return Environment(as_env_dir(name_or_dir)) + + def read(name): """Get an environment with the supplied name.""" validate_env_name(name) @@ -654,7 +668,7 @@ def from_dict(base_path, d): @property def _current_root(self): - if not os.path.islink(self.root): + if not islink(self.root): return None root = readlink(self.root) @@ -1494,7 +1508,7 @@ def deconcretize(self, spec: spack.spec.Spec, concrete: bool = True): def _get_specs_to_concretize( self, - ) -> Tuple[Set[spack.spec.Spec], Set[spack.spec.Spec], List[spack.spec.Spec]]: + ) -> Tuple[List[spack.spec.Spec], List[spack.spec.Spec], List[SpecPair]]: """Compute specs to concretize for unify:true and unify:when_possible. This includes new user specs and any already concretized specs. @@ -1504,23 +1518,20 @@ def _get_specs_to_concretize( """ # Exit early if the set of concretized specs is the set of user specs - new_user_specs = set(self.user_specs) - set(self.concretized_user_specs) - kept_user_specs = set(self.user_specs) & set(self.concretized_user_specs) + new_user_specs = list(set(self.user_specs) - set(self.concretized_user_specs)) + kept_user_specs = list(set(self.user_specs) & set(self.concretized_user_specs)) + kept_user_specs += self.included_user_specs if not new_user_specs: return new_user_specs, kept_user_specs, [] - concrete_specs_to_keep = [ - concrete + specs_to_concretize = [(s, None) for s in new_user_specs] + [ + (abstract, concrete) for abstract, concrete in self.concretized_specs() if abstract in kept_user_specs ] - - specs_to_concretize = list(new_user_specs) + concrete_specs_to_keep return new_user_specs, kept_user_specs, specs_to_concretize - def _concretize_together_where_possible( - self, tests: bool = False - ) -> List[Tuple[spack.spec.Spec, spack.spec.Spec]]: + def _concretize_together_where_possible(self, tests: bool = False) -> Sequence[SpecPair]: # Avoid cyclic dependency import spack.solver.asp @@ -1529,36 +1540,26 @@ def _concretize_together_where_possible( if not new_user_specs: return [] - old_concrete_to_abstract = { - concrete: abstract for (abstract, concrete) in self.concretized_specs() - } - self.concretized_user_specs = [] self.concretized_order = [] self.specs_by_hash = {} - result_by_user_spec = {} - solver = spack.solver.asp.Solver() - allow_deprecated = spack.config.get("config:deprecated", False) - for result in solver.solve_in_rounds( - specs_to_concretize, tests=tests, allow_deprecated=allow_deprecated - ): - result_by_user_spec.update(result.specs_by_input) + ret = [] + result = spack.concretize.concretize_together_when_possible( + specs_to_concretize, tests=tests + ) + for abstract, concrete in result: + # Only add to the environment if it's from this environment (not included in) + if abstract in self.user_specs: + self._add_concrete_spec(abstract, concrete) - result = [] - for abstract, concrete in sorted(result_by_user_spec.items()): - # If the "abstract" spec is a concrete spec from the previous concretization - # translate it back to an abstract spec. Otherwise, keep the abstract spec - abstract = old_concrete_to_abstract.get(abstract, abstract) + # Return only the new specs if abstract in new_user_specs: - result.append((abstract, concrete)) - self._add_concrete_spec(abstract, concrete) + ret.append((abstract, concrete)) - return result + return ret - def _concretize_together( - self, tests: bool = False - ) -> List[Tuple[spack.spec.Spec, spack.spec.Spec]]: + def _concretize_together(self, tests: bool = False) -> Sequence[SpecPair]: """Concretization strategy that concretizes all the specs in the same DAG. """ @@ -1572,8 +1573,8 @@ def _concretize_together( self.specs_by_hash = {} try: - concrete_specs: List[spack.spec.Spec] = spack.concretize.concretize_specs_together( - *specs_to_concretize, tests=tests + concretized_specs = spack.concretize.concretize_together( + specs_to_concretize, tests=tests ) except spack.error.UnsatisfiableSpecError as e: # "Enhance" the error message for multiple root specs, suggest a less strict @@ -1591,14 +1592,13 @@ def _concretize_together( ) raise - # set() | set() does not preserve ordering, even though sets are ordered - ordered_user_specs = list(new_user_specs) + list(kept_user_specs) - concretized_specs = [x for x in zip(ordered_user_specs, concrete_specs)] for abstract, concrete in concretized_specs: - self._add_concrete_spec(abstract, concrete) + # Don't add if it's just included + if abstract in self.user_specs: + self._add_concrete_spec(abstract, concrete) - # zip truncates the longer list, which is exactly what we want here - return list(zip(new_user_specs, concrete_specs)) + # Return the portion of the return value that is new + return concretized_specs[: len(new_user_specs)] def _concretize_separately(self, tests=False): """Concretization strategy that concretizes separately one @@ -1620,71 +1620,16 @@ def _concretize_separately(self, tests=False): concrete = old_specs_by_hash[h] self._add_concrete_spec(s, concrete, new=False) - # Concretize any new user specs that we haven't concretized yet - args, root_specs, i = [], [], 0 - for uspec in self.user_specs: - if uspec not in old_concretized_user_specs: - root_specs.append(uspec) - args.append((i, str(uspec), tests)) - i += 1 - - # Ensure we don't try to bootstrap clingo in parallel - with spack.bootstrap.ensure_bootstrap_configuration(): - spack.bootstrap.ensure_clingo_importable_or_raise() - - # Ensure all the indexes have been built or updated, since - # otherwise the processes in the pool may timeout on waiting - # for a write lock. We do this indirectly by retrieving the - # provider index, which should in turn trigger the update of - # all the indexes if there's any need for that. - _ = spack.repo.PATH.provider_index - - # Ensure we have compilers in compilers.yaml to avoid that - # processes try to write the config file in parallel - _ = spack.compilers.all_compilers_config(spack.config.CONFIG) - - # Early return if there is nothing to do - if len(args) == 0: - return [] - - # Solve the environment in parallel on Linux - start = time.time() - num_procs = min(len(args), spack.config.determine_number_of_jobs(parallel=True)) - - # TODO: support parallel concretization on macOS and Windows - msg = "Starting concretization" - if sys.platform not in ("darwin", "win32") and num_procs > 1: - msg += f" pool with {num_procs} processes" - tty.msg(msg) - - batch = [] - for j, (i, concrete, duration) in enumerate( - spack.util.parallel.imap_unordered( - _concretize_task, - args, - processes=num_procs, - debug=tty.is_debug(), - maxtaskperchild=1, - ) - ): - batch.append((i, concrete)) - percentage = (j + 1) / len(args) * 100 - tty.verbose( - f"{duration:6.1f}s [{percentage:3.0f}%] {concrete.cformat('{hash:7}')} " - f"{root_specs[i].colored_str}" - ) - sys.stdout.flush() + to_concretize = [ + (root, None) for root in self.user_specs if root not in old_concretized_user_specs + ] + concretized_specs = spack.concretize.concretize_separately(to_concretize, tests=tests) - # Add specs in original order - batch.sort(key=lambda x: x[0]) - by_hash = {} # for attaching information on test dependencies - for root, (_, concrete) in zip(root_specs, batch): - self._add_concrete_spec(root, concrete) + by_hash = {} + for abstract, concrete in concretized_specs: + self._add_concrete_spec(abstract, concrete) by_hash[concrete.dag_hash()] = concrete - finish = time.time() - tty.msg(f"Environment concretized in {finish - start:.2f} seconds") - # Unify the specs objects, so we get correct references to all parents self._read_lockfile_dict(self._to_lockfile_dict()) @@ -1704,11 +1649,7 @@ def _concretize_separately(self, tests=False): test_dependency.copy(), depflag=dt.TEST, virtuals=current_edge.virtuals ) - results = [ - (abstract, self.specs_by_hash[h]) - for abstract, h in zip(self.concretized_user_specs, self.concretized_order) - ] - return results + return concretized_specs @property def default_view(self): @@ -1956,17 +1897,16 @@ def install_specs(self, specs: Optional[List[Spec]] = None, **install_args): specs = specs if specs is not None else roots # Extend the set of specs to overwrite with modified dev specs and their parents - overwrite: Set[str] = set() - overwrite.update(install_args.get("overwrite", []), self._dev_specs_that_need_overwrite()) - install_args["overwrite"] = overwrite - - explicit: Set[str] = set() - explicit.update( - install_args.get("explicit", []), - (s.dag_hash() for s in specs), - (s.dag_hash() for s in roots), - ) - install_args["explicit"] = explicit + install_args["overwrite"] = { + *install_args.get("overwrite", ()), + *self._dev_specs_that_need_overwrite(), + } + + # Only environment roots are marked explicit + install_args["explicit"] = { + *install_args.get("explicit", ()), + *(s.dag_hash() for s in roots), + } PackageInstaller([spec.package for spec in specs], **install_args).install() @@ -2516,14 +2456,6 @@ def display_specs(specs): print(tree_string) -def _concretize_task(packed_arguments) -> Tuple[int, Spec, float]: - index, spec_str, tests = packed_arguments - with tty.SuppressOutput(msg_enabled=False): - start = time.time() - spec = Spec(spec_str).concretized(tests=tests) - return index, spec, time.time() - start - - def make_repo_path(root): """Make a RepoPath from the repo subdirectories in an environment.""" path = spack.repo.RepoPath(cache=spack.caches.MISC_CACHE) diff --git a/lib/spack/spack/environment/shell.py b/lib/spack/spack/environment/shell.py index b1d87a48fd7649..bb2dea04c0297e 100644 --- a/lib/spack/spack/environment/shell.py +++ b/lib/spack/spack/environment/shell.py @@ -48,8 +48,6 @@ def activate_header(env, shell, prompt=None, view: Optional[str] = None): cmds += 'set "SPACK_ENV=%s"\n' % env.path if view: cmds += 'set "SPACK_ENV_VIEW=%s"\n' % view - # TODO: despacktivate - # TODO: prompt elif shell == "pwsh": cmds += "$Env:SPACK_ENV='%s'\n" % env.path if view: diff --git a/lib/spack/spack/error.py b/lib/spack/spack/error.py index edb4b9e89fb262..45a39a4f201d97 100644 --- a/lib/spack/spack/error.py +++ b/lib/spack/spack/error.py @@ -12,6 +12,9 @@ #: this is module-scoped because it needs to be set very early debug = 0 +#: whether to show a backtrace when an error is printed, enabled with --backtrace. +SHOW_BACKTRACE = False + class SpackError(Exception): """This is the superclass for all Spack errors. diff --git a/lib/spack/spack/filesystem_view.py b/lib/spack/spack/filesystem_view.py index 2d5890c36389fc..278541377989c2 100644 --- a/lib/spack/spack/filesystem_view.py +++ b/lib/spack/spack/filesystem_view.py @@ -33,6 +33,7 @@ from llnl.util.tty.color import colorize import spack.config +import spack.directory_layout import spack.paths import spack.projections import spack.relocate @@ -50,7 +51,7 @@ _projections_path = ".spack/projections.yaml" -LinkCallbackType = Callable[[str, str, "FilesystemView", Optional["spack.spec.Spec"]], None] +LinkCallbackType = Callable[[str, str, "FilesystemView", Optional[spack.spec.Spec]], None] def view_symlink(src: str, dst: str, *args, **kwargs) -> None: @@ -62,7 +63,7 @@ def view_hardlink(src: str, dst: str, *args, **kwargs) -> None: def view_copy( - src: str, dst: str, view: "FilesystemView", spec: Optional["spack.spec.Spec"] = None + src: str, dst: str, view: "FilesystemView", spec: Optional[spack.spec.Spec] = None ) -> None: """ Copy a file from src to dst. @@ -160,7 +161,7 @@ class FilesystemView: def __init__( self, root: str, - layout: "spack.directory_layout.DirectoryLayout", + layout: spack.directory_layout.DirectoryLayout, *, projections: Optional[Dict] = None, ignore_conflicts: bool = False, @@ -182,7 +183,10 @@ def __init__( # Setup link function to include view self.link_type = link_type - self.link = ft.partial(function_for_link_type(link_type), view=self) + self._link = function_for_link_type(link_type) + + def link(self, src: str, dst: str, spec: Optional[spack.spec.Spec] = None) -> None: + self._link(src, dst, self, spec) def add_specs(self, *specs, **kwargs): """ @@ -283,7 +287,7 @@ class YamlFilesystemView(FilesystemView): def __init__( self, root: str, - layout: "spack.directory_layout.DirectoryLayout", + layout: spack.directory_layout.DirectoryLayout, *, projections: Optional[Dict] = None, ignore_conflicts: bool = False, diff --git a/lib/spack/spack/hooks/__init__.py b/lib/spack/spack/hooks/__init__.py index 0e7e3036928a67..73fad62d6ad3dc 100644 --- a/lib/spack/spack/hooks/__init__.py +++ b/lib/spack/spack/hooks/__init__.py @@ -21,43 +21,40 @@ features. """ import importlib - -from llnl.util.lang import ensure_last, list_modules - -import spack.paths +import types +from typing import List, Optional class _HookRunner: - #: Stores all hooks on first call, shared among - #: all HookRunner objects - _hooks = None + #: Order in which hooks are executed + HOOK_ORDER = [ + "spack.hooks.module_file_generation", + "spack.hooks.licensing", + "spack.hooks.sbang", + "spack.hooks.windows_runtime_linkage", + "spack.hooks.drop_redundant_rpaths", + "spack.hooks.absolutify_elf_sonames", + "spack.hooks.permissions_setters", + # after all mutations to the install prefix, write metadata + "spack.hooks.write_install_manifest", + # after all metadata is written + "spack.hooks.autopush", + ] + + #: Contains all hook modules after first call, shared among all HookRunner objects + _hooks: Optional[List[types.ModuleType]] = None def __init__(self, hook_name): self.hook_name = hook_name - @classmethod - def _populate_hooks(cls): - # Lazily populate the list of hooks - cls._hooks = [] - - relative_names = list(list_modules(spack.paths.hooks_path)) - - # Ensure that write_install_manifest comes last - ensure_last(relative_names, "absolutify_elf_sonames", "write_install_manifest") - - for name in relative_names: - module_name = __name__ + "." + name - module_obj = importlib.import_module(module_name) - cls._hooks.append((module_name, module_obj)) - @property - def hooks(self): + def hooks(self) -> List[types.ModuleType]: if not self._hooks: - self._populate_hooks() + self._hooks = [importlib.import_module(module_name) for module_name in self.HOOK_ORDER] return self._hooks def __call__(self, *args, **kwargs): - for _, module in self.hooks: + for module in self.hooks: if hasattr(module, self.hook_name): hook = getattr(module, self.hook_name) if hasattr(hook, "__call__"): diff --git a/lib/spack/spack/installer.py b/lib/spack/spack/installer.py index 80fe9f2b038e58..be09973336b2cd 100644 --- a/lib/spack/spack/installer.py +++ b/lib/spack/spack/installer.py @@ -412,7 +412,7 @@ def _process_external_package(pkg: "spack.package_base.PackageBase", explicit: b tty.debug(f"{pre} already registered in DB") record = spack.store.STORE.db.get_record(spec) if explicit and not record.explicit: - spack.store.STORE.db.update_explicit(spec, explicit) + spack.store.STORE.db.mark(spec, "explicit", True) except KeyError: # If not, register it and generate the module file. @@ -1507,8 +1507,8 @@ def _prepare_for_install(self, task: Task) -> None: self._update_installed(task) # Only update the explicit entry once for the explicit package - if task.explicit: - spack.store.STORE.db.update_explicit(task.pkg.spec, True) + if task.explicit and not rec.explicit: + spack.store.STORE.db.mark(task.pkg.spec, "explicit", True) def _cleanup_all_tasks(self) -> None: """Cleanup all tasks to include releasing their locks.""" diff --git a/lib/spack/spack/main.py b/lib/spack/spack/main.py index c0bb3d33552776..7cab47d77f7bf1 100644 --- a/lib/spack/spack/main.py +++ b/lib/spack/spack/main.py @@ -102,9 +102,6 @@ spack_ld_library_path = os.environ.get("LD_LIBRARY_PATH", "") -#: Whether to print backtraces on error -SHOW_BACKTRACE = False - def add_all_commands(parser): """Add all spack subcommands to the parser.""" @@ -492,6 +489,7 @@ def make_argument_parser(**kwargs): help="add stacktraces to all printed statements", ) parser.add_argument( + "-t", "--backtrace", action="store_true", default="SPACK_BACKTRACE" in os.environ, @@ -527,8 +525,7 @@ def setup_main_options(args): if args.debug or args.backtrace: spack.error.debug = True - global SHOW_BACKTRACE - SHOW_BACKTRACE = True + spack.error.SHOW_BACKTRACE = True if args.debug: spack.util.debug.register_interrupt_handler() @@ -914,13 +911,6 @@ def _main(argv=None): # Make spack load / env activate work on macOS restore_macos_dyld_vars() - # make spack.config aware of any command line configuration scopes - if args.config_scopes: - spack.config.COMMAND_LINE_SCOPES = args.config_scopes - - # ensure options on spack command come before everything - setup_main_options(args) - # activate an environment if one was specified on the command line env_format_error = None if not args.no_env: @@ -934,6 +924,12 @@ def _main(argv=None): e.print_context() env_format_error = e + # Push scopes from the command line last + if args.config_scopes: + spack.config._add_command_line_scopes(spack.config.CONFIG, args.config_scopes) + spack.config.CONFIG.push_scope(spack.config.InternalConfigScope("command_line")) + setup_main_options(args) + # ------------------------------------------------------------------------ # Things that require configuration should go below here # ------------------------------------------------------------------------ @@ -1021,19 +1017,19 @@ def main(argv=None): e.die() # gracefully die on any SpackErrors except KeyboardInterrupt: - if spack.config.get("config:debug") or SHOW_BACKTRACE: + if spack.config.get("config:debug") or spack.error.SHOW_BACKTRACE: raise sys.stderr.write("\n") tty.error("Keyboard interrupt.") return signal.SIGINT.value except SystemExit as e: - if spack.config.get("config:debug") or SHOW_BACKTRACE: + if spack.config.get("config:debug") or spack.error.SHOW_BACKTRACE: traceback.print_exc() return e.code except Exception as e: - if spack.config.get("config:debug") or SHOW_BACKTRACE: + if spack.config.get("config:debug") or spack.error.SHOW_BACKTRACE: raise tty.error(e) return 3 diff --git a/lib/spack/spack/mirror.py b/lib/spack/spack/mirror.py index 8caa27213735a4..fe38d1f963afeb 100644 --- a/lib/spack/spack/mirror.py +++ b/lib/spack/spack/mirror.py @@ -18,7 +18,7 @@ import sys import traceback import urllib.parse -from typing import List, Optional, Union +from typing import Any, Dict, Optional, Tuple, Union import llnl.url import llnl.util.symlink @@ -29,7 +29,6 @@ import spack.config import spack.error import spack.fetch_strategy -import spack.mirror import spack.oci.image import spack.repo import spack.spec @@ -89,9 +88,8 @@ def from_url(url: str): """Create an anonymous mirror by URL. This method validates the URL.""" if not urllib.parse.urlparse(url).scheme in supported_url_schemes: raise ValueError( - '"{}" is not a valid mirror URL. Scheme must be once of {}.'.format( - url, ", ".join(supported_url_schemes) - ) + f'"{url}" is not a valid mirror URL. ' + f"Scheme must be one of {supported_url_schemes}." ) return Mirror(url) @@ -155,8 +153,66 @@ def push_url(self): """Get the valid, canonicalized fetch URL""" return self.get_url("push") + def ensure_mirror_usable(self, direction: str = "push"): + access_pair = self._get_value("access_pair", direction) + access_token_variable = self._get_value("access_token_variable", direction) + + errors = [] + + # Verify that the credentials that are variables expand + if access_pair and isinstance(access_pair, dict): + if "id_variable" in access_pair and access_pair["id_variable"] not in os.environ: + errors.append(f"id_variable {access_pair['id_variable']} not set in environment") + if "secret_variable" in access_pair: + if access_pair["secret_variable"] not in os.environ: + errors.append( + f"environment variable `{access_pair['secret_variable']}` " + "(secret_variable) not set" + ) + + if access_token_variable: + if access_token_variable not in os.environ: + errors.append( + f"environment variable `{access_pair['access_token_variable']}` " + "(access_token_variable) not set" + ) + + if errors: + msg = f"invalid {direction} configuration for mirror {self.name}: " + msg += "\n ".join(errors) + raise MirrorError(msg) + def _update_connection_dict(self, current_data: dict, new_data: dict, top_level: bool): - keys = ["url", "access_pair", "access_token", "profile", "endpoint_url"] + # Only allow one to exist in the config + if "access_token" in current_data and "access_token_variable" in new_data: + current_data.pop("access_token") + elif "access_token_variable" in current_data and "access_token" in new_data: + current_data.pop("access_token_variable") + + # If updating to a new access_pair that is the deprecated list, warn + warn_deprecated_access_pair = False + if "access_pair" in new_data: + warn_deprecated_access_pair = isinstance(new_data["access_pair"], list) + # If the not updating the current access_pair, and it is the deprecated list, warn + elif "access_pair" in current_data: + warn_deprecated_access_pair = isinstance(current_data["access_pair"], list) + + if warn_deprecated_access_pair: + tty.warn( + f"in mirror {self.name}: support for plain text secrets in config files " + "(access_pair: [id, secret]) is deprecated and will be removed in a future Spack " + "version. Use environment variables instead (access_pair: " + "{id: ..., secret_variable: ...})" + ) + + keys = [ + "url", + "access_pair", + "access_token", + "access_token_variable", + "profile", + "endpoint_url", + ] if top_level: keys += ["binary", "source", "signed", "autopush"] changed = False @@ -272,11 +328,53 @@ def get_url(self, direction: str) -> str: return _url_or_path_to_url(url) - def get_access_token(self, direction: str) -> Optional[str]: - return self._get_value("access_token", direction) + def get_credentials(self, direction: str) -> Dict[str, Any]: + """Get the mirror credentials from the mirror config - def get_access_pair(self, direction: str) -> Optional[List]: - return self._get_value("access_pair", direction) + Args: + direction: fetch or push mirror config + + Returns: + Dictionary from credential type string to value + + Credential Type Map: + access_token -> str + access_pair -> tuple(str,str) + profile -> str + """ + creddict: Dict[str, Any] = {} + access_token = self.get_access_token(direction) + if access_token: + creddict["access_token"] = access_token + + access_pair = self.get_access_pair(direction) + if access_pair: + creddict.update({"access_pair": access_pair}) + + profile = self.get_profile(direction) + if profile: + creddict["profile"] = profile + + return creddict + + def get_access_token(self, direction: str) -> Optional[str]: + tok = self._get_value("access_token_variable", direction) + if tok: + return os.environ.get(tok) + else: + return self._get_value("access_token", direction) + return None + + def get_access_pair(self, direction: str) -> Optional[Tuple[str, str]]: + pair = self._get_value("access_pair", direction) + if isinstance(pair, (tuple, list)) and len(pair) == 2: + return (pair[0], pair[1]) if all(pair) else None + elif isinstance(pair, dict): + id_ = os.environ.get(pair["id_variable"]) if "id_variable" in pair else pair["id"] + secret = os.environ.get(pair["secret_variable"]) + return (id_, secret) if id_ and secret else None + else: + return None def get_profile(self, direction: str) -> Optional[str]: return self._get_value("profile", direction) @@ -757,9 +855,9 @@ def create_mirror_from_package_object(pkg_obj, mirror_cache, mirror_stats): def require_mirror_name(mirror_name): """Find a mirror by name and raise if it does not exist""" - mirror = spack.mirror.MirrorCollection().get(mirror_name) + mirror = MirrorCollection().get(mirror_name) if not mirror: - raise ValueError('no mirror named "{0}"'.format(mirror_name)) + raise ValueError(f'no mirror named "{mirror_name}"') return mirror diff --git a/lib/spack/spack/modules/common.py b/lib/spack/spack/modules/common.py index 7875ab55616fd8..c770564edddb0a 100644 --- a/lib/spack/spack/modules/common.py +++ b/lib/spack/spack/modules/common.py @@ -527,7 +527,8 @@ def use_name(self): parts = name.split("/") name = os.path.join(*parts) # Add optional suffixes based on constraints - path_elements = [name] + self.conf.suffixes + path_elements = [name] + path_elements.extend(map(self.spec.format, self.conf.suffixes)) return "-".join(path_elements) @property diff --git a/lib/spack/spack/oci/opener.py b/lib/spack/spack/oci/opener.py index 906d5d2b92c60b..2f9e83f5be1619 100644 --- a/lib/spack/spack/oci/opener.py +++ b/lib/spack/spack/oci/opener.py @@ -377,9 +377,10 @@ def credentials_from_mirrors( # Prefer push credentials over fetch. Unlikely that those are different # but our config format allows it. for direction in ("push", "fetch"): - pair = mirror.get_access_pair(direction) - if pair is None: + pair = mirror.get_credentials(direction).get("access_pair") + if not pair: continue + url = mirror.get_url(direction) if not url.startswith("oci://"): continue diff --git a/lib/spack/spack/package.py b/lib/spack/spack/package.py index bf8538032ae462..f8028d9ecaf10c 100644 --- a/lib/spack/spack/package.py +++ b/lib/spack/spack/package.py @@ -103,12 +103,7 @@ from spack.spec import InvalidSpecDetected, Spec from spack.util.executable import * from spack.util.filesystem import file_command, fix_darwin_install_name, mime_type -from spack.variant import ( - any_combination_of, - auto_or_any_combination_of, - conditional, - disjoint_sets, -) +from spack.variant import any_combination_of, auto_or_any_combination_of, disjoint_sets from spack.version import Version, ver # These are just here for editor support; they will be replaced when the build env diff --git a/lib/spack/spack/package_base.py b/lib/spack/spack/package_base.py index 5927c0935735a6..cb8ac2488749db 100644 --- a/lib/spack/spack/package_base.py +++ b/lib/spack/spack/package_base.py @@ -32,7 +32,6 @@ from llnl.util.lang import classproperty, memoized from llnl.util.link_tree import LinkTree -import spack.build_environment import spack.builder import spack.compilers import spack.config @@ -50,7 +49,6 @@ import spack.store import spack.url import spack.util.environment -import spack.util.executable import spack.util.path import spack.util.web from spack.error import InstallError, NoURLError, PackageError @@ -624,6 +622,7 @@ class PackageBase(WindowsRPath, PackageViewMixin, RedistributionMixin, metaclass patches: Dict["spack.spec.Spec", List["spack.patch.Patch"]] variants: Dict["spack.spec.Spec", Dict[str, "spack.variant.Variant"]] languages: Dict["spack.spec.Spec", Set[str]] + splice_specs: Dict["spack.spec.Spec", Tuple["spack.spec.Spec", Union[None, str, List[str]]]] #: By default, packages are not virtual #: Virtual packages override this attribute diff --git a/lib/spack/spack/relocate.py b/lib/spack/spack/relocate.py index 67e980625ea359..627c9e2b057061 100644 --- a/lib/spack/spack/relocate.py +++ b/lib/spack/spack/relocate.py @@ -283,7 +283,11 @@ def modify_macho_object(cur_path, rpaths, deps, idpath, paths_to_paths): def macholib_get_paths(cur_path): """Get rpaths, dependent libraries, and library id of mach-o objects.""" - headers = macholib.MachO.MachO(cur_path).headers + headers = [] + try: + headers = macholib.MachO.MachO(cur_path).headers + except ValueError: + pass if not headers: tty.warn("Failed to read Mach-O headers: {0}".format(cur_path)) commands = [] diff --git a/lib/spack/spack/repo.py b/lib/spack/spack/repo.py index b916c3baef8674..f3872aed8d1d1f 100644 --- a/lib/spack/spack/repo.py +++ b/lib/spack/spack/repo.py @@ -39,9 +39,9 @@ import spack.error import spack.patch import spack.provider_index -import spack.repo import spack.spec import spack.tag +import spack.util.file_cache import spack.util.git import spack.util.naming as nm import spack.util.path @@ -216,9 +216,9 @@ def compute_loader(self, fullname): def packages_path(): """Get the test repo if it is active, otherwise the builtin repo.""" try: - return spack.repo.PATH.get_repo("builtin.mock").packages_path - except spack.repo.UnknownNamespaceError: - return spack.repo.PATH.get_repo("builtin").packages_path + return PATH.get_repo("builtin.mock").packages_path + except UnknownNamespaceError: + return PATH.get_repo("builtin").packages_path class GitExe: @@ -314,7 +314,7 @@ def add_package_to_git_stage(packages): git = GitExe() for pkg_name in packages: - filename = spack.repo.PATH.filename_for_package_name(pkg_name) + filename = PATH.filename_for_package_name(pkg_name) if not os.path.isfile(filename): tty.die("No such package: %s. Path does not exist:" % pkg_name, filename) @@ -590,7 +590,7 @@ def __init__( self, package_checker: FastPackageChecker, namespace: str, - cache: "spack.caches.FileCacheType", + cache: spack.util.file_cache.FileCache, ): self.checker = package_checker self.packages_path = self.checker.packages_path @@ -683,7 +683,7 @@ class RepoPath: def __init__( self, *repos: Union[str, "Repo"], - cache: Optional["spack.caches.FileCacheType"], + cache: Optional[spack.util.file_cache.FileCache], overrides: Optional[Dict[str, Any]] = None, ) -> None: self.repos: List[Repo] = [] @@ -965,7 +965,7 @@ def __init__( self, root: str, *, - cache: "spack.caches.FileCacheType", + cache: spack.util.file_cache.FileCache, overrides: Optional[Dict[str, Any]] = None, ) -> None: """Instantiate a package repository from a filesystem path. @@ -1440,9 +1440,7 @@ def _path(configuration=None): return create(configuration=configuration) -def create( - configuration: Union["spack.config.Configuration", llnl.util.lang.Singleton] -) -> RepoPath: +def create(configuration: spack.config.Configuration) -> RepoPath: """Create a RepoPath from a configuration object. Args: @@ -1465,7 +1463,7 @@ def create( #: Singleton repo path instance -PATH: Union[RepoPath, llnl.util.lang.Singleton] = llnl.util.lang.Singleton(_path) +PATH: RepoPath = llnl.util.lang.Singleton(_path) # type: ignore # Add the finder to sys.meta_path REPOS_FINDER = ReposFinder() @@ -1585,7 +1583,7 @@ def __init__(self, name, repo=None): long_msg = "Use 'spack create' to create a new package." if not repo: - repo = spack.repo.PATH + repo = PATH # We need to compare the base package name pkg_name = name.rsplit(".", 1)[-1] diff --git a/lib/spack/spack/schema/ci.py b/lib/spack/spack/schema/ci.py index e616058b998a28..9f7380ab44160d 100644 --- a/lib/spack/spack/schema/ci.py +++ b/lib/spack/spack/schema/ci.py @@ -11,8 +11,6 @@ from llnl.util.lang import union_dicts -import spack.schema.gitlab_ci - # Schema for script fields # List of lists and/or strings # This is similar to what is allowed in @@ -77,58 +75,54 @@ }, } -named_attributes_schema = { - "oneOf": [ - { - "type": "object", - "additionalProperties": False, - "properties": {"noop-job": attributes_schema, "noop-job-remove": attributes_schema}, - }, - { - "type": "object", - "additionalProperties": False, - "properties": {"build-job": attributes_schema, "build-job-remove": attributes_schema}, - }, - { - "type": "object", - "additionalProperties": False, - "properties": {"copy-job": attributes_schema, "copy-job-remove": attributes_schema}, - }, - { - "type": "object", - "additionalProperties": False, - "properties": { - "reindex-job": attributes_schema, - "reindex-job-remove": attributes_schema, - }, - }, - { - "type": "object", - "additionalProperties": False, - "properties": { - "signing-job": attributes_schema, - "signing-job-remove": attributes_schema, - }, - }, - { +dynamic_mapping_schema = { + "type": "object", + "additionalProperties": False, + "required": ["dynamic-mapping"], + "properties": { + "dynamic-mapping": { "type": "object", - "additionalProperties": False, + "required": ["endpoint"], "properties": { - "cleanup-job": attributes_schema, - "cleanup-job-remove": attributes_schema, + "name": {"type": "string"}, + # "endpoint" cannot have http patternProperties constaint as it is a required field + # Constrain is applied in code + "endpoint": {"type": "string"}, + "timeout": {"type": "integer", "minimum": 0}, + "verify_ssl": {"type": "boolean", "default": False}, + "header": {"type": "object", "additionalProperties": False}, + "allow": {"type": "array", "items": {"type": "string"}}, + "require": {"type": "array", "items": {"type": "string"}}, + "ignore": {"type": "array", "items": {"type": "string"}}, }, - }, - { - "type": "object", - "additionalProperties": False, - "properties": {"any-job": attributes_schema, "any-job-remove": attributes_schema}, - }, - ] + } + }, } + +def job_schema(name: str): + return { + "type": "object", + "additionalProperties": False, + "properties": {f"{name}-job": attributes_schema, f"{name}-job-remove": attributes_schema}, + } + + pipeline_gen_schema = { "type": "array", - "items": {"oneOf": [submapping_schema, named_attributes_schema]}, + "items": { + "oneOf": [ + submapping_schema, + dynamic_mapping_schema, + job_schema("any"), + job_schema("build"), + job_schema("cleanup"), + job_schema("copy"), + job_schema("noop"), + job_schema("reindex"), + job_schema("signing"), + ] + }, } core_shared_properties = union_dicts( @@ -141,39 +135,8 @@ } ) -# TODO: Remove in Spack 0.23 -ci_properties = { - "anyOf": [ - { - "type": "object", - "additionalProperties": False, - # "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}} - ), - }, - { - "type": "object", - "additionalProperties": False, - # "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}} - ), - }, - ] -} - #: Properties for inclusion in other schemas -properties: Dict[str, Any] = { - "ci": { - "oneOf": [ - # TODO: Replace with core-shared-properties in Spack 0.23 - ci_properties, - # Allow legacy format under `ci` for `config update ci` - spack.schema.gitlab_ci.gitlab_ci_properties, - ] - } -} +properties: Dict[str, Any] = {"ci": core_shared_properties} #: Full schema with metadata schema = { @@ -183,21 +146,3 @@ "additionalProperties": False, "properties": properties, } - - -def update(data): - import llnl.util.tty as tty - - import spack.ci - import spack.environment as ev - - # Warn if deprecated section is still in the environment - ci_env = ev.active_environment() - if ci_env: - env_config = ci_env.manifest[ev.TOP_LEVEL_KEY] - if "gitlab-ci" in env_config: - tty.die("Error: `gitlab-ci` section detected with `ci`, these are not compatible") - - # Detect if the ci section is using the new pipeline-gen - # If it is, assume it has already been converted - return spack.ci.translate_deprecated_config(data) diff --git a/lib/spack/spack/schema/compilers.py b/lib/spack/spack/schema/compilers.py index 976a9777fcd82d..81460882108c13 100644 --- a/lib/spack/spack/schema/compilers.py +++ b/lib/spack/spack/schema/compilers.py @@ -61,7 +61,10 @@ "target": {"type": "string"}, "alias": {"anyOf": [{"type": "string"}, {"type": "null"}]}, "modules": { - "anyOf": [{"type": "string"}, {"type": "null"}, {"type": "array"}] + "anyOf": [ + {"type": "null"}, + {"type": "array", "items": {"type": "string"}}, + ] }, "implicit_rpaths": implicit_rpaths, "environment": spack.schema.environment.definition, diff --git a/lib/spack/spack/schema/concretizer.py b/lib/spack/spack/schema/concretizer.py index 0b222d923e1b0f..4fba79fece55ed 100644 --- a/lib/spack/spack/schema/concretizer.py +++ b/lib/spack/spack/schema/concretizer.py @@ -33,8 +33,14 @@ "properties": { "type": { "type": "string", - "enum": ["local", "buildcache", "external"], + "enum": [ + "local", + "buildcache", + "external", + "environment", + ], }, + "path": {"type": "string"}, "include": LIST_OF_SPECS, "exclude": LIST_OF_SPECS, }, @@ -72,7 +78,8 @@ "transitive": {"type": "boolean", "default": False}, }, }, - } + }, + "automatic": {"type": "boolean"}, }, }, "duplicates": { diff --git a/lib/spack/spack/schema/env.py b/lib/spack/spack/schema/env.py index 17cf29d4c6c1d2..b75bd231f4d206 100644 --- a/lib/spack/spack/schema/env.py +++ b/lib/spack/spack/schema/env.py @@ -12,7 +12,6 @@ from llnl.util.lang import union_dicts -import spack.schema.gitlab_ci # DEPRECATED import spack.schema.merged from .spec_list import spec_list_schema @@ -20,21 +19,21 @@ #: Top level key in a manifest file TOP_LEVEL_KEY = "spack" +include_concrete = {"type": "array", "default": [], "items": {"type": "string"}} + properties: Dict[str, Any] = { "spack": { "type": "object", "default": {}, "additionalProperties": False, "properties": union_dicts( - # Include deprecated "gitlab-ci" section - spack.schema.gitlab_ci.properties, # merged configuration scope schemas spack.schema.merged.properties, # extra environment schema properties { "include": {"type": "array", "default": [], "items": {"type": "string"}}, "specs": spec_list_schema, - "include_concrete": {"type": "array", "default": [], "items": {"type": "string"}}, + "include_concrete": include_concrete, }, ), } @@ -58,15 +57,6 @@ def update(data): Returns: True if data was changed, False otherwise """ - - import spack.ci - - if "gitlab-ci" in data: - data["ci"] = data.pop("gitlab-ci") - - if "ci" in data: - return spack.ci.translate_deprecated_config(data["ci"]) - # There are not currently any deprecated attributes in this section # that have not been removed return False diff --git a/lib/spack/spack/schema/gitlab_ci.py b/lib/spack/spack/schema/gitlab_ci.py deleted file mode 100644 index a180777acae74d..00000000000000 --- a/lib/spack/spack/schema/gitlab_ci.py +++ /dev/null @@ -1,125 +0,0 @@ -# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -"""Schema for gitlab-ci.yaml configuration file. - -.. literalinclude:: ../spack/schema/gitlab_ci.py - :lines: 15- -""" -from typing import Any, Dict - -from llnl.util.lang import union_dicts - -image_schema = { - "oneOf": [ - {"type": "string"}, - { - "type": "object", - "properties": { - "name": {"type": "string"}, - "entrypoint": {"type": "array", "items": {"type": "string"}}, - }, - }, - ] -} - -runner_attributes_schema_items = { - "image": image_schema, - "tags": {"type": "array", "items": {"type": "string"}}, - "variables": {"type": "object", "patternProperties": {r"[\w\d\-_\.]+": {"type": "string"}}}, - "before_script": {"type": "array", "items": {"type": "string"}}, - "script": {"type": "array", "items": {"type": "string"}}, - "after_script": {"type": "array", "items": {"type": "string"}}, -} - -runner_selector_schema = { - "type": "object", - "additionalProperties": True, - "required": ["tags"], - "properties": runner_attributes_schema_items, -} - -remove_attributes_schema = { - "type": "object", - "additionalProperties": False, - "required": ["tags"], - "properties": {"tags": {"type": "array", "items": {"type": "string"}}}, -} - - -core_shared_properties = union_dicts( - runner_attributes_schema_items, - { - "bootstrap": { - "type": "array", - "items": { - "anyOf": [ - {"type": "string"}, - { - "type": "object", - "additionalProperties": False, - "required": ["name"], - "properties": { - "name": {"type": "string"}, - "compiler-agnostic": {"type": "boolean", "default": False}, - }, - }, - ] - }, - }, - "match_behavior": {"type": "string", "enum": ["first", "merge"], "default": "first"}, - "mappings": { - "type": "array", - "items": { - "type": "object", - "additionalProperties": False, - "required": ["match"], - "properties": { - "match": {"type": "array", "items": {"type": "string"}}, - "remove-attributes": remove_attributes_schema, - "runner-attributes": runner_selector_schema, - }, - }, - }, - "service-job-attributes": runner_selector_schema, - "signing-job-attributes": runner_selector_schema, - "rebuild-index": {"type": "boolean"}, - "broken-specs-url": {"type": "string"}, - "broken-tests-packages": {"type": "array", "items": {"type": "string"}}, - }, -) - -gitlab_ci_properties = { - "anyOf": [ - { - "type": "object", - "additionalProperties": False, - "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"enable-artifacts-buildcache": {"type": "boolean"}} - ), - }, - { - "type": "object", - "additionalProperties": False, - "required": ["mappings"], - "properties": union_dicts( - core_shared_properties, {"temporary-storage-url-prefix": {"type": "string"}} - ), - }, - ] -} - -#: Properties for inclusion in other schemas -properties: Dict[str, Any] = {"gitlab-ci": gitlab_ci_properties} - -#: Full schema with metadata -schema = { - "$schema": "http://json-schema.org/draft-07/schema#", - "title": "Spack gitlab-ci configuration file schema", - "type": "object", - "additionalProperties": False, - "properties": properties, -} diff --git a/lib/spack/spack/schema/mirrors.py b/lib/spack/spack/schema/mirrors.py index 9a56f1a7e28415..8a61fd5b5344fe 100644 --- a/lib/spack/spack/schema/mirrors.py +++ b/lib/spack/spack/schema/mirrors.py @@ -15,14 +15,42 @@ "url": {"type": "string"}, # todo: replace this with named keys "username" / "password" or "id" / "secret" "access_pair": { - "type": "array", - "items": {"type": ["string", "null"], "minItems": 2, "maxItems": 2}, + "oneOf": [ + { + "type": "array", + "items": {"minItems": 2, "maxItems": 2, "type": ["string", "null"]}, + }, # deprecated + { + "type": "object", + "required": ["secret_variable"], + # Only allow id or id_variable to be set, not both + "oneOf": [{"required": ["id"]}, {"required": ["id_variable"]}], + "properties": { + "id": {"type": "string"}, + "id_variable": {"type": "string"}, + "secret_variable": {"type": "string"}, + }, + }, + ] }, - "access_token": {"type": ["string", "null"]}, "profile": {"type": ["string", "null"]}, "endpoint_url": {"type": ["string", "null"]}, + "access_token": {"type": ["string", "null"]}, # deprecated + "access_token_variable": {"type": ["string", "null"]}, } +connection_ext = { + "deprecatedProperties": [ + { + "names": ["access_token"], + "message": "Use of plain text `access_token` in mirror config is deprecated, use " + "environment variables instead (access_token_variable)", + "error": False, + } + ] +} + + #: Mirror connection inside pull/push keys fetch_and_push = { "anyOf": [ @@ -31,6 +59,7 @@ "type": "object", "additionalProperties": False, "properties": {**connection}, # type: ignore + **connection_ext, # type: ignore }, ] } @@ -49,6 +78,7 @@ "autopush": {"type": "boolean"}, **connection, # type: ignore }, + **connection_ext, # type: ignore } #: Properties for inclusion in other schemas @@ -70,3 +100,28 @@ "additionalProperties": False, "properties": properties, } + + +def update(data): + import jsonschema + + errors = [] + + def check_access_pair(name, section): + if not section or not isinstance(section, dict): + return + + if "access_token" in section and "access_token_variable" in section: + errors.append( + f'{name}: mirror credential "access_token" conflicts with "access_token_variable"' + ) + + # Check all of the sections + for name, section in data.items(): + check_access_pair(name, section) + if isinstance(section, dict): + check_access_pair(name, section.get("fetch")) + check_access_pair(name, section.get("push")) + + if errors: + raise jsonschema.ValidationError("\n".join(errors)) diff --git a/lib/spack/spack/solver/asp.py b/lib/spack/spack/solver/asp.py index 92734e9afd5294..5310c4e3a84c89 100644 --- a/lib/spack/spack/solver/asp.py +++ b/lib/spack/spack/solver/asp.py @@ -27,7 +27,6 @@ import spack import spack.binary_distribution -import spack.bootstrap.core import spack.compilers import spack.concretize import spack.config @@ -53,6 +52,7 @@ from .core import ( AspFunction, + AspVar, NodeArgument, ast_sym, ast_type, @@ -515,6 +515,8 @@ def _compute_specs_from_answer_set(self): best = min(self.answers) opt, _, answer = best for input_spec in self.abstract_specs: + # The specs must be unified to get here, so it is safe to associate any satisfying spec + # with the input. Multiple inputs may be matched to the same concrete spec node = SpecBuilder.make_node(pkg=input_spec.name) if input_spec.virtual: providers = [ @@ -523,12 +525,14 @@ def _compute_specs_from_answer_set(self): node = SpecBuilder.make_node(pkg=providers[0]) candidate = answer.get(node) - if candidate and candidate.build_spec.satisfies(input_spec): - if not candidate.satisfies(input_spec): - tty.warn( - "explicit splice configuration has caused the concretized spec" - f" {candidate} not to satisfy the input spec {input_spec}" - ) + if candidate and candidate.satisfies(input_spec): + self._concrete_specs.append(answer[node]) + self._concrete_specs_by_input[input_spec] = answer[node] + elif candidate and candidate.build_spec.satisfies(input_spec): + tty.warn( + "explicit splice configuration has caused the concretized spec" + f" {candidate} not to satisfy the input spec {input_spec}" + ) self._concrete_specs.append(answer[node]) self._concrete_specs_by_input[input_spec] = answer[node] else: @@ -814,7 +818,7 @@ def solve(self, setup, specs, reuse=None, output=None, control=None, allow_depre solve, and the internal statistics from clingo. """ # avoid circular import - import spack.bootstrap + import spack.bootstrap.core output = output or DEFAULT_OUTPUT_CONFIGURATION timer = spack.util.timer.Timer() @@ -853,6 +857,8 @@ def solve(self, setup, specs, reuse=None, output=None, control=None, allow_depre self.control.load(os.path.join(parent_dir, "libc_compatibility.lp")) else: self.control.load(os.path.join(parent_dir, "os_compatibility.lp")) + if setup.enable_splicing: + self.control.load(os.path.join(parent_dir, "splices.lp")) timer.stop("load") @@ -887,6 +893,7 @@ def on_model(model): result.satisfiable = solve_result.satisfiable if result.satisfiable: + timer.start("construct_specs") # get the best model builder = SpecBuilder(specs, hash_lookup=setup.reusable_and_possible) min_cost, best_model = min(models) @@ -911,7 +918,8 @@ def on_model(model): # record the possible dependencies in the solve result.possible_dependencies = setup.pkgs - + timer.stop("construct_specs") + timer.stop() elif cores: result.control = self.control result.cores.extend(cores) @@ -1163,6 +1171,9 @@ def __init__(self, tests: bool = False): # list of unique libc specs targeted by compilers (or an educated guess if no compiler) self.libcs: List[spack.spec.Spec] = [] + # If true, we have to load the code for synthesizing splices + self.enable_splicing: bool = spack.config.CONFIG.get("concretizer:splice:automatic") + def pkg_version_rules(self, pkg): """Output declared versions of a package. @@ -1333,6 +1344,10 @@ def pkg_rules(self, pkg, tests): # dependencies self.package_dependencies_rules(pkg) + # splices + if self.enable_splicing: + self.package_splice_rules(pkg) + # virtual preferences self.virtual_preferences( pkg.name, @@ -1433,14 +1448,13 @@ def define_variant( for value in sorted(values): pkg_fact(fn.variant_possible_value(vid, value)) - # when=True means unconditional, so no need for conditional values - if getattr(value, "when", True) is True: + # we're done here for unconditional values + if not isinstance(value, vt.ConditionalValue): continue - # now we have to handle conditional values - quoted_value = spack.parser.quote_if_needed(str(value)) - vstring = f"{name}={quoted_value}" - variant_has_value = spack.spec.Spec(vstring) + # make a spec indicating whether the variant has this conditional value + variant_has_value = spack.spec.Spec() + variant_has_value.variants[name] = spack.variant.AbstractVariant(name, value.value) if value.when: # the conditional value is always "possible", but it imposes its when condition as @@ -1451,10 +1465,12 @@ def define_variant( imposed_spec=value.when, required_name=pkg.name, imposed_name=pkg.name, - msg=f"{pkg.name} variant {name} has value '{quoted_value}' when {value.when}", + msg=f"{pkg.name} variant {name} has value '{value.value}' when {value.when}", ) else: - # We know the value is never allowed statically (when was false), but we can't just + vstring = f"{name}='{value.value}'" + + # We know the value is never allowed statically (when was None), but we can't just # ignore it b/c it could come in as a possible value and we need a good error msg. # So, it's a conflict -- if the value is somehow used, it'll trigger an error. trigger_id = self.condition( @@ -1670,6 +1686,94 @@ def dependency_holds(input_spec, requirements): self.gen.newline() + def _gen_match_variant_splice_constraints( + self, + pkg, + cond_spec: "spack.spec.Spec", + splice_spec: "spack.spec.Spec", + hash_asp_var: "AspVar", + splice_node, + match_variants: List[str], + ): + # If there are no variants to match, no constraints are needed + variant_constraints = [] + for i, variant_name in enumerate(match_variants): + vari_defs = pkg.variant_definitions(variant_name) + # the spliceable config of the package always includes the variant + if vari_defs != [] and any(cond_spec.satisfies(s) for (s, _) in vari_defs): + variant = vari_defs[0][1] + if variant.multi: + continue # cannot automatically match multi-valued variants + value_var = AspVar(f"VariValue{i}") + attr_constraint = fn.attr("variant_value", splice_node, variant_name, value_var) + hash_attr_constraint = fn.hash_attr( + hash_asp_var, "variant_value", splice_spec.name, variant_name, value_var + ) + variant_constraints.append(attr_constraint) + variant_constraints.append(hash_attr_constraint) + return variant_constraints + + def package_splice_rules(self, pkg): + self.gen.h2("Splice rules") + for i, (cond, (spec_to_splice, match_variants)) in enumerate( + sorted(pkg.splice_specs.items()) + ): + with named_spec(cond, pkg.name): + self.version_constraints.add((cond.name, cond.versions)) + self.version_constraints.add((spec_to_splice.name, spec_to_splice.versions)) + hash_var = AspVar("Hash") + splice_node = fn.node(AspVar("NID"), cond.name) + when_spec_attrs = [ + fn.attr(c.args[0], splice_node, *(c.args[2:])) + for c in self.spec_clauses(cond, body=True, required_from=None) + if c.args[0] != "node" + ] + splice_spec_hash_attrs = [ + fn.hash_attr(hash_var, *(c.args)) + for c in self.spec_clauses(spec_to_splice, body=True, required_from=None) + if c.args[0] != "node" + ] + if match_variants is None: + variant_constraints = [] + elif match_variants == "*": + filt_match_variants = set() + for map in pkg.variants.values(): + for k in map: + filt_match_variants.add(k) + filt_match_variants = list(filt_match_variants) + variant_constraints = self._gen_match_variant_splice_constraints( + pkg, cond, spec_to_splice, hash_var, splice_node, filt_match_variants + ) + else: + if any( + v in cond.variants or v in spec_to_splice.variants for v in match_variants + ): + raise Exception( + "Overlap between match_variants and explicitly set variants" + ) + variant_constraints = self._gen_match_variant_splice_constraints( + pkg, cond, spec_to_splice, hash_var, splice_node, match_variants + ) + + rule_head = fn.abi_splice_conditions_hold( + i, splice_node, spec_to_splice.name, hash_var + ) + rule_body_components = ( + [ + # splice_set_fact, + fn.attr("node", splice_node), + fn.installed_hash(spec_to_splice.name, hash_var), + ] + + when_spec_attrs + + splice_spec_hash_attrs + + variant_constraints + ) + rule_body = ",\n ".join(str(r) for r in rule_body_components) + rule = f"{rule_head} :-\n {rule_body}." + self.gen.append(rule) + + self.gen.newline() + def virtual_preferences(self, pkg_name, func): """Call func(vspec, provider, i) for each of pkg's provider prefs.""" config = spack.config.get("packages") @@ -2028,9 +2132,12 @@ def _spec_clauses( for variant_def in variant_defs: self.variant_values_from_specs.add((spec.name, id(variant_def), value)) - clauses.append(f.variant_value(spec.name, vname, value)) if variant.propagate: clauses.append(f.propagate(spec.name, fn.variant_value(vname, value))) + if self.pkg_class(spec.name).has_variant(vname): + clauses.append(f.variant_value(spec.name, vname, value)) + else: + clauses.append(f.variant_value(spec.name, vname, value)) # compiler and compiler version if spec.compiler: @@ -2529,8 +2636,9 @@ def concrete_specs(self): for h, spec in self.reusable_and_possible.explicit_items(): # this indicates that there is a spec like this installed self.gen.fact(fn.installed_hash(spec.name, h)) - # this describes what constraints it imposes on the solve - self.impose(h, spec, body=True) + # indirection layer between hash constraints and imposition to allow for splicing + for pred in self.spec_clauses(spec, body=True, required_from=None): + self.gen.fact(fn.hash_attr(h, *pred.args)) self.gen.newline() # Declare as possible parts of specs that are not in package.py # - Add versions to possible versions @@ -2616,6 +2724,7 @@ def setup( ) for name, info in env.dev_specs.items() ) + specs = tuple(specs) # ensure compatible types to add self.gen.h1("Reusable concrete specs") @@ -3470,6 +3579,14 @@ def consume_facts(self): self._setup.effect_rules() +# This should be a dataclass, but dataclasses don't work on Python 3.6 +class Splice: + def __init__(self, splice_node: NodeArgument, child_name: str, child_hash: str): + self.splice_node = splice_node + self.child_name = child_name + self.child_hash = child_hash + + class SpecBuilder: """Class with actions to rebuild a spec from ASP results.""" @@ -3505,10 +3622,11 @@ def make_node(*, pkg: str) -> NodeArgument: """ return NodeArgument(id="0", pkg=pkg) - def __init__( - self, specs: List[spack.spec.Spec], *, hash_lookup: Optional[ConcreteSpecsByHash] = None - ): + def __init__(self, specs, hash_lookup=None): self._specs: Dict[NodeArgument, spack.spec.Spec] = {} + + # Matches parent nodes to splice node + self._splices: Dict[NodeArgument, List[Splice]] = {} self._result = None self._command_line_specs = specs self._flag_sources: Dict[Tuple[NodeArgument, str], Set[str]] = collections.defaultdict( @@ -3592,16 +3710,8 @@ def external_spec_selected(self, node, idx): def depends_on(self, parent_node, dependency_node, type): dependency_spec = self._specs[dependency_node] - edges = self._specs[parent_node].edges_to_dependencies(name=dependency_spec.name) - edges = [x for x in edges if id(x.spec) == id(dependency_spec)] depflag = dt.flag_from_string(type) - - if not edges: - self._specs[parent_node].add_dependency_edge( - self._specs[dependency_node], depflag=depflag, virtuals=() - ) - else: - edges[0].update_deptypes(depflag=depflag) + self._specs[parent_node].add_dependency_edge(dependency_spec, depflag=depflag, virtuals=()) def virtual_on_edge(self, parent_node, provider_node, virtual): dependencies = self._specs[parent_node].edges_to_dependencies(name=(provider_node.pkg)) @@ -3718,6 +3828,57 @@ def _order_index(flag_group): def deprecated(self, node: NodeArgument, version: str) -> None: tty.warn(f'using "{node.pkg}@{version}" which is a deprecated version') + def splice_at_hash( + self, + parent_node: NodeArgument, + splice_node: NodeArgument, + child_name: str, + child_hash: str, + ): + splice = Splice(splice_node, child_name=child_name, child_hash=child_hash) + self._splices.setdefault(parent_node, []).append(splice) + + def _resolve_automatic_splices(self): + """After all of the specs have been concretized, apply all immediate splices. + + Use reverse topological order to ensure that all dependencies are resolved + before their parents, allowing for maximal sharing and minimal copying. + + """ + fixed_specs = {} + + # create a mapping from dag hash to an integer representing position in reverse topo order. + specs = self._specs.values() + topo_order = list(traverse.traverse_nodes(specs, order="topo", key=traverse.by_dag_hash)) + topo_lookup = {spec.dag_hash(): index for index, spec in enumerate(reversed(topo_order))} + + # iterate over specs, children before parents + for node, spec in sorted(self._specs.items(), key=lambda x: topo_lookup[x[1].dag_hash()]): + immediate = self._splices.get(node, []) + if not immediate and not any( + edge.spec in fixed_specs for edge in spec.edges_to_dependencies() + ): + continue + new_spec = spec.copy(deps=False) + new_spec.build_spec = spec + for edge in spec.edges_to_dependencies(): + depflag = edge.depflag & ~dt.BUILD + if any(edge.spec.dag_hash() == splice.child_hash for splice in immediate): + splice = [s for s in immediate if s.child_hash == edge.spec.dag_hash()][0] + new_spec.add_dependency_edge( + self._specs[splice.splice_node], depflag=depflag, virtuals=edge.virtuals + ) + elif edge.spec in fixed_specs: + new_spec.add_dependency_edge( + fixed_specs[edge.spec], depflag=depflag, virtuals=edge.virtuals + ) + else: + new_spec.add_dependency_edge( + edge.spec, depflag=depflag, virtuals=edge.virtuals + ) + self._specs[node] = new_spec + fixed_specs[spec] = new_spec + @staticmethod def sort_fn(function_tuple) -> Tuple[int, int]: """Ensure attributes are evaluated in the correct order. @@ -3747,7 +3908,6 @@ def build_specs(self, function_tuples): # them here so that directives that build objects (like node and # node_compiler) are called in the right order. self.function_tuples = sorted(set(function_tuples), key=self.sort_fn) - self._specs = {} for name, args in self.function_tuples: if SpecBuilder.ignored_attributes.match(name): @@ -3777,10 +3937,14 @@ def build_specs(self, function_tuples): continue # if we've already gotten a concrete spec for this pkg, - # do not bother calling actions on it + # do not bother calling actions on it except for node_flag_source, + # since node_flag_source is tracking information not in the spec itself + # we also need to keep track of splicing information. spec = self._specs.get(args[0]) if spec and spec.concrete: - continue + do_not_ignore_attrs = ["node_flag_source", "splice_at_hash"] + if name not in do_not_ignore_attrs: + continue action(*args) @@ -3790,7 +3954,7 @@ def build_specs(self, function_tuples): # inject patches -- note that we' can't use set() to unique the # roots here, because the specs aren't complete, and the hash # function will loop forever. - roots = [spec.root for spec in self._specs.values() if not spec.root.installed] + roots = [spec.root for spec in self._specs.values()] roots = dict((id(r), r) for r in roots) for root in roots.values(): spack.spec.Spec.inject_patches_variant(root) @@ -3806,6 +3970,8 @@ def build_specs(self, function_tuples): for root in roots.values(): root._finalize_concretization() + self._resolve_automatic_splices() + for s in self._specs.values(): spack.spec.Spec.ensure_no_deprecated(s) @@ -3820,7 +3986,6 @@ def build_specs(self, function_tuples): ) specs = self.execute_explicit_splices() - return specs def execute_explicit_splices(self): @@ -3829,8 +3994,16 @@ def execute_explicit_splices(self): for splice_set in splice_config: target = splice_set["target"] replacement = spack.spec.Spec(splice_set["replacement"]) - assert replacement.abstract_hash - replacement.replace_hash() + + if not replacement.abstract_hash: + location = getattr( + splice_set["replacement"], "_start_mark", " at unknown line number" + ) + msg = f"Explicit splice replacement '{replacement}' does not include a hash.\n" + msg += f"{location}\n\n" + msg += " Splice replacements must be specified by hash" + raise InvalidSpliceError(msg) + transitive = splice_set.get("transitive", False) splice_triples.append((target, replacement, transitive)) @@ -3841,6 +4014,10 @@ def execute_explicit_splices(self): if target in current_spec: # matches root or non-root # e.g. mvapich2%gcc + + # The first iteration, we need to replace the abstract hash + if not replacement.concrete: + replacement.replace_hash() current_spec = current_spec.splice(replacement, transitive) new_key = NodeArgument(id=key.id, pkg=current_spec.name) specs[new_key] = current_spec @@ -3966,7 +4143,7 @@ def selected_specs(self) -> List[spack.spec.Spec]: return [s for s in self.factory() if self.is_selected(s)] @staticmethod - def from_store(configuration, include, exclude) -> "SpecFilter": + def from_store(configuration, *, include, exclude) -> "SpecFilter": """Constructs a filter that takes the specs from the current store.""" packages = _external_config_with_implicit_externals(configuration) is_reusable = functools.partial(_is_reusable, packages=packages, local=True) @@ -3974,7 +4151,7 @@ def from_store(configuration, include, exclude) -> "SpecFilter": return SpecFilter(factory=factory, is_usable=is_reusable, include=include, exclude=exclude) @staticmethod - def from_buildcache(configuration, include, exclude) -> "SpecFilter": + def from_buildcache(configuration, *, include, exclude) -> "SpecFilter": """Constructs a filter that takes the specs from the configured buildcaches.""" packages = _external_config_with_implicit_externals(configuration) is_reusable = functools.partial(_is_reusable, packages=packages, local=False) @@ -3982,6 +4159,29 @@ def from_buildcache(configuration, include, exclude) -> "SpecFilter": factory=_specs_from_mirror, is_usable=is_reusable, include=include, exclude=exclude ) + @staticmethod + def from_environment(configuration, *, include, exclude, env) -> "SpecFilter": + packages = _external_config_with_implicit_externals(configuration) + is_reusable = functools.partial(_is_reusable, packages=packages, local=True) + factory = functools.partial(_specs_from_environment, env=env) + return SpecFilter(factory=factory, is_usable=is_reusable, include=include, exclude=exclude) + + @staticmethod + def from_environment_included_concrete( + configuration, + *, + include: List[str], + exclude: List[str], + env: ev.Environment, + included_concrete: str, + ) -> "SpecFilter": + packages = _external_config_with_implicit_externals(configuration) + is_reusable = functools.partial(_is_reusable, packages=packages, local=True) + factory = functools.partial( + _specs_from_environment_included_concrete, env=env, included_concrete=included_concrete + ) + return SpecFilter(factory=factory, is_usable=is_reusable, include=include, exclude=exclude) + def _specs_from_store(configuration): store = spack.store.create(configuration) @@ -3999,6 +4199,23 @@ def _specs_from_mirror(): return [] +def _specs_from_environment(env): + """Return all concrete specs from the environment. This includes all included concrete""" + if env: + return [concrete for _, concrete in env.concretized_specs()] + else: + return [] + + +def _specs_from_environment_included_concrete(env, included_concrete): + """Return only concrete specs from the environment included from the included_concrete""" + if env: + assert included_concrete in env.included_concrete_envs + return [concrete for concrete in env.included_specs_by_hash[included_concrete].values()] + else: + return [] + + class ReuseStrategy(enum.Enum): ROOTS = enum.auto() DEPENDENCIES = enum.auto() @@ -4028,6 +4245,12 @@ def __init__(self, configuration: spack.config.Configuration) -> None: SpecFilter.from_buildcache( configuration=self.configuration, include=[], exclude=[] ), + SpecFilter.from_environment( + configuration=self.configuration, + include=[], + exclude=[], + env=ev.active_environment(), # includes all concrete includes + ), ] ) else: @@ -4042,7 +4265,46 @@ def __init__(self, configuration: spack.config.Configuration) -> None: for source in reuse_yaml.get("from", default_sources): include = source.get("include", default_include) exclude = source.get("exclude", default_exclude) - if source["type"] == "local": + if source["type"] == "environment" and "path" in source: + env_dir = ev.as_env_dir(source["path"]) + active_env = ev.active_environment() + if active_env and env_dir in active_env.included_concrete_envs: + # If environment is included as a concrete environment, use the local copy + # of specs in the active environment. + # note: included concrete environments are only updated at concretization + # time, and reuse needs to matchthe included specs. + self.reuse_sources.append( + SpecFilter.from_environment_included_concrete( + self.configuration, + include=include, + exclude=exclude, + env=active_env, + included_concrete=env_dir, + ) + ) + else: + # If the environment is not included as a concrete environment, use the + # current specs from its lockfile. + self.reuse_sources.append( + SpecFilter.from_environment( + self.configuration, + include=include, + exclude=exclude, + env=ev.environment_from_name_or_dir(env_dir), + ) + ) + elif source["type"] == "environment": + # reusing from the current environment implicitly reuses from all of the + # included concrete environments + self.reuse_sources.append( + SpecFilter.from_environment( + self.configuration, + include=include, + exclude=exclude, + env=ev.active_environment(), + ) + ) + elif source["type"] == "local": self.reuse_sources.append( SpecFilter.from_store(self.configuration, include=include, exclude=exclude) ) @@ -4060,7 +4322,6 @@ def reusable_specs(self, specs: List[spack.spec.Spec]) -> List[spack.spec.Spec]: result = [] for reuse_source in self.reuse_sources: result.extend(reuse_source.selected_specs()) - # If we only want to reuse dependencies, remove the root specs if self.reuse_strategy == ReuseStrategy.DEPENDENCIES: result = [spec for spec in result if not any(root in spec for root in specs)] @@ -4091,7 +4352,7 @@ def _check_input_and_extract_concrete_specs(specs): spack.spec.Spec.ensure_valid_variants(s) return reusable - def solve( + def solve_with_stats( self, specs, out=None, @@ -4102,6 +4363,8 @@ def solve( allow_deprecated=False, ): """ + Concretize a set of specs and track the timing and statistics for the solve + Arguments: specs (list): List of ``Spec`` objects to solve for. out: Optionally write the generate ASP program to a file-like object. @@ -4113,15 +4376,22 @@ def solve( setup_only (bool): if True, stop after setup and don't solve (default False). allow_deprecated (bool): allow deprecated version in the solve """ - # Check upfront that the variants are admissible specs = [s.lookup_hash() for s in specs] reusable_specs = self._check_input_and_extract_concrete_specs(specs) reusable_specs.extend(self.selector.reusable_specs(specs)) setup = SpackSolverSetup(tests=tests) output = OutputConfiguration(timers=timers, stats=stats, out=out, setup_only=setup_only) - result, _, _ = self.driver.solve( + return self.driver.solve( setup, specs, reuse=reusable_specs, output=output, allow_deprecated=allow_deprecated ) + + def solve(self, specs, **kwargs): + """ + Convenience function for concretizing a set of specs and ignoring timing + and statistics. Uses the same kwargs as solve_with_stats. + """ + # Check upfront that the variants are admissible + result, _, _ = self.solve_with_stats(specs, **kwargs) return result def solve_in_rounds( @@ -4221,8 +4491,11 @@ def __init__(self, provided, conflicts): super().__init__(msg) - self.provided = provided - # Add attribute expected of the superclass interface self.required = None self.constraint_type = None + self.provided = provided + + +class InvalidSpliceError(spack.error.SpackError): + """For cases in which the splice configuration is invalid.""" diff --git a/lib/spack/spack/solver/concretize.lp b/lib/spack/spack/solver/concretize.lp index 2195cd6b08b4d1..6010c39d4b4088 100644 --- a/lib/spack/spack/solver/concretize.lp +++ b/lib/spack/spack/solver/concretize.lp @@ -57,6 +57,12 @@ internal_error("provider with no virtual node"). :- provider(PackageNode, _), not attr("node", PackageNode), internal_error("provider with no real node"). +:- node_has_variant(PackageNode, _, _), not attr("node", PackageNode), + internal_error("node has variant for a non-node"). +:- attr("variant_set", PackageNode, _, _), not attr("node", PackageNode), + internal_error("variant_set for a non-node"). +:- variant_is_propagated(PackageNode, _), not attr("node", PackageNode), + internal_error("variant_is_propagated for a non-node"). :- attr("root", node(ID, PackageNode)), ID > min_dupe_id, internal_error("root with a non-minimal duplicate ID"). @@ -423,8 +429,10 @@ imposed_nodes(ConditionID, PackageNode, node(X, A1)) :- imposed_packages(ID, A1), impose(ID, PackageNode), not condition_set(PackageNode, node(_, A1)), internal_error("Imposing constraint outside of condition set"). -:- imposed_packages(ID, A1), impose(ID, PackageNode), not imposed_nodes(ID, PackageNode, node(_, A1)), - internal_error("Imposing constraint outside of imposed_nodes"). +% not sure why, but this error keeps cropping up with --include-concrete environments, trying commenting +% it out -- mengel@fnal.gov +%:- imposed_packages(ID, A1), impose(ID, PackageNode), not imposed_nodes(ID, PackageNode, node(_, A1)), +% internal_error("Imposing constraint outside of imposed_nodes"). % Conditions that hold impose may impose constraints on other specs attr(Name, node(X, A1)) :- impose(ID, PackageNode), imposed_constraint(ID, Name, A1), imposed_nodes(ID, PackageNode, node(X, A1)). @@ -575,7 +583,8 @@ attr("virtual_on_edge", PackageNode, ProviderNode, Virtual) % or used somewhere :- attr("virtual_node", node(_, Virtual)), not attr("virtual_on_incoming_edges", _, Virtual), - not attr("virtual_root", node(_, Virtual)). + not attr("virtual_root", node(_, Virtual)), + internal_error("virtual node does not match incoming edge"). attr("virtual_on_incoming_edges", ProviderNode, Virtual) :- attr("virtual_on_edge", _, ProviderNode, Virtual). @@ -629,7 +638,8 @@ do_not_impose(EffectID, node(X, Package)) virtual_condition_holds(_, PossibleProvider, Virtual), PossibleProvider != ProviderNode, explicitly_requested_root(PossibleProvider), - not explicitly_requested_root(ProviderNode). + not explicitly_requested_root(ProviderNode), + internal_error("If a root can provide a virtual, it must be the provider"). % A package cannot be the actual provider for a virtual if it does not % fulfill the conditions to provide that virtual @@ -772,7 +782,8 @@ required_provider(Provider, Virtual) pkg_fact(Virtual, condition_effect(ConditionID, EffectID)), imposed_constraint(EffectID, "node", Provider). -:- provider(node(Y, Package), node(X, Virtual)), required_provider(Provider, Virtual), Package != Provider. +:- provider(node(Y, Package), node(X, Virtual)), required_provider(Provider, Virtual), Package != Provider, + internal_error("If a provider is required the concretizer must use it"). % TODO: the following choice rule allows the solver to add compiler % flags if their only source is from a requirement. This is overly-specific @@ -852,7 +863,8 @@ variant_defined(PackageNode, Name) :- variant_definition(PackageNode, Name, _). % for two or more variant definitions, this prefers the last one defined. :- node_has_variant(node(NodeID, Package), Name, SelectedVariantID), variant_definition(node(NodeID, Package), Name, VariantID), - VariantID > SelectedVariantID. + VariantID > SelectedVariantID, + internal_error("If the solver picks a variant descriptor it must use that variant descriptor"). % B: Associating applicable package rules with nodes @@ -969,6 +981,7 @@ error(100, "{0} variant '{1}' cannot have values '{2}' and '{3}' as they come fr :- attr("variant_set", node(ID, Package), Variant, Value), not attr("variant_value", node(ID, Package), Variant, Value). + internal_error("If a variant is set to a value it must have that value"). % The rules below allow us to prefer default values for variants % whenever possible. If a variant is set in a spec, or if it is @@ -979,7 +992,7 @@ variant_not_default(node(ID, Package), Variant, Value) % variants set explicitly on the CLI don't count as non-default not attr("variant_set", node(ID, Package), Variant, Value), % variant values forced by propagation don't count as non-default - not propagate(node(ID, Package), variant_value(Variant, Value)), + not propagate(node(ID, Package), variant_value(Variant, Value, _)), % variants set on externals that we could use don't count as non-default % this makes spack prefer to use an external over rebuilding with the % default configuration @@ -991,7 +1004,7 @@ variant_default_not_used(node(ID, Package), Variant, Value) :- variant_default_value(node(ID, Package), Variant, Value), node_has_variant(node(ID, Package), Variant, _), not attr("variant_value", node(ID, Package), Variant, Value), - not propagate(node(ID, Package), variant_value(Variant, _)), + not propagate(node(ID, Package), variant_value(Variant, _, _)), attr("node", node(ID, Package)). % The variant is set in an external spec @@ -1036,10 +1049,14 @@ variant_single_value(PackageNode, Variant) % Propagation semantics %----------------------------------------------------------------------------- +non_default_propagation(variant_value(Name, Value)) :- attr("propagate", RootNode, variant_value(Name, Value)). + % Propagation roots have a corresponding attr("propagate", ...) -propagate(RootNode, PropagatedAttribute) :- attr("propagate", RootNode, PropagatedAttribute). +propagate(RootNode, PropagatedAttribute) :- attr("propagate", RootNode, PropagatedAttribute), not non_default_propagation(PropagatedAttribute). propagate(RootNode, PropagatedAttribute, EdgeTypes) :- attr("propagate", RootNode, PropagatedAttribute, EdgeTypes). +% Special case variants, to inject the source node in the propagated attribute +propagate(RootNode, variant_value(Name, Value, RootNode)) :- attr("propagate", RootNode, variant_value(Name, Value)). % Propagate an attribute along edges to child nodes propagate(ChildNode, PropagatedAttribute) :- @@ -1061,21 +1078,53 @@ propagate(ChildNode, PropagatedAttribute, edge_types(DepType1, DepType2)) :- % If a variant is propagated, and can be accepted, set its value attr("variant_selected", PackageNode, Variant, Value, VariantType, VariantID) :- - propagate(PackageNode, variant_value(Variant, Value)), + propagate(PackageNode, variant_value(Variant, Value, _)), node_has_variant(PackageNode, Variant, VariantID), variant_type(VariantID, VariantType), - variant_possible_value(PackageNode, Variant, Value), - not attr("variant_set", PackageNode, Variant). + variant_possible_value(PackageNode, Variant, Value). % If a variant is propagated, we cannot have extraneous values variant_is_propagated(PackageNode, Variant) :- attr("variant_value", PackageNode, Variant, Value), - propagate(PackageNode, variant_value(Variant, Value)), + propagate(PackageNode, variant_value(Variant, Value, _)), not attr("variant_set", PackageNode, Variant). :- variant_is_propagated(PackageNode, Variant), attr("variant_selected", PackageNode, Variant, Value, _, _), - not propagate(PackageNode, variant_value(Variant, Value)). + not propagate(PackageNode, variant_value(Variant, Value, _)). + +error(100, "{0} and {1} cannot both propagate variant '{2}' to the shared dependency: {3}", + Package1, Package2, Variant, Dependency) :- + % The variant is a singlevalued variant + variant_single_value(node(X, Package1), Variant), + % Dependency is trying to propagate Variant with different values and is not the source package + propagate(node(Z, Dependency), variant_value(Variant, Value1, node(X, Package1))), + propagate(node(Z, Dependency), variant_value(Variant, Value2, node(Y, Package2))), + % Package1 and Package2 and their values are different + Package1 > Package2, Value1 != Value2, + not propagate(node(Z, Dependency), variant_value(Variant, _, node(Z, Dependency))). + +% Cannot propagate the same variant from two different packages if one is a dependency of the other +error(100, "{0} and {1} cannot both propagate variant '{2}'", Package1, Package2, Variant) :- + % The variant is a single-valued variant + variant_single_value(node(X, Package1), Variant), + % Package1 and Package2 and their values are different + Package1 != Package2, Value1 != Value2, + % Package2 is set to propagate the value from Package1 + propagate(node(Y, Package2), variant_value(Variant, Value2, node(X, Package2))), + propagate(node(Y, Package2), variant_value(Variant, Value1, node(X, Package1))), + variant_is_propagated(node(Y, Package2), Variant). + +% Cannot propagate a variant if a different value was set for it in a dependency +error(100, "Cannot propagate the variant '{0}' from the package: {1} because package: {2} is set to exclude it", Variant, Source, Package) :- + % Package has a Variant and Source is propagating Variant + attr("variant_set", node(X, Package), Variant, Value1), + % The packages and values are different + Source != Package, Value1 != Value2, + % The variant is a single-valued variant + variant_single_value(node(X, Package1), Variant), + % A different value is being propagated from somewhere else + propagate(node(X, Package), variant_value(Variant, Value2, node(Y, Source))). %---- % Flags @@ -1402,25 +1451,71 @@ attr("node_flag", PackageNode, NodeFlag) :- attr("node_flag_set", PackageNode, N %----------------------------------------------------------------------------- -% Installed packages +% Installed Packages %----------------------------------------------------------------------------- -% the solver is free to choose at most one installed hash for each package -{ attr("hash", node(ID, Package), Hash) : installed_hash(Package, Hash) } 1 - :- attr("node", node(ID, Package)), internal_error("Package must resolve to at most one hash"). +#defined installed_hash/2. +#defined abi_splice_conditions_hold/4. + +% These are the previously concretized attributes of the installed package as +% a hash. It has the general form: +% hash_attr(Hash, Attribute, PackageName, Args*) +#defined hash_attr/3. +#defined hash_attr/4. +#defined hash_attr/5. +#defined hash_attr/6. +#defined hash_attr/7. + +{ attr("hash", node(ID, PackageName), Hash): installed_hash(PackageName, Hash) } 1 :- + attr("node", node(ID, PackageName)), + internal_error("Package must resolve to at most 1 hash"). % you can't choose an installed hash for a dev spec :- attr("hash", PackageNode, Hash), attr("variant_value", PackageNode, "dev_path", _). - % You can't install a hash, if it is not installed :- attr("hash", node(ID, Package), Hash), not installed_hash(Package, Hash). -% This should be redundant given the constraint above -:- attr("node", PackageNode), 2 { attr("hash", PackageNode, Hash) }. -% if a hash is selected, we impose all the constraints that implies -impose(Hash, PackageNode) :- attr("hash", PackageNode, Hash). +% hash_attrs are versions, but can_splice_attr are usually node_version_satisfies +hash_attr(Hash, "node_version_satisfies", PackageName, Constraint) :- + hash_attr(Hash, "version", PackageName, Version), + pkg_fact(PackageName, version_satisfies(Constraint, Version)). + +% This recovers the exact semantics for hash reuse hash and depends_on are where +% splices are decided, and virtual_on_edge can result in name-changes, which is +% why they are all treated separately. +imposed_constraint(Hash, Attr, PackageName) :- + hash_attr(Hash, Attr, PackageName). +imposed_constraint(Hash, Attr, PackageName, A1) :- + hash_attr(Hash, Attr, PackageName, A1), Attr != "hash". +imposed_constraint(Hash, Attr, PackageName, Arg1, Arg2) :- + hash_attr(Hash, Attr, PackageName, Arg1, Arg2), + Attr != "depends_on", + Attr != "virtual_on_edge". +imposed_constraint(Hash, Attr, PackageName, A1, A2, A3) :- + hash_attr(Hash, Attr, PackageName, A1, A2, A3). +imposed_constraint(Hash, "hash", PackageName, Hash) :- installed_hash(PackageName, Hash). +% Without splicing, we simply recover the exact semantics +imposed_constraint(ParentHash, "hash", ChildName, ChildHash) :- + hash_attr(ParentHash, "hash", ChildName, ChildHash), + ChildHash != ParentHash, + not abi_splice_conditions_hold(_, _, ChildName, ChildHash). + +imposed_constraint(Hash, "depends_on", PackageName, DepName, Type) :- + hash_attr(Hash, "depends_on", PackageName, DepName, Type), + hash_attr(Hash, "hash", DepName, DepHash), + not attr("splice_at_hash", _, _, DepName, DepHash). + +imposed_constraint(Hash, "virtual_on_edge", PackageName, DepName, VirtName) :- + hash_attr(Hash, "virtual_on_edge", PackageName, DepName, VirtName), + not attr("splice_at_hash", _, _, DepName,_). + +% Rules pertaining to attr("splice_at_hash") and abi_splice_conditions_hold will +% be conditionally loaded from splices.lp + +impose(Hash, PackageNode) :- attr("hash", PackageNode, Hash), attr("node", PackageNode). + +% If there is not a hash for a package, we build it. +build(PackageNode) :- attr("node", PackageNode), not concrete(PackageNode). -% if we haven't selected a hash for a package, we'll be building it -build(PackageNode) :- not attr("hash", PackageNode, _), attr("node", PackageNode). % Minimizing builds is tricky. We want a minimizing criterion @@ -1433,6 +1528,7 @@ build(PackageNode) :- not attr("hash", PackageNode, _), attr("node", PackageNode % criteria for built specs -- so that they take precedence over the otherwise % topmost-priority criterion to reuse what is installed. % + % The priority ranges are: % 1000+ Optimizations for concretization errors % 300 - 1000 Highest priority optimizations for valid solutions @@ -1458,12 +1554,10 @@ build_priority(PackageNode, 0) :- not build(PackageNode), attr("node", Package pkg_fact(Package, version_declared(Version, Weight, "installed")), not optimize_for_reuse(). -#defined installed_hash/2. % This statement, which is a hidden feature of clingo, let us avoid cycles in the DAG #edge (A, B) : depends_on(A, B). - %----------------------------------------------------------------- % Optimization to avoid errors %----------------------------------------------------------------- diff --git a/lib/spack/spack/solver/core.py b/lib/spack/spack/solver/core.py index 2530981a21dda6..ba257173a502f1 100644 --- a/lib/spack/spack/solver/core.py +++ b/lib/spack/spack/solver/core.py @@ -44,6 +44,17 @@ def _id(thing: Any) -> Union[str, AspObject]: return f'"{str(thing)}"' +class AspVar(AspObject): + """Represents a variable in an ASP rule, allows for conditionally generating + rules""" + + def __init__(self, name: str): + self.name = name + + def __str__(self) -> str: + return str(self.name) + + @lang.key_ordering class AspFunction(AspObject): """A term in the ASP logic program""" @@ -88,6 +99,8 @@ def _argify(self, arg: Any) -> Any: return clingo().Number(arg) elif isinstance(arg, AspFunction): return clingo().Function(arg.name, [self._argify(x) for x in arg.args], positive=True) + elif isinstance(arg, AspVar): + return clingo().Variable(arg.name) return clingo().String(str(arg)) def symbol(self): diff --git a/lib/spack/spack/solver/display.lp b/lib/spack/spack/solver/display.lp index 675a9d17d278ee..61d96b25b5ac2c 100644 --- a/lib/spack/spack/solver/display.lp +++ b/lib/spack/spack/solver/display.lp @@ -15,7 +15,6 @@ #show attr/4. #show attr/5. #show attr/6. - % names of optimization criteria #show opt_criterion/2. diff --git a/lib/spack/spack/solver/splices.lp b/lib/spack/spack/solver/splices.lp new file mode 100644 index 00000000000000..96762c456c18db --- /dev/null +++ b/lib/spack/spack/solver/splices.lp @@ -0,0 +1,56 @@ +% Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +% Spack Project Developers. See the top-level COPYRIGHT file for details. +% +% SPDX-License-Identifier: (Apache-2.0 OR MIT) + +%============================================================================= +% These rules are conditionally loaded to handle the synthesis of spliced +% packages. +% ============================================================================= +% Consider the concrete spec: +% foo@2.72%gcc@11.4 arch=linux-ubuntu22.04-icelake build_system=autotools ^bar ... +% It will emit the following facts for reuse (below is a subset) +% installed_hash("foo", "xxxyyy") +% hash_attr("xxxyyy", "hash", "foo", "xxxyyy") +% hash_attr("xxxyyy", "version", "foo", "2.72") +% hash_attr("xxxyyy", "node_os", "ubuntu22.04") +% hash_attr("xxxyyy", "hash", "bar", "zzzqqq") +% hash_attr("xxxyyy", "depends_on", "foo", "bar", "link") +% Rules that derive abi_splice_conditions_hold will be generated from +% use of the `can_splice` directive. The will have the following form: +% can_splice("foo@1.0.0+a", when="@1.0.1+a", match_variants=["b"]) ---> +% abi_splice_conditions_hold(0, node(SID, "foo"), "foo", BashHash) :- +% installed_hash("foo", BaseHash), +% attr("node", node(SID, SpliceName)), +% attr("node_version_satisfies", node(SID, "foo"), "1.0.1"), +% hash_attr("hash", "node_version_satisfies", "foo", "1.0.1"), +% attr("variant_value", node(SID, "foo"), "a", "True"), +% hash_attr("hash", "variant_value", "foo", "a", "True"), +% attr("variant_value", node(SID, "foo"), "b", VariVar0), +% hash_attr("hash", "variant_value", "foo", "b", VariVar0), + +% If the splice is valid (i.e. abi_splice_conditions_hold is derived) in the +% dependency of a concrete spec the solver free to choose whether to continue +% with the exact hash semantics by simply imposing the child hash, or introducing +% a spliced node as the dependency instead +{ imposed_constraint(ParentHash, "hash", ChildName, ChildHash) } :- + hash_attr(ParentHash, "hash", ChildName, ChildHash), + abi_splice_conditions_hold(_, node(SID, SpliceName), ChildName, ChildHash). + +attr("splice_at_hash", ParentNode, node(SID, SpliceName), ChildName, ChildHash) :- + attr("hash", ParentNode, ParentHash), + hash_attr(ParentHash, "hash", ChildName, ChildHash), + abi_splice_conditions_hold(_, node(SID, SpliceName), ChildName, ChildHash), + ParentHash != ChildHash, + not imposed_constraint(ParentHash, "hash", ChildName, ChildHash). + +% Names and virtual providers may change when a dependency is spliced in +imposed_constraint(Hash, "dependency_holds", ParentName, SpliceName, Type) :- + hash_attr(Hash, "depends_on", ParentName, DepName, Type), + hash_attr(Hash, "hash", DepName, DepHash), + attr("splice_at_hash", node(ID, ParentName), node(SID, SpliceName), DepName, DepHash). + +imposed_constraint(Hash, "virtual_on_edge", ParentName, SpliceName, VirtName) :- + hash_attr(Hash, "virtual_on_edge", ParentName, DepName, VirtName), + attr("splice_at_hash", node(ID, ParentName), node(SID, SpliceName), DepName, DepHash). + diff --git a/lib/spack/spack/spec.py b/lib/spack/spack/spec.py index 2fe177e19e595c..17916bb8cf06ac 100644 --- a/lib/spack/spack/spec.py +++ b/lib/spack/spack/spec.py @@ -59,7 +59,7 @@ import re import socket import warnings -from typing import Any, Callable, Dict, List, Match, Optional, Set, Tuple, Union +from typing import Any, Callable, Dict, Iterable, List, Match, Optional, Set, Tuple, Union import archspec.cpu @@ -877,8 +877,9 @@ def constrain(self, other): # Next, if any flags in other propagate, we force them to propagate in our case shared = list(sorted(set(other[flag_type]) - extra_other)) for x, y in _shared_subset_pair_iterate(shared, sorted(self[flag_type])): - if x.propagate: - y.propagate = True + if y.propagate is True and x.propagate is False: + changed = True + y.propagate = False # TODO: what happens if flag groups with a partial (but not complete) # intersection specify different behaviors for flag propagation? @@ -933,6 +934,7 @@ def _cmp_iter(self): def flags(): for flag in v: yield flag + yield flag.propagate yield flags @@ -963,10 +965,6 @@ def _sort_by_dep_types(dspec: DependencySpec): return dspec.depflag -#: Enum for edge directions -EdgeDirection = lang.enum(parent=0, child=1) - - @lang.lazy_lexicographic_ordering class _EdgeMap(collections.abc.Mapping): """Represent a collection of edges (DependencySpec objects) in the DAG. @@ -980,26 +978,20 @@ class _EdgeMap(collections.abc.Mapping): __slots__ = "edges", "store_by_child" - def __init__(self, store_by=EdgeDirection.child): - # Sanitize input arguments - msg = 'unexpected value for "store_by" argument' - assert store_by in (EdgeDirection.child, EdgeDirection.parent), msg + def __init__(self, store_by_child: bool = True) -> None: + self.edges: Dict[str, List[DependencySpec]] = {} + self.store_by_child = store_by_child - #: This dictionary maps a package name to a list of edges - #: i.e. to a list of DependencySpec objects - self.edges = {} - self.store_by_child = store_by == EdgeDirection.child - - def __getitem__(self, key): + def __getitem__(self, key: str) -> List[DependencySpec]: return self.edges[key] def __iter__(self): return iter(self.edges) - def __len__(self): + def __len__(self) -> int: return len(self.edges) - def add(self, edge: DependencySpec): + def add(self, edge: DependencySpec) -> None: key = edge.spec.name if self.store_by_child else edge.parent.name if key in self.edges: lst = self.edges[key] @@ -1008,8 +1000,8 @@ def add(self, edge: DependencySpec): else: self.edges[key] = [edge] - def __str__(self): - return "{deps: %s}" % ", ".join(str(d) for d in sorted(self.values())) + def __str__(self) -> str: + return f"{{deps: {', '.join(str(d) for d in sorted(self.values()))}}}" def _cmp_iter(self): for item in sorted(itertools.chain.from_iterable(self.edges.values())): @@ -1026,24 +1018,32 @@ def copy(self): return clone - def select(self, parent=None, child=None, depflag: dt.DepFlag = dt.ALL): - """Select a list of edges and return them. + def select( + self, + *, + parent: Optional[str] = None, + child: Optional[str] = None, + depflag: dt.DepFlag = dt.ALL, + virtuals: Optional[List[str]] = None, + ) -> List[DependencySpec]: + """Selects a list of edges and returns them. If an edge: + - Has *any* of the dependency types passed as argument, - - Matches the parent and/or child name, if passed + - Matches the parent and/or child name + - Provides *any* of the virtuals passed as argument + then it is selected. The deptypes argument needs to be a flag, since the method won't convert it for performance reason. Args: - parent (str): name of the parent package - child (str): name of the child package + parent: name of the parent package + child: name of the child package depflag: allowed dependency types in flag form - - Returns: - List of DependencySpec objects + virtuals: list of virtuals on the edge """ if not depflag: return [] @@ -1062,6 +1062,10 @@ def select(self, parent=None, child=None, depflag: dt.DepFlag = dt.ALL): # Filter by allowed dependency types selected = (dep for dep in selected if not dep.depflag or (depflag & dep.depflag)) + # Filter by virtuals + if virtuals is not None: + selected = (dep for dep in selected if any(v in dep.virtuals for v in virtuals)) + return list(selected) def clear(self): @@ -1470,8 +1474,8 @@ def __init__( self.architecture = None self.compiler = None self.compiler_flags = FlagMap(self) - self._dependents = _EdgeMap(store_by=EdgeDirection.parent) - self._dependencies = _EdgeMap(store_by=EdgeDirection.child) + self._dependents = _EdgeMap(store_by_child=False) + self._dependencies = _EdgeMap(store_by_child=True) self.namespace = None # initial values for all spec hash types @@ -1591,7 +1595,7 @@ def _get_dependency(self, name): return deps[0] def edges_from_dependents( - self, name=None, depflag: dt.DepFlag = dt.ALL + self, name=None, depflag: dt.DepFlag = dt.ALL, *, virtuals: Optional[List[str]] = None ) -> List[DependencySpec]: """Return a list of edges connecting this node in the DAG to parents. @@ -1599,20 +1603,25 @@ def edges_from_dependents( Args: name (str): filter dependents by package name depflag: allowed dependency types + virtuals: allowed virtuals """ - return [d for d in self._dependents.select(parent=name, depflag=depflag)] + return [ + d for d in self._dependents.select(parent=name, depflag=depflag, virtuals=virtuals) + ] def edges_to_dependencies( - self, name=None, depflag: dt.DepFlag = dt.ALL + self, name=None, depflag: dt.DepFlag = dt.ALL, *, virtuals: Optional[List[str]] = None ) -> List[DependencySpec]: - """Return a list of edges connecting this node in the DAG - to children. + """Returns a list of edges connecting this node in the DAG to children. Args: name (str): filter dependencies by package name depflag: allowed dependency types + virtuals: allowed virtuals """ - return [d for d in self._dependencies.select(child=name, depflag=depflag)] + return [ + d for d in self._dependencies.select(child=name, depflag=depflag, virtuals=virtuals) + ] @property def edge_attributes(self) -> str: @@ -1635,17 +1644,24 @@ def edge_attributes(self) -> str: return f"[{result}]" def dependencies( - self, name=None, deptype: Union[dt.DepTypes, dt.DepFlag] = dt.ALL + self, + name=None, + deptype: Union[dt.DepTypes, dt.DepFlag] = dt.ALL, + *, + virtuals: Optional[List[str]] = None, ) -> List["Spec"]: - """Return a list of direct dependencies (nodes in the DAG). + """Returns a list of direct dependencies (nodes in the DAG) Args: - name (str): filter dependencies by package name + name: filter dependencies by package name deptype: allowed dependency types + virtuals: allowed virtuals """ if not isinstance(deptype, dt.DepFlag): deptype = dt.canonicalize(deptype) - return [d.spec for d in self.edges_to_dependencies(name, depflag=deptype)] + return [ + d.spec for d in self.edges_to_dependencies(name, depflag=deptype, virtuals=virtuals) + ] def dependents( self, name=None, deptype: Union[dt.DepTypes, dt.DepFlag] = dt.ALL @@ -2185,6 +2201,18 @@ def to_node_dict(self, hash=ht.dag_hash): if params: d["parameters"] = params + if params and not self.concrete: + flag_names = [ + name + for name, flags in self.compiler_flags.items() + if any(x.propagate for x in flags) + ] + d["propagate"] = sorted( + itertools.chain( + [v.name for v in self.variants.values() if v.propagate], flag_names + ) + ) + if self.external: d["external"] = syaml.syaml_dict( [ @@ -2357,16 +2385,10 @@ def node_dict_with_hashes(self, hash=ht.dag_hash): spec is concrete, the full hash is added as well. If 'build' is in the hash_type, the build hash is also added.""" node = self.to_node_dict(hash) + # All specs have at least a DAG hash node[ht.dag_hash.name] = self.dag_hash() - # dag_hash is lazily computed -- but if we write a spec out, we want it - # to be included. This is effectively the last chance we get to compute - # it accurately. - if self.concrete: - # all specs have at least a DAG hash - node[ht.dag_hash.name] = self.dag_hash() - - else: + if not self.concrete: node["concrete"] = False # we can also give them other hash types if we want @@ -2813,7 +2835,7 @@ def ensure_no_deprecated(root): msg += " For each package listed, choose another spec\n" raise SpecDeprecatedError(msg) - def concretize(self, tests: Union[bool, List[str]] = False) -> None: + def concretize(self, tests: Union[bool, Iterable[str]] = False) -> None: """Concretize the current spec. Args: @@ -2892,7 +2914,7 @@ def _mark_concrete(self, value=True): if (not value) and s.concrete and s.installed: continue elif not value: - s.clear_cached_hashes() + s.clear_caches() s._mark_root_concrete(value) def _finalize_concretization(self): @@ -2941,7 +2963,7 @@ def _finalize_concretization(self): for spec in self.traverse(): spec._cached_hash(ht.dag_hash) - def concretized(self, tests=False): + def concretized(self, tests: Union[bool, Iterable[str]] = False) -> "spack.spec.Spec": """This is a non-destructive version of concretize(). First clones, then returns a concrete version of this package @@ -3005,7 +3027,12 @@ def ensure_valid_variants(spec): pkg_variants = pkg_cls.variant_names() # reserved names are variants that may be set on any package # but are not necessarily recorded by the package's class - not_existing = set(spec.variants) - (set(pkg_variants) | set(vt.reserved_names)) + propagate_variants = [name for name, variant in spec.variants.items() if variant.propagate] + + not_existing = set(spec.variants) - ( + set(pkg_variants) | set(vt.reserved_names) | set(propagate_variants) + ) + if not_existing: raise vt.UnknownVariantError( f"No such variant {not_existing} for spec: '{spec}'", list(not_existing) @@ -3032,6 +3059,10 @@ def constrain(self, other, deps=True): raise spack.error.UnsatisfiableSpecError(self, other, "constrain a concrete spec") other = self._autospec(other) + if other.concrete and other.satisfies(self): + self._dup(other) + return True + if other.abstract_hash: if not self.abstract_hash or other.abstract_hash.startswith(self.abstract_hash): self.abstract_hash = other.abstract_hash @@ -3526,8 +3557,8 @@ def _dup(self, other, deps: Union[bool, dt.DepTypes, dt.DepFlag] = True, clearde self.architecture = other.architecture.copy() if other.architecture else None self.compiler = other.compiler.copy() if other.compiler else None if cleardeps: - self._dependents = _EdgeMap(store_by=EdgeDirection.parent) - self._dependencies = _EdgeMap(store_by=EdgeDirection.child) + self._dependents = _EdgeMap(store_by_child=False) + self._dependencies = _EdgeMap(store_by_child=True) self.compiler_flags = other.compiler_flags.copy() self.compiler_flags.spec = self self.variants = other.variants.copy() @@ -4035,7 +4066,7 @@ def format_path( def __str__(self): if self._concrete: - return self.format("{name}{@version}{/hash:7}") + return self.format("{name}{@version}{/hash}") if not self._dependencies: return self.format() @@ -4232,7 +4263,7 @@ def _splice_detach_and_add_dependents(self, replacement, context): for ancestor in ancestors_in_context: # Only set it if it hasn't been spliced before ancestor._build_spec = ancestor._build_spec or ancestor.copy() - ancestor.clear_cached_hashes(ignore=(ht.package_hash.attr,)) + ancestor.clear_caches(ignore=(ht.package_hash.attr,)) for edge in ancestor.edges_to_dependencies(depflag=dt.BUILD): if edge.depflag & ~dt.BUILD: edge.depflag &= ~dt.BUILD @@ -4426,7 +4457,7 @@ def mask_build_deps(in_spec): return spec - def clear_cached_hashes(self, ignore=()): + def clear_caches(self, ignore=()): """ Clears all cached hashes in a Spec, while preserving other properties. """ @@ -4434,7 +4465,9 @@ def clear_cached_hashes(self, ignore=()): if h.attr not in ignore: if hasattr(self, h.attr): setattr(self, h.attr, None) - self._dunder_hash = None + for attr in ("_dunder_hash", "_prefix"): + if attr not in ignore: + setattr(self, attr, None) def __hash__(self): # If the spec is concrete, we leverage the process hash and just use @@ -4510,8 +4543,69 @@ def substitute(self, vspec): # Set the item super().__setitem__(vspec.name, vspec) - def satisfies(self, other): - return all(k in self and self[k].satisfies(other[k]) for k in other) + def partition_variants(self): + non_prop, prop = lang.stable_partition(self.values(), lambda x: not x.propagate) + # Just return the names + non_prop = [x.name for x in non_prop] + prop = [x.name for x in prop] + return non_prop, prop + + def satisfies(self, other: "VariantMap") -> bool: + if self.spec.concrete: + return self._satisfies_when_self_concrete(other) + return self._satisfies_when_self_abstract(other) + + def _satisfies_when_self_concrete(self, other: "VariantMap") -> bool: + non_propagating, propagating = other.partition_variants() + result = all( + name in self and self[name].satisfies(other[name]) for name in non_propagating + ) + if not propagating: + return result + + for node in self.spec.traverse(): + if not all( + node.variants[name].satisfies(other[name]) + for name in propagating + if name in node.variants + ): + return False + return result + + def _satisfies_when_self_abstract(self, other: "VariantMap") -> bool: + other_non_propagating, other_propagating = other.partition_variants() + self_non_propagating, self_propagating = self.partition_variants() + + # First check variants without propagation set + result = all( + name in self_non_propagating + and (self[name].propagate or self[name].satisfies(other[name])) + for name in other_non_propagating + ) + if result is False or (not other_propagating and not self_propagating): + return result + + # Check that self doesn't contradict variants propagated by other + if other_propagating: + for node in self.spec.traverse(): + if not all( + node.variants[name].satisfies(other[name]) + for name in other_propagating + if name in node.variants + ): + return False + + # Check that other doesn't contradict variants propagated by self + if self_propagating: + for node in other.spec.traverse(): + if not all( + node.variants[name].satisfies(self[name]) + for name in self_propagating + if name in node.variants + ): + return False + + return result def intersects(self, other): return all(self[k].intersects(other[k]) for k in other if k in self) @@ -4724,13 +4818,17 @@ def from_node_dict(cls, node): else: spec.compiler = None + propagated_names = node.get("propagate", []) for name, values in node.get("parameters", {}).items(): + propagate = name in propagated_names if name in _valid_compiler_flags: spec.compiler_flags[name] = [] for val in values: - spec.compiler_flags.add_flag(name, val, False) + spec.compiler_flags.add_flag(name, val, propagate) else: - spec.variants[name] = vt.MultiValuedVariant.from_node_dict(name, values) + spec.variants[name] = vt.MultiValuedVariant.from_node_dict( + name, values, propagate=propagate + ) spec.external_path = None spec.external_modules = None diff --git a/lib/spack/spack/store.py b/lib/spack/spack/store.py index 31369531d550ce..abd7d9250007c0 100644 --- a/lib/spack/spack/store.py +++ b/lib/spack/spack/store.py @@ -33,16 +33,12 @@ import spack.error import spack.paths import spack.spec -import spack.store import spack.util.path #: default installation root, relative to the Spack install path DEFAULT_INSTALL_TREE_ROOT = os.path.join(spack.paths.opt_path, "spack") -ConfigurationType = Union["spack.config.Configuration", "llnl.util.lang.Singleton"] - - def parse_install_tree(config_dict): """Parse config settings and return values relevant to the store object. @@ -208,7 +204,7 @@ def __reduce__(self): ) -def create(configuration: ConfigurationType) -> Store: +def create(configuration: spack.config.Configuration) -> Store: """Create a store from the configuration passed as input. Args: @@ -241,7 +237,7 @@ def _create_global() -> Store: #: Singleton store instance -STORE: Union[Store, llnl.util.lang.Singleton] = llnl.util.lang.Singleton(_create_global) +STORE: Store = llnl.util.lang.Singleton(_create_global) # type: ignore def reinitialize(): @@ -308,7 +304,7 @@ def find( matching_specs: List[spack.spec.Spec] = [] errors = [] - query_fn = query_fn or spack.store.STORE.db.query + query_fn = query_fn or STORE.db.query for spec in constraints: current_matches = query_fn(spec, **kwargs) @@ -341,7 +337,7 @@ def specfile_matches(filename: str, **kwargs) -> List["spack.spec.Spec"]: **kwargs: keyword arguments forwarded to "find" """ query = [spack.spec.Spec.from_specfile(filename)] - return spack.store.find(query, **kwargs) + return find(query, **kwargs) def ensure_singleton_created() -> None: diff --git a/lib/spack/spack/subprocess_context.py b/lib/spack/spack/subprocess_context.py index c823e657036fad..507045e42faf5b 100644 --- a/lib/spack/spack/subprocess_context.py +++ b/lib/spack/spack/subprocess_context.py @@ -17,7 +17,6 @@ import multiprocessing import pickle import pydoc -import sys from types import ModuleType import spack.config @@ -27,9 +26,6 @@ import spack.repo import spack.store -_SERIALIZE = sys.platform == "win32" or (sys.version_info >= (3, 8) and sys.platform == "darwin") - - patches = None @@ -56,7 +52,7 @@ def _restore_and_run(self, fn, test_state): fn() def create(self): - test_state = TestState() + test_state = GlobalStateMarshaler() return multiprocessing.Process(target=self._restore_and_run, args=(self.fn, test_state)) @@ -65,49 +61,56 @@ class PackageInstallContext: needs to be transmitted to a child process. """ - def __init__(self, pkg): - if _SERIALIZE: + def __init__(self, pkg, *, ctx=None): + ctx = ctx or multiprocessing.get_context() + self.serialize = ctx.get_start_method() != "fork" + if self.serialize: self.serialized_pkg = serialize(pkg) + self.global_state = GlobalStateMarshaler() self.serialized_env = serialize(spack.environment.active_environment()) else: self.pkg = pkg + self.global_state = None self.env = spack.environment.active_environment() self.spack_working_dir = spack.paths.spack_working_dir - self.test_state = TestState() def restore(self): - self.test_state.restore() spack.paths.spack_working_dir = self.spack_working_dir - env = pickle.load(self.serialized_env) if _SERIALIZE else self.env + env = pickle.load(self.serialized_env) if self.serialize else self.env + # Activating the environment modifies the global configuration, so globals have to + # be restored afterward, in case other modifications were applied on top (e.g. from + # command line) if env: spack.environment.activate(env) + + if self.serialize: + self.global_state.restore() + # Order of operation is important, since the package might be retrieved # from a repo defined within the environment configuration - pkg = pickle.load(self.serialized_pkg) if _SERIALIZE else self.pkg + pkg = pickle.load(self.serialized_pkg) if self.serialize else self.pkg return pkg -class TestState: - """Spack tests may modify state that is normally read from disk in memory; - this object is responsible for properly serializing that state to be - applied to a subprocess. This isn't needed outside of a testing environment - but this logic is designed to behave the same inside or outside of tests. +class GlobalStateMarshaler: + """Class to serialize and restore global state for child processes. + + Spack may modify state that is normally read from disk or command line in memory; + this object is responsible for properly serializing that state to be applied to a subprocess. """ def __init__(self): - if _SERIALIZE: - self.config = spack.config.CONFIG - self.platform = spack.platforms.host - self.test_patches = store_patches() - self.store = spack.store.STORE + self.config = spack.config.CONFIG.ensure_unwrapped() + self.platform = spack.platforms.host + self.test_patches = store_patches() + self.store = spack.store.STORE def restore(self): - if _SERIALIZE: - spack.config.CONFIG = self.config - spack.repo.PATH = spack.repo.create(self.config) - spack.platforms.host = self.platform - spack.store.STORE = self.store - self.test_patches.restore() + spack.config.CONFIG = self.config + spack.repo.PATH = spack.repo.create(self.config) + spack.platforms.host = self.platform + spack.store.STORE = self.store + self.test_patches.restore() class TestPatches: diff --git a/lib/spack/spack/test/abi_splicing.py b/lib/spack/spack/test/abi_splicing.py new file mode 100644 index 00000000000000..d647647797571f --- /dev/null +++ b/lib/spack/spack/test/abi_splicing.py @@ -0,0 +1,247 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +""" Test ABI-based splicing of dependencies """ + +from typing import List + +import pytest + +import spack.config +import spack.deptypes as dt +import spack.solver.asp +from spack.installer import PackageInstaller +from spack.spec import Spec + + +class CacheManager: + def __init__(self, specs: List[str]) -> None: + self.req_specs = specs + self.concr_specs: List[Spec] + self.concr_specs = [] + + def __enter__(self): + self.concr_specs = [Spec(s).concretized() for s in self.req_specs] + for s in self.concr_specs: + PackageInstaller([s.package], fake=True, explicit=True).install() + + def __exit__(self, exc_type, exc_val, exc_tb): + for s in self.concr_specs: + s.package.do_uninstall() + + +# MacOS and Windows only work if you pass this function pointer rather than a +# closure +def _mock_has_runtime_dependencies(_x): + return True + + +def _make_specs_non_buildable(specs: List[str]): + output_config = {} + for spec in specs: + output_config[spec] = {"buildable": False} + return output_config + + +@pytest.fixture +def splicing_setup(mutable_database, mock_packages, monkeypatch): + spack.config.set("concretizer:reuse", True) + monkeypatch.setattr( + spack.solver.asp, "_has_runtime_dependencies", _mock_has_runtime_dependencies + ) + + +def _enable_splicing(): + spack.config.set("concretizer:splice", {"automatic": True}) + + +def _has_build_dependency(spec: Spec, name: str): + return any(s.name == name for s in spec.dependencies(None, dt.BUILD)) + + +def test_simple_reuse(splicing_setup): + with CacheManager(["splice-z@1.0.0+compat"]): + spack.config.set("packages", _make_specs_non_buildable(["splice-z"])) + assert Spec("splice-z").concretized().satisfies(Spec("splice-z")) + + +def test_simple_dep_reuse(splicing_setup): + with CacheManager(["splice-z@1.0.0+compat"]): + spack.config.set("packages", _make_specs_non_buildable(["splice-z"])) + assert Spec("splice-h@1").concretized().satisfies(Spec("splice-h@1")) + + +def test_splice_installed_hash(splicing_setup): + cache = [ + "splice-t@1 ^splice-h@1.0.0+compat ^splice-z@1.0.0", + "splice-h@1.0.2+compat ^splice-z@1.0.0", + ] + with CacheManager(cache): + packages_config = _make_specs_non_buildable(["splice-t", "splice-h"]) + spack.config.set("packages", packages_config) + goal_spec = Spec("splice-t@1 ^splice-h@1.0.2+compat ^splice-z@1.0.0") + with pytest.raises(Exception): + goal_spec.concretized() + _enable_splicing() + assert goal_spec.concretized().satisfies(goal_spec) + + +def test_splice_build_splice_node(splicing_setup): + with CacheManager(["splice-t@1 ^splice-h@1.0.0+compat ^splice-z@1.0.0+compat"]): + spack.config.set("packages", _make_specs_non_buildable(["splice-t"])) + goal_spec = Spec("splice-t@1 ^splice-h@1.0.2+compat ^splice-z@1.0.0+compat") + with pytest.raises(Exception): + goal_spec.concretized() + _enable_splicing() + assert goal_spec.concretized().satisfies(goal_spec) + + +def test_double_splice(splicing_setup): + cache = [ + "splice-t@1 ^splice-h@1.0.0+compat ^splice-z@1.0.0+compat", + "splice-h@1.0.2+compat ^splice-z@1.0.1+compat", + "splice-z@1.0.2+compat", + ] + with CacheManager(cache): + freeze_builds_config = _make_specs_non_buildable(["splice-t", "splice-h", "splice-z"]) + spack.config.set("packages", freeze_builds_config) + goal_spec = Spec("splice-t@1 ^splice-h@1.0.2+compat ^splice-z@1.0.2+compat") + with pytest.raises(Exception): + goal_spec.concretized() + _enable_splicing() + assert goal_spec.concretized().satisfies(goal_spec) + + +# The next two tests are mirrors of one another +def test_virtual_multi_splices_in(splicing_setup): + cache = [ + "depends-on-virtual-with-abi ^virtual-abi-1", + "depends-on-virtual-with-abi ^virtual-abi-2", + ] + goal_specs = [ + "depends-on-virtual-with-abi ^virtual-abi-multi abi=one", + "depends-on-virtual-with-abi ^virtual-abi-multi abi=two", + ] + with CacheManager(cache): + spack.config.set("packages", _make_specs_non_buildable(["depends-on-virtual-with-abi"])) + for gs in goal_specs: + with pytest.raises(Exception): + Spec(gs).concretized() + _enable_splicing() + for gs in goal_specs: + assert Spec(gs).concretized().satisfies(gs) + + +def test_virtual_multi_can_be_spliced(splicing_setup): + cache = [ + "depends-on-virtual-with-abi ^virtual-abi-multi abi=one", + "depends-on-virtual-with-abi ^virtual-abi-multi abi=two", + ] + goal_specs = [ + "depends-on-virtual-with-abi ^virtual-abi-1", + "depends-on-virtual-with-abi ^virtual-abi-2", + ] + with CacheManager(cache): + spack.config.set("packages", _make_specs_non_buildable(["depends-on-virtual-with-abi"])) + with pytest.raises(Exception): + for gs in goal_specs: + Spec(gs).concretized() + _enable_splicing() + for gs in goal_specs: + assert Spec(gs).concretized().satisfies(gs) + + +def test_manyvariant_star_matching_variant_splice(splicing_setup): + cache = [ + # can_splice("manyvariants@1.0.0", when="@1.0.1", match_variants="*") + "depends-on-manyvariants ^manyvariants@1.0.0+a+b c=v1 d=v2", + "depends-on-manyvariants ^manyvariants@1.0.0~a~b c=v3 d=v3", + ] + goal_specs = [ + Spec("depends-on-manyvariants ^manyvariants@1.0.1+a+b c=v1 d=v2"), + Spec("depends-on-manyvariants ^manyvariants@1.0.1~a~b c=v3 d=v3"), + ] + with CacheManager(cache): + freeze_build_config = {"depends-on-manyvariants": {"buildable": False}} + spack.config.set("packages", freeze_build_config) + for goal in goal_specs: + with pytest.raises(Exception): + goal.concretized() + _enable_splicing() + for goal in goal_specs: + assert goal.concretized().satisfies(goal) + + +def test_manyvariant_limited_matching(splicing_setup): + cache = [ + # can_splice("manyvariants@2.0.0+a~b", when="@2.0.1~a+b", match_variants=["c", "d"]) + "depends-on-manyvariants@2.0 ^manyvariants@2.0.0+a~b c=v3 d=v2", + # can_splice("manyvariants@2.0.0 c=v1 d=v1", when="@2.0.1+a+b") + "depends-on-manyvariants@2.0 ^manyvariants@2.0.0~a~b c=v1 d=v1", + ] + goal_specs = [ + Spec("depends-on-manyvariants@2.0 ^manyvariants@2.0.1~a+b c=v3 d=v2"), + Spec("depends-on-manyvariants@2.0 ^manyvariants@2.0.1+a+b c=v3 d=v3"), + ] + with CacheManager(cache): + freeze_build_config = {"depends-on-manyvariants": {"buildable": False}} + spack.config.set("packages", freeze_build_config) + for s in goal_specs: + with pytest.raises(Exception): + s.concretized() + _enable_splicing() + for s in goal_specs: + assert s.concretized().satisfies(s) + + +def test_external_splice_same_name(splicing_setup): + cache = [ + "splice-h@1.0.0 ^splice-z@1.0.0+compat", + "splice-t@1.0 ^splice-h@1.0.1 ^splice-z@1.0.1+compat", + ] + packages_yaml = { + "splice-z": {"externals": [{"spec": "splice-z@1.0.2+compat", "prefix": "/usr"}]} + } + goal_specs = [ + Spec("splice-h@1.0.0 ^splice-z@1.0.2"), + Spec("splice-t@1.0 ^splice-h@1.0.1 ^splice-z@1.0.2"), + ] + with CacheManager(cache): + spack.config.set("packages", packages_yaml) + _enable_splicing() + for s in goal_specs: + assert s.concretized().satisfies(s) + + +def test_spliced_build_deps_only_in_build_spec(splicing_setup): + cache = ["splice-t@1.0 ^splice-h@1.0.1 ^splice-z@1.0.0"] + goal_spec = Spec("splice-t@1.0 ^splice-h@1.0.2 ^splice-z@1.0.0") + + with CacheManager(cache): + _enable_splicing() + concr_goal = goal_spec.concretized() + build_spec = concr_goal._build_spec + # Spec has been spliced + assert build_spec is not None + # Build spec has spliced build dependencies + assert _has_build_dependency(build_spec, "splice-h") + assert _has_build_dependency(build_spec, "splice-z") + # Spliced build dependencies are removed + assert len(concr_goal.dependencies(None, dt.BUILD)) == 0 + + +def test_spliced_transitive_dependency(splicing_setup): + cache = ["splice-depends-on-t@1.0 ^splice-h@1.0.1"] + goal_spec = Spec("splice-depends-on-t^splice-h@1.0.2") + + with CacheManager(cache): + spack.config.set("packages", _make_specs_non_buildable(["splice-depends-on-t"])) + _enable_splicing() + concr_goal = goal_spec.concretized() + # Spec has been spliced + assert concr_goal._build_spec is not None + assert concr_goal["splice-t"]._build_spec is not None + assert concr_goal.satisfies(goal_spec) + # Spliced build dependencies are removed + assert len(concr_goal.dependencies(None, dt.BUILD)) == 0 diff --git a/lib/spack/spack/test/build_environment.py b/lib/spack/spack/test/build_environment.py index f435a893a14ac9..dd42d5cb458306 100644 --- a/lib/spack/spack/test/build_environment.py +++ b/lib/spack/spack/test/build_environment.py @@ -15,6 +15,8 @@ from llnl.util.filesystem import HeaderList, LibraryList import spack.build_environment +import spack.compiler +import spack.compilers import spack.config import spack.deptypes as dt import spack.package_base @@ -516,6 +518,30 @@ def test_setting_dtags_based_on_config(config_setting, expected_flag, config, mo assert dtags_to_add.value == expected_flag +def test_module_globals_available_at_setup_dependent_time( + monkeypatch, mutable_config, mock_packages, working_env +): + """Spack built package externaltest depends on an external package + externaltool. Externaltool's setup_dependent_package needs to be able to + access globals on the dependent""" + + def setup_dependent_package(module, dependent_spec): + # Make sure set_package_py_globals was already called on + # dependents + # ninja is always set by the setup context and is not None + dependent_module = dependent_spec.package.module + assert hasattr(dependent_module, "ninja") + assert dependent_module.ninja is not None + dependent_spec.package.test_attr = True + + externaltool = spack.spec.Spec("externaltest").concretized() + monkeypatch.setattr( + externaltool["externaltool"].package, "setup_dependent_package", setup_dependent_package + ) + spack.build_environment.setup_package(externaltool.package, False) + assert externaltool.package.test_attr + + def test_build_jobs_sequential_is_sequential(): assert ( spack.config.determine_number_of_jobs( diff --git a/lib/spack/spack/test/cc.py b/lib/spack/spack/test/cc.py index 4a394680f480b8..f65bef9b0161d4 100644 --- a/lib/spack/spack/test/cc.py +++ b/lib/spack/spack/test/cc.py @@ -199,7 +199,7 @@ def check_args(cc, args, expected): """ with set_env(SPACK_TEST_COMMAND="dump-args"): cc_modified_args = cc(*args, output=str).strip().split("\n") - assert expected == cc_modified_args + assert cc_modified_args == expected def check_args_contents(cc, args, must_contain, must_not_contain): @@ -272,6 +272,43 @@ def test_ld_mode(wrapper_environment): assert dump_mode(ld, ["foo.o", "bar.o", "baz.o", "-o", "foo", "-Wl,-rpath,foo"]) == "ld" +def test_ld_unterminated_rpath(wrapper_environment): + check_args( + ld, + ["foo.o", "bar.o", "baz.o", "-o", "foo", "-rpath"], + ["ld", "--disable-new-dtags", "foo.o", "bar.o", "baz.o", "-o", "foo", "-rpath"], + ) + + +def test_xlinker_unterminated_rpath(wrapper_environment): + check_args( + cc, + ["foo.o", "bar.o", "baz.o", "-o", "foo", "-Xlinker", "-rpath"], + [real_cc] + + target_args + + [ + "-Wl,--disable-new-dtags", + "foo.o", + "bar.o", + "baz.o", + "-o", + "foo", + "-Xlinker", + "-rpath", + ], + ) + + +def test_wl_unterminated_rpath(wrapper_environment): + check_args( + cc, + ["foo.o", "bar.o", "baz.o", "-o", "foo", "-Wl,-rpath"], + [real_cc] + + target_args + + ["-Wl,--disable-new-dtags", "foo.o", "bar.o", "baz.o", "-o", "foo", "-Wl,-rpath"], + ) + + def test_ld_flags(wrapper_environment, wrapper_flags): check_args( ld, diff --git a/lib/spack/spack/test/cmd/bootstrap.py b/lib/spack/spack/test/cmd/bootstrap.py index 888f823c55b4fa..03421ede7725b4 100644 --- a/lib/spack/spack/test/cmd/bootstrap.py +++ b/lib/spack/spack/test/cmd/bootstrap.py @@ -170,7 +170,7 @@ def test_remove_and_add_a_source(mutable_config): assert not sources # Add it back and check we restored the initial state - _bootstrap("add", "github-actions", "$spack/share/spack/bootstrap/github-actions-v0.5") + _bootstrap("add", "github-actions", "$spack/share/spack/bootstrap/github-actions-v0.6") sources = spack.bootstrap.core.bootstrapping_sources() assert len(sources) == 1 diff --git a/lib/spack/spack/test/cmd/ci.py b/lib/spack/spack/test/cmd/ci.py index 40a5285cd15e57..36aa992c639c9c 100644 --- a/lib/spack/spack/test/cmd/ci.py +++ b/lib/spack/spack/test/cmd/ci.py @@ -2,11 +2,11 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import filecmp import json import os import pathlib import shutil +from io import BytesIO from typing import NamedTuple import jsonschema @@ -26,7 +26,6 @@ import spack.util.spack_yaml as syaml from spack.cmd.ci import FAILED_CREATE_BUILDCACHE_CODE from spack.schema.buildcache_spec import schema as specfile_schema -from spack.schema.ci import schema as ci_schema from spack.schema.database_index import schema as db_idx_schema from spack.spec import Spec @@ -196,7 +195,7 @@ def test_ci_generate_with_env(ci_generate_test, tmp_path, mock_binary_index): - matrix: - [$old-gcc-pkgs] mirrors: - some-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: pipeline-gen: - submapping: @@ -238,7 +237,9 @@ def test_ci_generate_with_env(ci_generate_test, tmp_path, mock_binary_index): assert "rebuild-index" in yaml_contents rebuild_job = yaml_contents["rebuild-index"] - assert rebuild_job["script"][0] == f"spack buildcache update-index --keys {mirror_url}" + assert ( + rebuild_job["script"][0] == f"spack buildcache update-index --keys {mirror_url.as_uri()}" + ) assert rebuild_job["custom_attribute"] == "custom!" assert "variables" in yaml_contents @@ -248,31 +249,28 @@ def test_ci_generate_with_env(ci_generate_test, tmp_path, mock_binary_index): def test_ci_generate_with_env_missing_section(ci_generate_test, tmp_path, mock_binary_index): """Make sure we get a reasonable message if we omit gitlab-ci section""" - _, _, output = ci_generate_test( - f"""\ + env_yaml = f"""\ spack: specs: - archive-files mirrors: - some-mirror: {tmp_path / 'ci-mirror'} -""", - fail_on_error=False, - ) - assert "Environment does not have `ci` a configuration" in output + buildcache-destination: {tmp_path / 'ci-mirror'} +""" + expect = "Environment does not have a `ci` configuration" + with pytest.raises(ci.SpackCIError, match=expect): + ci_generate_test(env_yaml) def test_ci_generate_with_cdash_token(ci_generate_test, tmp_path, mock_binary_index, monkeypatch): """Make sure we it doesn't break if we configure cdash""" monkeypatch.setenv("SPACK_CDASH_AUTH_TOKEN", "notreallyatokenbutshouldnotmatter") - backup_file = tmp_path / "backup-ci.yml" spack_yaml_content = f"""\ spack: specs: - archive-files mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -287,16 +285,15 @@ def test_ci_generate_with_cdash_token(ci_generate_test, tmp_path, mock_binary_in project: Not used site: Nothing """ - spack_yaml, original_file, output = ci_generate_test( - spack_yaml_content, "--copy-to", str(backup_file) - ) + spack_yaml, original_file, output = ci_generate_test(spack_yaml_content) + yaml_contents = syaml.load(original_file.read_text()) - # That fake token should still have resulted in being unable to + # That fake token should have resulted in being unable to # register build group with cdash, but the workload should # still have been generated. assert "Problem populating buildgroup" in output - assert backup_file.exists() - assert filecmp.cmp(str(original_file), str(backup_file)) + expected_keys = ["rebuild-index", "stages", "variables", "workflow"] + assert all([key in yaml_contents.keys() for key in expected_keys]) def test_ci_generate_with_custom_settings( @@ -311,7 +308,7 @@ def test_ci_generate_with_custom_settings( specs: - archive-files mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -386,9 +383,8 @@ def test_ci_generate_pkg_with_deps(ci_generate_test, tmp_path, ci_base_environme specs: - flatten-deps mirrors: - some-mirror: {tmp_path / 'ci-mirror'} + buildcache-destination: {tmp_path / 'ci-mirror'} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -421,13 +417,8 @@ def test_ci_generate_pkg_with_deps(ci_generate_test, tmp_path, ci_base_environme def test_ci_generate_for_pr_pipeline(ci_generate_test, tmp_path, monkeypatch): - """Test that PR pipelines do not include a final stage job for - rebuilding the mirror index, even if that job is specifically - configured. - """ + """Test generation of a PR pipeline with disabled rebuild-index""" monkeypatch.setenv("SPACK_PIPELINE_TYPE", "spack_pull_request") - monkeypatch.setenv("SPACK_PR_BRANCH", "fake-test-branch") - monkeypatch.setattr(spack.ci, "SHARED_PR_MIRROR_URL", f"{tmp_path / 'shared-pr-mirror'}") spack_yaml, outputfile, _ = ci_generate_test( f"""\ @@ -435,9 +426,8 @@ def test_ci_generate_for_pr_pipeline(ci_generate_test, tmp_path, monkeypatch): specs: - flatten-deps mirrors: - some-mirror: {tmp_path / 'ci-mirror'} + buildcache-destination: {tmp_path / 'ci-mirror'} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -473,7 +463,7 @@ def test_ci_generate_with_external_pkg(ci_generate_test, tmp_path, monkeypatch): - archive-files - externaltest mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -539,7 +529,6 @@ def create_rebuild_env( broken_specs_path = scratch / "naughty-list" mirror_url = mirror_dir.as_uri() - temp_storage_url = (tmp_path / "temp-storage").as_uri() ci_job_url = "https://some.domain/group/project/-/jobs/42" ci_pipeline_url = "https://some.domain/group/project/-/pipelines/7" @@ -554,11 +543,10 @@ def create_rebuild_env( specs: - $packages mirrors: - test-mirror: {mirror_dir} + buildcache-destination: {mirror_dir} ci: broken-specs-url: {broken_specs_path.as_uri()} broken-tests-packages: {json.dumps([pkg_name] if broken_tests else [])} - temporary-storage-url-prefix: {temp_storage_url} pipeline-gen: - submapping: - match: @@ -710,7 +698,7 @@ def test_ci_require_signing( specs: - archive-files mirrors: - test-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -758,9 +746,8 @@ def test_ci_nothing_to_rebuild( specs: - $packages mirrors: - test-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: - enable-artifacts-buildcache: true pipeline-gen: - submapping: - match: @@ -787,103 +774,20 @@ def test_ci_nothing_to_rebuild( "SPACK_JOB_LOG_DIR": "log_dir", "SPACK_JOB_REPRO_DIR": "repro_dir", "SPACK_JOB_TEST_DIR": "test_dir", - "SPACK_LOCAL_MIRROR_DIR": str(mirror_dir), "SPACK_CONCRETE_ENV_DIR": str(tmp_path), "SPACK_JOB_SPEC_DAG_HASH": env.concrete_roots()[0].dag_hash(), "SPACK_JOB_SPEC_PKG_NAME": "archive-files", "SPACK_COMPILER_ACTION": "NONE", - "SPACK_REMOTE_MIRROR_URL": mirror_url, } ) - def fake_dl_method(spec, *args, **kwargs): - print("fake download buildcache {0}".format(spec.name)) - - monkeypatch.setattr(spack.binary_distribution, "download_single_spec", fake_dl_method) - ci_out = ci_cmd("rebuild", output=str) assert "No need to rebuild archive-files" in ci_out - assert "fake download buildcache archive-files" in ci_out env_cmd("deactivate") -def test_ci_generate_mirror_override( - tmp_path: pathlib.Path, - mutable_mock_env_path, - install_mockery, - mock_fetch, - mock_binary_index, - ci_base_environment, -): - """Ensure that protected pipelines using --buildcache-destination do not - skip building specs that are not in the override mirror when they are - found in the main mirror.""" - os.environ.update({"SPACK_PIPELINE_TYPE": "spack_protected_branch"}) - mirror_url = (tmp_path / "mirror").as_uri() - - with open(tmp_path / "spack.yaml", "w") as f: - f.write( - f""" -spack: - definitions: - - packages: [patchelf] - specs: - - $packages - mirrors: - test-mirror: {mirror_url} - ci: - pipeline-gen: - - submapping: - - match: - - patchelf - build-job: - tags: - - donotcare - image: donotcare - - cleanup-job: - tags: - - nonbuildtag - image: basicimage -""" - ) - - with working_dir(tmp_path): - env_cmd("create", "test", "./spack.yaml") - first_ci_yaml = str(tmp_path / ".gitlab-ci-1.yml") - second_ci_yaml = str(tmp_path / ".gitlab-ci-2.yml") - with ev.read("test"): - install_cmd() - buildcache_cmd("push", "-u", mirror_url, "patchelf") - buildcache_cmd("update-index", mirror_url, output=str) - - # This generate should not trigger a rebuild of patchelf, since it's in - # the main mirror referenced in the environment. - ci_cmd("generate", "--check-index-only", "--output-file", first_ci_yaml) - - # Because we used a mirror override (--buildcache-destination) on a - # spack protected pipeline, we expect to only look in the override - # mirror for the spec, and thus the patchelf job should be generated in - # this pipeline - ci_cmd( - "generate", - "--check-index-only", - "--output-file", - second_ci_yaml, - "--buildcache-destination", - (tmp_path / "does-not-exist").as_uri(), - ) - - with open(first_ci_yaml) as fd1: - first_yaml = fd1.read() - assert "no-specs-to-rebuild" in first_yaml - - with open(second_ci_yaml) as fd2: - second_yaml = fd2.read() - assert "no-specs-to-rebuild" not in second_yaml - - @pytest.mark.disable_clean_stage_check def test_push_to_build_cache( tmp_path: pathlib.Path, @@ -910,9 +814,8 @@ def test_push_to_build_cache( specs: - $packages mirrors: - test-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: - enable-artifacts-buildcache: True pipeline-gen: - submapping: - match: @@ -1048,7 +951,7 @@ def test_ci_generate_override_runner_attrs( - flatten-deps - pkg-a mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - match_behavior: {match_behavior} @@ -1188,7 +1091,7 @@ def test_ci_rebuild_index( specs: - callpath mirrors: - test-mirror: {mirror_url} + buildcache-destination: {mirror_url} ci: pipeline-gen: - submapping: @@ -1244,7 +1147,7 @@ def fake_stack_changed(env_path, rev1="HEAD^", rev2="HEAD"): - archive-files - callpath mirrors: - some-mirror: {tmp_path / 'ci-mirror'} + buildcache-destination: {tmp_path / 'ci-mirror'} ci: pipeline-gen: - build-job: @@ -1307,101 +1210,15 @@ def test_ci_subcommands_without_mirror( with ev.read("test"): # Check the 'generate' subcommand - output = ci_cmd( - "generate", - "--output-file", - str(tmp_path / ".gitlab-ci.yml"), - output=str, - fail_on_error=False, - ) - assert "spack ci generate requires an env containing a mirror" in output + expect = "spack ci generate requires a mirror named 'buildcache-destination'" + with pytest.raises(ci.SpackCIError, match=expect): + ci_cmd("generate", "--output-file", str(tmp_path / ".gitlab-ci.yml")) # Also check the 'rebuild-index' subcommand output = ci_cmd("rebuild-index", output=str, fail_on_error=False) assert "spack ci rebuild-index requires an env containing a mirror" in output -def test_ensure_only_one_temporary_storage(): - """Make sure 'gitlab-ci' section of env does not allow specification of - both 'enable-artifacts-buildcache' and 'temporary-storage-url-prefix'.""" - gitlab_ci_template = """ - ci: - {0} - pipeline-gen: - - submapping: - - match: - - notcheckedhere - build-job: - tags: - - donotcare -""" - - enable_artifacts = "enable-artifacts-buildcache: True" - temp_storage = "temporary-storage-url-prefix: file:///temp/mirror" - specify_both = f"{enable_artifacts}\n {temp_storage}" - - specify_neither = "" - - # User can specify "enable-artifacts-buildcache" (boolean) - yaml_obj = syaml.load(gitlab_ci_template.format(enable_artifacts)) - jsonschema.validate(yaml_obj, ci_schema) - - # User can also specify "temporary-storage-url-prefix" (string) - yaml_obj = syaml.load(gitlab_ci_template.format(temp_storage)) - jsonschema.validate(yaml_obj, ci_schema) - - # However, specifying both should fail to validate - yaml_obj = syaml.load(gitlab_ci_template.format(specify_both)) - with pytest.raises(jsonschema.ValidationError): - jsonschema.validate(yaml_obj, ci_schema) - - # Specifying neither should be fine too, as neither of these properties - # should be required - yaml_obj = syaml.load(gitlab_ci_template.format(specify_neither)) - jsonschema.validate(yaml_obj, ci_schema) - - -def test_ci_generate_temp_storage_url(ci_generate_test, tmp_path, mock_binary_index): - """Verify correct behavior when using temporary-storage-url-prefix""" - _, outputfile, _ = ci_generate_test( - f"""\ -spack: - specs: - - archive-files - mirrors: - some-mirror: {(tmp_path / "ci-mirror").as_uri()} - ci: - temporary-storage-url-prefix: {(tmp_path / "temp-mirror").as_uri()} - pipeline-gen: - - submapping: - - match: - - archive-files - build-job: - tags: - - donotcare - image: donotcare - - cleanup-job: - custom_attribute: custom! -""" - ) - yaml_contents = syaml.load(outputfile.read_text()) - - assert "cleanup" in yaml_contents - - cleanup_job = yaml_contents["cleanup"] - assert cleanup_job["custom_attribute"] == "custom!" - assert "script" in cleanup_job - - cleanup_task = cleanup_job["script"][0] - assert cleanup_task.startswith("spack -d mirror destroy") - - assert "stages" in yaml_contents - stages = yaml_contents["stages"] - # Cleanup job should be 2nd to last, just before rebuild-index - assert "stage" in cleanup_job - assert cleanup_job["stage"] == stages[-2] - - def test_ci_generate_read_broken_specs_url( tmp_path: pathlib.Path, mutable_mock_env_path, @@ -1438,7 +1255,7 @@ def test_ci_generate_read_broken_specs_url( - flatten-deps - pkg-a mirrors: - some-mirror: {(tmp_path / "ci-mirror").as_uri()} + buildcache-destination: {(tmp_path / "ci-mirror").as_uri()} ci: broken-specs-url: "{broken_specs_url}" pipeline-gen: @@ -1483,9 +1300,8 @@ def test_ci_generate_external_signing_job(ci_generate_test, tmp_path, monkeypatc specs: - archive-files mirrors: - some-mirror: {(tmp_path / "ci-mirror").as_uri()} + buildcache-destination: {(tmp_path / "ci-mirror").as_uri()} ci: - temporary-storage-url-prefix: {(tmp_path / "temp-mirror").as_uri()} pipeline-gen: - submapping: - match: @@ -1540,7 +1356,7 @@ def test_ci_reproduce( specs: - $packages mirrors: - test-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - submapping: @@ -1671,106 +1487,6 @@ def test_cmd_first_line(): assert spack.cmd.first_line(doc) == first -legacy_spack_yaml_contents = """ -spack: - definitions: - - old-gcc-pkgs: - - archive-files - - callpath - # specify ^openblas-with-lapack to ensure that builtin.mock repo flake8 - # package (which can also provide lapack) is not chosen, as it violates - # a package-level check which requires exactly one fetch strategy (this - # is apparently not an issue for other tests that use it). - - hypre@0.2.15 ^openblas-with-lapack - specs: - - matrix: - - [$old-gcc-pkgs] - mirrors: - test-mirror: {mirror_url} - {key}: - match_behavior: first - mappings: - - match: - - arch=test-debian6-core2 - runner-attributes: - tags: - - donotcare - image: donotcare - - match: - - arch=test-debian6-m1 - runner-attributes: - tags: - - donotcare - image: donotcare - service-job-attributes: - image: donotcare - tags: [donotcare] - cdash: - build-group: Not important - url: https://my.fake.cdash - project: Not used - site: Nothing -""" - - -@pytest.mark.regression("36409") -def test_gitlab_ci_deprecated( - tmp_path: pathlib.Path, - mutable_mock_env_path, - install_mockery, - monkeypatch, - ci_base_environment, - mock_binary_index, -): - mirror_url = (tmp_path / "ci-mirror").as_uri() - with open(tmp_path / "spack.yaml", "w") as f: - f.write(legacy_spack_yaml_contents.format(mirror_url=mirror_url, key="gitlab-ci")) - - with working_dir(tmp_path): - with ev.Environment("."): - ci_cmd("generate", "--output-file", "generated-pipeline.yaml") - - with open("generated-pipeline.yaml") as f: - yaml_contents = syaml.load(f) - - assert "stages" in yaml_contents - assert len(yaml_contents["stages"]) == 5 - assert yaml_contents["stages"][0] == "stage-0" - assert yaml_contents["stages"][4] == "stage-rebuild-index" - - assert "rebuild-index" in yaml_contents - rebuild_job = yaml_contents["rebuild-index"] - expected = f"spack buildcache update-index --keys {mirror_url}" - assert rebuild_job["script"][0] == expected - - assert "variables" in yaml_contents - assert "SPACK_ARTIFACTS_ROOT" in yaml_contents["variables"] - artifacts_root = yaml_contents["variables"]["SPACK_ARTIFACTS_ROOT"] - assert artifacts_root == "jobs_scratch_dir" - - -@pytest.mark.regression("36045") -def test_gitlab_ci_update( - tmp_path: pathlib.Path, - mutable_mock_env_path, - install_mockery, - monkeypatch, - ci_base_environment, - mock_binary_index, -): - with open(tmp_path / "spack.yaml", "w") as f: - f.write( - legacy_spack_yaml_contents.format(mirror_url=(tmp_path / "mirror").as_uri(), key="ci") - ) - - env_cmd("update", "-y", str(tmp_path)) - - with open(tmp_path / "spack.yaml") as f: - yaml_contents = syaml.load(f) - ci_root = yaml_contents["spack"]["ci"] - assert "pipeline-gen" in ci_root - - def test_gitlab_config_scopes(ci_generate_test, tmp_path): """Test pipeline generation with real configs included""" configs_path = os.path.join(spack_paths.share_path, "gitlab", "cloud_pipelines", "configs") @@ -1784,7 +1500,7 @@ def test_gitlab_config_scopes(ci_generate_test, tmp_path): specs: - flatten-deps mirrors: - some-mirror: {tmp_path / "ci-mirror"} + buildcache-destination: {tmp_path / "ci-mirror"} ci: pipeline-gen: - build-job: @@ -1846,3 +1562,91 @@ def test_ci_generate_mirror_config( pipeline_doc = syaml.load(f) assert fst not in pipeline_doc["rebuild-index"]["script"][0] assert snd in pipeline_doc["rebuild-index"]["script"][0] + + +def dynamic_mapping_setup(tmpdir): + filename = str(tmpdir.join("spack.yaml")) + with open(filename, "w") as f: + f.write( + """\ +spack: + specs: + - pkg-a + mirrors: + buildcache-destination: https://my.fake.mirror + ci: + pipeline-gen: + - dynamic-mapping: + endpoint: https://fake.spack.io/mapper + require: ["variables"] + ignore: ["ignored_field"] + allow: ["variables", "retry"] +""" + ) + + spec_a = Spec("pkg-a") + spec_a.concretize() + + return ci.get_job_name(spec_a) + + +def test_ci_dynamic_mapping_empty( + tmpdir, + working_env, + mutable_mock_env_path, + install_mockery, + mock_packages, + monkeypatch, + ci_base_environment, +): + # The test will always return an empty dictionary + def fake_dyn_mapping_urlopener(*args, **kwargs): + return BytesIO("{}".encode()) + + monkeypatch.setattr(ci, "_dyn_mapping_urlopener", fake_dyn_mapping_urlopener) + + _ = dynamic_mapping_setup(tmpdir) + with tmpdir.as_cwd(): + env_cmd("create", "test", "./spack.yaml") + outputfile = str(tmpdir.join(".gitlab-ci.yml")) + + with ev.read("test"): + output = ci_cmd("generate", "--output-file", outputfile) + assert "Response missing required keys: ['variables']" in output + + +def test_ci_dynamic_mapping_full( + tmpdir, + working_env, + mutable_mock_env_path, + install_mockery, + mock_packages, + monkeypatch, + ci_base_environment, +): + # The test will always return an empty dictionary + def fake_dyn_mapping_urlopener(*args, **kwargs): + return BytesIO( + json.dumps( + {"variables": {"MY_VAR": "hello"}, "ignored_field": 0, "unallowed_field": 0} + ).encode() + ) + + monkeypatch.setattr(ci, "_dyn_mapping_urlopener", fake_dyn_mapping_urlopener) + + label = dynamic_mapping_setup(tmpdir) + with tmpdir.as_cwd(): + env_cmd("create", "test", "./spack.yaml") + outputfile = str(tmpdir.join(".gitlab-ci.yml")) + + with ev.read("test"): + ci_cmd("generate", "--output-file", outputfile) + + with open(outputfile) as of: + pipeline_doc = syaml.load(of.read()) + assert label in pipeline_doc + job = pipeline_doc[label] + + assert job.get("variables", {}).get("MY_VAR") == "hello" + assert "ignored_field" not in job + assert "unallowed_field" not in job diff --git a/lib/spack/spack/test/cmd/env.py b/lib/spack/spack/test/cmd/env.py index d1d35e6f5e0cb4..099e6306ac507f 100644 --- a/lib/spack/spack/test/cmd/env.py +++ b/lib/spack/spack/test/cmd/env.py @@ -9,6 +9,7 @@ import pathlib import shutil from argparse import Namespace +from typing import Any, Dict, Optional import pytest @@ -74,7 +75,7 @@ def setup_combined_multiple_env(): env("create", "test1") test1 = ev.read("test1") with test1: - add("zlib") + add("mpich@1.0") test1.concretize() test1.write() @@ -116,6 +117,99 @@ def check_viewdir_removal(viewdir): ) == ["projections.yaml"] +def test_env_track_nonexistant_path_fails(capfd): + with pytest.raises(spack.main.SpackCommandError): + env("track", "path/does/not/exist") + + out, _ = capfd.readouterr() + assert "doesn't contain an environment" in out + + +def test_env_track_existing_env_fails(capfd): + env("create", "track_test") + + with pytest.raises(spack.main.SpackCommandError): + env("track", "--name", "track_test", ev.environment_dir_from_name("track_test")) + + out, _ = capfd.readouterr() + assert "environment named track_test already exists" in out + + +def test_env_track_valid(tmp_path): + with fs.working_dir(str(tmp_path)): + # create an independent environment + env("create", "-d", ".") + + # test tracking an environment in known store + env("track", "--name", "test1", ".") + + # test removing environment to ensure independent isn't deleted + env("rm", "-y", "test1") + + assert os.path.isfile("spack.yaml") + + +def test_env_untrack_valid(tmp_path): + with fs.working_dir(str(tmp_path)): + # create an independent environment + env("create", "-d", ".") + + # test tracking an environment in known store + env("track", "--name", "test_untrack", ".") + env("untrack", "--yes-to-all", "test_untrack") + + # check that environment was sucessfully untracked + out = env("ls") + assert "test_untrack" not in out + + +def test_env_untrack_invalid_name(): + # test untracking an environment that doesn't exist + env_name = "invalid_enviornment_untrack" + + out = env("untrack", env_name) + + assert f"Environment '{env_name}' does not exist" in out + + +def test_env_untrack_when_active(tmp_path, capfd): + env_name = "test_untrack_active" + + with fs.working_dir(str(tmp_path)): + # create an independent environment + env("create", "-d", ".") + + # test tracking an environment in known store + env("track", "--name", env_name, ".") + + active_env = ev.read(env_name) + with active_env: + with pytest.raises(spack.main.SpackCommandError): + env("untrack", "--yes-to-all", env_name) + + # check that environment could not be untracked while active + out, _ = capfd.readouterr() + assert f"'{env_name}' can't be untracked while activated" in out + + env("untrack", "-f", env_name) + out = env("ls") + assert env_name not in out + + +def test_env_untrack_managed(tmp_path, capfd): + env_name = "test_untrack_managed" + + # create an managed environment + env("create", env_name) + + with pytest.raises(spack.main.SpackCommandError): + env("untrack", env_name) + + # check that environment could not be untracked while active + out, _ = capfd.readouterr() + assert f"'{env_name}' is not a tracked env" in out + + def test_add(): e = ev.create("test") e.add("mpileaks") @@ -127,6 +221,7 @@ def test_change_match_spec(): e = ev.read("test") with e: + add("mpileaks@2.1") add("mpileaks@2.2") @@ -401,14 +496,17 @@ def test_env_install_single_spec(install_mockery, mock_fetch): @pytest.mark.parametrize("unify", [True, False, "when_possible"]) -def test_env_install_include_concrete_env(unify, install_mockery, mock_fetch): +def test_env_install_include_concrete_env(unify, install_mockery, mock_fetch, mutable_config): test1, test2, combined = setup_combined_multiple_env() + combined.unify = unify + if not unify: + combined.manifest.set_default_view(False) + + combined.add("mpileaks") combined.concretize() combined.write() - combined.unify = unify - with combined: install() @@ -422,6 +520,14 @@ def test_env_install_include_concrete_env(unify, install_mockery, mock_fetch): assert test1_roots == combined_included_roots[test1.path] assert test2_roots == combined_included_roots[test2.path] + mpileaks = combined.specs_by_hash[combined.concretized_order[0]] + if unify: + assert mpileaks["mpi"].dag_hash() in test1_roots + assert mpileaks["libelf"].dag_hash() in test2_roots + else: + # check that unification is not by accident + assert mpileaks["mpi"].dag_hash() not in test1_roots + def test_env_roots_marked_explicit(install_mockery, mock_fetch): install = SpackCommand("install") @@ -676,7 +782,7 @@ def test_force_remove_included_env(): rm_output = env("remove", "-f", "-y", "test") list_output = env("list") - assert '"test" is being used by environment "combined_env"' in rm_output + assert "'test' is used by environment 'combined_env'" in rm_output assert "test" not in list_output @@ -1869,7 +1975,7 @@ def test_env_include_concrete_envs_lockfile(): def test_env_include_concrete_add_env(): test1, test2, combined = setup_combined_multiple_env() - # crete new env & crecretize + # create new env & concretize env("create", "new") new_env = ev.read("new") with new_env: @@ -1921,6 +2027,116 @@ def test_env_include_concrete_remove_env(): assert test2.path not in lockfile_as_dict["include_concrete"].keys() +def configure_reuse(reuse_mode, combined_env) -> Optional[ev.Environment]: + override_env = None + _config: Dict[Any, Any] = {} + if reuse_mode == "true": + _config = {"concretizer": {"reuse": True}} + elif reuse_mode == "from_environment": + _config = {"concretizer": {"reuse": {"from": [{"type": "environment"}]}}} + elif reuse_mode == "from_environment_test1": + _config = {"concretizer": {"reuse": {"from": [{"type": "environment", "path": "test1"}]}}} + elif reuse_mode == "from_environment_external_test": + # Create a new environment called external_test that enables the "debug" + # The default is "~debug" + env("create", "external_test") + override_env = ev.read("external_test") + with override_env: + add("mpich@1.0 +debug") + override_env.concretize() + override_env.write() + + # Reuse from the environment that is not included. + # Specify the requirement for the debug variant. By default this would concretize to use + # mpich@3.0 but with include concrete the mpich@1.0 +debug version from the + # "external_test" environment will be used. + _config = { + "concretizer": {"reuse": {"from": [{"type": "environment", "path": "external_test"}]}}, + "packages": {"mpich": {"require": ["+debug"]}}, + } + elif reuse_mode == "from_environment_raise": + _config = { + "concretizer": {"reuse": {"from": [{"type": "environment", "path": "not-a-real-env"}]}} + } + # Disable unification in these tests to avoid confusing reuse due to unification using an + # include concrete spec vs reuse due to the reuse configuration + _config["concretizer"].update({"unify": False}) + + combined_env.manifest.configuration.update(_config) + combined_env.manifest.changed = True + combined_env.write() + + return override_env + + +@pytest.mark.parametrize( + "reuse_mode", + [ + "true", + "from_environment", + "from_environment_test1", + "from_environment_external_test", + "from_environment_raise", + ], +) +def test_env_include_concrete_reuse(monkeypatch, reuse_mode): + + # The mock packages do not use the gcc-runtime + def mock_has_runtime_dependencies(*args, **kwargs): + return True + + monkeypatch.setattr( + spack.solver.asp, "_has_runtime_dependencies", mock_has_runtime_dependencies + ) + # The default mpi version is 3.x provided by mpich in the mock repo. + # This test verifies that concretizing with an included concrete + # environment with "concretizer:reuse:true" the included + # concrete spec overrides the default with mpi@1.0. + test1, _, combined = setup_combined_multiple_env() + + # Set the reuse mode for the environment + override_env = configure_reuse(reuse_mode, combined) + if override_env: + # If there is an override environment (ie. testing reuse with + # an external environment) update it here. + test1 = override_env + + # Capture the test1 specs included by combined + test1_specs_by_hash = test1.specs_by_hash + + try: + # Add mpileaks to the combined environment + with combined: + add("mpileaks") + combined.concretize() + comb_specs_by_hash = combined.specs_by_hash + + # create reference env with mpileaks that does not use reuse + # This should concretize to the default version of mpich (3.0) + env("create", "new") + ref_env = ev.read("new") + with ref_env: + add("mpileaks") + ref_env.concretize() + ref_specs_by_hash = ref_env.specs_by_hash + + # Ensure that the mpich used by the mpileaks is the mpich from the reused test environment + comb_mpileaks_spec = [s for s in comb_specs_by_hash.values() if s.name == "mpileaks"] + test1_mpich_spec = [s for s in test1_specs_by_hash.values() if s.name == "mpich"] + assert len(comb_mpileaks_spec) == 1 + assert len(test1_mpich_spec) == 1 + assert comb_mpileaks_spec[0]["mpich"].dag_hash() == test1_mpich_spec[0].dag_hash() + + # None of the references specs (using mpich@3) reuse specs from test1. + # This tests that the reuse is not happening coincidently + assert not any([s in test1_specs_by_hash for s in ref_specs_by_hash]) + + # Make sure the raise tests raises + assert "raise" not in reuse_mode + except ev.SpackEnvironmentError: + assert "raise" in reuse_mode + + @pytest.mark.parametrize("unify", [True, False, "when_possible"]) def test_env_include_concrete_env_reconcretized(unify): """Double check to make sure that concrete_specs for the local specs is empty @@ -4117,13 +4333,13 @@ def test_spack_package_ids_variable(tmpdir, mock_packages): # Include in Makefile and create target that depend on SPACK_PACKAGE_IDS with open(makefile_path, "w") as f: f.write( - r""" + """ all: post-install include include.mk example/post-install/%: example/install/% - $(info post-install: $(HASH)) # noqa: W191,E101 +\t$(info post-install: $(HASH)) # noqa: W191,E101 post-install: $(addprefix example/post-install/,$(example/SPACK_PACKAGE_IDS)) """ diff --git a/lib/spack/spack/test/cmd/find.py b/lib/spack/spack/test/cmd/find.py index fa8299f2abb450..779c6a942f0f21 100644 --- a/lib/spack/spack/test/cmd/find.py +++ b/lib/spack/spack/test/cmd/find.py @@ -14,10 +14,13 @@ import spack.cmd as cmd import spack.cmd.find import spack.environment as ev +import spack.repo import spack.store import spack.user_environment as uenv from spack.main import SpackCommand from spack.spec import Spec +from spack.test.conftest import create_test_repo +from spack.test.utilities import SpackCommandArgs from spack.util.pattern import Bunch find = SpackCommand("find") @@ -70,11 +73,11 @@ def test_query_arguments(): q_args = query_arguments(args) assert "installed" in q_args - assert "known" in q_args + assert "predicate_fn" in q_args assert "explicit" in q_args assert q_args["installed"] == ["installed"] - assert q_args["known"] is any - assert q_args["explicit"] is any + assert q_args["predicate_fn"] is None + assert q_args["explicit"] is None assert "start_date" in q_args assert "end_date" not in q_args assert q_args["install_tree"] == "all" @@ -453,3 +456,140 @@ def test_environment_with_version_range_in_compiler_doesnt_fail(tmp_path): with test_environment: output = find() assert "zlib%gcc@12.1.0" in output + + +_pkga = ( + "a0", + """\ +class A0(Package): + version("1.2") + version("1.1") + + depends_on("b0") + depends_on("c0") +""", +) + + +_pkgb = ( + "b0", + """\ +class B0(Package): + version("1.2") + version("1.1") +""", +) + + +_pkgc = ( + "c0", + """\ +class C0(Package): + version("1.2") + version("1.1") + + tags = ["tag0", "tag1"] +""", +) + + +_pkgd = ( + "d0", + """\ +class D0(Package): + version("1.2") + version("1.1") + + depends_on("c0") + depends_on("e0") +""", +) + + +_pkge = ( + "e0", + """\ +class E0(Package): + tags = ["tag1", "tag2"] + + version("1.2") + version("1.1") +""", +) + + +@pytest.fixture +def _create_test_repo(tmpdir, mutable_config): + r""" + a0 d0 + / \ / \ + b0 c0 e0 + """ + yield create_test_repo(tmpdir, [_pkga, _pkgb, _pkgc, _pkgd, _pkge]) + + +@pytest.fixture +def test_repo(_create_test_repo, monkeypatch, mock_stage): + with spack.repo.use_repositories(_create_test_repo) as mock_repo_path: + yield mock_repo_path + + +def test_find_concretized_not_installed( + mutable_mock_env_path, install_mockery, mock_fetch, test_repo, mock_archive +): + """Test queries against installs of specs against fake repo. + + Given A, B, C, D, E, create an environment and install A. + Add and concretize (but do not install) D. + Test a few queries after force uninstalling a dependency of A (but not + A itself). + """ + add = SpackCommand("add") + concretize = SpackCommand("concretize") + uninstall = SpackCommand("uninstall") + + def _query(_e, *args): + return spack.cmd.find._find_query(SpackCommandArgs("find")(*args), _e) + + def _nresults(_qresult): + return len(_qresult[0]), len(_qresult[1]) + + env("create", "test") + with ev.read("test") as e: + install("--fake", "--add", "a0") + + assert _nresults(_query(e)) == (3, 0) + assert _nresults(_query(e, "--explicit")) == (1, 0) + + add("d0") + concretize("--reuse") + + # At this point d0 should use existing c0, but d/e + # are not installed in the env + + # --explicit, --deprecated, --start-date, etc. are all + # filters on records, and therefore don't apply to + # concretized-but-not-installed results + assert _nresults(_query(e, "--explicit")) == (1, 2) + + assert _nresults(_query(e)) == (3, 2) + assert _nresults(_query(e, "-c", "d0")) == (0, 1) + + uninstall("-f", "-y", "b0") + + # b0 is now missing (it is not installed, but has an + # installed parent) + + assert _nresults(_query(e)) == (2, 3) + # b0 is "double-counted" here: it meets the --missing + # criteria, and also now qualifies as a + # concretized-but-not-installed spec + assert _nresults(_query(e, "--missing")) == (3, 3) + assert _nresults(_query(e, "--only-missing")) == (1, 3) + + # Tags are not attached to install records, so they + # can modify the concretized-but-not-installed results + + assert _nresults(_query(e, "--tag=tag0")) == (1, 0) + assert _nresults(_query(e, "--tag=tag1")) == (1, 1) + assert _nresults(_query(e, "--tag=tag2")) == (0, 1) diff --git a/lib/spack/spack/test/cmd/init_py_functions.py b/lib/spack/spack/test/cmd/init_py_functions.py index 4dc000edb9434d..d7245c6ecce824 100644 --- a/lib/spack/spack/test/cmd/init_py_functions.py +++ b/lib/spack/spack/test/cmd/init_py_functions.py @@ -4,10 +4,17 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) import pytest +import spack.config +import spack.environment as ev +import spack.error +import spack.solver.asp as asp +import spack.store from spack.cmd import ( CommandNameError, PythonNameError, cmd_name, + matching_specs_from_env, + parse_specs, python_name, require_cmd_name, require_python_name, @@ -34,3 +41,99 @@ def test_require_cmd_name(): with pytest.raises(CommandNameError): require_cmd_name("okey_dokey") require_cmd_name(cmd_name("okey_dokey")) + + +@pytest.mark.parametrize( + "unify,spec_strs,error", + [ + # single spec + (True, ["zmpi"], None), + (False, ["mpileaks"], None), + # multiple specs, some from hash some from file + (True, ["zmpi", "mpileaks^zmpi", "libelf"], None), + (True, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], spack.error.SpecError), + (False, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], None), + ], +) +def test_special_cases_concretization_parse_specs( + unify, spec_strs, error, monkeypatch, mutable_config, mutable_database, tmpdir +): + """Test that special cases in parse_specs(concretize=True) bypass solver""" + + # monkeypatch to ensure we do not call the actual concretizer + def _fail(*args, **kwargs): + assert False + + monkeypatch.setattr(asp.SpackSolverSetup, "setup", _fail) + + spack.config.set("concretizer:unify", unify) + + args = [f"/{spack.store.STORE.db.query(s)[0].dag_hash()}" for s in spec_strs] + if len(args) > 1: + # We convert the last one to a specfile input + filename = tmpdir.join("spec.json") + spec = parse_specs(args[-1], concretize=True)[0] + with open(filename, "w") as f: + spec.to_json(f) + args[-1] = str(filename) + + if error: + with pytest.raises(error): + parse_specs(args, concretize=True) + else: + # assertion error from monkeypatch above if test fails + parse_specs(args, concretize=True) + + +@pytest.mark.parametrize( + "unify,spec_strs,error", + [ + # single spec + (True, ["zmpi"], None), + (False, ["mpileaks"], None), + # multiple specs, some from hash some from file + (True, ["zmpi", "mpileaks^zmpi", "libelf"], None), + (True, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], spack.error.SpecError), + (False, ["mpileaks^zmpi", "mpileaks^mpich", "libelf"], None), + ], +) +def test_special_cases_concretization_matching_specs_from_env( + unify, + spec_strs, + error, + monkeypatch, + mutable_config, + mutable_database, + tmpdir, + mutable_mock_env_path, +): + """Test that special cases in parse_specs(concretize=True) bypass solver""" + + # monkeypatch to ensure we do not call the actual concretizer + def _fail(*args, **kwargs): + assert False + + monkeypatch.setattr(asp.SpackSolverSetup, "setup", _fail) + + spack.config.set("concretizer:unify", unify) + + ev.create("test") + env = ev.read("test") + + args = [f"/{spack.store.STORE.db.query(s)[0].dag_hash()}" for s in spec_strs] + if len(args) > 1: + # We convert the last one to a specfile input + filename = tmpdir.join("spec.json") + spec = parse_specs(args[-1], concretize=True)[0] + with open(filename, "w") as f: + spec.to_json(f) + args[-1] = str(filename) + + with env: + specs = parse_specs(args, concretize=False) + if error: + with pytest.raises(error): + matching_specs_from_env(specs) + else: + # assertion error from monkeypatch above if test fails + matching_specs_from_env(specs) diff --git a/lib/spack/spack/test/cmd/install.py b/lib/spack/spack/test/cmd/install.py index 13721b2a0d52e6..445f376b1b41e4 100644 --- a/lib/spack/spack/test/cmd/install.py +++ b/lib/spack/spack/test/cmd/install.py @@ -906,7 +906,7 @@ def test_cdash_configure_warning(tmpdir, mock_fetch, install_mockery, capfd): specfile = "./spec.json" with open(specfile, "w") as f: f.write(spec.to_json()) - + print(spec.to_json()) install("--log-file=cdash_reports", "--log-format=cdash", specfile) # Verify Configure.xml exists with expected contents. report_dir = tmpdir.join("cdash_reports") diff --git a/lib/spack/spack/test/cmd/mirror.py b/lib/spack/spack/test/cmd/mirror.py index 2a67bc2e1432ed..ee827c05547e8d 100644 --- a/lib/spack/spack/test/cmd/mirror.py +++ b/lib/spack/spack/test/cmd/mirror.py @@ -17,6 +17,7 @@ import spack.version from spack.main import SpackCommand, SpackCommandError +config = SpackCommand("config") mirror = SpackCommand("mirror") env = SpackCommand("env") add = SpackCommand("add") @@ -181,20 +182,122 @@ def test_mirror_crud(mutable_config, capsys): output = mirror("remove", "mirror") assert "Removed mirror" in output - # Test S3 connection info id/key - mirror( - "add", - "--s3-access-key-id", - "foo", - "--s3-access-key-secret", - "bar", - "mirror", - "s3://spack-public", - ) + # Test S3 connection info token as variable + mirror("add", "--s3-access-token-variable", "aaaaaazzzzz", "mirror", "s3://spack-public") output = mirror("remove", "mirror") assert "Removed mirror" in output + def do_add_set_seturl_access_pair( + id_arg, secret_arg, mirror_name="mirror", mirror_url="s3://spack-public" + ): + # Test S3 connection info id/key + output = mirror("add", id_arg, "foo", secret_arg, "bar", mirror_name, mirror_url) + if "variable" not in secret_arg: + assert ( + f"Configuring mirror secrets as plain text with {secret_arg} is deprecated. " + in output + ) + + output = config("blame", "mirrors") + assert all([x in output for x in ("foo", "bar", mirror_name, mirror_url)]) + # Mirror access_pair deprecation warning should not be in blame output + assert "support for plain text secrets" not in output + + output = mirror("set", id_arg, "foo_set", secret_arg, "bar_set", mirror_name) + if "variable" not in secret_arg: + assert "support for plain text secrets" in output + output = config("blame", "mirrors") + assert all([x in output for x in ("foo_set", "bar_set", mirror_name, mirror_url)]) + if "variable" not in secret_arg: + output = mirror( + "set", id_arg, "foo_set", secret_arg + "-variable", "bar_set_var", mirror_name + ) + assert "support for plain text secrets" not in output + output = config("blame", "mirrors") + assert all( + [x in output for x in ("foo_set", "bar_set_var", mirror_name, mirror_url)] + ) + + output = mirror( + "set-url", + id_arg, + "foo_set_url", + secret_arg, + "bar_set_url", + "--push", + mirror_name, + mirror_url + "-push", + ) + output = config("blame", "mirrors") + assert all( + [ + x in output + for x in ("foo_set_url", "bar_set_url", mirror_name, mirror_url + "-push") + ] + ) + + output = mirror("set", id_arg, "a", mirror_name) + assert "No changes made to mirror" not in output + + output = mirror("set", secret_arg, "b", mirror_name) + assert "No changes made to mirror" not in output + + output = mirror("set-url", id_arg, "c", mirror_name, mirror_url) + assert "No changes made to mirror" not in output + + output = mirror("set-url", secret_arg, "d", mirror_name, mirror_url) + assert "No changes made to mirror" not in output + + output = mirror("remove", mirror_name) + assert "Removed mirror" in output + + output = mirror("add", id_arg, "foo", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set-url", id_arg, "bar", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set", id_arg, "bar", mirror_name) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("remove", mirror_name) + assert "Removed mirror" in output + + output = mirror("add", secret_arg, "bar", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set-url", secret_arg, "bar", mirror_name, mirror_url) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("set", secret_arg, "bar", mirror_name) + assert "Expected both parts of the access pair to be specified. " in output + + output = mirror("remove", mirror_name) + assert "Removed mirror" in output + + output = mirror("list") + assert "No mirrors configured" in output + + do_add_set_seturl_access_pair("--s3-access-key-id", "--s3-access-key-secret") + do_add_set_seturl_access_pair("--s3-access-key-id", "--s3-access-key-secret-variable") + do_add_set_seturl_access_pair( + "--s3-access-key-id-variable", "--s3-access-key-secret-variable" + ) + with pytest.raises( + spack.error.SpackError, match="Cannot add mirror with a variable id and text secret" + ): + do_add_set_seturl_access_pair("--s3-access-key-id-variable", "--s3-access-key-secret") + + # Test OCI connection info user/password + do_add_set_seturl_access_pair("--oci-username", "--oci-password") + do_add_set_seturl_access_pair("--oci-username", "--oci-password-variable") + do_add_set_seturl_access_pair("--oci-username-variable", "--oci-password-variable") + with pytest.raises( + spack.error.SpackError, match="Cannot add mirror with a variable id and text secret" + ): + do_add_set_seturl_access_pair("--s3-access-key-id-variable", "--s3-access-key-secret") + # Test S3 connection info with endpoint URL mirror( "add", @@ -218,6 +321,9 @@ def test_mirror_crud(mutable_config, capsys): output = mirror("remove", "mirror") assert "Removed mirror" in output + output = mirror("list") + assert "No mirrors configured" in output + def test_mirror_nonexisting(mutable_config): with pytest.raises(SpackCommandError): diff --git a/lib/spack/spack/test/cmd/pkg.py b/lib/spack/spack/test/cmd/pkg.py index d1f0ed139ecac3..8dfdf4773de3f3 100644 --- a/lib/spack/spack/test/cmd/pkg.py +++ b/lib/spack/spack/test/cmd/pkg.py @@ -311,7 +311,20 @@ def test_pkg_grep(mock_packages, capfd): output, _ = capfd.readouterr() assert output.strip() == "\n".join( spack.repo.PATH.get_pkg_class(name).module.__file__ - for name in ["splice-a", "splice-h", "splice-t", "splice-vh", "splice-vt", "splice-z"] + for name in [ + "depends-on-manyvariants", + "manyvariants", + "splice-a", + "splice-depends-on-t", + "splice-h", + "splice-t", + "splice-vh", + "splice-vt", + "splice-z", + "virtual-abi-1", + "virtual-abi-2", + "virtual-abi-multi", + ] ) # ensure that this string isn't fouhnd diff --git a/lib/spack/spack/test/cmd/spec.py b/lib/spack/spack/test/cmd/spec.py index a57c40ec926823..dda48de4df0599 100644 --- a/lib/spack/spack/test/cmd/spec.py +++ b/lib/spack/spack/test/cmd/spec.py @@ -7,6 +7,7 @@ import pytest +import spack.config import spack.environment as ev import spack.error import spack.spec @@ -179,3 +180,43 @@ def test_spec_version_assigned_git_ref_as_version(name, version, error): else: output = spec(name + "@" + version) assert version in output + + +@pytest.mark.parametrize( + "unify, spec_hash_args, match, error", + [ + # success cases with unfiy:true + (True, ["mpileaks_mpich"], "mpich", None), + (True, ["mpileaks_zmpi"], "zmpi", None), + (True, ["mpileaks_mpich", "dyninst"], "mpich", None), + (True, ["mpileaks_zmpi", "dyninst"], "zmpi", None), + # same success cases with unfiy:false + (False, ["mpileaks_mpich"], "mpich", None), + (False, ["mpileaks_zmpi"], "zmpi", None), + (False, ["mpileaks_mpich", "dyninst"], "mpich", None), + (False, ["mpileaks_zmpi", "dyninst"], "zmpi", None), + # cases with unfiy:false + (True, ["mpileaks_mpich", "mpileaks_zmpi"], "callpath, mpileaks", spack.error.SpecError), + (False, ["mpileaks_mpich", "mpileaks_zmpi"], "zmpi", None), + ], +) +def test_spec_unification_from_cli( + install_mockery, mutable_config, mutable_database, unify, spec_hash_args, match, error +): + """Ensure specs grouped together on the CLI are concretized together when unify:true.""" + spack.config.set("concretizer:unify", unify) + + db = spack.store.STORE.db + spec_lookup = { + "mpileaks_mpich": db.query_one("mpileaks ^mpich").dag_hash(), + "mpileaks_zmpi": db.query_one("mpileaks ^zmpi").dag_hash(), + "dyninst": db.query_one("dyninst").dag_hash(), + } + + hashes = [f"/{spec_lookup[name]}" for name in spec_hash_args] + if error: + with pytest.raises(error, match=match): + output = spec(*hashes) + else: + output = spec(*hashes) + assert match in output diff --git a/lib/spack/spack/test/compilers/basics.py b/lib/spack/spack/test/compilers/basics.py index ee31e50f53893e..75e79d497c6c65 100644 --- a/lib/spack/spack/test/compilers/basics.py +++ b/lib/spack/spack/test/compilers/basics.py @@ -3,8 +3,10 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) """Test basic behavior of compilers in Spack""" +import json import os from copy import copy +from typing import Optional import pytest @@ -17,6 +19,7 @@ import spack.util.module_cmd from spack.compiler import Compiler from spack.util.executable import Executable, ProcessError +from spack.util.file_cache import FileCache def test_multiple_conflicting_compiler_definitions(mutable_config): @@ -101,11 +104,14 @@ def verbose_flag(self): @pytest.mark.not_on_windows("Not supported on Windows (yet)") -def test_implicit_rpaths(dirs_with_libfiles): +def test_implicit_rpaths(dirs_with_libfiles, monkeypatch): lib_to_dirs, all_dirs = dirs_with_libfiles - compiler = MockCompiler() - compiler._compile_c_source_output = "ld " + " ".join(f"-L{d}" for d in all_dirs) - retrieved_rpaths = compiler.implicit_rpaths() + monkeypatch.setattr( + MockCompiler, + "_compile_dummy_c_source", + lambda self: "ld " + " ".join(f"-L{d}" for d in all_dirs), + ) + retrieved_rpaths = MockCompiler().implicit_rpaths() assert set(retrieved_rpaths) == set(lib_to_dirs["libstdc++"] + lib_to_dirs["libgfortran"]) @@ -647,6 +653,7 @@ def test_raising_if_compiler_target_is_over_specific(config): @pytest.mark.not_on_windows("Not supported on Windows (yet)") +@pytest.mark.enable_compiler_execution def test_compiler_get_real_version(working_env, monkeypatch, tmpdir): # Test variables test_version = "2.2.2" @@ -736,6 +743,7 @@ def test_get_compilers(config): ) == [spack.compilers._compiler_from_config_entry(without_suffix)] +@pytest.mark.enable_compiler_execution def test_compiler_get_real_version_fails(working_env, monkeypatch, tmpdir): # Test variables test_version = "2.2.2" @@ -784,15 +792,13 @@ def _call(*args, **kwargs): compilers = spack.compilers.get_compilers([compiler_dict]) assert len(compilers) == 1 compiler = compilers[0] - try: - _ = compiler.get_real_version() - assert False - except ProcessError: - # Confirm environment does not change after failed call - assert "SPACK_TEST_CMP_ON" not in os.environ + assert compiler.get_real_version() == "unknown" + # Confirm environment does not change after failed call + assert "SPACK_TEST_CMP_ON" not in os.environ @pytest.mark.not_on_windows("Bash scripting unsupported on Windows (for now)") +@pytest.mark.enable_compiler_execution def test_compiler_flags_use_real_version(working_env, monkeypatch, tmpdir): # Create compiler gcc = str(tmpdir.join("gcc")) @@ -895,3 +901,57 @@ def test_compiler_environment(working_env): ) with compiler.compiler_environment(): assert os.environ["TEST"] == "yes" + + +class MockCompilerWithoutExecutables(MockCompiler): + def __init__(self): + super().__init__() + self._compile_dummy_c_source_count = 0 + self._get_real_version_count = 0 + + def _compile_dummy_c_source(self) -> Optional[str]: + self._compile_dummy_c_source_count += 1 + return "gcc helloworld.c -o helloworld" + + def get_real_version(self) -> str: + self._get_real_version_count += 1 + return "1.0.0" + + +def test_compiler_output_caching(tmp_path): + """Test that compiler output is cached on the filesystem.""" + # The first call should trigger the cache to updated. + a = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(a).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(a).real_version == "1.0.0" + assert a._compile_dummy_c_source_count == 1 + assert a._get_real_version_count == 1 + + # The second call on an equivalent but distinct object should not trigger compiler calls. + b = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(b).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(b).real_version == "1.0.0" + assert b._compile_dummy_c_source_count == 0 + assert b._get_real_version_count == 0 + + # Cache schema change should be handled gracefully. + with open(cache.cache.cache_path(cache.name), "w") as f: + for k in cache._data: + cache._data[k] = "corrupted entry" + f.write(json.dumps(cache._data)) + + c = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(c).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(c).real_version == "1.0.0" + + # Cache corruption should be handled gracefully. + with open(cache.cache.cache_path(cache.name), "w") as f: + f.write("corrupted cache") + + d = MockCompilerWithoutExecutables() + cache = spack.compiler.FileCompilerCache(FileCache(str(tmp_path))) + assert cache.get(d).c_compiler_output == "gcc helloworld.c -o helloworld" + assert cache.get(d).real_version == "1.0.0" diff --git a/lib/spack/spack/test/concretize_compiler_runtimes.py b/lib/spack/spack/test/concretization/compiler_runtimes.py similarity index 100% rename from lib/spack/spack/test/concretize_compiler_runtimes.py rename to lib/spack/spack/test/concretization/compiler_runtimes.py diff --git a/lib/spack/spack/test/concretize.py b/lib/spack/spack/test/concretization/core.py similarity index 93% rename from lib/spack/spack/test/concretize.py rename to lib/spack/spack/test/concretization/core.py index b56f05b6019cee..e33f9761dad728 100644 --- a/lib/spack/spack/test/concretize.py +++ b/lib/spack/spack/test/concretization/core.py @@ -14,6 +14,7 @@ import llnl.util.lang import spack.binary_distribution +import spack.cmd import spack.compiler import spack.compilers import spack.concretize @@ -32,7 +33,6 @@ import spack.store import spack.util.file_cache import spack.variant as vt -from spack.concretize import find_spec from spack.installer import PackageInstaller from spack.spec import CompilerSpec, Spec from spack.version import Version, VersionList, ver @@ -540,21 +540,17 @@ def test_concretize_two_virtuals_with_dual_provider_and_a_conflict(self): @pytest.mark.parametrize( "spec_str,expected_propagation", [ - ("hypre~~shared ^openblas+shared", [("hypre", "~shared"), ("openblas", "+shared")]), # Propagates past a node that doesn't have the variant ("hypre~~shared ^openblas", [("hypre", "~shared"), ("openblas", "~shared")]), + # Propagates from root node to all nodes ( "ascent~~shared +adios2", [("ascent", "~shared"), ("adios2", "~shared"), ("bzip2", "~shared")], ), - # Propagates below a node that uses the other value explicitly + # Propagate from a node that is not the root node ( - "ascent~~shared +adios2 ^adios2+shared", - [("ascent", "~shared"), ("adios2", "+shared"), ("bzip2", "~shared")], - ), - ( - "ascent++shared +adios2 ^adios2~shared", - [("ascent", "+shared"), ("adios2", "~shared"), ("bzip2", "+shared")], + "ascent +adios2 ^adios2~~shared", + [("ascent", "+shared"), ("adios2", "~shared"), ("bzip2", "~shared")], ), ], ) @@ -564,21 +560,109 @@ def test_concretize_propagate_disabled_variant(self, spec_str, expected_propagat for key, expected_satisfies in expected_propagation: spec[key].satisfies(expected_satisfies) - def test_concretize_propagated_variant_is_not_passed_to_dependent(self): - """Test a package variant value was passed from its parent.""" - spec = Spec("ascent~~shared +adios2 ^adios2+shared") + def test_concretize_propagate_variant_not_dependencies(self): + """Test that when propagating a variant it is not propagated to dependencies that + do not have that variant""" + spec = Spec("quantum-espresso~~invino") spec.concretize() - assert spec.satisfies("^adios2+shared") - assert spec.satisfies("^bzip2~shared") + for dep in spec.traverse(root=False): + assert "invino" not in dep.variants.keys() + + def test_concretize_propagate_variant_exclude_dependency_fail(self): + """Tests that a propagating variant cannot be allowed to be excluded by any of + the source package's dependencies""" + spec = Spec("hypre ~~shared ^openblas +shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_from_direct_dep_fail(self): + """Test that when propagating a variant from the source package and a direct + dependency also propagates the same variant with a different value. Raises error""" + spec = Spec("ascent +adios2 ++shared ^adios2 ~~shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_in_dependency_fail(self): + """Test that when propagating a variant from the source package, none of it's + dependencies can propagate that variant with a different value. Raises error.""" + spec = Spec("ascent +adios2 ++shared ^bzip2 ~~shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_virtual_dependency_fail(self): + """Test that when propagating a variant from the source package and a direct + dependency (that is a virtual pkg) also propagates the same variant with a + different value. Raises error""" + spec = Spec("hypre ++shared ^openblas ~~shared") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() + + def test_concretize_propagate_same_variant_multiple_sources_diamond_dep_fail(self): + """Test that fails when propagating the same variant with different values from multiple + sources that share a dependency""" + spec = Spec("parent-foo-bar ^dependency-foo-bar++bar ^direct-dep-foo-bar~~bar") + with pytest.raises(spack.error.UnsatisfiableSpecError): + spec.concretize() def test_concretize_propagate_specified_variant(self): """Test that only the specified variant is propagated to the dependencies""" spec = Spec("parent-foo-bar ~~foo") spec.concretize() - assert spec.satisfies("~foo") and spec.satisfies("^dependency-foo-bar~foo") - assert spec.satisfies("+bar") and not spec.satisfies("^dependency-foo-bar+bar") + assert spec.satisfies("^dependency-foo-bar~foo") + assert spec.satisfies("^second-dependency-foo-bar-fee~foo") + assert spec.satisfies("^direct-dep-foo-bar~foo") + + assert not spec.satisfies("^dependency-foo-bar+bar") + assert not spec.satisfies("^second-dependency-foo-bar-fee+bar") + assert not spec.satisfies("^direct-dep-foo-bar+bar") + + def test_concretize_propagate_one_variant(self): + """Test that you can specify to propagate one variant and not all""" + spec = Spec("parent-foo-bar ++bar ~foo") + spec.concretize() + + assert spec.satisfies("~foo") and not spec.satisfies("^dependency-foo-bar~foo") + assert spec.satisfies("+bar") and spec.satisfies("^dependency-foo-bar+bar") + + def test_concretize_propagate_through_first_level_deps(self): + """Test that boolean valued variants can be propagated past first level + dependecies even if the first level dependency does have the variant""" + spec = Spec("parent-foo-bar-fee ++fee") + spec.concretize() + + assert spec.satisfies("+fee") and not spec.satisfies("dependency-foo-bar+fee") + assert spec.satisfies("^second-dependency-foo-bar-fee+fee") + + def test_concretize_propagate_multiple_variants(self): + """Test that multiple boolean valued variants can be propagated from + the same source package""" + spec = Spec("parent-foo-bar-fee ~~foo ++bar") + spec.concretize() + + assert spec.satisfies("~foo") and spec.satisfies("+bar") + assert spec.satisfies("^dependency-foo-bar ~foo +bar") + assert spec.satisfies("^second-dependency-foo-bar-fee ~foo +bar") + + def test_concretize_propagate_multiple_variants_mulitple_sources(self): + """Test the propagates multiple different variants for multiple sources + in a diamond dependency""" + spec = Spec("parent-foo-bar ^dependency-foo-bar++bar ^direct-dep-foo-bar~~foo") + spec.concretize() + + assert spec.satisfies("^second-dependency-foo-bar-fee+bar") + assert spec.satisfies("^second-dependency-foo-bar-fee~foo") + assert not spec.satisfies("^dependency-foo-bar~foo") + assert not spec.satisfies("^direct-dep-foo-bar+bar") + + def test_concretize_propagate_single_valued_variant(self): + """Test propagation for single valued variants""" + spec = Spec("multivalue-variant libs==static") + spec.concretize() + + assert spec.satisfies("libs=static") + assert spec.satisfies("^pkg-a libs=static") def test_concretize_propagate_multivalue_variant(self): """Test that multivalue variants are propagating the specified value(s) @@ -591,6 +675,46 @@ def test_concretize_propagate_multivalue_variant(self): assert not spec.satisfies("^pkg-a foo=bar") assert not spec.satisfies("^pkg-b foo=bar") + def test_concretize_propagate_multiple_multivalue_variant(self): + """Tests propagating the same mulitvalued variant from different sources allows + the dependents to accept all propagated values""" + spec = Spec("multivalue-variant foo==bar ^pkg-a foo==baz") + spec.concretize() + + assert spec.satisfies("multivalue-variant foo=bar") + assert spec.satisfies("^pkg-a foo=bar,baz") + assert spec.satisfies("^pkg-b foo=bar,baz") + + def test_concretize_propagate_variant_not_in_source(self): + """Test that variant is still propagated even if the source pkg + doesn't have the variant""" + spec = Spec("callpath++debug") + spec.concretize() + + assert spec.satisfies("^mpich+debug") + assert not spec.satisfies("callpath+debug") + assert not spec.satisfies("^dyninst+debug") + + def test_concretize_propagate_variant_multiple_deps_not_in_source(self): + """Test that a variant can be propagated to multiple dependencies + when the variant is not in the source package""" + spec = Spec("netlib-lapack++shared") + spec.concretize() + + assert spec.satisfies("^openblas+shared") + assert spec.satisfies("^perl+shared") + assert not spec.satisfies("netlib-lapack+shared") + + def test_concretize_propagate_variant_second_level_dep_not_in_source(self): + """Test that a variant can be propagated past first level dependencies + when the variant is not in the source package or any of the first level + dependencies""" + spec = Spec("parent-foo-bar ++fee") + spec.concretize() + + assert spec.satisfies("^second-dependency-foo-bar-fee +fee") + assert not spec.satisfies("parent-foo-bar +fee") + def test_no_matching_compiler_specs(self, mock_low_high_config): # only relevant when not building compilers as needed with spack.concretize.enable_compiler_existence_check(): @@ -673,39 +797,6 @@ def test_external_and_virtual(self, mutable_config): assert spec["externaltool"].compiler.satisfies("gcc") assert spec["stuff"].compiler.satisfies("gcc") - def test_find_spec_parents(self): - """Tests the spec finding logic used by concretization.""" - s = Spec.from_literal({"a +foo": {"b +foo": {"c": None, "d+foo": None}, "e +foo": None}}) - - assert "a" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_children(self): - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d+foo": None}, "e +foo": None}}) - - assert "d" == find_spec(s["b"], lambda s: "+foo" in s).name - - s = Spec.from_literal({"a": {"b +foo": {"c+foo": None, "d": None}, "e +foo": None}}) - - assert "c" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_sibling(self): - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d": None}, "e +foo": None}}) - - assert "e" == find_spec(s["b"], lambda s: "+foo" in s).name - assert "b" == find_spec(s["e"], lambda s: "+foo" in s).name - - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d": None}, "e": {"f +foo": None}}}) - - assert "f" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_self(self): - s = Spec.from_literal({"a": {"b +foo": {"c": None, "d": None}, "e": None}}) - assert "b" == find_spec(s["b"], lambda s: "+foo" in s).name - - def test_find_spec_none(self): - s = Spec.from_literal({"a": {"b": {"c": None, "d": None}, "e": None}}) - assert find_spec(s["b"], lambda s: "+foo" in s) is None - def test_compiler_child(self): s = Spec("mpileaks%clang target=x86_64 ^dyninst%gcc") s.concretize() @@ -814,7 +905,7 @@ def test_regression_issue_7941(self): ) def test_simultaneous_concretization_of_specs(self, abstract_specs): abstract_specs = [Spec(x) for x in abstract_specs] - concrete_specs = spack.concretize.concretize_specs_together(*abstract_specs) + concrete_specs = spack.concretize.concretize_specs_together(abstract_specs) # Check there's only one configuration of each package in the DAG names = set(dep.name for spec in concrete_specs for dep in spec.traverse()) @@ -2136,7 +2227,7 @@ def test_external_python_extension_find_unified_python(self): spack.config.set("packages", external_conf) abstract_specs = [Spec(s) for s in ["py-extension1", "python"]] - specs = spack.concretize.concretize_specs_together(*abstract_specs) + specs = spack.concretize.concretize_specs_together(abstract_specs) assert specs[0]["python"] == specs[1]["python"] @pytest.mark.regression("36190") @@ -2225,6 +2316,7 @@ def test_compiler_match_constraints_when_selected(self): @pytest.mark.regression("36339") @pytest.mark.not_on_windows("Not supported on Windows") + @pytest.mark.enable_compiler_execution def test_compiler_with_custom_non_numeric_version(self, mock_executable): """Test that, when a compiler has a completely made up version, we can use its 'real version' to detect targets and don't raise during concretization. @@ -2306,6 +2398,30 @@ def test_explicit_splices( assert "hdf5 ^zmpi" in captured.err assert str(spec) in captured.err + def test_explicit_splice_fails_nonexistent(mutable_config, mock_packages, mock_store): + splice_info = {"target": "mpi", "replacement": "mpich/doesnotexist"} + spack.config.CONFIG.set("concretizer", {"splice": {"explicit": [splice_info]}}) + + with pytest.raises(spack.spec.InvalidHashError): + _ = spack.spec.Spec("hdf5^zmpi").concretized() + + def test_explicit_splice_fails_no_hash(mutable_config, mock_packages, mock_store): + splice_info = {"target": "mpi", "replacement": "mpich"} + spack.config.CONFIG.set("concretizer", {"splice": {"explicit": [splice_info]}}) + + with pytest.raises(spack.solver.asp.InvalidSpliceError, match="must be specified by hash"): + _ = spack.spec.Spec("hdf5^zmpi").concretized() + + def test_explicit_splice_non_match_nonexistent_succeeds( + mutable_config, mock_packages, mock_store + ): + """When we have a nonexistent splice configured but are not using it, don't fail.""" + splice_info = {"target": "will_not_match", "replacement": "nonexistent/doesnotexist"} + spack.config.CONFIG.set("concretizer", {"splice": {"explicit": [splice_info]}}) + spec = spack.spec.Spec("zlib").concretized() + # the main test is that it does not raise + assert not spec.spliced + @pytest.mark.db @pytest.mark.parametrize( "spec_str,mpi_name", @@ -3082,3 +3198,20 @@ def test_reuse_prefers_standard_over_git_versions( test_spec = spack.spec.Spec("git-ref-package@2").concretized() assert git_spec.dag_hash() != test_spec.dag_hash() assert standard_spec.dag_hash() == test_spec.dag_hash() + + +@pytest.mark.parametrize("unify", [True, "when_possible", False]) +def test_spec_unification(unify, mutable_config, mock_packages): + spack.config.set("concretizer:unify", unify) + a = "pkg-a" + a_restricted = "pkg-a^pkg-b foo=baz" + b = "pkg-b foo=none" + + unrestricted = spack.cmd.parse_specs([a, b], concretize=True) + a_concrete_unrestricted = [s for s in unrestricted if s.name == "pkg-a"][0] + b_concrete_unrestricted = [s for s in unrestricted if s.name == "pkg-b"][0] + assert (a_concrete_unrestricted["pkg-b"] == b_concrete_unrestricted) == (unify is not False) + + maybe_fails = pytest.raises if unify is True else llnl.util.lang.nullcontext + with maybe_fails(spack.solver.asp.UnsatisfiableSpecError): + _ = spack.cmd.parse_specs([a_restricted, b], concretize=True) diff --git a/lib/spack/spack/test/concretize_errors.py b/lib/spack/spack/test/concretization/errors.py similarity index 100% rename from lib/spack/spack/test/concretize_errors.py rename to lib/spack/spack/test/concretization/errors.py diff --git a/lib/spack/spack/test/flag_mixing.py b/lib/spack/spack/test/concretization/flag_mixing.py similarity index 99% rename from lib/spack/spack/test/flag_mixing.py rename to lib/spack/spack/test/concretization/flag_mixing.py index 6009ade058e5bd..878c0c71efc85e 100644 --- a/lib/spack/spack/test/flag_mixing.py +++ b/lib/spack/spack/test/concretization/flag_mixing.py @@ -8,6 +8,7 @@ import spack.config import spack.environment as ev +import spack.paths import spack.repo import spack.util.spack_yaml as syaml from spack.spec import Spec diff --git a/lib/spack/spack/test/concretize_preferences.py b/lib/spack/spack/test/concretization/preferences.py similarity index 100% rename from lib/spack/spack/test/concretize_preferences.py rename to lib/spack/spack/test/concretization/preferences.py diff --git a/lib/spack/spack/test/concretize_requirements.py b/lib/spack/spack/test/concretization/requirements.py similarity index 99% rename from lib/spack/spack/test/concretize_requirements.py rename to lib/spack/spack/test/concretization/requirements.py index be66b2b0a82588..9e703be51fe08f 100644 --- a/lib/spack/spack/test/concretize_requirements.py +++ b/lib/spack/spack/test/concretization/requirements.py @@ -10,8 +10,10 @@ import spack.config import spack.error import spack.package_base +import spack.paths import spack.repo import spack.solver.asp +import spack.store import spack.util.spack_yaml as syaml import spack.version from spack.installer import PackageInstaller diff --git a/lib/spack/spack/test/config.py b/lib/spack/spack/test/config.py index be727f1c561e95..a5a4fc9787c297 100644 --- a/lib/spack/spack/test/config.py +++ b/lib/spack/spack/test/config.py @@ -472,6 +472,13 @@ def test_substitute_date(mock_low_high_config): assert date.today().strftime("%Y-%m-%d") in new_path +def test_substitute_spack_version(): + version = spack.spack_version_info + assert spack_path.canonicalize_path( + "spack$spack_short_version/test" + ) == spack_path.canonicalize_path(f"spack{version[0]}.{version[1]}/test") + + PAD_STRING = spack_path.SPACK_PATH_PADDING_CHARS MAX_PATH_LEN = spack_path.get_system_path_max() MAX_PADDED_LEN = MAX_PATH_LEN - spack_path.SPACK_MAX_INSTALL_PATH_LENGTH diff --git a/lib/spack/spack/test/conftest.py b/lib/spack/spack/test/conftest.py index 5f461d9d3588a4..f6670157edf9ff 100644 --- a/lib/spack/spack/test/conftest.py +++ b/lib/spack/spack/test/conftest.py @@ -973,12 +973,26 @@ def _return_none(*args): return None +def _compiler_output(self): + return "" + + +def _get_real_version(self): + return str(self.version) + + @pytest.fixture(scope="function", autouse=True) def disable_compiler_execution(monkeypatch, request): """Disable compiler execution to determine implicit link paths and libc flavor and version. To re-enable use `@pytest.mark.enable_compiler_execution`""" if "enable_compiler_execution" not in request.keywords: - monkeypatch.setattr(spack.compiler.Compiler, "_compile_dummy_c_source", _return_none) + monkeypatch.setattr(spack.compiler.Compiler, "_compile_dummy_c_source", _compiler_output) + monkeypatch.setattr(spack.compiler.Compiler, "get_real_version", _get_real_version) + + +@pytest.fixture(autouse=True) +def disable_compiler_output_cache(monkeypatch): + monkeypatch.setattr(spack.compiler, "COMPILER_CACHE", spack.compiler.CompilerCache()) @pytest.fixture(scope="function") diff --git a/lib/spack/spack/test/data/config/bootstrap.yaml b/lib/spack/spack/test/data/config/bootstrap.yaml index 4757b8729d23a8..43c4405350acf8 100644 --- a/lib/spack/spack/test/data/config/bootstrap.yaml +++ b/lib/spack/spack/test/data/config/bootstrap.yaml @@ -1,5 +1,5 @@ bootstrap: sources: - name: 'github-actions' - metadata: $spack/share/spack/bootstrap/github-actions-v0.5 + metadata: $spack/share/spack/bootstrap/github-actions-v0.6 trusted: {} diff --git a/lib/spack/spack/test/data/modules/tcl/suffix-format.yaml b/lib/spack/spack/test/data/modules/tcl/suffix-format.yaml new file mode 100644 index 00000000000000..00328cb0019a7a --- /dev/null +++ b/lib/spack/spack/test/data/modules/tcl/suffix-format.yaml @@ -0,0 +1,9 @@ +enable: + - tcl +tcl: + all: + autoload: none + mpileaks: + suffixes: + mpileaks: 'debug={variants.debug.value}' + '^mpi': 'mpi={^mpi.name}-v{^mpi.version}' diff --git a/lib/spack/spack/test/database.py b/lib/spack/spack/test/database.py index 7140a502878105..3049e543986030 100644 --- a/lib/spack/spack/test/database.py +++ b/lib/spack/spack/test/database.py @@ -1181,3 +1181,20 @@ def test_reindex_with_upstreams(tmp_path, monkeypatch, mock_packages, config): assert not reindexed_local_store.db.query_local("callpath") assert reindexed_local_store.db.query("callpath") == [callpath] assert reindexed_local_store.db.query_local("mpileaks") == [mpileaks] + + +@pytest.mark.regression("47101") +def test_query_with_predicate_fn(database): + all_specs = database.query() + + # Name starts with a string + specs = database.query(predicate_fn=lambda x: x.spec.name.startswith("mpil")) + assert specs and all(x.name.startswith("mpil") for x in specs) + assert len(specs) < len(all_specs) + + # Recipe is currently known/unknown + specs = database.query(predicate_fn=lambda x: spack.repo.PATH.exists(x.spec.name)) + assert specs == all_specs + + specs = database.query(predicate_fn=lambda x: not spack.repo.PATH.exists(x.spec.name)) + assert not specs diff --git a/lib/spack/spack/test/env.py b/lib/spack/spack/test/env.py index 682540361fde1a..a542539899c7cd 100644 --- a/lib/spack/spack/test/env.py +++ b/lib/spack/spack/test/env.py @@ -892,3 +892,32 @@ def test_stack_enforcement_is_strict(tmp_path, matrix_line, config, mock_package with pytest.raises(Exception): with ev.Environment(tmp_path) as e: e.concretize() + + +def test_only_roots_are_explicitly_installed(tmp_path, mock_packages, config, temporary_store): + """When installing specific non-root specs from an environment, we continue to mark them + as implicitly installed. What makes installs explicit is that they are root of the env.""" + env = ev.create_in_dir(tmp_path) + env.add("mpileaks") + env.concretize() + mpileaks = env.concrete_roots()[0] + callpath = mpileaks["callpath"] + env.install_specs([callpath], fake=True) + assert callpath in temporary_store.db.query(explicit=False) + env.install_specs([mpileaks], fake=True) + assert temporary_store.db.query(explicit=True) == [mpileaks] + + +def test_environment_from_name_or_dir(mock_packages, mutable_mock_env_path, tmp_path): + test_env = ev.create("test") + + name_env = ev.environment_from_name_or_dir(test_env.name) + assert name_env.name == test_env.name + assert name_env.path == test_env.path + + dir_env = ev.environment_from_name_or_dir(test_env.path) + assert dir_env.name == test_env.name + assert dir_env.path == test_env.path + + with pytest.raises(ev.SpackEnvironmentError, match="no such environment"): + _ = ev.environment_from_name_or_dir("fake-env") diff --git a/lib/spack/spack/test/installer.py b/lib/spack/spack/test/installer.py index 8df6a1a6eaa00d..38bc1609821bc6 100644 --- a/lib/spack/spack/test/installer.py +++ b/lib/spack/spack/test/installer.py @@ -644,13 +644,12 @@ def test_prepare_for_install_on_installed(install_mockery, monkeypatch): def test_installer_init_requests(install_mockery): """Test of installer initial requests.""" spec_name = "dependent-install" - with spack.config.override("config:install_missing_compilers", True): - installer = create_installer([spec_name], {}) + installer = create_installer([spec_name], {}) - # There is only one explicit request in this case - assert len(installer.build_requests) == 1 - request = installer.build_requests[0] - assert request.pkg.name == spec_name + # There is only one explicit request in this case + assert len(installer.build_requests) == 1 + request = installer.build_requests[0] + assert request.pkg.name == spec_name @pytest.mark.parametrize("transitive", [True, False]) @@ -743,21 +742,20 @@ def _missing(*args, **kwargs): # Set the configuration to ensure _requeue_with_build_spec_tasks actually # does something. - with spack.config.override("config:install_missing_compilers", True): - installer = create_installer(["depb"], {}) - installer._init_queue() - request = installer.build_requests[0] - task = create_build_task(request.pkg) + installer = create_installer(["depb"], {}) + installer._init_queue() + request = installer.build_requests[0] + task = create_build_task(request.pkg) - # Drop one of the specs so its task is missing before _install_task - popped_task = installer._pop_task() - assert inst.package_id(popped_task.pkg.spec) not in installer.build_tasks + # Drop one of the specs so its task is missing before _install_task + popped_task = installer._pop_task() + assert inst.package_id(popped_task.pkg.spec) not in installer.build_tasks - monkeypatch.setattr(task, "execute", _missing) - installer._install_task(task, None) + monkeypatch.setattr(task, "execute", _missing) + installer._install_task(task, None) - # Ensure the dropped task/spec was added back by _install_task - assert inst.package_id(popped_task.pkg.spec) in installer.build_tasks + # Ensure the dropped task/spec was added back by _install_task + assert inst.package_id(popped_task.pkg.spec) in installer.build_tasks def test_release_lock_write_n_exception(install_mockery, tmpdir, capsys): diff --git a/lib/spack/spack/test/llnl/util/file_list.py b/lib/spack/spack/test/llnl/util/file_list.py index 75ba3ae89d9aca..e2ff5a82109510 100644 --- a/lib/spack/spack/test/llnl/util/file_list.py +++ b/lib/spack/spack/test/llnl/util/file_list.py @@ -9,7 +9,7 @@ import pytest -from llnl.util.filesystem import HeaderList, LibraryList, find, find_headers, find_libraries +from llnl.util.filesystem import HeaderList, LibraryList, find_headers, find_libraries import spack.paths @@ -324,33 +324,3 @@ def test_searching_order(search_fn, search_list, root, kwargs): # List should be empty here assert len(rlist) == 0 - - -@pytest.mark.parametrize( - "root,search_list,kwargs,expected", - [ - ( - search_dir, - "*/*bar.tx?", - {"recursive": False}, - [ - os.path.join(search_dir, os.path.join("a", "foobar.txt")), - os.path.join(search_dir, os.path.join("b", "bar.txp")), - os.path.join(search_dir, os.path.join("c", "bar.txt")), - ], - ), - ( - search_dir, - "*/*bar.tx?", - {"recursive": True}, - [ - os.path.join(search_dir, os.path.join("a", "foobar.txt")), - os.path.join(search_dir, os.path.join("b", "bar.txp")), - os.path.join(search_dir, os.path.join("c", "bar.txt")), - ], - ), - ], -) -def test_find_with_globbing(root, search_list, kwargs, expected): - matches = find(root, search_list, **kwargs) - assert sorted(matches) == sorted(expected) diff --git a/lib/spack/spack/test/llnl/util/filesystem.py b/lib/spack/spack/test/llnl/util/filesystem.py index a0c98747698b20..1a32e5707c735b 100644 --- a/lib/spack/spack/test/llnl/util/filesystem.py +++ b/lib/spack/spack/test/llnl/util/filesystem.py @@ -6,6 +6,7 @@ """Tests for ``llnl/util/filesystem.py``""" import filecmp import os +import pathlib import shutil import stat import sys @@ -14,7 +15,8 @@ import pytest import llnl.util.filesystem as fs -from llnl.util.symlink import islink, readlink, symlink +import llnl.util.symlink +from llnl.util.symlink import _windows_can_symlink, islink, readlink, symlink import spack.paths @@ -1035,3 +1037,215 @@ def test_windows_sfn(tmpdir): assert "d\\LONGER~1" in fs.windows_sfn(d) assert "d\\LONGER~2" in fs.windows_sfn(e) shutil.rmtree(tmpdir.join("d")) + + +@pytest.fixture +def dir_structure_with_things_to_find(tmpdir): + """ + / + dir_one/ + file_one + dir_two/ + dir_three/ + dir_four/ + file_two + file_three + file_four + """ + dir_one = tmpdir.join("dir_one").ensure(dir=True) + tmpdir.join("dir_two").ensure(dir=True) + dir_three = tmpdir.join("dir_three").ensure(dir=True) + dir_four = dir_three.join("dir_four").ensure(dir=True) + + locations = {} + locations["file_one"] = str(dir_one.join("file_one").ensure()) + locations["file_two"] = str(dir_four.join("file_two").ensure()) + locations["file_three"] = str(dir_three.join("file_three").ensure()) + locations["file_four"] = str(tmpdir.join("file_four").ensure()) + + return str(tmpdir), locations + + +def test_find_path_glob_matches(dir_structure_with_things_to_find): + root, locations = dir_structure_with_things_to_find + # both file name and path match + assert ( + fs.find(root, "file_two") + == fs.find(root, "*/*/file_two") + == fs.find(root, "dir_t*/*/*two") + == [locations["file_two"]] + ) + # ensure that * does not match directory separators + assert fs.find(root, "dir*file_two") == [] + # ensure that file name matches after / are matched from the start of the file name + assert fs.find(root, "*/ile_two") == [] + # file name matches exist, but not with these paths + assert fs.find(root, "dir_one/*/*two") == fs.find(root, "*/*/*/*/file_two") == [] + + +def test_find_max_depth(dir_structure_with_things_to_find): + root, locations = dir_structure_with_things_to_find + + # Make sure the paths we use to verify are absolute + assert os.path.isabs(locations["file_one"]) + + assert set(fs.find(root, "file_*", max_depth=0)) == {locations["file_four"]} + assert set(fs.find(root, "file_*", max_depth=1)) == { + locations["file_one"], + locations["file_three"], + locations["file_four"], + } + assert set(fs.find(root, "file_two", max_depth=2)) == {locations["file_two"]} + assert not set(fs.find(root, "file_two", max_depth=1)) + assert set(fs.find(root, "file_two")) == {locations["file_two"]} + assert set(fs.find(root, "file_*")) == set(locations.values()) + + +def test_find_max_depth_relative(dir_structure_with_things_to_find): + """find_max_depth should return absolute paths even if the provided path is relative.""" + root, locations = dir_structure_with_things_to_find + with fs.working_dir(root): + assert set(fs.find(".", "file_*", max_depth=0)) == {locations["file_four"]} + assert set(fs.find(".", "file_two", max_depth=2)) == {locations["file_two"]} + + +@pytest.mark.parametrize("recursive,max_depth", [(False, -1), (False, 1)]) +def test_max_depth_and_recursive_errors(tmpdir, recursive, max_depth): + root = str(tmpdir) + error_str = "cannot be set if recursive is False" + with pytest.raises(ValueError, match=error_str): + fs.find(root, ["some_file"], recursive=recursive, max_depth=max_depth) + + with pytest.raises(ValueError, match=error_str): + fs.find_libraries(["some_lib"], root, recursive=recursive, max_depth=max_depth) + + +@pytest.fixture(params=[True, False]) +def complex_dir_structure(request, tmpdir): + """ + "lx-dy" means "level x, directory y" + "lx-fy" means "level x, file y" + "lx-sy" means "level x, symlink y" + + / + l1-d1/ + l2-d1/ + l3-d2/ + l4-f1 + l3-d4/ + l4-f2 + l3-s1 -> l1-d2 # points to directory above l2-d1 + l3-s3 -> l1-d1 # cyclic link + l1-d2/ + l2-d2/ + l3-f3 + l2-f1 + l2-s3 -> l2-d2 + l1-s3 -> l3-d4 # a link that "skips" a directory level + l1-s4 -> l2-s3 # a link to a link to a dir + """ + use_junctions = request.param + if sys.platform == "win32" and not use_junctions and not _windows_can_symlink(): + pytest.skip("This Windows instance is not configured with symlink support") + elif sys.platform != "win32" and use_junctions: + pytest.skip("Junctions are a Windows-only feature") + + l1_d1 = tmpdir.join("l1-d1").ensure(dir=True) + l2_d1 = l1_d1.join("l2-d1").ensure(dir=True) + l3_d2 = l2_d1.join("l3-d2").ensure(dir=True) + l3_d4 = l2_d1.join("l3-d4").ensure(dir=True) + l1_d2 = tmpdir.join("l1-d2").ensure(dir=True) + l2_d2 = l1_d2.join("l2-d2").ensure(dir=True) + + if use_junctions: + link_fn = llnl.util.symlink._windows_create_junction + else: + link_fn = os.symlink + + link_fn(l1_d2, pathlib.Path(l2_d1) / "l3-s1") + link_fn(l1_d1, pathlib.Path(l2_d1) / "l3-s3") + link_fn(l3_d4, pathlib.Path(tmpdir) / "l1-s3") + l2_s3 = pathlib.Path(l1_d2) / "l2-s3" + link_fn(l2_d2, l2_s3) + link_fn(l2_s3, pathlib.Path(tmpdir) / "l1-s4") + + locations = { + "l4-f1": str(l3_d2.join("l4-f1").ensure()), + "l4-f2-full": str(l3_d4.join("l4-f2").ensure()), + "l4-f2-link": str(pathlib.Path(tmpdir) / "l1-s3" / "l4-f2"), + "l2-f1": str(l1_d2.join("l2-f1").ensure()), + "l2-f1-link": str(pathlib.Path(tmpdir) / "l1-d1" / "l2-d1" / "l3-s1" / "l2-f1"), + "l3-f3-full": str(l2_d2.join("l3-f3").ensure()), + "l3-f3-link-l1": str(pathlib.Path(tmpdir) / "l1-s4" / "l3-f3"), + } + + return str(tmpdir), locations + + +def test_find_max_depth_symlinks(complex_dir_structure): + root, locations = complex_dir_structure + root = pathlib.Path(root) + assert set(fs.find(root, "l4-f1")) == {locations["l4-f1"]} + assert set(fs.find(root / "l1-s3", "l4-f2", max_depth=0)) == {locations["l4-f2-link"]} + assert set(fs.find(root / "l1-d1", "l2-f1")) == {locations["l2-f1-link"]} + # File is accessible via symlink and subdir, the link path will be + # searched first, and the directory will not be searched again when + # it is encountered the second time (via not-link) in the traversal + assert set(fs.find(root, "l4-f2")) == {locations["l4-f2-link"]} + # File is accessible only via the dir, so the full file path should + # be reported + assert set(fs.find(root / "l1-d1", "l4-f2")) == {locations["l4-f2-full"]} + # Check following links to links + assert set(fs.find(root, "l3-f3")) == {locations["l3-f3-link-l1"]} + + +def test_find_max_depth_multiple_and_repeated_entry_points(complex_dir_structure): + root, locations = complex_dir_structure + + fst = str(pathlib.Path(root) / "l1-d1" / "l2-d1") + snd = str(pathlib.Path(root) / "l1-d2") + nonexistent = str(pathlib.Path(root) / "nonexistent") + + assert set(fs.find([fst, snd, fst, snd, nonexistent], ["l*-f*"], max_depth=1)) == { + locations["l2-f1"], + locations["l4-f1"], + locations["l4-f2-full"], + locations["l3-f3-full"], + } + + +def test_multiple_patterns(complex_dir_structure): + root, _ = complex_dir_structure + paths = fs.find(root, ["l2-f1", "l*-d*/l3-f3", "*-f*", "*/*-f*"]) + # There shouldn't be duplicate results with multiple, overlapping patterns + assert len(set(paths)) == len(paths) + # All files should be found + filenames = [os.path.basename(p) for p in paths] + assert set(filenames) == {"l2-f1", "l3-f3", "l4-f1", "l4-f2"} + # They are ordered by first matching pattern (this is a bit of an implementation detail, + # and we could decide to change the exact order in the future) + assert filenames[0] == "l2-f1" + assert filenames[1] == "l3-f3" + + +def test_find_input_types(tmp_path: pathlib.Path): + """test that find only accepts sequences and instances of pathlib.Path and str for root, and + only sequences and instances of str for patterns. In principle mypy catches these issues, but + it is not enabled on all call-sites.""" + (tmp_path / "file.txt").write_text("") + assert ( + fs.find(tmp_path, "file.txt") + == fs.find(str(tmp_path), "file.txt") + == fs.find([tmp_path, str(tmp_path)], "file.txt") + == fs.find((tmp_path, str(tmp_path)), "file.txt") + == fs.find(tmp_path, "file.txt") + == fs.find(tmp_path, ["file.txt"]) + == fs.find(tmp_path, ("file.txt",)) + == [str(tmp_path / "file.txt")] + ) + + with pytest.raises(TypeError): + fs.find(tmp_path, pathlib.Path("file.txt")) # type: ignore + + with pytest.raises(TypeError): + fs.find(1, "file.txt") # type: ignore diff --git a/lib/spack/spack/test/llnl/util/lang.py b/lib/spack/spack/test/llnl/util/lang.py index abf2c5b1346bd3..6926c50cd89e90 100644 --- a/lib/spack/spack/test/llnl/util/lang.py +++ b/lib/spack/spack/test/llnl/util/lang.py @@ -336,3 +336,56 @@ def test_grouped_exception_base_type(): message = h.grouped_message(with_tracebacks=False) assert "catch-runtime-error" in message assert "catch-value-error" not in message + + +def test_class_level_constant_value(): + """Tests that the Const descriptor does not allow overwriting the value from an instance""" + + class _SomeClass: + CONST_VALUE = llnl.util.lang.Const(10) + + with pytest.raises(TypeError, match="not support assignment"): + _SomeClass().CONST_VALUE = 11 + + +def test_deprecated_property(): + """Tests the behavior of the DeprecatedProperty descriptor, which is can be used when + deprecating an attribute. + """ + + class _Deprecated(llnl.util.lang.DeprecatedProperty): + def factory(self, instance, owner): + return 46 + + class _SomeClass: + deprecated = _Deprecated("deprecated") + + # Default behavior is to just return the deprecated value + s = _SomeClass() + assert s.deprecated == 46 + + # When setting error_level to 1 the attribute warns + _SomeClass.deprecated.error_lvl = 1 + with pytest.warns(UserWarning): + assert s.deprecated == 46 + + # When setting error_level to 2 an exception is raised + _SomeClass.deprecated.error_lvl = 2 + with pytest.raises(AttributeError): + _ = s.deprecated + + +def test_fnmatch_multiple(): + named_patterns = {"a": "libf*o.so", "b": "libb*r.so"} + regex = re.compile(llnl.util.lang.fnmatch_translate_multiple(named_patterns)) + + a = regex.match("libfoo.so") + assert a and a.group("a") == "libfoo.so" + + b = regex.match("libbar.so") + assert b and b.group("b") == "libbar.so" + + assert not regex.match("libfoo.so.1") + assert not regex.match("libbar.so.1") + assert not regex.match("libfoo.solibbar.so") + assert not regex.match("libbaz.so") diff --git a/lib/spack/spack/test/mirror.py b/lib/spack/spack/test/mirror.py index 10d375a7fb652b..ce104259fc76ca 100644 --- a/lib/spack/spack/test/mirror.py +++ b/lib/spack/spack/test/mirror.py @@ -8,6 +8,7 @@ import pytest +from llnl.util.filesystem import working_dir from llnl.util.symlink import resolve_link_target_relative_to_the_link import spack.caches @@ -19,6 +20,7 @@ import spack.util.executable import spack.util.spack_json as sjson import spack.util.url as url_util +from spack.cmd.common.arguments import mirror_name_or_url from spack.spec import Spec from spack.util.executable import which from spack.util.spack_yaml import SpackYAMLError @@ -327,9 +329,9 @@ def test_update_4(): @pytest.mark.parametrize("direction", ["fetch", "push"]) -def test_update_connection_params(direction): +def test_update_connection_params(direction, tmpdir, monkeypatch): """Test whether new connection params expand the mirror config to a dict.""" - m = spack.mirror.Mirror("https://example.com") + m = spack.mirror.Mirror("https://example.com", "example") assert m.update( { @@ -352,8 +354,69 @@ def test_update_connection_params(direction): "endpoint_url": "https://example.com", }, } - - assert m.get_access_pair(direction) == ["username", "password"] + assert m.get_access_pair(direction) == ("username", "password") assert m.get_access_token(direction) == "token" assert m.get_profile(direction) == "profile" assert m.get_endpoint_url(direction) == "https://example.com" + + # Expand environment variables + os.environ["_SPACK_TEST_PAIR_USERNAME"] = "expanded_username" + os.environ["_SPACK_TEST_PAIR_PASSWORD"] = "expanded_password" + os.environ["_SPACK_TEST_TOKEN"] = "expanded_token" + + assert m.update( + { + "access_pair": { + "id_variable": "_SPACK_TEST_PAIR_USERNAME", + "secret_variable": "_SPACK_TEST_PAIR_PASSWORD", + } + }, + direction, + ) + + assert m.to_dict() == { + "url": "https://example.com", + direction: { + "url": "http://example.org", + "access_pair": { + "id_variable": "_SPACK_TEST_PAIR_USERNAME", + "secret_variable": "_SPACK_TEST_PAIR_PASSWORD", + }, + "access_token": "token", + "profile": "profile", + "endpoint_url": "https://example.com", + }, + } + + assert m.get_access_pair(direction) == ("expanded_username", "expanded_password") + + assert m.update( + { + "access_pair": {"id": "username", "secret_variable": "_SPACK_TEST_PAIR_PASSWORD"}, + "access_token_variable": "_SPACK_TEST_TOKEN", + }, + direction, + ) + + assert m.to_dict() == { + "url": "https://example.com", + direction: { + "url": "http://example.org", + "access_pair": {"id": "username", "secret_variable": "_SPACK_TEST_PAIR_PASSWORD"}, + "access_token_variable": "_SPACK_TEST_TOKEN", + "profile": "profile", + "endpoint_url": "https://example.com", + }, + } + + assert m.get_access_pair(direction) == ("username", "expanded_password") + assert m.get_access_token(direction) == "expanded_token" + + +def test_mirror_name_or_url_dir_parsing(tmp_path): + curdir = tmp_path / "mirror" + curdir.mkdir() + + with working_dir(curdir): + assert mirror_name_or_url(".").fetch_url == curdir.as_uri() + assert mirror_name_or_url("..").fetch_url == tmp_path.as_uri() diff --git a/lib/spack/spack/test/modules/tcl.py b/lib/spack/spack/test/modules/tcl.py index 6e0fd5c1a5450e..d2a8b18b67aa85 100644 --- a/lib/spack/spack/test/modules/tcl.py +++ b/lib/spack/spack/test/modules/tcl.py @@ -377,6 +377,14 @@ def test_suffixes(self, module_configuration, factory): writer, spec = factory("mpileaks~debug+opt target=x86_64") assert "baz-foo-bar" in writer.layout.use_name + def test_suffixes_format(self, module_configuration, factory): + """Tests adding suffixes as spec format string to module file name.""" + module_configuration("suffix-format") + + writer, spec = factory("mpileaks +debug target=x86_64 ^mpich@3.0.4") + assert "debug=True" in writer.layout.use_name + assert "mpi=mpich-v3.0.4" in writer.layout.use_name + def test_setup_environment(self, modulefile_content, module_configuration): """Tests the internal set-up of run-time environment.""" diff --git a/lib/spack/spack/test/package_class.py b/lib/spack/spack/test/package_class.py index 76ace98049c1f7..a8c541930bd254 100644 --- a/lib/spack/spack/test/package_class.py +++ b/lib/spack/spack/test/package_class.py @@ -18,7 +18,6 @@ import llnl.util.filesystem as fs import spack.compilers -import spack.config import spack.deptypes as dt import spack.error import spack.install_test diff --git a/lib/spack/spack/test/spec_dag.py b/lib/spack/spack/test/spec_dag.py index 0d1fe4abcfccfb..05cc15f3dabbb8 100644 --- a/lib/spack/spack/test/spec_dag.py +++ b/lib/spack/spack/test/spec_dag.py @@ -756,6 +756,48 @@ def test_spec_tree_respect_deptypes(self): out = s.tree(deptypes=("link", "run")) assert "version-test-pkg" not in out + @pytest.mark.parametrize( + "query,expected_length,expected_satisfies", + [ + ({"virtuals": ["mpi"]}, 1, ["mpich", "mpi"]), + ({"depflag": dt.BUILD}, 2, ["mpich", "mpi", "callpath"]), + ({"depflag": dt.BUILD, "virtuals": ["mpi"]}, 1, ["mpich", "mpi"]), + ({"depflag": dt.LINK}, 2, ["mpich", "mpi", "callpath"]), + ({"depflag": dt.BUILD | dt.LINK}, 2, ["mpich", "mpi", "callpath"]), + ({"virtuals": ["lapack"]}, 0, []), + ], + ) + def test_query_dependency_edges( + self, default_mock_concretization, query, expected_length, expected_satisfies + ): + """Tests querying edges to dependencies on the following DAG: + + [ ] mpileaks@=2.3 + [bl ] ^callpath@=1.0 + [bl ] ^dyninst@=8.2 + [bl ] ^libdwarf@=20130729 + [bl ] ^libelf@=0.8.13 + [bl ] ^mpich@=3.0.4 + """ + mpileaks = default_mock_concretization("mpileaks") + edges = mpileaks.edges_to_dependencies(**query) + assert len(edges) == expected_length + for constraint in expected_satisfies: + assert any(x.spec.satisfies(constraint) for x in edges) + + def test_query_dependents_edges(self, default_mock_concretization): + """Tests querying edges from dependents""" + mpileaks = default_mock_concretization("mpileaks") + mpich = mpileaks["mpich"] + + # Recover the root with 2 different queries + edges_of_link_type = mpich.edges_from_dependents(depflag=dt.LINK) + edges_with_mpi = mpich.edges_from_dependents(virtuals=["mpi"]) + assert edges_with_mpi == edges_of_link_type + + # Check a node dependend upon by 2 parents + assert len(mpileaks["libelf"].edges_from_dependents(depflag=dt.LINK)) == 2 + def test_tree_cover_nodes_reduce_deptype(): """Test that tree output with deptypes sticks to the sub-dag of interest, instead of looking diff --git a/lib/spack/spack/test/spec_semantics.py b/lib/spack/spack/test/spec_semantics.py index a821c53f2fb934..9f94d11a08a37a 100644 --- a/lib/spack/spack/test/spec_semantics.py +++ b/lib/spack/spack/test/spec_semantics.py @@ -231,7 +231,7 @@ class TestSpecSemantics: ("mpich+foo", "mpich foo=True", "mpich+foo"), ("mpich++foo", "mpich foo=True", "mpich+foo"), ("mpich foo=true", "mpich+foo", "mpich+foo"), - ("mpich foo==true", "mpich++foo", "mpich+foo"), + ("mpich foo==true", "mpich++foo", "mpich++foo"), ("mpich~foo", "mpich foo=FALSE", "mpich~foo"), ("mpich~~foo", "mpich foo=FALSE", "mpich~foo"), ("mpich foo=False", "mpich~foo", "mpich~foo"), @@ -271,17 +271,17 @@ class TestSpecSemantics: ("mpich+foo", "mpich", "mpich+foo"), ("mpich~foo", "mpich", "mpich~foo"), ("mpich foo=1", "mpich", "mpich foo=1"), - ("mpich", "mpich++foo", "mpich+foo"), + ("mpich", "mpich++foo", "mpich++foo"), ("libelf+debug", "libelf+foo", "libelf+debug+foo"), ("libelf+debug", "libelf+debug+foo", "libelf+debug+foo"), ("libelf debug=2", "libelf foo=1", "libelf debug=2 foo=1"), ("libelf debug=2", "libelf debug=2 foo=1", "libelf debug=2 foo=1"), ("libelf+debug", "libelf~foo", "libelf+debug~foo"), ("libelf+debug", "libelf+debug~foo", "libelf+debug~foo"), - ("libelf++debug", "libelf+debug+foo", "libelf++debug++foo"), - ("libelf debug==2", "libelf foo=1", "libelf debug==2 foo==1"), - ("libelf debug==2", "libelf debug=2 foo=1", "libelf debug==2 foo==1"), - ("libelf++debug", "libelf++debug~foo", "libelf++debug~~foo"), + ("libelf++debug", "libelf+debug+foo", "libelf+debug+foo"), + ("libelf debug==2", "libelf foo=1", "libelf debug==2 foo=1"), + ("libelf debug==2", "libelf debug=2 foo=1", "libelf debug=2 foo=1"), + ("libelf++debug", "libelf++debug~foo", "libelf++debug~foo"), ("libelf foo=bar,baz", "libelf foo=*", "libelf foo=bar,baz"), ("libelf foo=*", "libelf foo=bar,baz", "libelf foo=bar,baz"), ( @@ -367,19 +367,24 @@ def test_abstract_specs_can_constrain_each_other(self, lhs, rhs, expected): 'mpich cflags="-O3 -g"', 'mpich cflags=="-O3"', 'mpich cflags="-O3 -g"', + 'mpich cflags="-O3 -g"', + [], + [], + ), + ( 'mpich cflags=="-O3 -g"', - [("cflags", "-O3")], - [("cflags", "-O3")], + 'mpich cflags=="-O3"', + 'mpich cflags=="-O3 -g"', + 'mpich cflags=="-O3 -g"', + [("cflags", "-O3"), ("cflags", "-g")], + [("cflags", "-O3"), ("cflags", "-g")], ), ], ) def test_constrain_compiler_flags( self, lhs, rhs, expected_lhs, expected_rhs, propagated_lhs, propagated_rhs ): - """Constraining is asymmetric for compiler flags. Also note that - Spec equality does not account for flag propagation, so the checks - here are manual. - """ + """Constraining is asymmetric for compiler flags.""" lhs, rhs, expected_lhs, expected_rhs = ( Spec(lhs), Spec(rhs), @@ -507,9 +512,6 @@ def test_constraining_abstract_specs_with_empty_intersection(self, lhs, rhs): ("mpich", "mpich +foo"), ("mpich", "mpich~foo"), ("mpich", "mpich foo=1"), - ("mpich", "mpich++foo"), - ("mpich", "mpich~~foo"), - ("mpich", "mpich foo==1"), ("multivalue-variant foo=bar", "multivalue-variant +foo"), ("multivalue-variant foo=bar", "multivalue-variant ~foo"), ("multivalue-variant fee=bar", "multivalue-variant fee=baz"), @@ -531,6 +533,58 @@ def test_concrete_specs_which_do_not_satisfy_abstract( with pytest.raises(UnsatisfiableSpecError): assert rhs.constrain(lhs) + @pytest.mark.parametrize( + "lhs,rhs", [("mpich", "mpich++foo"), ("mpich", "mpich~~foo"), ("mpich", "mpich foo==1")] + ) + def test_concrete_specs_which_satisfy_abstract(self, lhs, rhs, default_mock_concretization): + lhs, rhs = default_mock_concretization(lhs), Spec(rhs) + + assert lhs.intersects(rhs) + assert rhs.intersects(lhs) + assert lhs.satisfies(rhs) + + s1 = lhs.copy() + s1.constrain(rhs) + assert s1 == lhs and s1.satisfies(lhs) + + s2 = rhs.copy() + s2.constrain(lhs) + assert s2 == lhs and s2.satisfies(lhs) + + @pytest.mark.parametrize( + "lhs,rhs,expected,constrained", + [ + # hdf5++mpi satisfies hdf5, and vice versa, because of the non-contradiction semantic + ("hdf5++mpi", "hdf5", True, "hdf5++mpi"), + ("hdf5", "hdf5++mpi", True, "hdf5++mpi"), + # Same holds true for arbitrary propagated variants + ("hdf5++mpi", "hdf5++shared", True, "hdf5++mpi++shared"), + # Here hdf5+mpi satisfies hdf5++mpi but not vice versa + ("hdf5++mpi", "hdf5+mpi", False, "hdf5+mpi"), + ("hdf5+mpi", "hdf5++mpi", True, "hdf5+mpi"), + # Non contradiction is violated + ("hdf5 ^foo~mpi", "hdf5++mpi", False, "hdf5++mpi ^foo~mpi"), + ("hdf5++mpi", "hdf5 ^foo~mpi", False, "hdf5++mpi ^foo~mpi"), + ], + ) + def test_abstract_specs_with_propagation(self, lhs, rhs, expected, constrained): + """Tests (and documents) behavior of variant propagation on abstract specs. + + Propagated variants do not comply with subset semantic, making it difficult to give + precise definitions. Here we document the behavior that has been decided for the + practical cases we face. + """ + lhs, rhs, constrained = Spec(lhs), Spec(rhs), Spec(constrained) + assert lhs.satisfies(rhs) is expected + + c = lhs.copy() + c.constrain(rhs) + assert c == constrained + + c = rhs.copy() + c.constrain(lhs) + assert c == constrained + def test_satisfies_single_valued_variant(self): """Tests that the case reported in https://github.com/spack/spack/pull/2386#issuecomment-282147639 @@ -1709,8 +1763,8 @@ def test_package_hash_affects_dunder_and_dag_hash(mock_packages, default_mock_co assert a1.dag_hash() == a2.dag_hash() assert a1.process_hash() == a2.process_hash() - a1.clear_cached_hashes() - a2.clear_cached_hashes() + a1.clear_caches() + a2.clear_caches() # tweak the dag hash of one of these specs new_hash = "00000000000000000000000000000000" @@ -1904,3 +1958,24 @@ def test_old_format_strings_trigger_error(default_mock_concretization): s = Spec("pkg-a").concretized() with pytest.raises(SpecFormatStringError): s.format("${PACKAGE}-${VERSION}-${HASH}") + + +@pytest.mark.regression("47362") +@pytest.mark.parametrize( + "lhs,rhs", + [ + ("hdf5 +mpi", "hdf5++mpi"), + ("hdf5 cflags==-g", "hdf5 cflags=-g"), + ("hdf5 +mpi ++shared", "hdf5+mpi +shared"), + ("hdf5 +mpi cflags==-g", "hdf5++mpi cflag=-g"), + ], +) +def test_equality_discriminate_on_propagation(lhs, rhs): + """Tests that == can discriminate abstract specs based on their 'propagation' status""" + s, t = Spec(lhs), Spec(rhs) + assert s != t + assert len({s, t}) == 2 + + +def test_comparison_multivalued_variants(): + assert Spec("x=a") < Spec("x=a,b") < Spec("x==a,b") < Spec("x==a,b,c") diff --git a/lib/spack/spack/test/spec_yaml.py b/lib/spack/spack/test/spec_yaml.py index 5b64822b38268a..79f128e94833cd 100644 --- a/lib/spack/spack/test/spec_yaml.py +++ b/lib/spack/spack/test/spec_yaml.py @@ -16,6 +16,7 @@ import io import json import os +import pickle import pytest import ruamel.yaml @@ -551,3 +552,26 @@ def test_anchorify_2(): e: *id002 """ ) + + +@pytest.mark.parametrize( + "spec_str", + [ + "hdf5 ++mpi", + "hdf5 cflags==-g", + "hdf5 foo==bar", + "hdf5~~mpi++shared", + "hdf5 cflags==-g foo==bar cxxflags==-O3", + "hdf5 cflags=-g foo==bar cxxflags==-O3", + ], +) +def test_pickle_roundtrip_for_abstract_specs(spec_str): + """Tests that abstract specs correctly round trip when pickled. + + This test compares both spec objects and their string representation, due to some + inconsistencies in how `Spec.__eq__` is implemented. + """ + s = spack.spec.Spec(spec_str) + t = pickle.loads(pickle.dumps(s)) + assert s == t + assert str(s) == str(t) diff --git a/lib/spack/spack/test/test_suite.py b/lib/spack/spack/test/test_suite.py index 60a54e7171bba2..3ed4e30d42c740 100644 --- a/lib/spack/spack/test/test_suite.py +++ b/lib/spack/spack/test/test_suite.py @@ -501,18 +501,20 @@ def test_find_required_file(tmpdir): # First just find a single path results = spack.install_test.find_required_file( - tmpdir.join("c"), filename, expected=1, recursive=True + str(tmpdir.join("c")), filename, expected=1, recursive=True ) assert isinstance(results, str) # Ensure none file if do not recursively search that directory with pytest.raises(spack.install_test.SkipTest, match="Expected 1"): spack.install_test.find_required_file( - tmpdir.join("c"), filename, expected=1, recursive=False + str(tmpdir.join("c")), filename, expected=1, recursive=False ) # Now make sure we get all of the files - results = spack.install_test.find_required_file(tmpdir, filename, expected=3, recursive=True) + results = spack.install_test.find_required_file( + str(tmpdir), filename, expected=3, recursive=True + ) assert isinstance(results, list) and len(results) == 3 diff --git a/lib/spack/spack/test/util/file_cache.py b/lib/spack/spack/test/util/file_cache.py index cd9ce1c5b8defb..4af8a1ed0391d2 100644 --- a/lib/spack/spack/test/util/file_cache.py +++ b/lib/spack/spack/test/util/file_cache.py @@ -31,6 +31,11 @@ def test_write_and_read_cache_file(file_cache): assert text == "foobar\n" +def test_read_before_init(file_cache): + with file_cache.read_transaction("test.yaml") as stream: + assert stream is None + + @pytest.mark.not_on_windows("Locks not supported on Windows") def test_failed_write_and_read_cache_file(file_cache): """Test failing to write then attempting to read a cached file.""" @@ -46,11 +51,6 @@ def test_failed_write_and_read_cache_file(file_cache): # File does not exist assert not file_cache.init_entry("test.yaml") - # Attempting to read will cause a FileNotFoundError - with pytest.raises(FileNotFoundError, match=r"test\.yaml"): - with file_cache.read_transaction("test.yaml"): - pass - def test_write_and_remove_cache_file(file_cache): """Test two write transactions on a cached file. Then try to remove an diff --git a/lib/spack/spack/test/utilities.py b/lib/spack/spack/test/utilities.py new file mode 100644 index 00000000000000..5e83db9da27939 --- /dev/null +++ b/lib/spack/spack/test/utilities.py @@ -0,0 +1,32 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +"""Non-fixture utilities for test code. Must be imported. +""" +from spack.main import make_argument_parser + + +class SpackCommandArgs: + """Use this to get an Args object like what is passed into + a command. + + Useful for emulating args in unit tests that want to check + helper functions in Spack commands. Ensures that you get all + the default arg values established by the parser. + + Example usage:: + + install_args = SpackCommandArgs("install")("-v", "mpich") + """ + + def __init__(self, command_name): + self.parser = make_argument_parser() + self.command_name = command_name + + def __call__(self, *argv, **kwargs): + self.parser.add_command(self.command_name) + prepend = kwargs["global_args"] if "global_args" in kwargs else [] + args, unknown = self.parser.parse_known_args(prepend + [self.command_name] + list(argv)) + return args diff --git a/lib/spack/spack/test/variant.py b/lib/spack/spack/test/variant.py index c4c439b86f8991..518110d52534d0 100644 --- a/lib/spack/spack/test/variant.py +++ b/lib/spack/spack/test/variant.py @@ -762,7 +762,7 @@ def test_disjoint_set_fluent_methods(): @pytest.mark.regression("32694") @pytest.mark.parametrize("other", [True, False]) def test_conditional_value_comparable_to_bool(other): - value = spack.variant.Value("98", when="@1.0") + value = spack.variant.ConditionalValue("98", when=Spec("@1.0")) comparison = value == other assert comparison is False diff --git a/lib/spack/spack/util/file_cache.py b/lib/spack/spack/util/file_cache.py index bc75704d757870..e72d431f978657 100644 --- a/lib/spack/spack/util/file_cache.py +++ b/lib/spack/spack/util/file_cache.py @@ -7,6 +7,7 @@ import math import os import shutil +from typing import IO, Optional, Tuple from llnl.util.filesystem import mkdirp, rename @@ -14,6 +15,51 @@ from spack.util.lock import Lock, ReadTransaction, WriteTransaction +def _maybe_open(path: str) -> Optional[IO[str]]: + try: + return open(path, "r") + except OSError as e: + if e.errno != errno.ENOENT: + raise + return None + + +class ReadContextManager: + def __init__(self, path: str) -> None: + self.path = path + + def __enter__(self) -> Optional[IO[str]]: + """Return a file object for the cache if it exists.""" + self.cache_file = _maybe_open(self.path) + return self.cache_file + + def __exit__(self, type, value, traceback): + if self.cache_file: + self.cache_file.close() + + +class WriteContextManager: + def __init__(self, path: str) -> None: + self.path = path + self.tmp_path = f"{self.path}.tmp" + + def __enter__(self) -> Tuple[Optional[IO[str]], IO[str]]: + """Return (old_file, new_file) file objects, where old_file is optional.""" + self.old_file = _maybe_open(self.path) + self.new_file = open(self.tmp_path, "w") + return self.old_file, self.new_file + + def __exit__(self, type, value, traceback): + if self.old_file: + self.old_file.close() + self.new_file.close() + + if value: + os.remove(self.tmp_path) + else: + rename(self.tmp_path, self.path) + + class FileCache: """This class manages cached data in the filesystem. @@ -107,7 +153,8 @@ def read_transaction(self, key): cache_file.read() """ - return ReadTransaction(self._get_lock(key), acquire=lambda: open(self.cache_path(key))) + path = self.cache_path(key) + return ReadTransaction(self._get_lock(key), acquire=lambda: ReadContextManager(path)) def write_transaction(self, key): """Get a write transaction on a file cache item. @@ -117,40 +164,11 @@ def write_transaction(self, key): moves the file into place on top of the old file atomically. """ - filename = self.cache_path(key) - if os.path.exists(filename) and not os.access(filename, os.W_OK): - raise CacheError( - "Insufficient permissions to write to file cache at {0}".format(filename) - ) - - # TODO: this nested context manager adds a lot of complexity and - # TODO: is pretty hard to reason about in llnl.util.lock. At some - # TODO: point we should just replace it with functions and simplify - # TODO: the locking code. - class WriteContextManager: - def __enter__(cm): - cm.orig_filename = self.cache_path(key) - cm.orig_file = None - if os.path.exists(cm.orig_filename): - cm.orig_file = open(cm.orig_filename, "r") - - cm.tmp_filename = self.cache_path(key) + ".tmp" - cm.tmp_file = open(cm.tmp_filename, "w") - - return cm.orig_file, cm.tmp_file - - def __exit__(cm, type, value, traceback): - if cm.orig_file: - cm.orig_file.close() - cm.tmp_file.close() - - if value: - os.remove(cm.tmp_filename) - - else: - rename(cm.tmp_filename, cm.orig_filename) - - return WriteTransaction(self._get_lock(key), acquire=WriteContextManager) + path = self.cache_path(key) + if os.path.exists(path) and not os.access(path, os.W_OK): + raise CacheError(f"Insufficient permissions to write to file cache at {path}") + + return WriteTransaction(self._get_lock(key), acquire=lambda: WriteContextManager(path)) def mtime(self, key) -> float: """Return modification time of cache file, or -inf if it does not exist. diff --git a/lib/spack/spack/util/libc.py b/lib/spack/spack/util/libc.py index 55e8e3d26b6e48..d842cd102212d8 100644 --- a/lib/spack/spack/util/libc.py +++ b/lib/spack/spack/util/libc.py @@ -9,20 +9,32 @@ import shlex import sys from subprocess import PIPE, run -from typing import List, Optional +from typing import Dict, List, Optional + +from llnl.util.lang import memoized import spack.spec import spack.util.elf +#: Pattern to distinguish glibc from other libc implementations +GLIBC_PATTERN = r"\b(?:Free Software Foundation|Roland McGrath|Ulrich Depper)\b" + + +def _env() -> Dict[str, str]: + """Currently only set LC_ALL=C without clearing further environment variables""" + return {**os.environ, "LC_ALL": "C"} + def _libc_from_ldd(ldd: str) -> Optional["spack.spec.Spec"]: try: - result = run([ldd, "--version"], stdout=PIPE, stderr=PIPE, check=False) + result = run([ldd, "--version"], stdout=PIPE, stderr=PIPE, check=False, env=_env()) stdout = result.stdout.decode("utf-8") except Exception: return None - if not re.search(r"\bFree Software Foundation\b", stdout): + # The string "Free Software Foundation" is sometimes translated and not detected, but the names + # of the authors are typically present. + if not re.search(GLIBC_PATTERN, stdout): return None version_str = re.match(r".+\(.+\) (.+)", stdout) @@ -38,7 +50,7 @@ def default_search_paths_from_dynamic_linker(dynamic_linker: str) -> List[str]: """If the dynamic linker is glibc at a certain version, we can query the hard-coded library search paths""" try: - result = run([dynamic_linker, "--help"], stdout=PIPE, stderr=PIPE, check=False) + result = run([dynamic_linker, "--help"], stdout=PIPE, stderr=PIPE, check=False, env=_env()) assert result.returncode == 0 out = result.stdout.decode("utf-8") except Exception: @@ -51,6 +63,14 @@ def default_search_paths_from_dynamic_linker(dynamic_linker: str) -> List[str]: def libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"]: + maybe_spec = _libc_from_dynamic_linker(dynamic_linker) + if maybe_spec: + return maybe_spec.copy() + return None + + +@memoized +def _libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"]: if not os.path.exists(dynamic_linker): return None @@ -74,7 +94,9 @@ def libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"] # Now try to figure out if glibc or musl, which is the only ones we support. # In recent glibc we can simply execute the dynamic loader. In musl that's always the case. try: - result = run([dynamic_linker, "--version"], stdout=PIPE, stderr=PIPE, check=False) + result = run( + [dynamic_linker, "--version"], stdout=PIPE, stderr=PIPE, check=False, env=_env() + ) stdout = result.stdout.decode("utf-8") stderr = result.stderr.decode("utf-8") except Exception: @@ -91,7 +113,7 @@ def libc_from_dynamic_linker(dynamic_linker: str) -> Optional["spack.spec.Spec"] return spec except Exception: return None - elif re.search(r"\bFree Software Foundation\b", stdout): + elif re.search(GLIBC_PATTERN, stdout): # output is like "ld.so (...) stable release version 2.33." match = re.search(r"version (\d+\.\d+(?:\.\d+)?)", stdout) if not match: diff --git a/lib/spack/spack/util/path.py b/lib/spack/spack/util/path.py index 56dcd2d0e38ee8..5e7fa3a797b995 100644 --- a/lib/spack/spack/util/path.py +++ b/lib/spack/spack/util/path.py @@ -74,6 +74,7 @@ def replacements(): "target_family": lambda: arch.target.family, "date": lambda: date.today().strftime("%Y-%m-%d"), "env": lambda: ev.active_environment().path if ev.active_environment() else NOMATCH, + "spack_short_version": lambda: spack.get_short_version(), } @@ -154,19 +155,20 @@ def substitute_config_variables(path): Spack allows paths in configs to have some placeholders, as follows: - - $env The active Spack environment. - - $spack The Spack instance's prefix - - $tempdir Default temporary directory returned by tempfile.gettempdir() - - $user The current user's username - - $user_cache_path The user cache directory (~/.spack, unless overridden) - - $architecture The spack architecture triple for the current system - - $arch The spack architecture triple for the current system - - $platform The spack platform for the current system - - $os The OS of the current system - - $operating_system The OS of the current system - - $target The ISA target detected for the system - - $target_family The family of the target detected for the system - - $date The current date (YYYY-MM-DD) + - $env The active Spack environment. + - $spack The Spack instance's prefix + - $tempdir Default temporary directory returned by tempfile.gettempdir() + - $user The current user's username + - $user_cache_path The user cache directory (~/.spack, unless overridden) + - $architecture The spack architecture triple for the current system + - $arch The spack architecture triple for the current system + - $platform The spack platform for the current system + - $os The OS of the current system + - $operating_system The OS of the current system + - $target The ISA target detected for the system + - $target_family The family of the target detected for the system + - $date The current date (YYYY-MM-DD) + - $spack_short_version The spack short version These are substituted case-insensitively into the path, and users can use either ``$var`` or ``${var}`` syntax for the variables. $env is only diff --git a/lib/spack/spack/util/s3.py b/lib/spack/spack/util/s3.py index 5457abdca58453..700db07135704c 100644 --- a/lib/spack/spack/util/s3.py +++ b/lib/spack/spack/util/s3.py @@ -94,20 +94,17 @@ def get_mirror_s3_connection_info(mirror, method): # access token if isinstance(mirror, Mirror): - access_token = mirror.get_access_token(method) - if access_token: - s3_connection["aws_session_token"] = access_token - - # access pair - access_pair = mirror.get_access_pair(method) - if access_pair and access_pair[0] and access_pair[1]: - s3_connection["aws_access_key_id"] = access_pair[0] - s3_connection["aws_secret_access_key"] = access_pair[1] - - # profile - profile = mirror.get_profile(method) - if profile: - s3_connection["profile_name"] = profile + credentials = mirror.get_credentials(method) + if credentials: + if "access_token" in credentials: + s3_connection["aws_session_token"] = credentials["access_token"] + + if "access_pair" in credentials: + s3_connection["aws_access_key_id"] = credentials["access_pair"][0] + s3_connection["aws_secret_access_key"] = credentials["access_pair"][1] + + if "profile" in credentials: + s3_connection["profile_name"] = credentials["profile"] # endpoint url endpoint_url = mirror.get_endpoint_url(method) or os.environ.get("S3_ENDPOINT_URL") diff --git a/lib/spack/spack/variant.py b/lib/spack/spack/variant.py index 0756841a638135..0dc82b2ff7b381 100644 --- a/lib/spack/spack/variant.py +++ b/lib/spack/spack/variant.py @@ -251,7 +251,7 @@ def implicit_variant_conversion(method): def convert(self, other): # We don't care if types are different as long as I can convert other to type(self) try: - other = type(self)(other.name, other._original_value) + other = type(self)(other.name, other._original_value, propagate=other.propagate) except (error.SpecError, ValueError): return False return method(self, other) @@ -266,7 +266,7 @@ def _flatten(values) -> Collection: flattened: List = [] for item in values: - if isinstance(item, _ConditionalVariantValues): + if isinstance(item, ConditionalVariantValues): flattened.extend(item) else: flattened.append(item) @@ -307,19 +307,21 @@ def __init__(self, name: str, value: Any, propagate: bool = False): self.value = value @staticmethod - def from_node_dict(name: str, value: Union[str, List[str]]) -> "AbstractVariant": + def from_node_dict( + name: str, value: Union[str, List[str]], *, propagate: bool = False + ) -> "AbstractVariant": """Reconstruct a variant from a node dict.""" if isinstance(value, list): # read multi-value variants in and be faithful to the YAML - mvar = MultiValuedVariant(name, ()) + mvar = MultiValuedVariant(name, (), propagate=propagate) mvar._value = tuple(value) mvar._original_value = mvar._value return mvar elif str(value).upper() == "TRUE" or str(value).upper() == "FALSE": - return BoolValuedVariant(name, value) + return BoolValuedVariant(name, value, propagate=propagate) - return SingleValuedVariant(name, value) + return SingleValuedVariant(name, value, propagate=propagate) def yaml_entry(self) -> Tuple[str, SerializedValueType]: """Returns a key, value tuple suitable to be an entry in a yaml dict. @@ -376,6 +378,7 @@ def _value_setter(self, value: ValueType) -> None: def _cmp_iter(self) -> Iterable: yield self.name + yield self.propagate yield from (str(v) for v in self.value_as_tuple) def copy(self) -> "AbstractVariant": @@ -451,6 +454,7 @@ def constrain(self, other: "AbstractVariant") -> bool: values.remove("*") self._value_setter(",".join(str(v) for v in values)) + self.propagate = self.propagate and other.propagate return old_value != self.value def __contains__(self, item: Union[str, bool]) -> bool: @@ -555,6 +559,7 @@ def constrain(self, other: "AbstractVariant") -> bool: if self.value != other.value: raise UnsatisfiableVariantSpecError(other.value, self.value) + self.propagate = self.propagate and other.propagate return False def __contains__(self, item: ValueType) -> bool: @@ -770,18 +775,21 @@ def disjoint_sets(*sets): @functools.total_ordering -class Value: - """Conditional value that might be used in variants.""" +class ConditionalValue: + """Conditional value for a variant.""" value: Any - when: Optional["spack.spec.Spec"] # optional b/c we need to know about disabled values + + # optional because statically disabled values (when=False) are set to None + # when=True results in spack.spec.Spec() + when: Optional["spack.spec.Spec"] def __init__(self, value: Any, when: Optional["spack.spec.Spec"]): self.value = value self.when = when def __repr__(self): - return f"Value({self.value}, when={self.when})" + return f"ConditionalValue({self.value}, when={self.when})" def __str__(self): return str(self.value) @@ -825,7 +833,7 @@ def prevalidate_variant_value( only if the variant is a reserved variant. """ # don't validate wildcards or variants with reserved names - if variant.value == ("*",) or variant.name in reserved_names: + if variant.value == ("*",) or variant.name in reserved_names or variant.propagate: return [] # raise if there is no definition at all @@ -879,17 +887,10 @@ def prevalidate_variant_value( ) -class _ConditionalVariantValues(lang.TypedMutableSequence): +class ConditionalVariantValues(lang.TypedMutableSequence): """A list, just with a different type""" -def conditional(*values: List[Any], when: Optional["spack.directives.WhenType"] = None): - """Conditional values that can be used in variant declarations.""" - # _make_when_spec returns None when the condition is statically false. - when = spack.directives._make_when_spec(when) - return _ConditionalVariantValues([Value(x, when=when) for x in values]) - - class DuplicateVariantError(error.SpecError): """Raised when the same variant occurs in a spec twice.""" diff --git a/share/spack/bootstrap/github-actions-v0.4/clingo.json b/share/spack/bootstrap/github-actions-v0.4/clingo.json deleted file mode 100644 index 1fa83eef1c02f4..00000000000000 --- a/share/spack/bootstrap/github-actions-v0.4/clingo.json +++ /dev/null @@ -1,334 +0,0 @@ -{ - "verified": [ - { - "binaries": [ - [ - "clingo-bootstrap", - "fk6k6buvgbwhwtigvpvi3266gllv7z2o", - "003eb7b2c62debc0bac4a7f3a3933d6a955520199b37e00c8c0761036d8dc63a" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "2ezozohyngzmq74eeclsjupcawg6slse", - "bf3c559d655d5f04a2b080c640996086db2bb6bbf49f4139eed225a77b574923" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "okjsfmgareef7laq432tdtgyu7bshmv2", - "7beed9fe21b52df6b56d8242b79becab7ed953af16612d6e09c595ef39591ac3" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "cv7nf5ti72ywciapdy6mn7cemqv766zy", - "6af9e548044e4849794ee85008c8b19539b63857510c6fff544de7ccb6e53ee8" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ing4swsz5bj7guqffc277zitcky4uhu4", - "4d9008372c73797fc0bd47c92c922f810e1b3fd44dc373682a7a0780b711058c" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "p2cyqcsow6k6prfryoqb7usv27hhofuq", - "5e4fd1fc552d815ce8db8b8917d9089c7782a92269754f8ca5d4f01a9406244d" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "5bfjmclf6sktj4drclxe7rdwdthlkxw3", - "b811e62f82b564e9cd5e12fc3cdb19b3d4e5f2bdb98985e1bbe3d1bbd5dd3d5c" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "bwmaj7wyyiivvkq5j72mholmhmytb2fl", - "468da2198479514bbbf66f4268716bce38cace1004a612bc669d21d97c596f85" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ewhsk7bcohduujp5t7hljb5uk2mfbk7k", - "919cbfc82bbb08da207e22bec4d8047c34042b90d58b9c6b438b5dcef0046e39" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "263aqtzhrgzmzgpfekda7uk6wdqez76j", - "b9e579ee2a848f7287a8b625459ac5b8ce19e9e6858a86b53effaa4ae712d1b6" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "yqqiddbmi2pyxgu757qfvts6hlt6525q", - "254ab94d48543472ad8a32f598dc869c49051a0b890951d7de8425c7549caa26" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "plv3woz7rwmixdo42ew27imtqqjqnnv5", - "ec494e7043433fac6f8f404e023eea397197ff0928bf1c3f3cc0bc62d549334c" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "domcqyr4qx2yl3433l5dycnehastl7zc", - "fbfc1fc14f27bbabe36a438dd70515067dbd7e0873bc748b9f34d576d5400cb4" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "b5m7ectjiuucgaoyry24hhop44edjvg7", - "5412e2b3f45d251acd976c12d238549e0c324e6481bf328f9547fafc0e810daf" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "h2uxdiwlbvrfsz5mlt2s2xvnefbuk7qx", - "4cf26cd903fe0034522e1d8a712ab7a6ae936961c1c010473ff15566665cef6b" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "4ksotxknsesu4mv2bio5ndtilo423cpy", - "9281ca638e2ec5c0b6d3ae050827a1c3696251a6274e96f3a8a89a1fdf7f0ba2" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ho7jg4bl7degmnnnj6x6fatbcno37kqo", - "0e78a555839fbd3752473ed80c76be9007b6ce3f152fa69d8014b172e339b92f" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "oztu77xbgiige4pp2epmbqrmxt4vwnla", - "5271b271a2f6ae26838614477b2b8e5f230bceda7e0eb63f2cc36b18da3ba53d" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "33qaxq2adjrlv6ttxbu6bmueundhns2w", - "5fa731b84e354b8108ac4b7205d40e8c1a74cb2dfd590dd2d648d744a8556a1d" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "vwhszkap6e2zbzb74ywgyggflkmtavwz", - "09eed0c9b98681173f512385675f44d070cb5ebc3e08aac659a12ea1ec41d05a" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "3pst4dqux2clmm3mpjj4jkowv3s2ixv6", - "f9d9ade557ed426f55308dd14b43c59e1b51b8f40c9847d00994a3a89182a846" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "6wk7qj2hdglt2sjtec4mv7ibsvhw53ge", - "e06a3190e60b1d0c4d4b8f01b7a2ade9d2d3d8fdaf84757cc9741e81a5ad59a3" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "k2kch7a6j7ilikuklhyffkqhdqb46yt5", - "2547727ce0b8295594dfa56b711631b8ab221a19c4cbd19341539b929693b0cb" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ivzizagt74uqxrp2mri5lbqiqkhab77p", - "2ddd5daeeabfc3b2a211f7efb3cc700991c5817b08b19c2d315084198f7d2bc8" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "idkenmhnscjlu5gjqhpcqa4h7o2a7aow", - "44c88094abb239dd33b75c02c24fefe7f4f5646c2371f50a5bfb47b23805760b" - ] - ], - "python": "python@3.10", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "cizcjj3tx4irs3uzoktrgybq73sz545f", - "d8c8d4accece4e10a4339b263ff42f0f0adc77b3fbeea1010b3d7fc48aead5b3" - ] - ], - "python": "python@3.11", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "prqkzynv2nwko5mktitebgkeumuxkveu", - "3059fb60ff3b2dd5b36a46af37972b479fbfad348c30ec2e6b59729d93f07eed" - ] - ], - "python": "python@3.6", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "axtxtavfahxuazw2wueu3tjwwu6ttdfo", - "281cf24d0a8f2372b348bb1a38a9bfd1516063f597ffdecfde6e8e3aa4e2139f" - ] - ], - "python": "python@3.7", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "ba5ijauisd3uuixtmactc36vps7yfsrl", - "ea5960f47f48daeb62e6ebf7d8574ceb4bfccff6e2bae17571b0857bfd7a0bbc" - ] - ], - "python": "python@3.8", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - }, - { - "binaries": [ - [ - "clingo-bootstrap", - "gqcctd2ejbgvyvyt4umqpetfoogfycwu", - "8358d72dd5de00a1b7a7ffb88ba366a01ce9b700245d2940eae7395fec0e6fda" - ] - ], - "python": "python@3.9", - "spec": "clingo-bootstrap%gcc platform=linux target=x86_64" - } - ] -} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.4/gnupg.json b/share/spack/bootstrap/github-actions-v0.4/gnupg.json deleted file mode 100644 index 5237d8729af642..00000000000000 --- a/share/spack/bootstrap/github-actions-v0.4/gnupg.json +++ /dev/null @@ -1,254 +0,0 @@ -{ - "verified": [ - { - "binaries": [ - [ - "zlib", - "azrxnl6yp7xeapfy7nljiopucaelofuh", - "c3f28571947a41d3c9fb0da0b340b51bdef6b9e05a59e6df7c9bc5838bacd81a" - ], - [ - "libiconv", - "id44zneq3nh4grvtekqoefl24okct4ak", - "8cf48050c8d58dc0e1d11c8b3b9d970586e1f62933f8655982f4312d1e4426ea" - ], - [ - "npth", - "lp7fobvpwlk3xugo7th2kmcnrvqqxb3b", - "ec4dda80a2485e0eda5b1ef09e6b8b020283b00ab6252981722979af04ce2ba8" - ], - [ - "libassuan", - "trhqsquxpocecfgkeif5bh2dwgu4njbp", - "33f15821d6e41238de58f2237d3e1be46b657e3337cbe73f87973fe970ab36fd" - ], - [ - "libgcrypt", - "eadvdhou2xjdhf47x3q5x2ypa4qhfqjy", - "f0d1d6b3cef5794933b78df3446ac71bdd0cc79b81a26fc33153ef13819e6b09" - ], - [ - "libgpg-error", - "yg67vozcaac75p3dnhd6c3cjpa5nsfjo", - "fe907bce097dec72a92a1973d73253d9e4ce4bd78ed14f8d6e647dd8e77eef15" - ], - [ - "libksba", - "m7o6qwsu2gxvlka2jbd5puzwj3z553ob", - "69d324a77b550a6c7a201f3f39835df4f14534fcf5fa28628c14039bfdb39dda" - ], - [ - "pinentry", - "6m36xv6ft3yterimp6xoozz66ych5eew", - "0b82a4b52a6bc5e6fd4913f585455ea703e0fa5c85fd9f4bb1eb5819af5084e1" - ], - [ - "gnupg", - "pyrfgqkgltgfk4yljfw2myxn6vqen2j6", - "3c41b0cf2db01ad2675f27d51edb4cf7f798be9ca0e3ac781990ff8b462cd8f6" - ] - ], - "spec": "gnupg@2.3: %apple-clang platform=darwin target=aarch64" - }, - { - "binaries": [ - [ - "libiconv", - "f6om5cmewxrhzpowei3m2g2qnijvlep4", - "ab891ac21bc9cf44723993232ce3fff6fe75d003dfb88077dea630e532db123f" - ], - [ - "npth", - "tvebgs23dhejixfe36dufivhkwnyxh3t", - "95b9852c2e69f18fb8eff3dc6fc2bb9efe38821314cac6c310523da89c8346a2" - ], - [ - "zlib", - "rlzphstv75due7yzcicuu7nfos5zuk2q", - "e5ee87fab6e51b46ab1fb1cedafc4edee380a810947d52e669a185b52636aa37" - ], - [ - "libassuan", - "ow5h7we5zrgoknsvss3yjjs4g3aci4b2", - "44cf47134b4e4cbad30b8f4ef5ac1e7e25ead1d4dc64bd44fe807a4f173977ad" - ], - [ - "libgcrypt", - "nuy3jjihjlktwggpwdrert2q5xoqk4ic", - "ebb85da4d0b4ea93e073b8faf11e4ec955752a589b0ee47cd46b825ef685e536" - ], - [ - "libgpg-error", - "w7xfbrbfdnssbfoxrsz4emt6aildxsfy", - "6973cd597db96830822a8111fe3b3cff271e8cedc26fb0cb48443c2de2cc50ad" - ], - [ - "libksba", - "74h62c57ojgmqqp6xrrrzmzgftmcv22c", - "73afeb0bfdf57623d694ea16b52e1d73bfca61954583d6737f4ab6ab05c92ca8" - ], - [ - "pinentry", - "dv7sj3xesjfhqbrcxorvbzoxzlqpac4e", - "509d6881145a33b7de69db63af84fe887e7c995ffd4e89003a25fafa45b5874b" - ], - [ - "gnupg", - "hrv7rjtbvuxkt4trjdnzovegwutciunv", - "bf39c84047508556e142b9a9808007bbcc9aa80b2b9936a3598530f5acc7c75a" - ] - ], - "spec": "gnupg@2.3: %apple-clang platform=darwin target=x86_64" - }, - { - "binaries": [ - [ - "zlib", - "mrdyh4e34orgypetqhru6romj6wlvyxm", - "ecd344c5dcae7377d8b20f14248a73d1fe350e54364f2f1e70aa4fccf1c219ed" - ], - [ - "libiconv", - "iuparzfnzuwmmhj5ytlhaobn4nz3cct4", - "58ef399a4bd8794a00314440e02de8c685c9c02d1b02a751923ae669556a1a91" - ], - [ - "npth", - "eltd4b6tq4gsnboeidmr7mykezykcho5", - "89b3e0c7f573009d4816b219413a07a9917758836befdfeb6c33a9e87d846b6f" - ], - [ - "libassuan", - "xfaguxawrc6z73draba5fccjxtxjvzmz", - "59ebe715532a2671cde9783aceebb1448062e7adb7307da30b0d6245529d897f" - ], - [ - "libgcrypt", - "ntb2fzwckdgb77eubdcvvj2xm5eilavw", - "92fb1ef0d57c98b16e172c6afbc995dd163f0bac1484eb11eef5305f434a5cd1" - ], - [ - "libgpg-error", - "utzxfplsbueqmj7ksxaykk6tk3xi5dmr", - "74aa95bc48c42eab0a8ca0afab51074811bf79477271123af13398029ac7394f" - ], - [ - "libksba", - "jzxmzebonsgrw5e6ij446azzocvko2vi", - "bfc11401fc94d3f6d3176fa4b95dd866ad355c0b77b9c5787acbfdffe42915b9" - ], - [ - "pinentry", - "wsjzc3l5zgieowd24p2paccrporun5cv", - "db3e475b2113ad9587017a76c9df57fc537d2dd6c5d3323119c30723b5b51330" - ], - [ - "gnupg", - "zigabpppmz5ctktqwdj5ueaxjuvm6syh", - "fd8a681dfa919d8faff256fabafe1f08238cc75c74cbcfc44acce23cf0afb34c" - ] - ], - "spec": "gnupg@2.3: %gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "zlib", - "c4kbhgxjlko6a367d3zl6b5qcm5swiew", - "49747756dea8dd15fc3ea8f73d03b24724fa6b22103f04b557152db59c17f799" - ], - [ - "libiconv", - "5l5cq7de7iwagndyyphpdmvdvp3pepe6", - "a46d2a89cab00d8196e6226f3831bc3ff8b7f728844d6d29013cc8999d7b7f78" - ], - [ - "npth", - "b6ifa47mma7n7mxl36yg73uwjqezbde5", - "1b16e28e692ca91a096da4976f7df451df5e3ea9aa2f03cc2d39f62646a9399b" - ], - [ - "libassuan", - "phds2cjgeo3sbluuvdj6ebdkuom6un6p", - "482bf3a4975e21e03b7d34ff69031071a2822fb182774421f648ed7ccc99f24d" - ], - [ - "libgcrypt", - "7hgqgoekgh4jiml2u55rg2zec3ouyq7z", - "edfa277010de9f060bbcb11c2011dd66fb6e714c28a189d7cd7ef2d825e85180" - ], - [ - "libgpg-error", - "th2tzwwoz7ddrygkjrxzzv4yvznxglmx", - "e7c645287270ae2ac08ff5d400bf44b2e79203e752c3ff32aed07200638a6fe0" - ], - [ - "libksba", - "ex5gt36shiwt54jg7mbgxysnwu7jjy6a", - "8cf350544821bfec19e2b52a47896ca9258fc56680e4bb0d12715416169ead4a" - ], - [ - "pinentry", - "aowc7abd6kvohdohxz4j225q2hh743cq", - "ad336a7eee41eebd6b8e667e7ef673b64088c0553492567245653ac6c07fdb46" - ], - [ - "gnupg", - "7i7j24llnlzwpwrfumulorq6ucx2ku2f", - "a743ffd0698db5329a8231d25fa2e13b88f63cf85198664794a91df7a2c48632" - ] - ], - "spec": "gnupg@2.3: %gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "libiconv", - "vyvyow3bnokashj3wntl7pgm5nc4h7vw", - "4fb8c1a563975f339b2e98e4c5c6cd98d629bc94fcf57b8e92beedae17a4584d" - ], - [ - "npth", - "opncvl75zv6njawkgtxgt4yhii65f5nx", - "24b442a6f2cc28176a4f742d961807e5ffd853d2f9d65175944b6aa8b47d91e2" - ], - [ - "zlib", - "dcixs2nytw7vlthk55mwvog7veypnuor", - "6ab7018b621783c971192e46b6a3e2764b638b5ab5c2f3c62af24afd5a9039e0" - ], - [ - "libassuan", - "yk2555moxgj3dro6edznumguezecriso", - "ebde470fee06e5ad7527dca0eb3689ae13b7299229b51e64f97ff87b9daf9160" - ], - [ - "libgcrypt", - "imws5ss7coeeo45zr6w54xnwjfjm4cc6", - "ad20c2974c90717efa8a4c27781e5f4c14d60527dc1c224fd2e113fe52d3e958" - ], - [ - "libgpg-error", - "nbhvf75esgtjeu6nh57gu6mnikiazmjt", - "ec9f59c684dc4054706217952b8ddf610e4277ec8031c92640f086959dcf756e" - ], - [ - "libksba", - "cx425tk5tnod3523zj4izloqibr44frz", - "b2465fecbca3d022cf068766a9c01c72f6a68f9b58e78375f687b1273f6c683c" - ], - [ - "pinentry", - "pto3uq53xwl7dtbvycdp4qccacrrzs3r", - "bd9ae21dff99c34165baa680df4b4b36339e207fec2ac4fcc80103d774a1dd84" - ], - [ - "gnupg", - "5mhxefklns5hpdai3jn3rsf23kz4nol6", - "8a21155078dc51fdee7990326335e9f99192da0eb4b3490260a7399e30f20243" - ] - ], - "spec": "gnupg@2.3: %gcc platform=linux target=x86_64" - } - ] -} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.4/patchelf.json b/share/spack/bootstrap/github-actions-v0.4/patchelf.json deleted file mode 100644 index cab42851089392..00000000000000 --- a/share/spack/bootstrap/github-actions-v0.4/patchelf.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "verified": [ - { - "binaries": [ - [ - "patchelf", - "kjmrsrd7akfwzlejzsdyoun7fwgmvjgk", - "2c1975adb6fbd42bdb960b67fa6b32bc2846a28e5d293d2ca7b44a38f49ecf4f" - ] - ], - "spec": "patchelf@0.13: %gcc platform=linux target=aarch64" - }, - { - "binaries": [ - [ - "patchelf", - "gxxogiws7fmzkbdc26k24id3aplly6wi", - "d45ac6b9045d510861fda0cfaa5c04d71f316df5784376f2d2915ab134619c1b" - ] - ], - "spec": "patchelf@0.13: %gcc platform=linux target=ppc64le" - }, - { - "binaries": [ - [ - "patchelf", - "p72zyan5wrzuabtmzq7isa5mzyh6ahdp", - "ed7ebae3399d96c8d2f4b38ce6f2da52d8b73b312c73babae880ed3467b464b4" - ] - ], - "spec": "patchelf@0.13: %gcc platform=linux target=x86_64" - } - ] -} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.6/clingo.json b/share/spack/bootstrap/github-actions-v0.6/clingo.json new file mode 100644 index 00000000000000..6db902e1bc9783 --- /dev/null +++ b/share/spack/bootstrap/github-actions-v0.6/clingo.json @@ -0,0 +1,384 @@ +{ + "verified": [ + { + "binaries": [ + [ + "clingo-bootstrap", + "54jmcv6ecepywqv7bdpbfm2mrsarrjio", + "ff7f45db1645d1d857a315bf8d63c31447330552528bdf1fccdcf50735e62166" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "i2cye2tc752emxaeovjnrljbcz4gjr7j", + "e7491ac297cbb3f45c80aaf4ca5102e2b655b731e7b6ce7682807d302cb61f1c" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "5bsjop6yb3oqfi2mopjaufprqy5xaqtv", + "91214626a86c21fc0d76918884ec819050d4d52b4f78df7cc9769a83fbee2f71" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "unriyx5k5mu2o6nqwtaj254heazbiwyk", + "db596d9e6d8970d659f4be4cb510f9ba5dc2ec4ea42ecf2aed1325ec5ad72b45" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "6ikikftldgnbrirhbo27v4flseuo34j3", + "a7ed91aee1f8d5cfe2ca5ef2e3e74215953ffd2d8b5c722a670f2c303610e90c" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "pl5t4qtmufwrvek37mrorllf6ivnwztc", + "c856a98f92b9fa218377cea9272dffa736e93251d987b6386e6abf40058333dc" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=aarch64 ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "cvxik6sx7niravyolfrrxayo2jywhv5p", + "d74cc0b44faa69473816dca16a3806123790e6eb9a59f611b1d80da7843f474a" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "chkx4n66gfa7ocewytj4bdqafp2czdwm", + "2cb12477504ca8e112522b6d56325ce32024c9466de5b8427fd70a1a81b15020" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "agrdoajzabs2am6q36lcrquihfb4d5xv", + "4e73426599fa61df1a4faceafa38ade170a3dec45b6d8f333e6c2b6bfe697724" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "56am5pmigql665hjjc2rnvtqd6dteni6", + "4309b42e5642bc5c83ede90759b1a0b5d66fffa8991b6213208577626b588cde" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "s727fhuqz2vgtlhmgviyihlqcm3vbgkx", + "1feeab9e1a81ca56de838ccc234d60957e9ab14da038e38b6687732b7bae1ff6" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "zo56jqvyt4y3udj6tsksbpm7bqoxob5g", + "1149ab7d5f1c82d8de53f048af8aa5c5dbf0d21da4e4780c06e54b8ee902085b" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "zkox3jrbdmbpu7j52ftcvqctjmymgp5j", + "d6aeae2dbd7fa3c1d1c62f840a5c01f8e71b64afe2bdc9c90d4087694f7d3443" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "scm5ujivfo5tt2dzurxcjf6qbme6dvol", + "81ef2beef78f46979965e5e69cd92b68ff4d2a59dbae1331c648d18b6ded1444" + ] + ], + "spec": "clingo-bootstrap@spack%apple-clang platform=darwin target=x86_64 ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "7utceuvi4eofoi2qr5vizbiv27fqewgi", + "3d0830654f9e327fd7ec6dab214050295dbf0832f493937c0c133e516dd2a95a" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "tipiheccz3kpqwmcmqdc6jwuedv4z4ip", + "941b93cd89d5271c740d1b1c870e85f32e5970f9f7b842ad99870399215a93db" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "jxz7beqjkrpd6d2fcbsxh6etf42e5jmu", + "8ca78e345da732643e3d1b077d8156ce89863c25095e4958d4ac6d1a458ae74b" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "qy5ak2wdmlepkuoygweyzbh42njy6yhc", + "f6ced988b515494d86a1069f13ae9030caeb40fe951c2460f532123c80399154" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "klvkzwpf5dzfa3s47zabngev6wehsnvw", + "c00855b5cda99639b87c3912ee9c734c0b609dfe7d2c47ea947738c32bab6f03" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "udskqrr4z7wden3yimui65ulo47j6ytf", + "aa861cfdf6001fc2da6e83eecc9ad35df424d86d71f6d73e480818942405ce4e" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "4oeblhznejucmsdqpqa4uyh7txgyqxol", + "cb7807cd31fc5e0efe2acc1de1f74c7cef962bcadfc656b09ff853bc33c11bd0" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "a5mztd53ktxnhvzkr3lqaceuw2tmi3bv", + "36e5efb6b15b431b661e9e272904ab3c29ae7b87bf6250c158d545ccefc2f424" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=aarch64 ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "kavipyeuasn4om6jokka3kcdhgdtrhvi", + "bd492c078b2cdaf327148eee5b0abd5b068dbb3ffa5dae0ec5d53257f471f7f7" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "5v5c245vawyuc6urmp3roehey2kubd6h", + "0ebe5e05246c33fc8529e90e21529b29742b5dd6756dbc07534577a90394c0e6" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "whdxnb2jug463enpge2hevrjwhv7hbhg", + "9f97d3bf78b7642a775f12feb43781d46110793f58a7e69b0b68ac4fff47655c" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "6enkeu44ymdslkubguw4qyfvreg57j42", + "e7295bb4bcb11a936f39665632ce68c751c9f6cddc44904392a1b33a5290bbbe" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "rvr5ybhzcowbbjeyxlmkltdxxaua6ffh", + "c44e7fbf721383aa8ee57d2305f41377e64a42ab8e02a9d3d6fc792d9b29ad08" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "u5hxe3p62gynloaxhw2mjjgyvdgbrxvb", + "965ba5c1a42f436001162a3f3a0d1715424f2ec8f65c42d6b66efcd4f4566b77" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "vhj724hodvecmzic5us422o5gc4vlkuc", + "c8d31089d8f91718a5bde9c6b28cc67bdbadab401c8fdd07b296d588ece4ddfe" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "l2il7xee3xm5x7xpzz7mnslw7kcxcmk6", + "ef3f05d30333a39fd18714b87ee22605679f52fda97f5e592764d1591527bbf3" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=ppc64le ^python@3.9" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "4pi6zqqe2vm6ehc7qb4se3ql53m6relx", + "a4abec667660307ad5cff0a616d6651e187cc7b1386fd8cd4b6b288a01614076" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.10" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "4ojfyzobwptp3numvphbxpgp3okdolur", + "a572ab6db954f4a850d1292bb1ef6d6055916784a894d149d657996fa98d0367" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.11" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "et3twemsecqryfzl23e3cmsbca534dlo", + "97f8ea17f3df3fb38904450114cbef9b4b0ea9c94da9de7a49b70b707012277a" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.12" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "adriuktssyp63nfzum5e33vpu645oq4m", + "6599ac06ade0cb3e80695f36492ea94a306f8bde0537482521510076c5981aa0" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.13" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "a4oyom2bc4go3floq7jlymc2l745w7vl", + "90b7cf4dd98e26c58578ad8604738cc32dfbb228cfb981bdfe103c99d0e7b5dd" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.6" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "nzya47loljbytn5utgbeaa2zmcvnfc6o", + "dc5dbfd9c05b43c4992bf6666638ae96cee5548921e94eb793ba85727b25ec59" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.7" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "hnnz6aop244yvwkx6vahauz3wprb26s3", + "e8518de25baff7a74bdb42193e6e4b0496e7d0688434c42ce4bdc92fe4293a09" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.8" + }, + { + "binaries": [ + [ + "clingo-bootstrap", + "fs2aukvaiwysb3ob4zosvuwnkmfwxyoq", + "0c5831932608e7b4084fc6ce60e2b67b77dab76e5515303a049d4d30cd772321" + ] + ], + "spec": "clingo-bootstrap@spack%gcc platform=linux target=x86_64 ^python@3.9" + } + ] +} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.6/gnupg.json b/share/spack/bootstrap/github-actions-v0.6/gnupg.json new file mode 100644 index 00000000000000..c6e5808dab13d4 --- /dev/null +++ b/share/spack/bootstrap/github-actions-v0.6/gnupg.json @@ -0,0 +1,269 @@ +{ + "verified": [ + { + "binaries": [ + [ + "libgpg-error", + "lwnk6k2j2pthv4zq3bl6cu2rbr5lqkp7", + "221b34bd62482f8afa64daa95466a61300674c81ed31aebb7f870f4e516407a1" + ], + [ + "libassuan", + "gknfboyunz7tbc5j3nbdwft2s77tzmv2", + "47c742a837ff2d6e920a89a1e2556f996c3c22a1e098f9b0e0f7cc3f9e675222" + ], + [ + "libgcrypt", + "2zniebgjgx44waicsbfmh2ywz72gw2hi", + "6eaed68c849c65d3f5351b67fd8c323a51caddc52918281b71706c472f281b26" + ], + [ + "libiconv", + "l6yjt5xint3rspq7yytsl7iwvn5tuey3", + "26ceaa73955e9f335bbbfd8aafc043605475154eb98d8118992224ed6696c1ad" + ], + [ + "libksba", + "xh7k7t5lqz6vjfugrpd4pjfdsom75trx", + "e3f617fcf144639b8fb3cd1e4d32f7fcdb38d345ab26ffc920732d731b991625" + ], + [ + "npth", + "pbgogmpojgqzgpzzci7gk7hloorinxew", + "3c3b6a2f008b5eec639382e384735203675600d06b4de89d58c36428016e4465" + ], + [ + "pinentry", + "66hrxsdpjdqt6wmnpmi5mh5ifeyb7cgg", + "d9843ab0324bea08d83455b6117a6fe82a6dcaa2106ba305e72c25c3bb26a17e" + ], + [ + "zlib-ng", + "cjfe7flqc6o2bfacxxwgqx4lpgqsv55e", + "7c02ff1bbac5dc24863cea28f15d06772c5434ee99a85a31a3475ae3c4f2d4b0" + ], + [ + "gnupg", + "eoavahhxqjlexz4wr3aanix724gamayu", + "61bcb83dc3fc2ae06fde30b9f79c2596bd0457cf56b4d339c8c562a38ca1c31f" + ] + ], + "spec": "gnupg@2.4.5%apple-clang platform=darwin target=aarch64" + }, + { + "binaries": [ + [ + "libgpg-error", + "op3m3ketzr2qqzazpoe35uc3c53tceqo", + "9345e8709a34591cb8ed70441ff5b95fd0de62f5038b3ff72aa21efeea882c14" + ], + [ + "libassuan", + "x7mrkmkxj3x5mcajpk36xroktc2vqhbb", + "60a19ab82bbd3b69bcd53287621617e0223bfefa7568572e247f3dfbac863717" + ], + [ + "libgcrypt", + "at6lwhcuxttxx2erckiwee4fb7txsupd", + "88d2ff68b041ca4d3923c1d657a670115f88735ef99a48d2bb1ea47420a183c1" + ], + [ + "libiconv", + "clwajtbwgb23uzaci26bcisj64jas33d", + "d5af1715ca62225765980389e79cae4a1347bd7e8a9e0ad29f53a2ff1e3fba7a" + ], + [ + "libksba", + "x3h5xtrsmdhcv5rwsbrn6cwdt7kynxkl", + "be0748d370f38a55ccb458e43a95739b0494d1755189a87a062d99508ca4c756" + ], + [ + "npth", + "c3yv6do52jtfeqtxbcdssxslbwh2l67c", + "c19dab06efd6ef9476e299b009d41bbe0d0c3df634d4bc55db18c78f3036afde" + ], + [ + "pinentry", + "a25ckvveduyxqrrmaybwnn65dh35eusc", + "fc1af850dcc056c14aba5595ccb2d48ccc4d14ddedbc85cf20928ef2805b213e" + ], + [ + "zlib-ng", + "uum7mskvdekjxwozkmdqk3joy6hnan3g", + "de2faff7c427305a00a62d66bba39393591841044a2feb861045c7961595d0fc" + ], + [ + "gnupg", + "7bmrigo4rsorm5d6byrcgxqerxofugoj", + "3d36bce8bbd06134445aa3cefa00a80068317b6d082d2b43bb1e3be81ede5849" + ] + ], + "spec": "gnupg@2.4.5%apple-clang platform=darwin target=x86_64" + }, + { + "binaries": [ + [ + "gcc-runtime", + "vytidi6v26yjvwdbycga2asyx5363kf3", + "8c0b786bed22505e2360fb0eaf1f38f9cdd8a96ff19a9bea84e4acbbad1e32f6" + ], + [ + "libgpg-error", + "cuagrnba4umsm33umta5rmjpkazt2i5u", + "794fed3932cee4e0b48e27cf2d8627135b88c0961730b384e10af1b484db0e6d" + ], + [ + "libassuan", + "uuxij4hqsvuv5h54iaofcr3tpv44thks", + "72c9cfccf2d01ad9fb495da573de49a08673e751ba059d20c8e519f9aa83ef20" + ], + [ + "libgcrypt", + "lfy732fms7q3j2fpvr3g2gg5lxmgs6jg", + "dae98b98735a10c8ef83fc03e0e878a157775c23d5d985266ddca6208cc988ca" + ], + [ + "libiconv", + "fcsxxmy4hiu3x6hjeh7y3mp4qxmvbcrh", + "29084a2aae8e11df683baf12203804d16aba6fd5dff02725654e6ee617bd2994" + ], + [ + "libksba", + "7kbtasg2faihsxceqpp4jpaf4ec7cgq7", + "35065817952b1114ffd9b6ccdd4095c1141eccdd481c4ac5a5f878ba0191ec33" + ], + [ + "npth", + "jsvxvvflvljwkewvxbebmoc3asos54f5", + "79b07e334e9b6d135be42a5b4cf0eb1bf5dcde98b8c3ce6c154bfa4e11abfb95" + ], + [ + "pinentry", + "erpvp4zmkqmeatet3fxwkrugwjp4nyxc", + "91fa16a16ca995ab663b1551f172e5aa91ed15853e37aa7776ce40d08a2fc3e9" + ], + [ + "zlib-ng", + "j3puqviz7nl3qr3sqwrg7vdb3i4ulqff", + "b8190c6af8fda6d5aeaff40e7d0ce11e80f412269706b68e1cf04c97f34b9e83" + ], + [ + "gnupg", + "iwnwfoopb5rtn45dbsecwoe3w6fsjv6d", + "8398592ab0812d8c76a21deca06da4277d05f4db784e129ead7535bb8988faa2" + ] + ], + "spec": "gnupg@2.4.5%gcc platform=linux target=aarch64" + }, + { + "binaries": [ + [ + "gcc-runtime", + "o6nx7ce6pg2fzah2fbwbpbwb6rkhdwc2", + "c942c0fb5d4ae8d875b036c1ab6bc09077dad6f2b43fe0621dee84fd47fcdec3" + ], + [ + "libgpg-error", + "pxc5a72op7zaahwquririwlea5lcowd2", + "56dc827ee7db3e1b0a0f2673165d9694d35df82b09e8984a03a21f6a275fb25c" + ], + [ + "libassuan", + "wjypew3o5cmejlrhsj24kkkh3jxrn35z", + "32f056147ca5c240ad10ffd8f36f60d84106bba46f4503a28d0649611f485381" + ], + [ + "libgcrypt", + "aaodehivfgu6ggtzf3r4vk6do5gt7qg2", + "af22cdf4b3ffca0b14c00849a2ad35e2f5c60024214ccc1f733481c7d1535d13" + ], + [ + "libiconv", + "bv2plgtibp6l6g5eqwupejoaihwjqk3z", + "c43ae303cbbc769ea4eb9740728970726fa87fe4e482ca7feb7b909ecba217ab" + ], + [ + "libksba", + "4zm4wcxegjycsez4jxgfdeyyne6xqb4t", + "2623edd57b13b98f83b7bf6a3419bbd29c7574bb72a99c948ff32d9a6b95d6f8" + ], + [ + "npth", + "4mdvxsguwekd4nus4lczdmcdwo4xpm7h", + "1c150c7e99a06cfad733b60c776a06c537ce925234cc567657f3ca79bf668010" + ], + [ + "pinentry", + "jli5etdru7erjbneygpiinlgbu6hqyiw", + "be2f63bb8a6d87a2d6e65699a688200939406f42b93a74e55ae4437b9936d75b" + ], + [ + "zlib-ng", + "olulf6vptgcleno3kfc3qbfqss4p6dcv", + "248e8295fc8af4ced8383846c292c2298248ee7afd20a36195891cfdc3d75363" + ], + [ + "gnupg", + "5ntq7qgiciy4lwhhqekglg7c7qjlfum6", + "cc7e4833af58913fa4ab2b7ce3fdb86d214594d54327c7e4eb4ca3f0784c046f" + ] + ], + "spec": "gnupg@2.4.5%gcc platform=linux target=ppc64le" + }, + { + "binaries": [ + [ + "gcc-runtime", + "7rv2b76tgxqmkwtmngiamwac632cjjba", + "b76a4eaef54b24d0ea9b8dfa9392f7ab519f918ae7e1a8bb919539d9adeddbcb" + ], + [ + "libgpg-error", + "t6pohmnim5vwnysjzc6c2x5xrq34arav", + "89976fae1b4d47325d03e6a4b37872b141ac2da77dc8a531afc7d207d86b3dc9" + ], + [ + "libassuan", + "urbnck3somrr5pmrhf4ifkfxcxgzrq4f", + "8feaab6bb0802d799e8e572ea7c903f5827a8af807010e288bbe043ec0b88779" + ], + [ + "libgcrypt", + "52zd4jcxeilrmlu4tugwkxqd6h6znbj6", + "50bb10f9e0317637dcb6f17de59c8c644d259ac15529c8355b9477e323e45cc6" + ], + [ + "libiconv", + "dy5pmiqcwlvb6yzozs5ajqtox3cfygif", + "385fa3a46f1c588aab24bcea3dfc5221dfa143808a2a731aef87a923c2cf05df" + ], + [ + "libksba", + "dls4psvcy54plnficveje3pisbznkznt", + "b565c5439feefe4e40694dfa2f98332a3f16f00d57bb355ad9ffde7c911b23de" + ], + [ + "npth", + "mldfiqqsswoo4l3ln7vkwpekgji4zwl4", + "cb4a08118709bd4cd4f0833f64e143914f0b81e8ae24c0d8a1bdf3a58a768b59" + ], + [ + "pinentry", + "2ayqizbaee43awjxjdpzmrangyklffp2", + "8fe10eddb2bf9cdda7329d098c42c2443d31b041416192eec5fec547d3cb8b84" + ], + [ + "zlib-ng", + "qodit36c7pa2afqavjguuuyxmur4tels", + "d90039074ce13e7ba1708d645bc48a832af78cfb5a197818ff53a45cec628855" + ], + [ + "gnupg", + "ielaznyuce3qu77r34nwnfjqkk5p3fdz", + "418b582f84547504b6464913fba5ba196482e86258081bdeb21af519fe8a2933" + ] + ], + "spec": "gnupg@2.4.5%gcc platform=linux target=x86_64" + } + ] +} \ No newline at end of file diff --git a/share/spack/bootstrap/github-actions-v0.4/metadata.yaml b/share/spack/bootstrap/github-actions-v0.6/metadata.yaml similarity index 61% rename from share/spack/bootstrap/github-actions-v0.4/metadata.yaml rename to share/spack/bootstrap/github-actions-v0.6/metadata.yaml index 0b483b547b2e86..ca2e9db88f14d8 100644 --- a/share/spack/bootstrap/github-actions-v0.4/metadata.yaml +++ b/share/spack/bootstrap/github-actions-v0.6/metadata.yaml @@ -1,8 +1,8 @@ type: buildcache description: | - Buildcache generated from a public workflow using Github Actions. + Buildcache generated from a public workflow using GitHub Actions hosted on GitHub Packages. The sha256 checksum of binaries is checked before installation. info: - url: https://mirror.spack.io/bootstrap/github-actions/v0.4 + url: oci://ghcr.io/spack/bootstrap-buildcache-v1 homepage: https://github.com/spack/spack-bootstrap-mirrors releases: https://github.com/spack/spack-bootstrap-mirrors/releases diff --git a/share/spack/bootstrap/github-actions-v0.6/patchelf.json b/share/spack/bootstrap/github-actions-v0.6/patchelf.json new file mode 100644 index 00000000000000..4d61766f236739 --- /dev/null +++ b/share/spack/bootstrap/github-actions-v0.6/patchelf.json @@ -0,0 +1,49 @@ +{ + "verified": [ + { + "binaries": [ + [ + "gcc-runtime", + "vytidi6v26yjvwdbycga2asyx5363kf3", + "8c0b786bed22505e2360fb0eaf1f38f9cdd8a96ff19a9bea84e4acbbad1e32f6" + ], + [ + "patchelf", + "mabcw7ya2bjav54wiknzyoftwtkkx2s3", + "820b8013b0b918ad85caa953740497e6c31c09d812bd34d087fc57128bfbdacb" + ] + ], + "spec": "patchelf@0.17.2%gcc platform=linux target=aarch64" + }, + { + "binaries": [ + [ + "gcc-runtime", + "o6nx7ce6pg2fzah2fbwbpbwb6rkhdwc2", + "c942c0fb5d4ae8d875b036c1ab6bc09077dad6f2b43fe0621dee84fd47fcdec3" + ], + [ + "patchelf", + "hz6j4rmzm65wov77f7t335tbywy5ebnq", + "1569df037ea1ea316a50e89f5a0cafa0ce8e20629bbd07fcc3846d9fecd2451c" + ] + ], + "spec": "patchelf@0.17.2%gcc platform=linux target=ppc64le" + }, + { + "binaries": [ + [ + "gcc-runtime", + "7rv2b76tgxqmkwtmngiamwac632cjjba", + "b76a4eaef54b24d0ea9b8dfa9392f7ab519f918ae7e1a8bb919539d9adeddbcb" + ], + [ + "patchelf", + "o6soxsz4hwdhzzbu4j56zwcclqhram25", + "79dfb7064e7993a97474c5f6b7560254fe19465a6c4cfc44569852e5a6ab542b" + ] + ], + "spec": "patchelf@0.17.2%gcc platform=linux target=x86_64" + } + ] +} \ No newline at end of file diff --git a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml index bdd87a974410b9..f082b3b413dd02 100644 --- a/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml +++ b/share/spack/gitlab/cloud_pipelines/.gitlab-ci.yml @@ -75,8 +75,6 @@ default: .base-job: variables: PIPELINE_MIRROR_TEMPLATE: "single-src-protected-mirrors.yaml.in" - # TODO: We can remove this when we drop the "deprecated" stack - PUSH_BUILDCACHE_DEPRECATED: "${PROTECTED_MIRROR_PUSH_DOMAIN}/${CI_COMMIT_REF_NAME}/${SPACK_CI_STACK_NAME}" SPACK_CI_CONFIG_ROOT: "${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/configs" SPACK_CI_SCRIPTS_ROOT: "${CI_PROJECT_DIR}/share/spack/gitlab/cloud_pipelines/scripts" @@ -106,8 +104,6 @@ default: when: always variables: SPACK_PIPELINE_TYPE: "spack_pull_request" - # TODO: We can remove this when we drop the "deprecated" stack - PUSH_BUILDCACHE_DEPRECATED: "${PR_MIRROR_PUSH_DOMAIN}/${CI_COMMIT_REF_NAME}/${SPACK_CI_STACK_NAME}" SPACK_PRUNE_UNTOUCHED: "True" SPACK_PRUNE_UNTOUCHED_DEPENDENT_DEPTH: "1" # TODO: Change sync script to include target in branch name. Then we could @@ -221,41 +217,6 @@ default: tags: ["spack", "public", "medium", "x86_64-win"] image: "ghcr.io/johnwparent/windows-server21h2:sha-1c12b61" -.generate-deprecated: - extends: [ ".base-job" ] - stage: generate - script: - - uname -a || true - - grep -E 'vendor|model name' /proc/cpuinfo 2>/dev/null | sort -u || head -n10 /proc/cpuinfo 2>/dev/null || true - - nproc || true - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - - . "./share/spack/setup-env.sh" - - spack --version - - cd share/spack/gitlab/cloud_pipelines/stacks/${SPACK_CI_STACK_NAME} - - spack env activate --without-view . - - spack -v --color=always - ci generate --check-index-only - --buildcache-destination "${PUSH_BUILDCACHE_DEPRECATED}" - --artifacts-root "${CI_PROJECT_DIR}/jobs_scratch_dir" - --output-file "${CI_PROJECT_DIR}/jobs_scratch_dir/cloud-ci-pipeline.yml" - after_script: - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - artifacts: - paths: - - "${CI_PROJECT_DIR}/jobs_scratch_dir" - variables: - KUBERNETES_CPU_REQUEST: 4000m - KUBERNETES_MEMORY_REQUEST: 16G - interruptible: true - timeout: 60 minutes - retry: - max: 2 - when: - - always - tags: ["spack", "public", "medium", "x86_64"] - .build: extends: [ ".base-job" ] stage: build @@ -377,7 +338,7 @@ e4s-neoverse_v1-build: e4s-rocm-external-generate: extends: [ ".e4s-rocm-external", ".generate-x86_64"] - image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.0:2024.09.11 + image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.1:2024.10.08 e4s-rocm-external-build: extends: [ ".e4s-rocm-external", ".build" ] @@ -508,6 +469,30 @@ developer-tools-manylinux2014-build: - artifacts: True job: developer-tools-manylinux2014-generate +########################################### +# Build tests for different developer tools +# darwin +########################################### +.developer-tools-darwin: + extends: [ ".darwin_aarch64" ] + variables: + SPACK_CI_STACK_NAME: developer-tools-darwin + +developer-tools-darwin-generate: + tags: [ "macos-ventura", "apple-clang-15", "aarch64-macos" ] + extends: [ ".developer-tools-darwin", ".generate-base"] + +developer-tools-darwin-build: + extends: [ ".developer-tools-darwin", ".build" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: developer-tools-darwin-generate + strategy: depend + needs: + - artifacts: True + job: developer-tools-darwin-generate + ######################################### # RADIUSS ######################################### @@ -750,6 +735,52 @@ ml-linux-x86_64-rocm-build: - artifacts: True job: ml-linux-x86_64-rocm-generate +######################################## +# Machine Learning - Linux aarch64 (CPU) +######################################## +.ml-linux-aarch64-cpu: + extends: [ ".linux_aarch64" ] + variables: + SPACK_CI_STACK_NAME: ml-linux-aarch64-cpu + +ml-linux-aarch64-cpu-generate: + extends: [ ".generate-aarch64", .ml-linux-aarch64-cpu ] + image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + +ml-linux-aarch64-cpu-build: + extends: [ ".build", ".ml-linux-aarch64-cpu" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: ml-linux-aarch64-cpu-generate + strategy: depend + needs: + - artifacts: True + job: ml-linux-aarch64-cpu-generate + +######################################### +# Machine Learning - Linux aarch64 (CUDA) +######################################### +.ml-linux-aarch64-cuda: + extends: [ ".linux_aarch64" ] + variables: + SPACK_CI_STACK_NAME: ml-linux-aarch64-cuda + +ml-linux-aarch64-cuda-generate: + extends: [ ".generate-aarch64", .ml-linux-aarch64-cuda ] + image: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + +ml-linux-aarch64-cuda-build: + extends: [ ".build", ".ml-linux-aarch64-cuda" ] + trigger: + include: + - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml + job: ml-linux-aarch64-cuda-generate + strategy: depend + needs: + - artifacts: True + job: ml-linux-aarch64-cuda-generate + ######################################### # Machine Learning - Darwin aarch64 (MPS) ######################################### @@ -773,27 +804,6 @@ ml-darwin-aarch64-mps-build: - artifacts: True job: ml-darwin-aarch64-mps-generate -######################################## -# Deprecated CI testing -######################################## -.deprecated-ci: - variables: - SPACK_CI_STACK_NAME: deprecated - -deprecated-ci-generate: - extends: [ ".generate-deprecated", ".deprecated-ci" ] - -deprecated-ci-build: - extends: [ ".build", ".deprecated-ci" ] - trigger: - include: - - artifact: jobs_scratch_dir/cloud-ci-pipeline.yml - job: deprecated-ci-generate - strategy: depend - needs: - - artifacts: True - job: deprecated-ci-generate - ######################################## # AWS ParallelCluster ######################################## diff --git a/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml index 23cc11d9089de6..f81bbf25376b44 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/aws-pcluster-x86_64_v4/spack.yaml @@ -9,12 +9,10 @@ spack: # - mpas-model %oneapi - openfoam %gcc - palace %oneapi ^superlu-dist%oneapi # hack: force fortran-rt provider through superlu-dist - # Latest version qunatum-espresso@7.3.1 does not build with oneapi, see https://github.com/spack/spack/pull/46456#issuecomment-2363159511 + # TODO: Find out how to make +ipo cmake flag work. # - quantum-espresso %oneapi - openmpi %oneapi - # TODO: oneapi patch in WRF is broken. It uses link time optimization but the gnu linker. Need to check whether the WRF recipe (in later releases) is better. - # WRf can only run if https://github.com/spack/spack/pull/46589 is merged. - # - wrf %oneapi + - wrf %oneapi - targets: - 'target=x86_64_v4' diff --git a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml index be0ec9b235f137..17b67bb268112e 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/data-vis-sdk/spack.yaml @@ -24,7 +24,7 @@ spack: definitions: - paraview_specs: - matrix: - - - paraview +raytracing + - - paraview +raytracing +adios2 +fides - - +qt ^[virtuals=gl] glx # GUI Support w/ GLX Rendering - ~qt ^[virtuals=gl] glx # GLX Rendering - ^[virtuals=gl] osmesa # OSMesa Rendering diff --git a/share/spack/gitlab/cloud_pipelines/stacks/deprecated/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/deprecated/spack.yaml deleted file mode 100644 index a97606302dcb11..00000000000000 --- a/share/spack/gitlab/cloud_pipelines/stacks/deprecated/spack.yaml +++ /dev/null @@ -1,100 +0,0 @@ -### -# Spack pipeline for testing deprecated gitlab-ci configuration -### -spack: - view: false - concretizer: - reuse: false - unify: false - config: - db_lock_timeout: 120 - install_tree: - padded_length: 256 - projections: - all: '{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}' - deprecated: true - packages: - all: - require: target=x86_64 - specs: - - readline - - mirrors: - mirror: s3://spack-binaries/develop/deprecated - gitlab-ci: - broken-tests-packages: - - gptune - broken-specs-url: s3://spack-binaries/broken-specs - image: ghcr.io/spack/tutorial-ubuntu-18.04:v2021-11-02 - before_script: - - uname -a || true - - grep -E "vendor|model name" /proc/cpuinfo 2>/dev/null | sort -u || head -n10 - /proc/cpuinfo 2>/dev/null || true - - nproc - - . "./share/spack/setup-env.sh" - - spack --version - - spack arch - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - script: - - spack compiler find - - cd ${SPACK_CONCRETE_ENV_DIR} - - spack env activate --without-view . - - if [ -n "$SPACK_BUILD_JOBS" ]; then spack config add "config:build_jobs:$SPACK_BUILD_JOBS"; - fi - - spack config add "config:install_tree:projections:${SPACK_JOB_SPEC_PKG_NAME}:'morepadding/{architecture}/{compiler.name}-{compiler.version}/{name}-{version}-{hash}'" - - mkdir -p ${SPACK_ARTIFACTS_ROOT}/user_data - # AWS runners mount E4S public key (verification), UO runners mount public/private (signing/verification) - - if [[ -r /mnt/key/e4s.gpg ]]; then spack gpg trust /mnt/key/e4s.gpg; fi - # UO runners mount intermediate ci public key (verification), AWS runners mount public/private (signing/verification) - - if [[ -r /mnt/key/intermediate_ci_signing_key.gpg ]]; then spack gpg trust /mnt/key/intermediate_ci_signing_key.gpg; - fi - - if [[ -r /mnt/key/spack_public_key.gpg ]]; then spack gpg trust /mnt/key/spack_public_key.gpg; - fi - - spack --color=always --backtrace ci rebuild --tests > >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_out.txt) - 2> >(tee ${SPACK_ARTIFACTS_ROOT}/user_data/pipeline_err.txt >&2) - after_script: - - cat /proc/loadavg || true - - cat /proc/meminfo | grep 'MemTotal\|MemFree' || true - match_behavior: first - mappings: - - match: - - '@:' - runner-attributes: - id_tokens: - GITLAB_OIDC_TOKEN: - aud: "${OIDC_TOKEN_AUDIENCE}" - tags: [spack, public, small, x86_64] - variables: - CI_JOB_SIZE: small - SPACK_BUILD_JOBS: '1' - KUBERNETES_CPU_REQUEST: 500m - KUBERNETES_MEMORY_REQUEST: 500M - signing-job-attributes: - id_tokens: - GITLAB_OIDC_TOKEN: - aud: "${OIDC_TOKEN_AUDIENCE}" - image: {name: 'ghcr.io/spack/notary:latest', entrypoint: ['']} - tags: [aws] - script: - - aws s3 sync --exclude "*" --include "*spec.json*" ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache - /tmp - - /sign.sh - - aws s3 sync --exclude "*" --include "*spec.json.sig*" /tmp ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache - - aws s3 cp /tmp/public_keys ${SPACK_REMOTE_MIRROR_OVERRIDE}/build_cache/_pgp - --recursive --exclude "*" --include "*.pub" - - service-job-attributes: - id_tokens: - GITLAB_OIDC_TOKEN: - aud: "${OIDC_TOKEN_AUDIENCE}" - image: ghcr.io/spack/tutorial-ubuntu-18.04:v2021-11-02 - before_script: - - . "./share/spack/setup-env.sh" - - spack --version - tags: [spack, public, x86_64] - cdash: - build-group: Spack Deprecated CI - url: https://cdash.spack.io - project: Spack Testing - site: Cloud Gitlab Infrastructure diff --git a/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-darwin/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-darwin/spack.yaml new file mode 100644 index 00000000000000..48ab265a51211c --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-darwin/spack.yaml @@ -0,0 +1,75 @@ +spack: + view: false + packages: + all: + require: + - target=aarch64 + concretizer: + unify: true + reuse: false + specs: + # editors + - neovim~no_luajit + - py-pynvim + - emacs+json~native+treesitter # TODO native not supported until gcc builds on darwin + # - tree-sitter is a dep, should also have cli but no package + - nano # just in case + # tags and scope search helpers + - universal-ctags # only maintained ctags, works better with c++ + - direnv + # runtimes and compilers + - python + - llvm+link_llvm_dylib+lld~lldb~polly+python build_type=MinSizeRel # for clangd, clang-format + - node-js # for editor plugins etc., pyright language server + - npm + - cmake + - libtool + - go # to build fzf, gh, hub + - rust+dev # fd, ripgrep, hyperfine, exa, rust-analyzer + # styling and lints + - astyle + - cppcheck + - uncrustify + - py-fprettify + - py-fortran-language-server + - py-python-lsp-server + # cli dev tools + - ripgrep + - gh + - fd + # - bfs # liburing: /usr/include/linux/ipv6.h:19:8: error: redefinition of 'struct in6_pktinfo' + - fzf + - tree + - jq + - py-yq + - hub + - ncdu + - eza + - lsd + - hyperfine + - htop + - tmux + - ccache + # ensure we can use a jobserver build and do this fast + - gmake + - ninja # should be @kitware, can't be because of meson requirement + - libtree + - sed + - which + - flex + - graphviz + - doxygen + - meson + - lima + + ci: + pipeline-gen: + - build-job-remove: + tags: [ spack, public ] + - build-job: + variables: + CI_GPG_KEY_ROOT: /etc/protected-runner + tags: [ "macos-ventura", "apple-clang-15", "aarch64-macos" ] + + cdash: + build-group: Developer Tools Darwin diff --git a/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml index 97f408080fe7b9..e2a3c0bf5ecf45 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/developer-tools-manylinux2014/spack.yaml @@ -5,6 +5,7 @@ spack: require: target=x86_64_v3 concretizer: unify: true + reuse: false definitions: - default_specs: # editors diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml index 531b02663d474c..1eb61ec5e93d23 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse-v2/spack.yaml @@ -14,14 +14,10 @@ spack: variants: +mpi binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: variants: fabrics=sockets,tcp,udp,rxm - libunwind: - variants: +pic +xz openblas: variants: threads=openmp trilinos: @@ -29,25 +25,14 @@ spack: +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long - xz: - variants: +pic mpi: require: mpich mpich: require: '~wrapperrpath ~hwloc %gcc target=neoverse_v2' tbb: require: intel-tbb - boost: - variants: +atomic +chrono +container +date_time +exception +filesystem +graph - +iostreams +locale +log +math +mpi +multithreaded +program_options +random - +regex +serialization +shared +signals +stacktrace +system +test +thread +timer - cxxstd=17 visibility=global - libffi: - require: "@3.4.4 %gcc target=neoverse_v2" vtk-m: require: "+examples %gcc target=neoverse_v2" - cuda: - version: [11.8.0] paraview: require: "+examples %gcc target=neoverse_v2" @@ -74,6 +59,7 @@ spack: - dyninst - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 ~paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +visit: ? - exaworks + - fftx - flecsi # - flit # - flux-core @@ -113,6 +99,7 @@ spack: - netlib-scalapack - nrm # - nvhpc + - nwchem - omega-h - openfoam # - openmpi @@ -197,6 +184,7 @@ spack: - cabana +cuda cuda_arch=90 ^kokkos +wrapper +cuda_lambda +cuda cuda_arch=90 - caliper +cuda cuda_arch=90 - chai +cuda cuda_arch=90 ^umpire ~shared + - fftx +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90 - gromacs +cuda cuda_arch=90 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml index bc47085c8dd7ba..24a488fbe921bf 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-neoverse_v1/spack.yaml @@ -14,14 +14,10 @@ spack: variants: +mpi binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: variants: fabrics=sockets,tcp,udp,rxm - libunwind: - variants: +pic +xz openblas: variants: threads=openmp trilinos: @@ -29,27 +25,16 @@ spack: +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long - xz: - variants: +pic mpi: require: mpich mpich: require: '~wrapperrpath ~hwloc %gcc target=neoverse_v1' tbb: require: intel-tbb - boost: - variants: +atomic +chrono +container +date_time +exception +filesystem +graph - +iostreams +locale +log +math +mpi +multithreaded +program_options +random - +regex +serialization +shared +signals +stacktrace +system +test +thread +timer - cxxstd=17 visibility=global - libffi: - require: "@3.4.4 %gcc target=neoverse_v1" vtk-m: require: "+examples %gcc target=neoverse_v1" paraview: require: "+examples %gcc target=neoverse_v1" - cuda: - version: [11.8.0] specs: # CPU @@ -74,6 +59,7 @@ spack: - dyninst - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc ~visit +vtkm +zfp # +visit: ? - exaworks + - fftx - flecsi - flit - flux-core @@ -114,6 +100,7 @@ spack: - netlib-scalapack - nrm - nvhpc + - nwchem - omega-h - openfoam - openmpi @@ -226,6 +213,7 @@ spack: - cusz +cuda cuda_arch=75 - dealii +cuda cuda_arch=75 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=75 # # +paraview: job killed oom? + - fftx +cuda cuda_arch=75 - flecsi +cuda cuda_arch=75 - ginkgo +cuda cuda_arch=75 - gromacs +cuda cuda_arch=75 @@ -274,6 +262,7 @@ spack: - cusz +cuda cuda_arch=80 - dealii +cuda cuda_arch=80 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=80 # +paraview: job killed oom? + - fftx +cuda cuda_arch=80 - flecsi +cuda cuda_arch=80 - ginkgo +cuda cuda_arch=80 - gromacs +cuda cuda_arch=80 @@ -320,6 +309,7 @@ spack: - chai +cuda cuda_arch=90 ^umpire ~shared - chapel +cuda cuda_arch=90 - ecp-data-vis-sdk +adios2 +hdf5 +vtkm +zfp ~paraview +cuda cuda_arch=90 # +paraview: vtkm/exec/cuda/internal/ThrustPatches.h(213): error: this declaration has no storage class or type specifier + - fftx +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90 - gromacs +cuda cuda_arch=90 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml index 4cc86363881b0b..ea22c43fbaae0b 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-oneapi/spack.yaml @@ -128,6 +128,7 @@ spack: - nco - netlib-scalapack - nrm + - nwchem - omega-h - openfoam - openmpi @@ -192,6 +193,7 @@ spack: # -- # - chapel ~cuda ~rocm # llvm: closures.c:(.text+0x305e): undefined reference to `_intel_fast_memset' # - cp2k +mpi # dbcsr: dbcsr_api.F(973): #error: incomplete macro call DBCSR_ABORT. + # - fftx # fftx: https://github.com/spack/spack/issues/47048 # - geopm-runtime # libelf: configure: error: installation or configuration problem: C compiler cannot create executables. # - hpctoolkit # dyninst@13.0.0%gcc: libiberty/./d-demangle.c:142: undefined reference to `_intel_fast_memcpy' # - lbann # 2024.2 internal compiler error diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml index f46fe4f2f2cbbc..a770b0a299a13d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-power/spack.yaml @@ -15,14 +15,10 @@ spack: variants: +mpi cuda_arch=70 binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: variants: fabrics=sockets,tcp,udp,rxm - libunwind: - variants: +pic +xz openblas: variants: threads=openmp trilinos: @@ -42,8 +38,6 @@ spack: require: "~tcmalloc %gcc@9.4.0 target=ppc64le" tbb: require: intel-tbb - libffi: - require: "@3.4.4 %gcc@9.4.0 target=ppc64le" vtk-m: require: "+examples %gcc@9.4.0 target=ppc64le" cuda: @@ -77,6 +71,7 @@ spack: - dxt-explorer - dyninst - exaworks + - fftx - flecsi - flit - flux-core @@ -117,6 +112,7 @@ spack: - netlib-scalapack - nrm - nvhpc + - nwchem - omega-h - openfoam - openmpi diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml index 43e792d52d6601..2098645d1b1291 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s-rocm-external/spack.yaml @@ -27,186 +27,186 @@ spack: comgr: buildable: false externals: - - spec: comgr@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: comgr@6.2.1 + prefix: /opt/rocm-6.2.1/ hip-rocclr: buildable: false externals: - - spec: hip-rocclr@6.2.0 - prefix: /opt/rocm-6.2.0/hip + - spec: hip-rocclr@6.2.1 + prefix: /opt/rocm-6.2.1/hip hipblas: buildable: false externals: - - spec: hipblas@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipblas@6.2.1 + prefix: /opt/rocm-6.2.1/ hipcub: buildable: false externals: - - spec: hipcub@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipcub@6.2.1 + prefix: /opt/rocm-6.2.1/ hipfft: buildable: false externals: - - spec: hipfft@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipfft@6.2.1 + prefix: /opt/rocm-6.2.1/ hipsparse: buildable: false externals: - - spec: hipsparse@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hipsparse@6.2.1 + prefix: /opt/rocm-6.2.1/ miopen-hip: buildable: false externals: - - spec: miopen-hip@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: miopen-hip@6.2.1 + prefix: /opt/rocm-6.2.1/ miopengemm: buildable: false externals: - - spec: miopengemm@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: miopengemm@6.2.1 + prefix: /opt/rocm-6.2.1/ rccl: buildable: false externals: - - spec: rccl@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rccl@6.2.1 + prefix: /opt/rocm-6.2.1/ rocblas: buildable: false externals: - - spec: rocblas@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocblas@6.2.1 + prefix: /opt/rocm-6.2.1/ rocfft: buildable: false externals: - - spec: rocfft@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocfft@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-clang-ocl: buildable: false externals: - - spec: rocm-clang-ocl@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-clang-ocl@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-cmake: buildable: false externals: - - spec: rocm-cmake@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-cmake@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-dbgapi: buildable: false externals: - - spec: rocm-dbgapi@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-dbgapi@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-debug-agent: buildable: false externals: - - spec: rocm-debug-agent@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-debug-agent@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-device-libs: buildable: false externals: - - spec: rocm-device-libs@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-device-libs@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-gdb: buildable: false externals: - - spec: rocm-gdb@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-gdb@6.2.1 + prefix: /opt/rocm-6.2.1/ rocm-opencl: buildable: false externals: - - spec: rocm-opencl@6.2.0 - prefix: /opt/rocm-6.2.0/opencl + - spec: rocm-opencl@6.2.1 + prefix: /opt/rocm-6.2.1/opencl rocm-smi-lib: buildable: false externals: - - spec: rocm-smi-lib@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: rocm-smi-lib@6.2.1 + prefix: /opt/rocm-6.2.1/ hip: buildable: false externals: - - spec: hip@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: hip@6.2.1 + prefix: /opt/rocm-6.2.1 extra_attributes: compilers: - c: /opt/rocm-6.2.0/llvm/bin/clang++ - c++: /opt/rocm-6.2.0/llvm/bin/clang++ - hip: /opt/rocm-6.2.0/hip/bin/hipcc + c: /opt/rocm-6.2.1/llvm/bin/clang++ + c++: /opt/rocm-6.2.1/llvm/bin/clang++ + hip: /opt/rocm-6.2.1/hip/bin/hipcc hipify-clang: buildable: false externals: - - spec: hipify-clang@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: hipify-clang@6.2.1 + prefix: /opt/rocm-6.2.1 llvm-amdgpu: buildable: false externals: - - spec: llvm-amdgpu@6.2.0 - prefix: /opt/rocm-6.2.0/llvm + - spec: llvm-amdgpu@6.2.1 + prefix: /opt/rocm-6.2.1/llvm extra_attributes: compilers: - c: /opt/rocm-6.2.0/llvm/bin/clang++ - cxx: /opt/rocm-6.2.0/llvm/bin/clang++ + c: /opt/rocm-6.2.1/llvm/bin/clang++ + cxx: /opt/rocm-6.2.1/llvm/bin/clang++ hsakmt-roct: buildable: false externals: - - spec: hsakmt-roct@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hsakmt-roct@6.2.1 + prefix: /opt/rocm-6.2.1/ hsa-rocr-dev: buildable: false externals: - - spec: hsa-rocr-dev@6.2.0 - prefix: /opt/rocm-6.2.0/ + - spec: hsa-rocr-dev@6.2.1 + prefix: /opt/rocm-6.2.1/ extra_atributes: compilers: - c: /opt/rocm-6.2.0/llvm/bin/clang++ - cxx: /opt/rocm-6.2.0/llvm/bin/clang++ + c: /opt/rocm-6.2.1/llvm/bin/clang++ + cxx: /opt/rocm-6.2.1/llvm/bin/clang++ roctracer-dev-api: buildable: false externals: - - spec: roctracer-dev-api@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: roctracer-dev-api@6.2.1 + prefix: /opt/rocm-6.2.1 roctracer-dev: buildable: false externals: - spec: roctracer-dev@4.5.3 - prefix: /opt/rocm-6.2.0 + prefix: /opt/rocm-6.2.1 rocprim: buildable: false externals: - - spec: rocprim@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocprim@6.2.1 + prefix: /opt/rocm-6.2.1 rocrand: buildable: false externals: - - spec: rocrand@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocrand@6.2.1 + prefix: /opt/rocm-6.2.1 hipsolver: buildable: false externals: - - spec: hipsolver@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: hipsolver@6.2.1 + prefix: /opt/rocm-6.2.1 rocsolver: buildable: false externals: - - spec: rocsolver@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocsolver@6.2.1 + prefix: /opt/rocm-6.2.1 rocsparse: buildable: false externals: - - spec: rocsparse@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocsparse@6.2.1 + prefix: /opt/rocm-6.2.1 rocthrust: buildable: false externals: - - spec: rocthrust@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocthrust@6.2.1 + prefix: /opt/rocm-6.2.1 rocprofiler-dev: buildable: false externals: - - spec: rocprofiler-dev@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocprofiler-dev@6.2.1 + prefix: /opt/rocm-6.2.1 rocm-core: buildable: false externals: - - spec: rocm-core@6.2.0 - prefix: /opt/rocm-6.2.0 + - spec: rocm-core@6.2.1 + prefix: /opt/rocm-6.2.1 specs: # ROCM NOARCH @@ -221,6 +221,7 @@ spack: - caliper +rocm amdgpu_target=gfx908 - chai +rocm amdgpu_target=gfx908 - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx908 + - fftx +rocm amdgpu_target=gfx908 - gasnet +rocm amdgpu_target=gfx908 - ginkgo +rocm amdgpu_target=gfx908 - heffte +rocm amdgpu_target=gfx908 @@ -264,6 +265,7 @@ spack: - caliper +rocm amdgpu_target=gfx90a - chai +rocm amdgpu_target=gfx90a - ecp-data-vis-sdk +paraview +vtkm +rocm amdgpu_target=gfx90a + - fftx +rocm amdgpu_target=gfx90a - gasnet +rocm amdgpu_target=gfx90a - ginkgo +rocm amdgpu_target=gfx90a - heffte +rocm amdgpu_target=gfx90a @@ -302,7 +304,7 @@ spack: ci: pipeline-gen: - build-job: - image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.0:2024.09.11 + image: ghcr.io/spack/spack/ubuntu22.04-runner-amd64-gcc-11.4-rocm6.2.1:2024.10.08 cdash: build-group: E4S ROCm External diff --git a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml index 8928db97ab9a84..0b81e53d568d1d 100644 --- a/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml +++ b/share/spack/gitlab/cloud_pipelines/stacks/e4s/spack.yaml @@ -14,8 +14,6 @@ spack: variants: +mpi binutils: variants: +ld +gold +headers +libiberty ~nls - elfutils: - variants: ~nls hdf5: variants: +fortran +hl +shared libfabric: @@ -29,30 +27,19 @@ spack: +ifpack +ifpack2 +intrepid +intrepid2 +isorropia +kokkos +ml +minitensor +muelu +nox +piro +phalanx +rol +rythmos +sacado +stk +shards +shylu +stokhos +stratimikos +teko +tempus +tpetra +trilinoscouplings +zoltan +zoltan2 +superlu-dist gotype=long_long - xz: - variants: +pic mpi: require: mpich mpich: - require: '~wrapperrpath ~hwloc' + require: '~wrapperrpath ~hwloc target=x86_64_v3' tbb: require: intel-tbb - boost: - variants: +atomic +chrono +container +date_time +exception +filesystem +graph - +iostreams +locale +log +math +mpi +multithreaded +program_options +random - +regex +serialization +shared +signals +stacktrace +system +test +thread +timer - cxxstd=17 visibility=global - libffi: - require: "@3.4.4" vtk-m: - require: "+examples" + require: "+examples target=x86_64_v3" visit: - require: "~gui" - cuda: - version: [11.8.0] + require: "~gui target=x86_64_v3" paraview: # Don't build GUI support or GLX rendering for HPC/container deployments - require: "@5.11 +examples ~qt ^[virtuals=gl] osmesa" + require: "@5.11 +examples ~qt ^[virtuals=gl] osmesa target=x86_64_v3" specs: # CPU @@ -82,6 +69,7 @@ spack: - e4s-cl - ecp-data-vis-sdk ~cuda ~rocm +adios2 +ascent +cinema +darshan +faodel +hdf5 +paraview +pnetcdf +sz +unifyfs +veloc +visit +vtkm +zfp # adios2~cuda, ascent~cuda, darshan-runtime, darshan-util, faodel, hdf5, libcatalyst, parallel-netcdf, paraview~cuda, py-cinemasci, sz, unifyfs, veloc, visit, vtk-m, zfp - exaworks + - fftx - flecsi - flit - flux-core @@ -128,6 +116,7 @@ spack: - netlib-scalapack - nrm - nvhpc + - nwchem - omega-h - openfoam - openmpi @@ -238,6 +227,7 @@ spack: - cusz +cuda cuda_arch=80 - ecp-data-vis-sdk ~rocm +adios2 ~ascent +hdf5 +vtkm +zfp +paraview +cuda cuda_arch=80 # +ascent fails because fides fetch error - exago +mpi +python +raja +hiop ~rocm +cuda cuda_arch=80 ~ipopt ^hiop@1.0.0 ~sparse +mpi +raja ~rocm +cuda cuda_arch=80 #^raja@0.14.0 + - fftx +cuda cuda_arch=80 - flecsi +cuda cuda_arch=80 - ginkgo +cuda cuda_arch=80 - gromacs +cuda cuda_arch=80 @@ -283,6 +273,7 @@ spack: - caliper +cuda cuda_arch=90 - chai +cuda cuda_arch=90 ^umpire ~shared - chapel +cuda cuda_arch=90 + - fftx +cuda cuda_arch=90 - flecsi +cuda cuda_arch=90 - ginkgo +cuda cuda_arch=90 - gromacs +cuda cuda_arch=90 @@ -361,6 +352,7 @@ spack: # - cabana +rocm amdgpu_target=gfx90a # kokkos: https://github.com/spack/spack/issues/44832 # - chapel +rocm amdgpu_target=gfx90a # chapel: need chapel >= 2.2 to support ROCm >5.4 # - exago +mpi +python +raja +hiop +rocm amdgpu_target=gfx90a ~ipopt cxxflags="-Wno-error=non-pod-varargs" ^hiop@1.0.0 ~sparse +mpi +raja +rocm amdgpu_target=gfx90a # hiop: CMake Error at cmake/FindHiopHipLibraries.cmake:23 (find_package) + # - fftx +rocm amdgpu_target=gfx90a # fftx: https://github.com/spack/spack/issues/47034 # - kokkos +rocm amdgpu_target=gfx90a # kokkos: https://github.com/spack/spack/issues/44832 # - lbann ~cuda +rocm amdgpu_target=gfx90a # aluminum: https://github.com/spack/spack/issues/38807 # - legion +rocm amdgpu_target=gfx90a # kokkos: https://github.com/spack/spack/issues/44832 diff --git a/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cpu/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cpu/spack.yaml new file mode 100644 index 00000000000000..23ed6aa665e2fd --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cpu/spack.yaml @@ -0,0 +1,85 @@ +spack: + view: false + packages: + all: + require: + - target=aarch64 + - ~cuda + - ~rocm + mpi: + require: openmpi + + specs: + # Horovod + - py-horovod + + # Hugging Face + - py-transformers + + # JAX + - py-jax + - py-jaxlib + + # Keras + - py-keras backend=tensorflow + - py-keras backend=jax + - py-keras backend=torch + - py-keras-applications + - py-keras-preprocessing + - py-keras2onnx + + # PyTorch + - py-botorch + - py-efficientnet-pytorch + - py-gpytorch + - py-kornia + - py-lightning + - py-pytorch-gradual-warmup-lr + - py-pytorch-lightning + - py-segmentation-models-pytorch + - py-timm + - py-torch + - py-torch-cluster + - py-torch-geometric + - py-torch-nvidia-apex + - py-torch-scatter + - py-torch-sparse + - py-torch-spline-conv + - py-torchaudio + - py-torchdata + - py-torchfile + - py-torchgeo + - py-torchmetrics + - py-torchtext + - py-torchvision + - py-vector-quantize-pytorch + + # scikit-learn + - py-scikit-learn + - py-scikit-learn-extra + + # TensorBoard + - py-tensorboard + - py-tensorboard-data-server + - py-tensorboard-plugin-wit + - py-tensorboardx + + # TensorFlow + - py-tensorflow + - py-tensorflow-datasets + - py-tensorflow-hub + - py-tensorflow-metadata + - py-tensorflow-probability + + # XGBoost + - py-xgboost + + ci: + pipeline-gen: + - build-job: + image: + name: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + entrypoint: [''] + + cdash: + build-group: Machine Learning diff --git a/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cuda/spack.yaml b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cuda/spack.yaml new file mode 100644 index 00000000000000..47f4eda0f12d0c --- /dev/null +++ b/share/spack/gitlab/cloud_pipelines/stacks/ml-linux-aarch64-cuda/spack.yaml @@ -0,0 +1,91 @@ +spack: + view: false + packages: + all: + require: + - target=aarch64 + - ~rocm + - +cuda + - cuda_arch=80 + llvm: + # https://github.com/spack/spack/issues/27999 + require: ~cuda + mpi: + require: openmpi + + specs: + # Horovod + - py-horovod + + # Hugging Face + - py-transformers + + # JAX + - py-jax + - py-jaxlib + + # Keras + - py-keras backend=tensorflow + - py-keras backend=jax + - py-keras backend=torch + - py-keras-applications + - py-keras-preprocessing + - py-keras2onnx + + # PyTorch + - py-botorch + - py-efficientnet-pytorch + - py-gpytorch + - py-kornia + - py-lightning + - py-pytorch-gradual-warmup-lr + - py-pytorch-lightning + - py-segmentation-models-pytorch + - py-timm + - py-torch + - py-torch-cluster + - py-torch-geometric + - py-torch-nvidia-apex + - py-torch-scatter + - py-torch-sparse + - py-torch-spline-conv + - py-torchaudio + - py-torchdata + - py-torchfile + - py-torchgeo + - py-torchmetrics + # torchtext requires older pytorch, which requires older cuda, which doesn't support newer GCC + # - py-torchtext + - py-torchvision + - py-vector-quantize-pytorch + + # scikit-learn + - py-scikit-learn + - py-scikit-learn-extra + + # TensorBoard + - py-tensorboard + - py-tensorboard-data-server + - py-tensorboard-plugin-wit + - py-tensorboardx + + # TensorFlow + - py-tensorflow + - py-tensorflow-datasets + - py-tensorflow-hub + - py-tensorflow-metadata + - py-tensorflow-probability + + # XGBoost + # xgboost requires older cuda, which doesn't support newer GCC + # - py-xgboost + + ci: + pipeline-gen: + - build-job: + image: + name: ghcr.io/spack/ubuntu-24.04:v2024-09-05-v2 + entrypoint: [''] + + cdash: + build-group: Machine Learning diff --git a/share/spack/qa/config_state.py b/share/spack/qa/config_state.py new file mode 100644 index 00000000000000..0c77c31cc6ac28 --- /dev/null +++ b/share/spack/qa/config_state.py @@ -0,0 +1,36 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +"""Used to test correct application of config line scopes in various cases. + +The option `config:cache` is supposed to be False, and overridden to True +from the command line. +""" +import multiprocessing as mp + +import spack.config +import spack.subprocess_context + + +def show_config(serialized_state): + _ = serialized_state.restore() + result = spack.config.CONFIG.get("config:ccache") + if result is not True: + raise RuntimeError(f"Expected config:ccache:true, but got {result}") + + +if __name__ == "__main__": + print("Testing spawn") + ctx = mp.get_context("spawn") + serialized_state = spack.subprocess_context.PackageInstallContext(None, ctx=ctx) + p = ctx.Process(target=show_config, args=(serialized_state,)) + p.start() + p.join() + + print("Testing fork") + ctx = mp.get_context("fork") + serialized_state = spack.subprocess_context.PackageInstallContext(None, ctx=ctx) + p = ctx.Process(target=show_config, args=(serialized_state,)) + p.start() + p.join() diff --git a/share/spack/qa/run-unit-tests b/share/spack/qa/run-unit-tests index 28e34a71208995..71d2979ead22ab 100755 --- a/share/spack/qa/run-unit-tests +++ b/share/spack/qa/run-unit-tests @@ -52,7 +52,7 @@ if [[ "$UNIT_TEST_COVERAGE" != "true" ]] && python -m pytest -VV 2>&1 | grep xdi fi # We are running pytest-cov after the addition of pytest-xdist, since it integrates -# other pugins for pytest automatically. We still need to use "coverage" explicitly +# other plugins for pytest automatically. We still need to use "coverage" explicitly # for the commands above. # # There is a need to pass the configuration file explicitly due to a bug: diff --git a/share/spack/qa/setup-env-test.sh b/share/spack/qa/setup-env-test.sh index ec24166d52dae6..734835e07aafd0 100755 --- a/share/spack/qa/setup-env-test.sh +++ b/share/spack/qa/setup-env-test.sh @@ -207,3 +207,20 @@ fails spack env deactivate echo "Correct error exit codes for unit-test when it fails" fails spack unit-test fail + +title "Testing config override from command line, outside of an environment" +contains 'True' spack -c config:ccache:true python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +contains 'True' spack -C "$SHARE_DIR/qa/configuration" python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +succeeds spack -c config:ccache:true python "$SHARE_DIR/qa/config_state.py" +succeeds spack -C "$SHARE_DIR/qa/configuration" python "$SHARE_DIR/qa/config_state.py" + +title "Testing config override from command line, inside an environment" +spack env activate --temp +spack config add "config:ccache:false" + +contains 'True' spack -c config:ccache:true python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +contains 'True' spack -C "$SHARE_DIR/qa/configuration" python -c "import spack.config;print(spack.config.CONFIG.get('config:ccache'))" +succeeds spack -c config:ccache:true python "$SHARE_DIR/qa/config_state.py" +succeeds spack -C "$SHARE_DIR/qa/configuration" python "$SHARE_DIR/qa/config_state.py" + +spack env deactivate diff --git a/share/spack/setup-env.bat b/share/spack/setup-env.bat new file mode 100644 index 00000000000000..c3b91ece1fccdf --- /dev/null +++ b/share/spack/setup-env.bat @@ -0,0 +1,77 @@ +@ECHO OFF +setlocal EnableDelayedExpansion +:: (c) 2021 Lawrence Livermore National Laboratory +:: To use this file independently of Spack's installer, execute this script in its directory, or add the +:: associated bin directory to your PATH. Invoke to launch Spack Shell. +:: +:: source_dir/spack/bin/spack_cmd.bat +:: +pushd %~dp0..\.. +set SPACK_ROOT=%CD% +pushd %CD%\.. +set spackinstdir=%CD% +popd + + +:: Check if Python is on the PATH +if not defined python_pf_ver ( +(for /f "delims=" %%F in ('where python.exe') do ( + set "python_pf_ver=%%F" + goto :found_python + ) ) 2> NUL +) +:found_python +if not defined python_pf_ver ( + :: If not, look for Python from the Spack installer + :get_builtin + (for /f "tokens=*" %%g in ('dir /b /a:d "!spackinstdir!\Python*"') do ( + set "python_ver=%%g")) 2> NUL + + if not defined python_ver ( + echo Python was not found on your system. + echo Please install Python or add Python to your PATH. + ) else ( + set "py_path=!spackinstdir!\!python_ver!" + set "py_exe=!py_path!\python.exe" + ) + goto :exitpoint +) else ( + :: Python is already on the path + set "py_exe=!python_pf_ver!" + (for /F "tokens=* USEBACKQ" %%F in ( + `"!py_exe!" --version`) do (set "output=%%F")) 2>NUL + if not "!output:Microsoft Store=!"=="!output!" goto :get_builtin + goto :exitpoint +) +:exitpoint +endlocal & ( + set "SPACK_ROOT=%SPACK_ROOT%" + set "spackinstdir=%spackinstdir%" + set "py_path=%py_path%" + set "py_exe=%py_exe%" +) + +set "PATH=%SPACK_ROOT%\bin\;%PATH%" +if defined py_path ( + set "PATH=%py_path%;%PATH%" +) + +if defined py_exe ( + "%py_exe%" "%SPACK_ROOT%\bin\haspywin.py" +) + +if not defined EDITOR ( + set EDITOR=notepad +) + +@echo ********************************************************************** +@echo ** Spack Package Manager +@echo ********************************************************************** + +IF "%1"=="" GOTO CONTINUE +set +GOTO:EOF + +:continue +title Spack +set PROMPT=[spack] %PROMPT% diff --git a/share/spack/setup-env.ps1 b/share/spack/setup-env.ps1 index d67e39f85bc471..88f91f261d07f4 100644 --- a/share/spack/setup-env.ps1 +++ b/share/spack/setup-env.ps1 @@ -60,5 +60,6 @@ function global:prompt $pth = $(Convert-Path $(Get-Location)) | Split-Path -leaf "[spack] PS $pth>" } +[system.console]::title = "Spack" Pop-Location diff --git a/share/spack/spack-completion.bash b/share/spack/spack-completion.bash index 63fe311af6ee17..ddcc27d38c70f2 100644 --- a/share/spack/spack-completion.bash +++ b/share/spack/spack-completion.bash @@ -399,7 +399,7 @@ SPACK_ALIASES="concretise:concretize;containerise:containerize;rm:remove" _spack() { if $list_options then - SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -b --bootstrap -p --profile --sorted-profile --lines -v --verbose --stacktrace --backtrace -V --version --print-shell-vars" + SPACK_COMPREPLY="-h --help -H --all-help --color -c --config -C --config-scope -d --debug --timestamp --pdb -e --env -D --env-dir -E --no-env --use-env-repo -k --insecure -l --enable-locks -L --disable-locks -m --mock -b --bootstrap -p --profile --sorted-profile --lines -v --verbose --stacktrace -t --backtrace -V --version --print-shell-vars" else SPACK_COMPREPLY="add arch audit blame bootstrap build-env buildcache cd change checksum ci clean clone commands compiler compilers concretize concretise config containerize containerise create debug deconcretize dependencies dependents deprecate dev-build develop diff docs edit env extensions external fetch find gc gpg graph help info install license list load location log-parse logs maintainers make-installer mark mirror module patch pkg providers pydoc python reindex remove rm repo resource restage solve spec stage style tags test test-env tutorial undevelop uninstall unit-test unload url verify versions view" fi @@ -415,7 +415,7 @@ _spack_add() { } _spack_arch() { - SPACK_COMPREPLY="-h --help -g --generic-target --known-targets -p --platform -o --operating-system -t --target -f --frontend -b --backend" + SPACK_COMPREPLY="-h --help -g --generic-target --known-targets --family --generic -p --platform -o --operating-system -t --target -f --frontend -b --backend" } _spack_audit() { @@ -693,7 +693,7 @@ _spack_ci() { } _spack_ci_generate() { - SPACK_COMPREPLY="-h --help --output-file --copy-to --optimize --dependencies --buildcache-destination --prune-dag --no-prune-dag --check-index-only --artifacts-root" + SPACK_COMPREPLY="-h --help --output-file --optimize --dependencies --prune-dag --no-prune-dag --check-index-only --artifacts-root" } _spack_ci_rebuild_index() { @@ -1027,14 +1027,14 @@ _spack_env() { then SPACK_COMPREPLY="-h --help" else - SPACK_COMPREPLY="activate deactivate create remove rm rename mv list ls status st loads view update revert depfile" + SPACK_COMPREPLY="activate deactivate create remove rm rename mv list ls status st loads view update revert depfile track untrack" fi } _spack_env_activate() { if $list_options then - SPACK_COMPREPLY="-h --help --sh --csh --fish --bat --pwsh --with-view -v --without-view -V -p --prompt --temp --create --envfile --keep-relative -d --dir" + SPACK_COMPREPLY="-h --help --sh --csh --fish --bat --pwsh -v --with-view -V --without-view -p --prompt --temp --create --envfile --keep-relative -d --dir" else _environments fi @@ -1145,6 +1145,24 @@ _spack_env_depfile() { fi } +_spack_env_track() { + if $list_options + then + SPACK_COMPREPLY="-h --help -n --name -y --yes-to-all" + else + SPACK_COMPREPLY="" + fi +} + +_spack_env_untrack() { + if $list_options + then + SPACK_COMPREPLY="-h --help -f --force -y --yes-to-all" + else + _environments + fi +} + _spack_extensions() { if $list_options then @@ -1441,7 +1459,7 @@ _spack_mirror_destroy() { _spack_mirror_add() { if $list_options then - SPACK_COMPREPLY="-h --help --scope --type --autopush --unsigned --signed --s3-access-key-id --s3-access-key-secret --s3-access-token --s3-profile --s3-endpoint-url --oci-username --oci-password" + SPACK_COMPREPLY="-h --help --scope --type --autopush --unsigned --signed --s3-access-key-id --s3-access-key-id-variable --s3-access-key-secret --s3-access-key-secret-variable --s3-access-token --s3-access-token-variable --s3-profile --s3-endpoint-url --oci-username --oci-username-variable --oci-password --oci-password-variable" else _mirrors fi @@ -1468,7 +1486,7 @@ _spack_mirror_rm() { _spack_mirror_set_url() { if $list_options then - SPACK_COMPREPLY="-h --help --push --fetch --scope --s3-access-key-id --s3-access-key-secret --s3-access-token --s3-profile --s3-endpoint-url --oci-username --oci-password" + SPACK_COMPREPLY="-h --help --push --fetch --scope --s3-access-key-id --s3-access-key-id-variable --s3-access-key-secret --s3-access-key-secret-variable --s3-access-token --s3-access-token-variable --s3-profile --s3-endpoint-url --oci-username --oci-username-variable --oci-password --oci-password-variable" else _mirrors fi @@ -1477,7 +1495,7 @@ _spack_mirror_set_url() { _spack_mirror_set() { if $list_options then - SPACK_COMPREPLY="-h --help --push --fetch --type --url --autopush --no-autopush --unsigned --signed --scope --s3-access-key-id --s3-access-key-secret --s3-access-token --s3-profile --s3-endpoint-url --oci-username --oci-password" + SPACK_COMPREPLY="-h --help --push --fetch --type --url --autopush --no-autopush --unsigned --signed --scope --s3-access-key-id --s3-access-key-id-variable --s3-access-key-secret --s3-access-key-secret-variable --s3-access-token --s3-access-token-variable --s3-profile --s3-endpoint-url --oci-username --oci-username-variable --oci-password --oci-password-variable" else _mirrors fi @@ -1835,7 +1853,7 @@ _spack_restage() { _spack_solve() { if $list_options then - SPACK_COMPREPLY="-h --help --show -l --long -L --very-long -N --namespaces -I --install-status --no-install-status -y --yaml -j --json -c --cover -t --types --timers --stats -U --fresh --reuse --fresh-roots --reuse-deps --deprecated" + SPACK_COMPREPLY="-h --help --show --timers --stats -l --long -L --very-long -N --namespaces -I --install-status --no-install-status -y --yaml -j --json --format -c --cover -t --types -U --fresh --reuse --fresh-roots --reuse-deps --deprecated" else _all_packages fi diff --git a/share/spack/spack-completion.fish b/share/spack/spack-completion.fish index 538823852ad88a..87aae05f6fa1b2 100644 --- a/share/spack/spack-completion.fish +++ b/share/spack/spack-completion.fish @@ -347,7 +347,7 @@ complete -c spack --erase # Everything below here is auto-generated. # spack -set -g __fish_spack_optspecs_spack h/help H/all-help color= c/config= C/config-scope= d/debug timestamp pdb e/env= D/env-dir= E/no-env use-env-repo k/insecure l/enable-locks L/disable-locks m/mock b/bootstrap p/profile sorted-profile= lines= v/verbose stacktrace backtrace V/version print-shell-vars= +set -g __fish_spack_optspecs_spack h/help H/all-help color= c/config= C/config-scope= d/debug timestamp pdb e/env= D/env-dir= E/no-env use-env-repo k/insecure l/enable-locks L/disable-locks m/mock b/bootstrap p/profile sorted-profile= lines= v/verbose stacktrace t/backtrace V/version print-shell-vars= complete -c spack -n '__fish_spack_using_command_pos 0 ' -f -a add -d 'add a spec to an environment' complete -c spack -n '__fish_spack_using_command_pos 0 ' -f -a arch -d 'print architecture information about this machine' complete -c spack -n '__fish_spack_using_command_pos 0 ' -f -a audit -d 'audit configuration files, packages, etc.' @@ -473,8 +473,8 @@ complete -c spack -n '__fish_spack_using_command ' -s v -l verbose -f -a verbose complete -c spack -n '__fish_spack_using_command ' -s v -l verbose -d 'print additional output during builds' complete -c spack -n '__fish_spack_using_command ' -l stacktrace -f -a stacktrace complete -c spack -n '__fish_spack_using_command ' -l stacktrace -d 'add stacktraces to all printed statements' -complete -c spack -n '__fish_spack_using_command ' -l backtrace -f -a backtrace -complete -c spack -n '__fish_spack_using_command ' -l backtrace -d 'always show backtraces for exceptions' +complete -c spack -n '__fish_spack_using_command ' -s t -l backtrace -f -a backtrace +complete -c spack -n '__fish_spack_using_command ' -s t -l backtrace -d 'always show backtraces for exceptions' complete -c spack -n '__fish_spack_using_command ' -s V -l version -f -a version complete -c spack -n '__fish_spack_using_command ' -s V -l version -d 'show version number and exit' complete -c spack -n '__fish_spack_using_command ' -l print-shell-vars -r -f -a print_shell_vars @@ -489,13 +489,17 @@ complete -c spack -n '__fish_spack_using_command add' -s l -l list-name -r -f -a complete -c spack -n '__fish_spack_using_command add' -s l -l list-name -r -d 'name of the list to add specs to' # spack arch -set -g __fish_spack_optspecs_spack_arch h/help g/generic-target known-targets p/platform o/operating-system t/target f/frontend b/backend +set -g __fish_spack_optspecs_spack_arch h/help g/generic-target known-targets family generic p/platform o/operating-system t/target f/frontend b/backend complete -c spack -n '__fish_spack_using_command arch' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command arch' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command arch' -s g -l generic-target -f -a generic_target -complete -c spack -n '__fish_spack_using_command arch' -s g -l generic-target -d 'show the best generic target' +complete -c spack -n '__fish_spack_using_command arch' -s g -l generic-target -d 'show the best generic target (deprecated)' complete -c spack -n '__fish_spack_using_command arch' -l known-targets -f -a known_targets complete -c spack -n '__fish_spack_using_command arch' -l known-targets -d 'show a list of all known targets and exit' +complete -c spack -n '__fish_spack_using_command arch' -l family -f -a family +complete -c spack -n '__fish_spack_using_command arch' -l family -d 'print generic ISA (x86_64, aarch64, ppc64le, ...)' +complete -c spack -n '__fish_spack_using_command arch' -l generic -f -a generic +complete -c spack -n '__fish_spack_using_command arch' -l generic -d 'print feature level (x86_64_v3, armv8.4a, ...)' complete -c spack -n '__fish_spack_using_command arch' -s p -l platform -f -a platform complete -c spack -n '__fish_spack_using_command arch' -s p -l platform -d 'print only the platform' complete -c spack -n '__fish_spack_using_command arch' -s o -l operating-system -f -a operating_system @@ -951,19 +955,15 @@ complete -c spack -n '__fish_spack_using_command ci' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command ci' -s h -l help -d 'show this help message and exit' # spack ci generate -set -g __fish_spack_optspecs_spack_ci_generate h/help output-file= copy-to= optimize dependencies buildcache-destination= prune-dag no-prune-dag check-index-only artifacts-root= +set -g __fish_spack_optspecs_spack_ci_generate h/help output-file= optimize dependencies prune-dag no-prune-dag check-index-only artifacts-root= complete -c spack -n '__fish_spack_using_command ci generate' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command ci generate' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command ci generate' -l output-file -r -f -a output_file complete -c spack -n '__fish_spack_using_command ci generate' -l output-file -r -d 'pathname for the generated gitlab ci yaml file' -complete -c spack -n '__fish_spack_using_command ci generate' -l copy-to -r -f -a copy_to -complete -c spack -n '__fish_spack_using_command ci generate' -l copy-to -r -d 'path to additional directory for job files' complete -c spack -n '__fish_spack_using_command ci generate' -l optimize -f -a optimize complete -c spack -n '__fish_spack_using_command ci generate' -l optimize -d '(DEPRECATED) optimize the gitlab yaml file for size' complete -c spack -n '__fish_spack_using_command ci generate' -l dependencies -f -a dependencies complete -c spack -n '__fish_spack_using_command ci generate' -l dependencies -d '(DEPRECATED) disable DAG scheduling (use '"'"'plain'"'"' dependencies)' -complete -c spack -n '__fish_spack_using_command ci generate' -l buildcache-destination -r -f -a buildcache_destination -complete -c spack -n '__fish_spack_using_command ci generate' -l buildcache-destination -r -d 'override the mirror configured in the environment' complete -c spack -n '__fish_spack_using_command ci generate' -l prune-dag -f -a prune_dag complete -c spack -n '__fish_spack_using_command ci generate' -l prune-dag -d 'skip up-to-date specs' complete -c spack -n '__fish_spack_using_command ci generate' -l no-prune-dag -f -a prune_dag @@ -1482,22 +1482,24 @@ complete -c spack -n '__fish_spack_using_command edit' -s N -l namespace -r -d ' # spack env set -g __fish_spack_optspecs_spack_env h/help -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a activate -d 'set the current environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a deactivate -d 'deactivate any active environment in the shell' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a activate -d 'set the active environment' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a deactivate -d 'deactivate the active environment' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a create -d 'create a new environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a remove -d 'remove an existing environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a rm -d 'remove an existing environment' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a remove -d 'remove managed environment(s)' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a rm -d 'remove managed environment(s)' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a rename -d 'rename an existing environment' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a mv -d 'rename an existing environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a list -d 'list managed environments' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a ls -d 'list managed environments' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a status -d 'print whether there is an active environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a st -d 'print whether there is an active environment' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a list -d 'list all managed environments' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a ls -d 'list all managed environments' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a status -d 'print active environment status' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a st -d 'print active environment status' complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a loads -d 'list modules for an installed environment '"'"'(see spack module loads)'"'"'' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a view -d 'manage a view associated with the environment' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a update -d 'update environments to the latest format' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a revert -d 'restore environments to their state before update' -complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a depfile -d 'generate a depfile from the concrete environment specs' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a view -d 'manage the environment'"'"'s view' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a update -d 'update the environment manifest to the latest schema format' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a revert -d 'restore the environment manifest to its previous format' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a depfile -d 'generate a depfile to exploit parallel builds across specs' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a track -d 'track an environment from a directory in Spack' +complete -c spack -n '__fish_spack_using_command_pos 0 env' -f -a untrack -d 'track an environment from a directory in Spack' complete -c spack -n '__fish_spack_using_command env' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env' -s h -l help -d 'show this help message and exit' @@ -1516,20 +1518,20 @@ complete -c spack -n '__fish_spack_using_command env activate' -l bat -f -a shel complete -c spack -n '__fish_spack_using_command env activate' -l bat -d 'print bat commands to activate the environment' complete -c spack -n '__fish_spack_using_command env activate' -l pwsh -f -a shell complete -c spack -n '__fish_spack_using_command env activate' -l pwsh -d 'print powershell commands to activate environment' -complete -c spack -n '__fish_spack_using_command env activate' -l with-view -s v -r -f -a with_view -complete -c spack -n '__fish_spack_using_command env activate' -l with-view -s v -r -d 'set runtime environment variables for specific view' -complete -c spack -n '__fish_spack_using_command env activate' -l without-view -s V -f -a without_view -complete -c spack -n '__fish_spack_using_command env activate' -l without-view -s V -d 'do not set runtime environment variables for any view' +complete -c spack -n '__fish_spack_using_command env activate' -s v -l with-view -r -f -a with_view +complete -c spack -n '__fish_spack_using_command env activate' -s v -l with-view -r -d 'set runtime environment variables for the named view' +complete -c spack -n '__fish_spack_using_command env activate' -s V -l without-view -f -a without_view +complete -c spack -n '__fish_spack_using_command env activate' -s V -l without-view -d 'do not set runtime environment variables for any view' complete -c spack -n '__fish_spack_using_command env activate' -s p -l prompt -f -a prompt -complete -c spack -n '__fish_spack_using_command env activate' -s p -l prompt -d 'decorate the command line prompt when activating' +complete -c spack -n '__fish_spack_using_command env activate' -s p -l prompt -d 'add the active environment to the command line prompt' complete -c spack -n '__fish_spack_using_command env activate' -l temp -f -a temp -complete -c spack -n '__fish_spack_using_command env activate' -l temp -d 'create and activate an environment in a temporary directory' +complete -c spack -n '__fish_spack_using_command env activate' -l temp -d 'create and activate in a temporary directory' complete -c spack -n '__fish_spack_using_command env activate' -l create -f -a create complete -c spack -n '__fish_spack_using_command env activate' -l create -d 'create and activate the environment if it doesn'"'"'t exist' complete -c spack -n '__fish_spack_using_command env activate' -l envfile -r -f -a envfile -complete -c spack -n '__fish_spack_using_command env activate' -l envfile -r -d 'either a lockfile (must end with '"'"'.json'"'"' or '"'"'.lock'"'"') or a manifest file' +complete -c spack -n '__fish_spack_using_command env activate' -l envfile -r -d 'manifest or lock file (ends with '"'"'.json'"'"' or '"'"'.lock'"'"')' complete -c spack -n '__fish_spack_using_command env activate' -l keep-relative -f -a keep_relative -complete -c spack -n '__fish_spack_using_command env activate' -l keep-relative -d 'copy relative develop paths verbatim into the new environment when initializing from envfile' +complete -c spack -n '__fish_spack_using_command env activate' -l keep-relative -d 'copy envfile'"'"'s relative develop paths verbatim when create' complete -c spack -n '__fish_spack_using_command env activate' -s d -l dir -f -a dir complete -c spack -n '__fish_spack_using_command env activate' -s d -l dir -d 'activate environment based on the directory supplied' @@ -1556,13 +1558,13 @@ complete -c spack -n '__fish_spack_using_command env create' -s h -l help -d 'sh complete -c spack -n '__fish_spack_using_command env create' -s d -l dir -f -a dir complete -c spack -n '__fish_spack_using_command env create' -s d -l dir -d 'create an environment in a specific directory' complete -c spack -n '__fish_spack_using_command env create' -l keep-relative -f -a keep_relative -complete -c spack -n '__fish_spack_using_command env create' -l keep-relative -d 'copy relative develop paths verbatim into the new environment when initializing from envfile' +complete -c spack -n '__fish_spack_using_command env create' -l keep-relative -d 'copy envfile'"'"'s relative develop paths verbatim' complete -c spack -n '__fish_spack_using_command env create' -l without-view -f -a without_view complete -c spack -n '__fish_spack_using_command env create' -l without-view -d 'do not maintain a view for this environment' complete -c spack -n '__fish_spack_using_command env create' -l with-view -r -f -a with_view -complete -c spack -n '__fish_spack_using_command env create' -l with-view -r -d 'specify that this environment should maintain a view at the specified path (by default the view is maintained in the environment directory)' +complete -c spack -n '__fish_spack_using_command env create' -l with-view -r -d 'maintain view at WITH_VIEW (vs. environment'"'"'s directory)' complete -c spack -n '__fish_spack_using_command env create' -l include-concrete -r -f -a include_concrete -complete -c spack -n '__fish_spack_using_command env create' -l include-concrete -r -d 'name of old environment to copy specs from' +complete -c spack -n '__fish_spack_using_command env create' -l include-concrete -r -d 'copy concrete specs from INCLUDE_CONCRETE'"'"'s environment' # spack env remove set -g __fish_spack_optspecs_spack_env_remove h/help y/yes-to-all f/force @@ -1572,7 +1574,7 @@ complete -c spack -n '__fish_spack_using_command env remove' -s h -l help -d 'sh complete -c spack -n '__fish_spack_using_command env remove' -s y -l yes-to-all -f -a yes_to_all complete -c spack -n '__fish_spack_using_command env remove' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' complete -c spack -n '__fish_spack_using_command env remove' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env remove' -s f -l force -d 'remove the environment even if it is included in another environment' +complete -c spack -n '__fish_spack_using_command env remove' -s f -l force -d 'force removal even when included in other environment(s)' # spack env rm set -g __fish_spack_optspecs_spack_env_rm h/help y/yes-to-all f/force @@ -1582,7 +1584,7 @@ complete -c spack -n '__fish_spack_using_command env rm' -s h -l help -d 'show t complete -c spack -n '__fish_spack_using_command env rm' -s y -l yes-to-all -f -a yes_to_all complete -c spack -n '__fish_spack_using_command env rm' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' complete -c spack -n '__fish_spack_using_command env rm' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env rm' -s f -l force -d 'remove the environment even if it is included in another environment' +complete -c spack -n '__fish_spack_using_command env rm' -s f -l force -d 'force removal even when included in other environment(s)' # spack env rename set -g __fish_spack_optspecs_spack_env_rename h/help d/dir f/force @@ -1590,9 +1592,9 @@ set -g __fish_spack_optspecs_spack_env_rename h/help d/dir f/force complete -c spack -n '__fish_spack_using_command env rename' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env rename' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command env rename' -s d -l dir -f -a dir -complete -c spack -n '__fish_spack_using_command env rename' -s d -l dir -d 'the specified arguments correspond to directory paths' +complete -c spack -n '__fish_spack_using_command env rename' -s d -l dir -d 'positional arguments are environment directory paths' complete -c spack -n '__fish_spack_using_command env rename' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env rename' -s f -l force -d 'allow overwriting of an existing environment' +complete -c spack -n '__fish_spack_using_command env rename' -s f -l force -d 'force renaming even if overwriting an existing environment' # spack env mv set -g __fish_spack_optspecs_spack_env_mv h/help d/dir f/force @@ -1600,9 +1602,9 @@ set -g __fish_spack_optspecs_spack_env_mv h/help d/dir f/force complete -c spack -n '__fish_spack_using_command env mv' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env mv' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command env mv' -s d -l dir -f -a dir -complete -c spack -n '__fish_spack_using_command env mv' -s d -l dir -d 'the specified arguments correspond to directory paths' +complete -c spack -n '__fish_spack_using_command env mv' -s d -l dir -d 'positional arguments are environment directory paths' complete -c spack -n '__fish_spack_using_command env mv' -s f -l force -f -a force -complete -c spack -n '__fish_spack_using_command env mv' -s f -l force -d 'allow overwriting of an existing environment' +complete -c spack -n '__fish_spack_using_command env mv' -s f -l force -d 'force renaming even if overwriting an existing environment' # spack env list set -g __fish_spack_optspecs_spack_env_list h/help @@ -1669,15 +1671,35 @@ complete -c spack -n '__fish_spack_using_command_pos_remainder 0 env depfile' -f complete -c spack -n '__fish_spack_using_command env depfile' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command env depfile' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command env depfile' -l make-prefix -l make-target-prefix -r -f -a make_prefix -complete -c spack -n '__fish_spack_using_command env depfile' -l make-prefix -l make-target-prefix -r -d 'prefix Makefile targets (and variables) with /' +complete -c spack -n '__fish_spack_using_command env depfile' -l make-prefix -l make-target-prefix -r -d 'prefix Makefile targets/variables with /,' complete -c spack -n '__fish_spack_using_command env depfile' -l make-disable-jobserver -f -a jobserver complete -c spack -n '__fish_spack_using_command env depfile' -l make-disable-jobserver -d 'disable POSIX jobserver support' complete -c spack -n '__fish_spack_using_command env depfile' -l use-buildcache -r -f -a use_buildcache -complete -c spack -n '__fish_spack_using_command env depfile' -l use-buildcache -r -d 'when using `only`, redundant build dependencies are pruned from the DAG' +complete -c spack -n '__fish_spack_using_command env depfile' -l use-buildcache -r -d 'use `only` to prune redundant build dependencies' complete -c spack -n '__fish_spack_using_command env depfile' -s o -l output -r -f -a output complete -c spack -n '__fish_spack_using_command env depfile' -s o -l output -r -d 'write the depfile to FILE rather than to stdout' complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -f -a make -complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -d 'specify the depfile type' +complete -c spack -n '__fish_spack_using_command env depfile' -s G -l generator -r -d 'specify the depfile type (only supports `make`)' + +# spack env track +set -g __fish_spack_optspecs_spack_env_track h/help n/name= y/yes-to-all +complete -c spack -n '__fish_spack_using_command_pos 0 env track' -f -a '(__fish_spack_environments)' +complete -c spack -n '__fish_spack_using_command env track' -s h -l help -f -a help +complete -c spack -n '__fish_spack_using_command env track' -s h -l help -d 'show this help message and exit' +complete -c spack -n '__fish_spack_using_command env track' -s n -l name -r -f -a name +complete -c spack -n '__fish_spack_using_command env track' -s n -l name -r -d 'custom environment name' +complete -c spack -n '__fish_spack_using_command env track' -s y -l yes-to-all -f -a yes_to_all +complete -c spack -n '__fish_spack_using_command env track' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' + +# spack env untrack +set -g __fish_spack_optspecs_spack_env_untrack h/help f/force y/yes-to-all +complete -c spack -n '__fish_spack_using_command_pos_remainder 0 env untrack' -f -a '(__fish_spack_environments)' +complete -c spack -n '__fish_spack_using_command env untrack' -s h -l help -f -a help +complete -c spack -n '__fish_spack_using_command env untrack' -s h -l help -d 'show this help message and exit' +complete -c spack -n '__fish_spack_using_command env untrack' -s f -l force -f -a force +complete -c spack -n '__fish_spack_using_command env untrack' -s f -l force -d 'force unlink even when environment is active' +complete -c spack -n '__fish_spack_using_command env untrack' -s y -l yes-to-all -f -a yes_to_all +complete -c spack -n '__fish_spack_using_command env untrack' -s y -l yes-to-all -d 'assume "yes" is the answer to every confirmation request' # spack extensions set -g __fish_spack_optspecs_spack_extensions h/help l/long L/very-long d/deps p/paths s/show= @@ -2283,7 +2305,7 @@ complete -c spack -n '__fish_spack_using_command mirror destroy' -l mirror-url - complete -c spack -n '__fish_spack_using_command mirror destroy' -l mirror-url -r -d 'find mirror to destroy by url' # spack mirror add -set -g __fish_spack_optspecs_spack_mirror_add h/help scope= type= autopush unsigned signed s3-access-key-id= s3-access-key-secret= s3-access-token= s3-profile= s3-endpoint-url= oci-username= oci-password= +set -g __fish_spack_optspecs_spack_mirror_add h/help scope= type= autopush unsigned signed s3-access-key-id= s3-access-key-id-variable= s3-access-key-secret= s3-access-key-secret-variable= s3-access-token= s3-access-token-variable= s3-profile= s3-endpoint-url= oci-username= oci-username-variable= oci-password= oci-password-variable= complete -c spack -n '__fish_spack_using_command_pos 0 mirror add' -f complete -c spack -n '__fish_spack_using_command mirror add' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command mirror add' -s h -l help -d 'show this help message and exit' @@ -2299,18 +2321,28 @@ complete -c spack -n '__fish_spack_using_command mirror add' -l signed -f -a sig complete -c spack -n '__fish_spack_using_command mirror add' -l signed -d 'require signing and signature verification when pushing and installing from this build cache' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id -r -f -a s3_access_key_id complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id -r -d 'ID string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id-variable -r -f -a s3_access_key_id_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-id-variable -r -d 'environment variable containing ID string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret -r -f -a s3_access_key_secret complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret -r -d 'secret string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret-variable -r -f -a s3_access_key_secret_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-key-secret-variable -r -d 'environment variable containing secret string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token -r -f -a s3_access_token complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token -r -d 'access token to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token-variable -r -f -a s3_access_token_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l s3-access-token-variable -r -d 'environment variable containing access token to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-profile -r -f -a s3_profile complete -c spack -n '__fish_spack_using_command mirror add' -l s3-profile -r -d 'S3 profile name to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l s3-endpoint-url -r -f -a s3_endpoint_url complete -c spack -n '__fish_spack_using_command mirror add' -l s3-endpoint-url -r -d 'endpoint URL to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username -r -f -a oci_username complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username -r -d 'username to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username-variable -r -f -a oci_username_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-username-variable -r -d 'environment variable containing username to use to connect to this OCI mirror' complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password -r -f -a oci_password complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password -r -d 'password to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password-variable -r -f -a oci_password_variable +complete -c spack -n '__fish_spack_using_command mirror add' -l oci-password-variable -r -d 'environment variable containing password to use to connect to this OCI mirror' # spack mirror remove set -g __fish_spack_optspecs_spack_mirror_remove h/help scope= @@ -2329,7 +2361,7 @@ complete -c spack -n '__fish_spack_using_command mirror rm' -l scope -r -f -a '_ complete -c spack -n '__fish_spack_using_command mirror rm' -l scope -r -d 'configuration scope to modify' # spack mirror set-url -set -g __fish_spack_optspecs_spack_mirror_set_url h/help push fetch scope= s3-access-key-id= s3-access-key-secret= s3-access-token= s3-profile= s3-endpoint-url= oci-username= oci-password= +set -g __fish_spack_optspecs_spack_mirror_set_url h/help push fetch scope= s3-access-key-id= s3-access-key-id-variable= s3-access-key-secret= s3-access-key-secret-variable= s3-access-token= s3-access-token-variable= s3-profile= s3-endpoint-url= oci-username= oci-username-variable= oci-password= oci-password-variable= complete -c spack -n '__fish_spack_using_command_pos 0 mirror set-url' -f -a '(__fish_spack_mirrors)' complete -c spack -n '__fish_spack_using_command mirror set-url' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command mirror set-url' -s h -l help -d 'show this help message and exit' @@ -2341,21 +2373,31 @@ complete -c spack -n '__fish_spack_using_command mirror set-url' -l scope -r -f complete -c spack -n '__fish_spack_using_command mirror set-url' -l scope -r -d 'configuration scope to modify' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id -r -f -a s3_access_key_id complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id -r -d 'ID string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id-variable -r -f -a s3_access_key_id_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-id-variable -r -d 'environment variable containing ID string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret -r -f -a s3_access_key_secret complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret -r -d 'secret string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret-variable -r -f -a s3_access_key_secret_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-key-secret-variable -r -d 'environment variable containing secret string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token -r -f -a s3_access_token complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token -r -d 'access token to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token-variable -r -f -a s3_access_token_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-access-token-variable -r -d 'environment variable containing access token to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-profile -r -f -a s3_profile complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-profile -r -d 'S3 profile name to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-endpoint-url -r -f -a s3_endpoint_url complete -c spack -n '__fish_spack_using_command mirror set-url' -l s3-endpoint-url -r -d 'endpoint URL to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username -r -f -a oci_username complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username -r -d 'username to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username-variable -r -f -a oci_username_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-username-variable -r -d 'environment variable containing username to use to connect to this OCI mirror' complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password -r -f -a oci_password complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password -r -d 'password to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password-variable -r -f -a oci_password_variable +complete -c spack -n '__fish_spack_using_command mirror set-url' -l oci-password-variable -r -d 'environment variable containing password to use to connect to this OCI mirror' # spack mirror set -set -g __fish_spack_optspecs_spack_mirror_set h/help push fetch type= url= autopush no-autopush unsigned signed scope= s3-access-key-id= s3-access-key-secret= s3-access-token= s3-profile= s3-endpoint-url= oci-username= oci-password= +set -g __fish_spack_optspecs_spack_mirror_set h/help push fetch type= url= autopush no-autopush unsigned signed scope= s3-access-key-id= s3-access-key-id-variable= s3-access-key-secret= s3-access-key-secret-variable= s3-access-token= s3-access-token-variable= s3-profile= s3-endpoint-url= oci-username= oci-username-variable= oci-password= oci-password-variable= complete -c spack -n '__fish_spack_using_command_pos 0 mirror set' -f -a '(__fish_spack_mirrors)' complete -c spack -n '__fish_spack_using_command mirror set' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command mirror set' -s h -l help -d 'show this help message and exit' @@ -2379,18 +2421,28 @@ complete -c spack -n '__fish_spack_using_command mirror set' -l scope -r -f -a ' complete -c spack -n '__fish_spack_using_command mirror set' -l scope -r -d 'configuration scope to modify' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id -r -f -a s3_access_key_id complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id -r -d 'ID string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id-variable -r -f -a s3_access_key_id_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-id-variable -r -d 'environment variable containing ID string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret -r -f -a s3_access_key_secret complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret -r -d 'secret string to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret-variable -r -f -a s3_access_key_secret_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-key-secret-variable -r -d 'environment variable containing secret string to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token -r -f -a s3_access_token complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token -r -d 'access token to use to connect to this S3 mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token-variable -r -f -a s3_access_token_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l s3-access-token-variable -r -d 'environment variable containing access token to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-profile -r -f -a s3_profile complete -c spack -n '__fish_spack_using_command mirror set' -l s3-profile -r -d 'S3 profile name to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l s3-endpoint-url -r -f -a s3_endpoint_url complete -c spack -n '__fish_spack_using_command mirror set' -l s3-endpoint-url -r -d 'endpoint URL to use to connect to this S3 mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username -r -f -a oci_username complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username -r -d 'username to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username-variable -r -f -a oci_username_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-username-variable -r -d 'environment variable containing username to use to connect to this OCI mirror' complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password -r -f -a oci_password complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password -r -d 'password to use to connect to this OCI mirror' +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password-variable -r -f -a oci_password_variable +complete -c spack -n '__fish_spack_using_command mirror set' -l oci-password-variable -r -d 'environment variable containing password to use to connect to this OCI mirror' # spack mirror list set -g __fish_spack_optspecs_spack_mirror_list h/help scope= @@ -2757,12 +2809,16 @@ complete -c spack -n '__fish_spack_using_command restage' -s h -l help -f -a hel complete -c spack -n '__fish_spack_using_command restage' -s h -l help -d 'show this help message and exit' # spack solve -set -g __fish_spack_optspecs_spack_solve h/help show= l/long L/very-long N/namespaces I/install-status no-install-status y/yaml j/json c/cover= t/types timers stats U/fresh reuse fresh-roots deprecated +set -g __fish_spack_optspecs_spack_solve h/help show= timers stats l/long L/very-long N/namespaces I/install-status no-install-status y/yaml j/json format= c/cover= t/types U/fresh reuse fresh-roots deprecated complete -c spack -n '__fish_spack_using_command_pos_remainder 0 solve' -f -k -a '(__fish_spack_specs_or_id)' complete -c spack -n '__fish_spack_using_command solve' -s h -l help -f -a help complete -c spack -n '__fish_spack_using_command solve' -s h -l help -d 'show this help message and exit' complete -c spack -n '__fish_spack_using_command solve' -l show -r -f -a show complete -c spack -n '__fish_spack_using_command solve' -l show -r -d 'select outputs' +complete -c spack -n '__fish_spack_using_command solve' -l timers -f -a timers +complete -c spack -n '__fish_spack_using_command solve' -l timers -d 'print out timers for different solve phases' +complete -c spack -n '__fish_spack_using_command solve' -l stats -f -a stats +complete -c spack -n '__fish_spack_using_command solve' -l stats -d 'print out statistics from clingo' complete -c spack -n '__fish_spack_using_command solve' -s l -l long -f -a long complete -c spack -n '__fish_spack_using_command solve' -s l -l long -d 'show dependency hashes as well as versions' complete -c spack -n '__fish_spack_using_command solve' -s L -l very-long -f -a very_long @@ -2774,17 +2830,15 @@ complete -c spack -n '__fish_spack_using_command solve' -s I -l install-status - complete -c spack -n '__fish_spack_using_command solve' -l no-install-status -f -a install_status complete -c spack -n '__fish_spack_using_command solve' -l no-install-status -d 'do not show install status annotations' complete -c spack -n '__fish_spack_using_command solve' -s y -l yaml -f -a format -complete -c spack -n '__fish_spack_using_command solve' -s y -l yaml -d 'print concrete spec as yaml' +complete -c spack -n '__fish_spack_using_command solve' -s y -l yaml -d 'print concrete spec as YAML' complete -c spack -n '__fish_spack_using_command solve' -s j -l json -f -a format -complete -c spack -n '__fish_spack_using_command solve' -s j -l json -d 'print concrete spec as json' +complete -c spack -n '__fish_spack_using_command solve' -s j -l json -d 'print concrete spec as JSON' +complete -c spack -n '__fish_spack_using_command solve' -l format -r -f -a format +complete -c spack -n '__fish_spack_using_command solve' -l format -r -d 'print concrete spec with the specified format string' complete -c spack -n '__fish_spack_using_command solve' -s c -l cover -r -f -a 'nodes edges paths' complete -c spack -n '__fish_spack_using_command solve' -s c -l cover -r -d 'how extensively to traverse the DAG (default: nodes)' complete -c spack -n '__fish_spack_using_command solve' -s t -l types -f -a types complete -c spack -n '__fish_spack_using_command solve' -s t -l types -d 'show dependency types' -complete -c spack -n '__fish_spack_using_command solve' -l timers -f -a timers -complete -c spack -n '__fish_spack_using_command solve' -l timers -d 'print out timers for different solve phases' -complete -c spack -n '__fish_spack_using_command solve' -l stats -f -a stats -complete -c spack -n '__fish_spack_using_command solve' -l stats -d 'print out statistics from clingo' complete -c spack -n '__fish_spack_using_command solve' -s U -l fresh -f -a concretizer_reuse complete -c spack -n '__fish_spack_using_command solve' -s U -l fresh -d 'do not reuse installed deps; build newest configuration' complete -c spack -n '__fish_spack_using_command solve' -l reuse -f -a concretizer_reuse diff --git a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py index 31c88f4b08564a..b882fc9b6595b6 100644 --- a/var/spack/repos/builtin.mock/packages/attributes-foo/package.py +++ b/var/spack/repos/builtin.mock/packages/attributes-foo/package.py @@ -44,7 +44,7 @@ def libs(self): # Header provided by the bar virutal package @property def bar_headers(self): - return find_headers("bar/bar", root=self.home.include, recursive=False) + return find_headers("bar", root=self.home.include, recursive=True) # Libary provided by the bar virtual package @property @@ -59,7 +59,7 @@ def baz_home(self): # Header provided by the baz virtual package @property def baz_headers(self): - return find_headers("baz/baz", root=self.baz_home.include, recursive=False) + return find_headers("baz", root=self.baz_home.include, recursive=True) # Library provided by the baz virtual package @property diff --git a/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py b/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py index 5d7f5e98170c78..9a8646baece5ed 100644 --- a/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py +++ b/var/spack/repos/builtin.mock/packages/dependency-foo-bar/package.py @@ -18,3 +18,5 @@ class DependencyFooBar(Package): variant("foo", default=True, description="") variant("bar", default=False, description="") + + depends_on("second-dependency-foo-bar-fee") diff --git a/var/spack/repos/builtin.mock/packages/depends-on-manyvariants/package.py b/var/spack/repos/builtin.mock/packages/depends-on-manyvariants/package.py new file mode 100644 index 00000000000000..f1314471f917b2 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/depends-on-manyvariants/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class DependsOnManyvariants(Package): + """ + A package with a dependency on `manyvariants`, so that `manyvariants` can + be spliced in tests. + """ + + homepage = "https://www.test.com" + has_code = False + + version("1.0") + version("2.0") + + depends_on("manyvariants@1.0", when="@1.0") + depends_on("manyvariants@2.0", when="@2.0") + + def install(self, spec, prefix): + touch(prefix.bar) diff --git a/var/spack/repos/builtin.mock/packages/depends-on-virtual-with-abi/package.py b/var/spack/repos/builtin.mock/packages/depends-on-virtual-with-abi/package.py new file mode 100644 index 00000000000000..9f281f337b2d35 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/depends-on-virtual-with-abi/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class DependsOnVirtualWithAbi(Package): + """ + This has a virtual dependency on `virtual-with-abi`, mostly for testing + automatic splicing of providers. + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + depends_on("virtual-with-abi") diff --git a/var/spack/repos/builtin.mock/packages/direct-dep-foo-bar/package.py b/var/spack/repos/builtin.mock/packages/direct-dep-foo-bar/package.py new file mode 100644 index 00000000000000..9f4fc5d8034da5 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/direct-dep-foo-bar/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class DirectDepFooBar(Package): + """This package has a variant "bar", which is False by default, and + variant "foo" which is True by default. + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/direct-dep-foo-bar-1.0.tar.gz" + + version("1.0", md5="567890abcdefg12345678900987654321") + + variant("foo", default=True, description="") + variant("bar", default=False, description="") + + depends_on("second-dependency-foo-bar-fee") diff --git a/var/spack/repos/builtin.mock/packages/manyvariants/package.py b/var/spack/repos/builtin.mock/packages/manyvariants/package.py new file mode 100644 index 00000000000000..4747fab53f8d3d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/manyvariants/package.py @@ -0,0 +1,33 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Manyvariants(Package): + """ + A package with 4 different variants of different arities to test the + `match_variants` argument to `can_splice` + """ + + homepage = "https://www.test.com" + has_code = False + + version("2.0.1") + version("2.0.0") + version("1.0.1") + version("1.0.0") + + variant("a", default=True) + variant("b", default=False) + variant("c", values=("v1", "v2", "v3"), multi=False, default="v1") + variant("d", values=("v1", "v2", "v3"), multi=False, default="v1") + + can_splice("manyvariants@1.0.0", when="@1.0.1", match_variants="*") + can_splice("manyvariants@2.0.0+a~b", when="@2.0.1~a+b", match_variants=["c", "d"]) + can_splice("manyvariants@2.0.0 c=v1 d=v1", when="@2.0.1+a+b") + + def install(self, spec, prefix): + touch(prefix.bar) diff --git a/var/spack/repos/builtin.mock/packages/openblas/package.py b/var/spack/repos/builtin.mock/packages/openblas/package.py index db288b9a3b62e5..d6ecb25019aa4c 100644 --- a/var/spack/repos/builtin.mock/packages/openblas/package.py +++ b/var/spack/repos/builtin.mock/packages/openblas/package.py @@ -25,4 +25,6 @@ class Openblas(Package): # To ensure test works with newer gcc versions conflicts("%gcc@:10.1", when="@0.2.16:") + depends_on("perl") + provides("blas") diff --git a/var/spack/repos/builtin.mock/packages/parent-foo-bar-fee/package.py b/var/spack/repos/builtin.mock/packages/parent-foo-bar-fee/package.py new file mode 100644 index 00000000000000..32636df6ab599b --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/parent-foo-bar-fee/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class ParentFooBarFee(Package): + """This package has a variant "bar", which is True by default, and depends on another + package which has the same variant defaulting to False. + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/parent-foo-bar-fee-1.0.tar.gz" + + version("1.0", md5="abcdefg01234567890123abcdefghfed") + + variant("foo", default=True, description="") + variant("bar", default=True, description="") + variant("fee", default=False, description="") + + depends_on("dependency-foo-bar") diff --git a/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py b/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py index 064c5740571140..a03d09da2fbd8e 100644 --- a/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py +++ b/var/spack/repos/builtin.mock/packages/parent-foo-bar/package.py @@ -19,4 +19,5 @@ class ParentFooBar(Package): variant("foo", default=True, description="") variant("bar", default=True, description="") + depends_on("direct-dep-foo-bar") depends_on("dependency-foo-bar") diff --git a/var/spack/repos/builtin.mock/packages/perl/package.py b/var/spack/repos/builtin.mock/packages/perl/package.py index 8d86dec8f32017..2c3f810e036de2 100644 --- a/var/spack/repos/builtin.mock/packages/perl/package.py +++ b/var/spack/repos/builtin.mock/packages/perl/package.py @@ -14,3 +14,5 @@ class Perl(Package): extendable = True version("0.0.0", md5="abcdef1234567890abcdef1234567890") + + variant("shared", default=True, description="Build shared libraries") diff --git a/var/spack/repos/builtin.mock/packages/pkg-a/package.py b/var/spack/repos/builtin.mock/packages/pkg-a/package.py index d1ecba835dfc20..646172b778d129 100644 --- a/var/spack/repos/builtin.mock/packages/pkg-a/package.py +++ b/var/spack/repos/builtin.mock/packages/pkg-a/package.py @@ -25,6 +25,14 @@ class PkgA(AutotoolsPackage): variant("bvv", default=True, description="The good old BV variant") + variant( + "libs", + default="shared", + values=("shared", "static"), + multi=True, + description="Type of libraries to install", + ) + depends_on("pkg-b", when="foobar=bar") depends_on("test-dependency", type="test") diff --git a/var/spack/repos/builtin.mock/packages/second-dependency-foo-bar-fee/package.py b/var/spack/repos/builtin.mock/packages/second-dependency-foo-bar-fee/package.py new file mode 100644 index 00000000000000..4439639bf0863d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/second-dependency-foo-bar-fee/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class SecondDependencyFooBarFee(Package): + """This package has a variant "foo", which is True by default, a variant "bar" which + is False by default, and variant "foo" which is True by default. + """ + + homepage = "http://www.example.com" + url = "http://www.example.com/second-dependency-foo-bar-fee-1.0.tar.gz" + + version("1.0", md5="2101234567890abcdefg1234567890abc") + + variant("foo", default=True, description="") + variant("bar", default=False, description="") + variant("fee", default=False, description="") diff --git a/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py new file mode 100644 index 00000000000000..9f38da0daa04f0 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/splice-depends-on-t/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class SpliceDependsOnT(Package): + """Package that depends on splice-t""" + + homepage = "http://www.example.com" + url = "http://www.example.com/splice-depends-on-t-1.0.tar.gz" + + version("1.0", md5="0123456789abcdef0123456789abcdef") + + depends_on("splice-t") + + def install(self, spec, prefix): + with open(prefix.join("splice-depends-on-t"), "w") as f: + f.write("splice-depends-on-t: {0}".format(prefix)) + f.write("splice-t: {0}".format(spec["splice-t"].prefix)) diff --git a/var/spack/repos/builtin.mock/packages/splice-h/package.py b/var/spack/repos/builtin.mock/packages/splice-h/package.py index a54f1e7f7d683a..6f86f09f92e16d 100644 --- a/var/spack/repos/builtin.mock/packages/splice-h/package.py +++ b/var/spack/repos/builtin.mock/packages/splice-h/package.py @@ -12,17 +12,24 @@ class SpliceH(Package): homepage = "http://www.example.com" url = "http://www.example.com/splice-h-1.0.tar.gz" - version("1.0", md5="0123456789abcdef0123456789abcdef") + version("1.0.2") + version("1.0.1") + version("1.0.0") variant("foo", default=False, description="nope") variant("bar", default=False, description="nope") variant("baz", default=False, description="nope") + variant("compat", default=True, description="nope") depends_on("splice-z") depends_on("splice-z+foo", when="+foo") provides("something") provides("somethingelse") + provides("virtual-abi") + + can_splice("splice-h@1.0.0 +compat", when="@1.0.1 +compat") + can_splice("splice-h@1.0.0:1.0.1 +compat", when="@1.0.2 +compat") def install(self, spec, prefix): with open(prefix.join("splice-h"), "w") as f: diff --git a/var/spack/repos/builtin.mock/packages/splice-z/package.py b/var/spack/repos/builtin.mock/packages/splice-z/package.py index ff73fbaa03701e..bac33be6000927 100644 --- a/var/spack/repos/builtin.mock/packages/splice-z/package.py +++ b/var/spack/repos/builtin.mock/packages/splice-z/package.py @@ -12,10 +12,16 @@ class SpliceZ(Package): homepage = "http://www.example.com" url = "http://www.example.com/splice-z-1.0.tar.gz" - version("1.0", md5="0123456789abcdef0123456789abcdef") + version("1.0.2") + version("1.0.1") + version("1.0.0") variant("foo", default=False, description="nope") variant("bar", default=False, description="nope") + variant("compat", default=True, description="nope") + + can_splice("splice-z@1.0.0 +compat", when="@1.0.1 +compat") + can_splice("splice-z@1.0.0:1.0.1 +compat", when="@1.0.2 +compat") def install(self, spec, prefix): with open(prefix.join("splice-z"), "w") as f: diff --git a/var/spack/repos/builtin.mock/packages/virtual-abi-1/package.py b/var/spack/repos/builtin.mock/packages/virtual-abi-1/package.py new file mode 100644 index 00000000000000..60a4c64f9e298a --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-abi-1/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class VirtualAbi1(Package): + """ + This package provides `virtual-with-abi` and is conditionally ABI + compatible with `virtual-abi-multi` + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + + provides("virtual-with-abi") + + can_splice("virtual-abi-multi@1.0 abi=one", when="@1.0") + + def install(self, spec, prefix): + touch(prefix.foo) diff --git a/var/spack/repos/builtin.mock/packages/virtual-abi-2/package.py b/var/spack/repos/builtin.mock/packages/virtual-abi-2/package.py new file mode 100644 index 00000000000000..5725bf504c433d --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-abi-2/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class VirtualAbi2(Package): + """ + This package provides `virtual-with-abi` and is conditionally ABI + compatible with `virtual-abi-multi` + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + + provides("virtual-with-abi") + + can_splice("virtual-abi-multi@1.0 abi=two", when="@1.0") + + def install(self, spec, prefix): + touch(prefix.foo) diff --git a/var/spack/repos/builtin.mock/packages/virtual-abi-multi/package.py b/var/spack/repos/builtin.mock/packages/virtual-abi-multi/package.py new file mode 100644 index 00000000000000..87cfd31544aeef --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-abi-multi/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class VirtualAbiMulti(Package): + """ + This package provides `virtual-with-abi` is ABI compatible with either + `virtual-abi-1` or `virtual-abi-2` depending on the value of its `abi` + variant + """ + + homepage = "https://www.example.com" + has_code = False + + version("1.0") + + variant("abi", default="custom", multi=False, values=("one", "two", "custom")) + + provides("virtual-with-abi") + + can_splice("virtual-abi-1@1.0", when="@1.0 abi=one") + can_splice("virtual-abi-2@1.0", when="@1.0 abi=two") + + def install(self, spec, prefix): + touch(prefix.foo) diff --git a/var/spack/repos/builtin.mock/packages/virtual-with-abi/package.py b/var/spack/repos/builtin.mock/packages/virtual-with-abi/package.py new file mode 100644 index 00000000000000..1147efd20219e5 --- /dev/null +++ b/var/spack/repos/builtin.mock/packages/virtual-with-abi/package.py @@ -0,0 +1,16 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class VirtualWithAbi(Package): + """Virtual package for mocking an interface with stable ABI .""" + + homepage = "https://www.abi.org/" + virtual = True + + def test_hello(self): + print("Hello there!") diff --git a/var/spack/repos/builtin/packages/acfl/package.py b/var/spack/repos/builtin/packages/acfl/package.py index b1e30fd767906e..4df0644898456b 100644 --- a/var/spack/repos/builtin/packages/acfl/package.py +++ b/var/spack/repos/builtin/packages/acfl/package.py @@ -2,6 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os from spack.package import * @@ -24,9 +25,7 @@ "ubuntu22.04": "Ubuntu-22.04", "debian12": "Ubuntu-22.04", "sles15": "SLES-15", - "centos7": "RHEL-7", "centos8": "RHEL-8", - "rhel7": "RHEL-7", "rhel8": "RHEL-8", "rhel9": "RHEL-9", "rocky8": "RHEL-8", @@ -36,6 +35,36 @@ } _versions = { + "24.10": { + "RHEL-8": ( + "7c685c5393345baff573dc53ea3bb84e6293f9e51808e168ececcf51efb45813", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_RHEL-8_aarch64.tar", + ), + "RHEL-9": ( + "52767ec236098aec410b1d9899c4ba2c3dc2bcc3c2b500dbf2f4b7b3cfacf16d", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_RHEL-9_aarch64.tar", + ), + "SLES-15": ( + "ab118af1150931d59e7ec89f9c235a89bf604700ace53f549d3898677e7e76a4", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_SLES-15_aarch64.tar", + ), + "Ubuntu-20.04": ( + "defe9b8bd31d28aba1c8b8026295b6e277f221d1e387b16d8d86f4dea9b75c27", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_Ubuntu-20.04_aarch64.tar", + ), + "Ubuntu-22.04": ( + "10c0fad1ff3628f505ada90359c68b046676a4c6cab1131d76ae0429d3694415", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_Ubuntu-22.04_aarch64.tar", + ), + "AmazonLinux-2": ( + "8abd35c455adb94812aaa55853f72ac55e142940e775e985eeedbbbe17902d8f", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_AmazonLinux-2_aarch64.tar", + ), + "AmazonLinux-2023": ( + "6b1cf34240af15ae9a7c767d7f484f2fa79c4633571b613e3d65e20b8d3ba65a", + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Compiler-for-Linux/Version_24.10/arm-compiler-for-linux_24.10_AmazonLinux-2023_aarch64.tar", + ), + }, "24.04": { "RHEL-7": ( "064c3ecfd71cba3d8bf639448e899388f58eb7faef4b38f3c1aace625ace8b1e", @@ -209,10 +238,13 @@ def get_os(ver): spack_os = spack.platforms.host().default_os - if ver.startswith("22."): + if ver.startswith("22"): return _os_map_before_23.get(spack_os, "") - else: - return _os_map.get(spack_os, "RHEL-7") + if ver.startswith("23") or ver == "24.04": + return {**_os_map, "centos7": "RHEL-7", "rhel7": "RHEL-7"}.get(spack_os, "RHEL-7") + if ver == "24.10": + return _os_map.get(spack_os, "RHEL-8") + return "RHEL-8" def get_armpl_version_to_3(spec): @@ -234,6 +266,11 @@ def get_armpl_prefix(spec): return join_path(spec.prefix, f"armpl-{ver}_{os}_arm-linux-compiler") +def get_gcc_prefix(spec): + dirlist = next(os.walk(spec.prefix))[1] + return join_path(spec.prefix, next(dir for dir in dirlist if dir.startswith("gcc"))) + + def get_acfl_prefix(spec): os = get_os(spec.version.string) if spec.version.string.startswith("22."): @@ -260,7 +297,6 @@ class Acfl(Package, CompilerPackage): """ homepage = "https://developer.arm.com/Tools%20and%20Software/Arm%20Compiler%20for%20Linux" - url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-compiler-for-linux/23-10/arm-compiler-for-linux_23.10_Ubuntu-22.04_aarch64.tar" maintainers("paolotricerri") @@ -402,6 +438,7 @@ def setup_run_environment(self, env): def check_install(self): arm_dir = get_acfl_prefix(self.spec) armpl_dir = get_armpl_prefix(self.spec) + gcc_dir = get_gcc_prefix(self.spec) suffix = get_armpl_suffix(self.spec) armpl_example_dir = join_path(armpl_dir, f"examples{suffix}") # run example makefile @@ -411,6 +448,7 @@ def check_install(self): "CC=" + self.cc, "F90=" + self.fortran, "CPATH=" + join_path(arm_dir, "include"), + "COMPILER_PATH=" + gcc_dir, "ARMPL_DIR=" + armpl_dir, ) # clean up diff --git a/var/spack/repos/builtin/packages/acts/package.py b/var/spack/repos/builtin/packages/acts/package.py index 1a0ef352dc39df..4063fb491b6a75 100644 --- a/var/spack/repos/builtin/packages/acts/package.py +++ b/var/spack/repos/builtin/packages/acts/package.py @@ -41,6 +41,9 @@ class Acts(CMakePackage, CudaPackage): # Supported Acts versions version("main", branch="main") version("master", branch="main", deprecated=True) # For compatibility + version("37.3.0", commit="b3e856d4dadcda7d1a88a9b846ce5a7acd8410c4", submodules=True) + version("37.2.0", commit="821144dc40d35b44aee0d7857a0bd1c99e4a3932", submodules=True) + version("37.1.0", commit="fa6ad4d52e0bd09cf8c78507fcbb18e9ac2c87a3", submodules=True) version("37.0.1", commit="998b9c9dd42d5160c2540f8fa820505869bfdb79", submodules=True) version("37.0.0", commit="117feaaadc7a2336755274e0cd70ba58a047a1de", submodules=True) version("36.3.2", commit="01e124d253a3c9c9b9f5d2fde16682ce9d4599cd", submodules=True) @@ -335,7 +338,7 @@ class Acts(CMakePackage, CudaPackage): "tbb", default=True, description="Build the examples with Threading Building Blocks library", - when="@19.8:19,20.1: +examples", + when="@19.8:19,20.1:37.2 +examples", ) variant("analysis", default=False, description="Build analysis applications in the examples") @@ -380,6 +383,7 @@ class Acts(CMakePackage, CudaPackage): depends_on("hepmc3 @3.2.1:", when="+hepmc3") depends_on("heppdt", when="+hepmc3 @:4.0") depends_on("intel-tbb @2020.1:", when="+examples +tbb") + depends_on("intel-tbb @2020.1:", when="+examples @37.3:") depends_on("mlpack@3.1.1:", when="+mlpack") depends_on("nlohmann-json @3.9.1:", when="@0.14: +json") depends_on("nlohmann-json @3.10.5:", when="@37: +json") diff --git a/var/spack/repos/builtin/packages/adiak/package.py b/var/spack/repos/builtin/packages/adiak/package.py index e1ad9344c17153..66aaa0a18c52e0 100644 --- a/var/spack/repos/builtin/packages/adiak/package.py +++ b/var/spack/repos/builtin/packages/adiak/package.py @@ -22,8 +22,9 @@ class Adiak(CMakePackage): license("MIT") version( - "0.4.0", commit="7e8b7233f8a148b402128ed46b2f0c643e3b397e", submodules=True, preferred=True + "0.4.1", commit="7ac997111785bee6d9391664b1d18ebc2b3c557b", submodules=True, preferred=True ) + version("0.4.0", commit="7e8b7233f8a148b402128ed46b2f0c643e3b397e", submodules=True) version("0.2.2", commit="3aedd494c81c01df1183af28bc09bade2fabfcd3", submodules=True) version( "0.3.0-alpha", diff --git a/var/spack/repos/builtin/packages/adios2/package.py b/var/spack/repos/builtin/packages/adios2/package.py index a5baeb0cbde5ad..76ca3b0c9f1c5c 100644 --- a/var/spack/repos/builtin/packages/adios2/package.py +++ b/var/spack/repos/builtin/packages/adios2/package.py @@ -26,10 +26,11 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): version("master", branch="master") version( - "2.10.1", - sha256="ce776f3a451994f4979c6bd6d946917a749290a37b7433c0254759b02695ad85", + "2.10.2", + sha256="14cf0bcd94772194bce0f2c0e74dba187965d1cffd12d45f801c32929158579e", preferred=True, ) + version("2.10.1", sha256="ce776f3a451994f4979c6bd6d946917a749290a37b7433c0254759b02695ad85") version("2.10.0", sha256="e5984de488bda546553dd2f46f047e539333891e63b9fe73944782ba6c2d95e4") version("2.9.2", sha256="78309297c82a95ee38ed3224c98b93d330128c753a43893f63bbe969320e4979") version("2.9.1", sha256="ddfa32c14494250ee8a48ef1c97a1bf6442c15484bbbd4669228a0f90242f4f9") @@ -39,15 +40,14 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): version("2.8.1", sha256="3f515b442bbd52e3189866b121613fe3b59edb8845692ea86fad83d1eba35d93") version("2.8.0", sha256="5af3d950e616989133955c2430bd09bcf6bad3a04cf62317b401eaf6e7c2d479") version("2.7.1", sha256="c8e237fd51f49d8a62a0660db12b72ea5067512aa7970f3fcf80b70e3f87ca3e") - version("2.7.0", sha256="4b5df1a1f92d7ff380416dec7511cfcfe3dc44da27e486ed63c3e6cffb173924") - version("2.6.0", sha256="45b41889065f8b840725928db092848b8a8b8d1bfae1b92e72f8868d1c76216c") - version("2.5.0", sha256="7c8ff3bf5441dd662806df9650c56a669359cb0185ea232ecb3578de7b065329") - version("2.4.0", sha256="50ecea04b1e41c88835b4b3fd4e7bf0a0a2a3129855c9cc4ba6cf6a1575106e2") - version("2.3.1", sha256="3bf81ccc20a7f2715935349336a76ba4c8402355e1dc3848fcd6f4c3c5931893") + with default_args(deprecated=True): + version("2.7.0", sha256="4b5df1a1f92d7ff380416dec7511cfcfe3dc44da27e486ed63c3e6cffb173924") + version("2.6.0", sha256="45b41889065f8b840725928db092848b8a8b8d1bfae1b92e72f8868d1c76216c") + version("2.5.0", sha256="7c8ff3bf5441dd662806df9650c56a669359cb0185ea232ecb3578de7b065329") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") # There's not really any consistency about how static and shared libs are # implemented across spack. What we're trying to support is specifically three @@ -76,7 +76,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): variant("bzip2", default=True, when="@2.4:", description="Enable BZip2 compression") variant("zfp", default=True, description="Enable ZFP compression") variant("png", default=True, when="@2.4:", description="Enable PNG compression") - variant("sz", default=True, description="Enable SZ compression") + variant("sz", default=True, when="@2.6:", description="Enable SZ compression") variant("mgard", default=True, when="@2.8:", description="Enable MGARD compression") # Rransport engines @@ -188,7 +188,8 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): depends_on("libpng@1.6:", when="+png") depends_on("zfp@0.5.1:0.5", when="+zfp") depends_on("sz@2.0.2.0:", when="+sz") - depends_on("mgard", when="+mgard") + depends_on("mgard@2022-11-18:", when="+mgard") + depends_on("mgard@2023-01-10:", when="@2.9: +mgard") extends("python", when="+python") depends_on("python@2.7:2.8,3.5:", when="@:2.4.0 +python", type=("build", "run")) @@ -200,6 +201,9 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): depends_on("aws-sdk-cpp", when="+aws") depends_on("libcatalyst@2", when="+libcatalyst") + # error: invalid use of incomplete type 'PyFrameObject' {aka 'struct _frame'} + conflicts("^python@3.11:", when="@:2.7") + # Fix findmpi when called by dependees # See https://github.com/ornladios/ADIOS2/pull/1632 patch("cmake-update-findmpi.patch", when="@2.4.0") @@ -211,7 +215,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # Fix an unnecessary python dependency when testing is disabled # See https://github.com/ornladios/ADIOS2/pull/2596 - patch("2.7-fix-python-test-deps.patch", when="@2.5.0:2.7.0") + patch("2.7-fix-python-test-deps.patch", when="@2.7.0") # Fix unresolved symbols when built with gcc10. # See https://github.com/ornladios/ADIOS2/pull/2714 @@ -224,7 +228,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # https://github.com/ornladios/adios2/pull/2710 patch( "https://github.com/ornladios/adios2/pull/2710.patch?full_index=1", - when="@:2.7.1", + when="@2.5:2.7.1", sha256="8221073d1b2f8944395a88a5d60a15c7370646b62f5fc6309867bbb6a8c2096c", ) @@ -238,7 +242,7 @@ class Adios2(CMakePackage, CudaPackage, ROCmPackage): # ROCM: enable support for rocm >= 6 # https://github.com/ornladios/ADIOS2/pull/4214 - patch("2.10-enable-rocm6.patch", when="@2.9.1:") + patch("2.10-enable-rocm6.patch", when="@2.9.1:2.10.1") @when("%fj") def patch(self): @@ -271,6 +275,7 @@ def cmake_args(self): from_variant("ADIOS2_USE_DataSpaces", "dataspaces"), from_variant("ADIOS2_USE_Fortran", "fortran"), from_variant("ADIOS2_USE_HDF5", "hdf5"), + from_variant("ADIOS2_USE_MGARD", "mgard"), from_variant("ADIOS2_USE_MPI", "mpi"), from_variant("ADIOS2_USE_PNG", "png"), from_variant("ADIOS2_USE_Python", "python"), @@ -289,7 +294,6 @@ def cmake_args(self): self.define("ADIOS2_BUILD_EXAMPLES", False), self.define("ADIOS2_USE_Endian_Reverse", True), self.define("ADIOS2_USE_IME", False), - self.define("ADIOS2_USE_MGARD", False), ] if spec.satisfies("+sst"): diff --git a/var/spack/repos/builtin/packages/aespipe/package.py b/var/spack/repos/builtin/packages/aespipe/package.py index 3f34992709acc5..3c7cfa415b5252 100644 --- a/var/spack/repos/builtin/packages/aespipe/package.py +++ b/var/spack/repos/builtin/packages/aespipe/package.py @@ -10,7 +10,7 @@ class Aespipe(AutotoolsPackage): """aespipe program is AES encrypting or decrypting pipe. It reads from standard input and writes to standard output.""" - homepage = "https//loop-aes.sourceforge.net/" + homepage = "https://sourceforge.net/projects/loop-aes/" url = "https://sourceforge.net/projects/loop-aes/files/aespipe/v2.4f/aespipe-v2.4f.tar.bz2" license("Intel") diff --git a/var/spack/repos/builtin/packages/amd-aocl/package.py b/var/spack/repos/builtin/packages/amd-aocl/package.py index 9026dd74e2fad2..85f7148c818719 100644 --- a/var/spack/repos/builtin/packages/amd-aocl/package.py +++ b/var/spack/repos/builtin/packages/amd-aocl/package.py @@ -24,7 +24,8 @@ class AmdAocl(BundlePackage): maintainers("amd-toolchain-support") - version("4.2", preferred=True) + version("5.0", preferred=True) + version("4.2") version("4.1") version("4.0") version("3.2") @@ -38,21 +39,32 @@ class AmdAocl(BundlePackage): depends_on("amdblis threads=openmp") depends_on("amdfftw +openmp") depends_on("amdlibflame threads=openmp") + depends_on("aocl-sparse +openmp") + depends_on("aocl-da +openmp") + depends_on("aocl-compression +openmp") with when("~openmp"): depends_on("amdblis threads=none") depends_on("amdfftw ~openmp") depends_on("amdlibflame threads=none") + depends_on("aocl-sparse ~openmp") + depends_on("aocl-da ~openmp") + depends_on("aocl-compression ~openmp") - for vers in ["2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2"]: + for vers in ["2.2", "3.0", "3.1", "3.2", "4.0", "4.1", "4.2", "5.0"]: with when(f"@={vers}"): depends_on(f"amdblis@={vers}") depends_on(f"amdfftw@={vers}") depends_on(f"amdlibflame@={vers}") + depends_on("amdlibflame ^[virtuals=blas] amdblis") depends_on(f"amdlibm@={vers}") depends_on(f"amdscalapack@={vers}") + depends_on("amdscalapack ^[virtuals=blas] amdblis") + depends_on("amdscalapack ^[virtuals=lapack] amdlibflame") depends_on(f"aocl-sparse@={vers}") if Version(vers) >= Version("4.2"): depends_on(f"aocl-compression@={vers}") depends_on(f"aocl-crypto@={vers}") depends_on(f"aocl-libmem@={vers}") + if Version(vers) >= Version("5.0"): + depends_on(f"aocl-da@={vers}") diff --git a/var/spack/repos/builtin/packages/amdblis/package.py b/var/spack/repos/builtin/packages/amdblis/package.py index 27e713845fbb59..a25f5a3c9371f6 100644 --- a/var/spack/repos/builtin/packages/amdblis/package.py +++ b/var/spack/repos/builtin/packages/amdblis/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.package import * from spack.pkg.builtin.blis import BlisBase @@ -39,10 +37,11 @@ class Amdblis(BlisBase): license("BSD-3-Clause") version( - "4.2", - sha256="0e1baf850ba0e6f99e79f64bbb0a59fcb838ddb5028e24527f52b407c3c62963", + "5.0", + sha256="5abb34972b88b2839709d0af8785662bc651c7806ccfa41d386d93c900169bc2", preferred=True, ) + version("4.2", sha256="0e1baf850ba0e6f99e79f64bbb0a59fcb838ddb5028e24527f52b407c3c62963") version("4.1", sha256="a05c6c7d359232580d1d599696053ad0beeedf50f3b88d5d22ee7d34375ab577") version("4.0", sha256="cddd31176834a932753ac0fc4c76332868feab3e9ac607fa197d8b44c1e74a41") version("3.2", sha256="5a400ee4fc324e224e12f73cc37b915a00f92b400443b15ce3350278ad46fff6") @@ -66,18 +65,6 @@ def configure_args(self): spec = self.spec args = super().configure_args() - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - if spec.satisfies("+ilp64"): args.append("--blas-int-size=64") @@ -125,3 +112,12 @@ def create_symlink(self): os.symlink("libblis-mt.a", "libblis.a") if os.path.isfile("libblis-mt.so"): os.symlink("libblis-mt.so", "libblis.so") + + @property + def libs(self): + return find_libraries( + ["libblis"] if self.spec.satisfies("threads=none") else ["libblis-mt"], + root=self.prefix, + shared=self.spec.satisfies("libs=shared"), + recursive=True, + ) diff --git a/var/spack/repos/builtin/packages/amdfftw/package.py b/var/spack/repos/builtin/packages/amdfftw/package.py index f508c4162b6123..56089c214b8374 100644 --- a/var/spack/repos/builtin/packages/amdfftw/package.py +++ b/var/spack/repos/builtin/packages/amdfftw/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.build_environment import optimization_flags from spack.package import * from spack.pkg.builtin.fftw import FftwBase @@ -43,10 +41,11 @@ class Amdfftw(FftwBase): license("GPL-2.0-only") version( - "4.2", - sha256="391ef7d933e696762e3547a35b58ab18d22a6cf3e199c74889bcf25a1d1fc89b", + "5.0", + sha256="bead6c08309a206f8a6258971272affcca07f11eb57b5ecd8496e2e7e3ead877", preferred=True, ) + version("4.2", sha256="391ef7d933e696762e3547a35b58ab18d22a6cf3e199c74889bcf25a1d1fc89b") version("4.1", sha256="f1cfecfcc0729f96a5bd61c6b26f3fa43bb0662d3fff370d4f73490c60cf4e59") version("4.0", sha256="5f02cb05f224bd86bd88ec6272b294c26dba3b1d22c7fb298745fd7b9d2271c0") version("3.2", sha256="31cab17a93e03b5b606e88dd6116a1055b8f49542d7d0890dbfcca057087b8d0") @@ -158,6 +157,13 @@ class Amdfftw(FftwBase): requires("target=x86_64:", msg="AMD FFTW available only on x86_64") + def flag_handler(self, name, flags): + (flags, _, _) = super().flag_handler(name, flags) + if name == "cflags": + if self.spec.satisfies("%gcc@14:"): + flags.append("-Wno-incompatible-pointer-types") + return (flags, None, None) + def configure(self, spec, prefix): """Configure function""" # Base options @@ -175,18 +181,6 @@ def configure(self, spec, prefix): options.append("FC={0}".format(os.path.basename(spack_fc))) options.append("F77={0}".format(os.path.basename(spack_fc))) - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - if spec.satisfies("+debug"): options.append("--enable-debug") diff --git a/var/spack/repos/builtin/packages/amdlibflame/libflame-pkgconfig.patch b/var/spack/repos/builtin/packages/amdlibflame/libflame-pkgconfig.patch new file mode 100644 index 00000000000000..579d2e6720093f --- /dev/null +++ b/var/spack/repos/builtin/packages/amdlibflame/libflame-pkgconfig.patch @@ -0,0 +1,29 @@ +diff -Naru a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt 2024-02-26 18:26:37.000000000 +0000 ++++ b/CMakeLists.txt 2024-03-19 20:48:44.099094687 +0000 +@@ -1197,3 +1197,12 @@ + PROPERTY ADDITIONAL_CLEAN_FILES + ${CMAKE_SOURCE_DIR}/build/FLA_config.h ${CMAKE_SOURCE_DIR}/include/ + ) ++ ++# pkgconfig file ++set (prefix ${CMAKE_INSTALL_PREFIX}) ++set (VERSION 4.2) ++configure_file (flame.pc.in flame.pc @ONLY) ++install (FILES ++ ${CMAKE_CURRENT_BINARY_DIR}/flame.pc ++ DESTINATION ${CMAKE_INSTALL_PREFIX}/lib/pkgconfig ++ COMPONENT Development) +diff -Naru a/flame.pc.in b/flame.pc.in +--- a/flame.pc.in 1970-01-01 00:00:00.000000000 +0000 ++++ b/flame.pc.in 2024-03-19 20:48:51.112058421 +0000 +@@ -0,0 +1,9 @@ ++prefix=@prefix@ ++libdir=${prefix}/lib ++includedir=${prefix}/include ++ ++Name: libFLAME ++Description: AMD-optimized libFLAME library ++Version: @VERSION@ ++Libs: -L${libdir} -lflame ++Cflags: -I${includedir} diff --git a/var/spack/repos/builtin/packages/amdlibflame/package.py b/var/spack/repos/builtin/packages/amdlibflame/package.py index 2fed863a23bbfd..d74fc4be911a12 100644 --- a/var/spack/repos/builtin/packages/amdlibflame/package.py +++ b/var/spack/repos/builtin/packages/amdlibflame/package.py @@ -4,8 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # ----------------------------------------------------------------------------\ -from llnl.util import tty - import spack.build_systems.autotools import spack.build_systems.cmake from spack.package import * @@ -49,11 +47,13 @@ class Amdlibflame(CMakePackage, LibflameBase): maintainers("amd-toolchain-support") license("BSD-3-Clause") + version( - "4.2", - sha256="93a433c169528ffba74a99df0ba3ce3d5b1fab9bf06ce8d2fd72ee84768ed84c", + "5.0", + sha256="3bee3712459a8c5bd728a521d8a4c8f46735730bf35d48c878d2fc45fc000918", preferred=True, ) + version("4.2", sha256="93a433c169528ffba74a99df0ba3ce3d5b1fab9bf06ce8d2fd72ee84768ed84c") version("4.1", sha256="8aed69c60d11cc17e058cabcb8a931cee4f343064ade3e73d3392b7214624b61") version("4.0", sha256="bcb05763aa1df1e88f0da5e43ff86d956826cbea1d9c5ff591d78a3e091c66a4") version("3.2", sha256="6b5337fb668b82d0ed0a4ab4b5af4e2f72e4cedbeeb4a8b6eb9a3ef057fb749a") @@ -67,13 +67,6 @@ class Amdlibflame(CMakePackage, LibflameBase): depends_on("fortran", type="build") # generated variant("ilp64", default=False, when="@3.0.1: ", description="Build with ILP64 support") - variant( - "enable-aocl-blas", - default=False, - when="@4.1.0:", - description="Enables tight coupling with AOCL-BLAS library in order to use AOCL-BLAS\ - internal routines", - ) variant( "vectorization", default="auto", @@ -94,7 +87,7 @@ class Amdlibflame(CMakePackage, LibflameBase): # Required dependencies with when("build_system=cmake"): generator("make") - depends_on("cmake@3.15.0:", type="build") + depends_on("cmake@3.22:", type="build") conflicts("threads=pthreads", msg="pthread is not supported") conflicts("threads=openmp", when="@:3", msg="openmp is not supported by amdlibflame < 4.0") @@ -103,12 +96,14 @@ class Amdlibflame(CMakePackage, LibflameBase): patch("aocc-2.2.0.patch", when="@:2", level=1) patch("cray-compiler-wrapper.patch", when="@:3.0.0", level=1) patch("supermat.patch", when="@4.0:4.1", level=1) + patch("libflame-pkgconfig.patch", when="@4.2") provides("flame@5.2", when="@2:") depends_on("python+pythoncmd", type="build") depends_on("gmake@4:", when="@3.0.1,3.1:", type="build") - for vers in ["4.1", "4.2"]: + + for vers in ["4.1", "4.2", "5.0"]: with when(f"@{vers}"): depends_on(f"aocl-utils@{vers}") @@ -128,9 +123,14 @@ def libs(self): def flag_handler(self, name, flags): if name == "cflags": + if ( + self.spec.satisfies("%clang@16:") + or self.spec.satisfies("%aocc@4.1.0:") + or self.spec.satisfies("%gcc@14:") + ): + flags.append("-Wno-implicit-function-declaration") if self.spec.satisfies("%clang@16:") or self.spec.satisfies("%aocc@4.1.0:"): flags.append("-Wno-error=incompatible-function-pointer-types") - flags.append("-Wno-implicit-function-declaration") flags.append("-Wno-sometimes-uninitialized") if name == "ldflags": if self.spec.satisfies("^aocl-utils~shared"): @@ -153,10 +153,13 @@ def cmake_args(self): else: args.append(self.define("ENABLE_AMD_FLAGS", True)) + if spec.satisfies("threads=none"): + args.append(self.define("ENABLE_MULTITHREADING", False)) + if spec.satisfies("@3.0.1: +ilp64"): args.append(self.define("ENABLE_ILP64", True)) - if spec.satisfies("@4.1.0: +enable-aocl-blas"): + if spec.satisfies("@4.2: ^[virtuals=blas] amdblis"): args.append(self.define("ENABLE_AOCL_BLAS", True)) args.append("-DAOCL_ROOT:PATH={0}".format(spec["blas"].prefix)) @@ -170,6 +173,8 @@ def cmake_args(self): else: args.append(self.define("LF_ISA_CONFIG", spec.variants["vectorization"].value)) + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + return args @@ -179,18 +184,6 @@ def configure_args(self): args = self.pkg.configure_args() spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - # From 3.2 version, amd optimized flags are encapsulated under: # enable-amd-aocc-flags for AOCC compiler # enable-amd-flags for all other compilers diff --git a/var/spack/repos/builtin/packages/amdlibm/package.py b/var/spack/repos/builtin/packages/amdlibm/package.py index 4ec7cd850c7d6b..f1d194f535bf48 100644 --- a/var/spack/repos/builtin/packages/amdlibm/package.py +++ b/var/spack/repos/builtin/packages/amdlibm/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.package import * @@ -28,16 +26,17 @@ class Amdlibm(SConsPackage): _name = "amdlibm" homepage = "https://www.amd.com/en/developer/aocl/libm.html" git = "https://github.com/amd/aocl-libm-ose.git" - url = "https://github.com/amd/aocl-libm-ose/archive/refs/tags/3.0.tar.gz" + url = "https://github.com/amd/aocl-libm-ose/archive/3.0.tar.gz" maintainers("amd-toolchain-support") license("BSD-3-Clause") version( - "4.2", - sha256="58847b942e998b3f52eb41ae26403c7392d244fcafa707cbf23165aac24edd9e", + "5.0", + sha256="ba1d50c068938c9a927e37e5630f683b6149d7d5a95efffeb76e7c9a8bcb2b5e", preferred=True, ) + version("4.2", sha256="58847b942e998b3f52eb41ae26403c7392d244fcafa707cbf23165aac24edd9e") version("4.1", sha256="5bbbbc6bc721d9a775822eab60fbc11eb245e77d9f105b4fcb26a54d01456122") version("4.0", sha256="038c1eab544be77598eccda791b26553d3b9e2ee4ab3f5ad85fdd2a77d015a7d") version("3.2", sha256="c75b287c38a3ce997066af1f5c8d2b19fc460d5e56678ea81f3ac33eb79ec890") @@ -54,7 +53,7 @@ class Amdlibm(SConsPackage): depends_on("python@3.6.1:", type=("build", "run")) depends_on("scons@3.1.2:", type=("build")) depends_on("mpfr", type=("link")) - for vers in ["4.1", "4.2"]: + for vers in ["4.1", "4.2", "5.0"]: with when(f"@{vers}"): depends_on(f"aocl-utils@{vers}") @@ -66,10 +65,14 @@ class Amdlibm(SConsPackage): patch("libm-ose-SconsSpack.patch", when="@3.1:4.2") conflicts("%gcc@:9.1.0", msg="Minimum supported GCC version is 9.2.0") - conflicts("%gcc@13.2.0:", msg="Maximum supported GCC version is 13.1.0") - conflicts("%clang@9.0:16.0", msg="supported Clang version is from 9 to 16") + conflicts("%clang@:9.0", msg="Minimum supported Clang version is 9") + conflicts("%clang@17.0.0:", msg="Maximum supported Clang version is 17.0.0") + conflicts("%gcc@14.3.0:", msg="Maximum supported GCC version is 14.2.0") conflicts("%aocc@3.2.0", msg="dependency on python@3.6.2") + def patch(self): + filter_file("14.1", "14.2", "scripts/site_scons/alm/check.py") + def build_args(self, spec, prefix): """Setting build arguments for amdlibm""" args = [f"-j{determine_number_of_jobs(parallel=True)}", f"--prefix={prefix}"] @@ -77,18 +80,6 @@ def build_args(self, spec, prefix): if self.spec.satisfies("@4.1: "): args.append("--aocl_utils_install_path={0}".format(self.spec["aocl-utils"].prefix)) - if not ( - self.spec.satisfies(r"%aocc@3.2:4.2") - or self.spec.satisfies(r"%gcc@12.2:13.1") - or self.spec.satisfies(r"%clang@15:16") - ): - tty.warn( - "AOCL has been tested to work with the following compilers\ - versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:16\ - see the following aocl userguide for details: \ - https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - # we are circumventing the use of # Spacks compiler wrappers because # SCons wipes out all environment variables. diff --git a/var/spack/repos/builtin/packages/amdscalapack/package.py b/var/spack/repos/builtin/packages/amdscalapack/package.py index 5f25811f6f451e..52736eb2fabba1 100644 --- a/var/spack/repos/builtin/packages/amdscalapack/package.py +++ b/var/spack/repos/builtin/packages/amdscalapack/package.py @@ -3,8 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from llnl.util import tty - from spack.package import * from spack.pkg.builtin.netlib_scalapack import ScalapackBase @@ -34,10 +32,11 @@ class Amdscalapack(ScalapackBase): license("BSD-3-Clause-Open-MPI") version( - "4.2", - sha256="c6e9a846c05cdc05252b0b5f264164329812800bf13f9d97c77114dc138e6ccb", + "5.0", + sha256="a33cf16c51cfd65c7acb5fbdb8884a5c147cdefea73931b07863c56d54f812cc", preferred=True, ) + version("4.2", sha256="c6e9a846c05cdc05252b0b5f264164329812800bf13f9d97c77114dc138e6ccb") version("4.1", sha256="b2e51c3604e5869d1faaef2e52c92071fcb3de1345aebb2ea172206622067ad9") version("4.0", sha256="f02913b5984597b22cdb9a36198ed61039a1bf130308e778dc31b2a7eb88b33b") version("3.2", sha256="9e00979bb1be39d627bdacb01774bc043029840d542fafc934d16fec3e3b0892") @@ -47,18 +46,27 @@ class Amdscalapack(ScalapackBase): depends_on("c", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("amdblis", when="^[virtuals=blas] amdblis") + depends_on("amdlibflame", when="^[virtuals=lapack] amdlibflame") variant("ilp64", default=False, description="Build with ILP64 support") conflicts("+ilp64", when="@:3.0", msg="ILP64 is supported from 3.1 onwards") requires("target=x86_64:", msg="AMD scalapack available only on x86_64") - patch("clang-hollerith.patch", when="%clang@16:") + patch("clang-hollerith.patch", when="@=4.0 %clang@16:") def patch(self): # Flang-New gets confused and thinks it finds Hollerith constants if self.spec.satisfies("%clang@16:"): filter_file("-cpp", "", "CMakeLists.txt") + # remove the C-style comments in header file that cause issues with flang + if self.spec.satisfies("@4.2: %clang@18:"): + which("sed")( + "-i", + "1,23d", + join_path(self.stage.source_path, "FRAMEWORK", "SL_Context_fortran_include.h"), + ) def url_for_version(self, version): vers = "https://github.com/amd/{0}/archive/{1}.tar.gz" @@ -67,28 +75,29 @@ def url_for_version(self, version): else: return vers.format("scalapack", version) + def flag_handler(self, name, flags): + (flags, _, _) = super().flag_handler(name, flags) + # remove a flag set in ScalapackBase that is not working + if self.spec.satisfies("%gcc@14:"): + if "-std=gnu89" in flags: + flags.remove("-std=gnu89") + return (flags, None, None) + def cmake_args(self): """cmake_args function""" args = super().cmake_args() spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - if spec.satisfies("%gcc@10:"): args.extend(["-DCMAKE_Fortran_FLAGS={0}".format("-fallow-argument-mismatch")]) if spec.satisfies("%clang@16:"): - args.extend(["-DCMAKE_Fortran_FLAGS={0}".format("-cpp -fno-implicit-none")]) + flags = "-cpp -fno-implicit-none" + if spec.satisfies("%clang@18"): + flags += " -flang-experimental-polymorphism" + if spec.satisfies("%clang@18:"): + flags += " -I{0}".format(join_path(self.stage.source_path, "FRAMEWORK")) + args.extend(["-DCMAKE_Fortran_FLAGS={0}".format(flags)]) if spec.satisfies("@2.2"): args.extend( @@ -110,6 +119,8 @@ def cmake_args(self): c_flags.append("-Wno-deprecated-non-prototype") c_flags.append("-Wno-incompatible-pointer-types") args.append(self.define("CMAKE_C_FLAGS", " ".join(c_flags))) + elif self.spec.satisfies("%gcc@14:"): + args.append(self.define("CMAKE_C_FLAGS", "-Wno-incompatible-pointer-types")) # link libflame library args.extend(["-DLAPACK_LIBRARIES={0}".format(self.spec["lapack"].libs)]) @@ -117,6 +128,7 @@ def cmake_args(self): args.extend( [ "-DLAPACK_FOUND=true", + "-DUSE_OPTIMIZED_LAPACK_BLAS=true", "-DCMAKE_C_COMPILER=%s" % spec["mpi"].mpicc, "-DCMAKE_Fortran_COMPILER=%s" % spec["mpi"].mpifc, ] diff --git a/var/spack/repos/builtin/packages/amduprof/package.py b/var/spack/repos/builtin/packages/amduprof/package.py index ffd9ba5ccadba8..dc9f4b7e9d2b30 100644 --- a/var/spack/repos/builtin/packages/amduprof/package.py +++ b/var/spack/repos/builtin/packages/amduprof/package.py @@ -16,16 +16,29 @@ class Amduprof(Package): understand the limiters of application performance and evaluate improvements.""" - homepage = "https://developer.amd.com/amd-uprof/" - url = f"file://{os.getcwd()}/AMDuProf_Linux_x64_4.2.850.tar.bz2" + homepage = "https://www.amd.com/en/developer/uprof.html" manual_download = True maintainers("amd-toolchain-support") - version("4.2.850", sha256="f2d7c4eb9ec9c32845ff8f19874c1e6bcb0fa8ab2c12e73addcbf23a6d1bd623") + version( + "5.0.1479", + sha256="065d24d9b84d2ef94ae8a360bf55c74a0f3fe9250b01cc7fb2642495028130d5", + url="file://{0}/AMDuProf_Linux_x64_5.0.1479.tar.bz2".format(os.getcwd()), + preferred=True, + ) + version( + "4.2.850", + sha256="f2d7c4eb9ec9c32845ff8f19874c1e6bcb0fa8ab2c12e73addcbf23a6d1bd623", + url="file://{0}/AMDuProf_Linux_x64_4.2.850.tar.bz2".format(os.getcwd()), + ) depends_on("binutils@2.27:", type="run") + # Licensing + license_required = True + license_url = "https://www.amd.com/en/developer/uprof/uprof-eula.html" + conflicts("platform=darwin") requires("target=x86_64:", msg="AMD uProf available only on x86_64") diff --git a/var/spack/repos/builtin/packages/amr-wind/package.py b/var/spack/repos/builtin/packages/amr-wind/package.py index a9657f4db7c271..c2b96b163bc81b 100644 --- a/var/spack/repos/builtin/packages/amr-wind/package.py +++ b/var/spack/repos/builtin/packages/amr-wind/package.py @@ -21,103 +21,43 @@ class AmrWind(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("main", branch="main", submodules=True) - version( - "3.1.5", tag="v3.1.5", commit="554f8aa1ac36c2bae17565c64d5bc33333cee396", submodules=True - ) - version( - "3.1.4", tag="v3.1.4", commit="e10f5ebd3141b9990a65ebe9f1bdca8554b59472", submodules=True - ) - version( - "3.1.3", tag="v3.1.3", commit="af8231ace69119133c4c8a906e98946ec5aa79c8", submodules=True - ) - version( - "3.1.2", tag="v3.1.2", commit="5edcac4496e30e450c0f21e7fa74f8b590dc3860", submodules=True - ) - version( - "3.1.1", tag="v3.1.1", commit="8ae06194fa47bf473615988f97a7b423d467b023", submodules=True - ) - version( - "3.1.0", tag="v3.1.0", commit="3e23581b132532bf70b09c38217ff9c46204f047", submodules=True - ) - version( - "3.0.2", tag="v3.0.2", commit="f867288dffecc6404189afa965189c2558cf9922", submodules=True - ) - version( - "3.0.1", tag="v3.0.1", commit="65aa85db5cb3bbabc767d5dde4b106b7022a0f90", submodules=True - ) - version( - "3.0.0", tag="v3.0.0", commit="2fbd345cfa7cb7277c1cb6a1323247579e1bbc32", submodules=True - ) - version( - "2.6.0", tag="v2.6.0", commit="31ef1137b00b304b62b84edaa5b819c0bf0b7436", submodules=True - ) - version( - "2.5.0", tag="v2.5.0", commit="f9f499b6926339f96b3ff260495b8782c045555c", submodules=True - ) - version( - "2.4.3", tag="v2.4.3", commit="4be85f376d4939f8e5534b7985917e4cfccedfaf", submodules=True - ) - version( - "2.4.2", tag="v2.4.2", commit="5ebb2abf2df9c87e6086d8f55a4d929ff0cdb37b", submodules=True - ) - version( - "2.4.1", tag="v2.4.1", commit="40accd372f850e10fcbeee6ddecc4d15fd6364c6", submodules=True - ) - version( - "2.4.0", tag="v2.4.0", commit="b8ab898b7e9e8e78455b61e303940b80d00d18ca", submodules=True - ) - version( - "2.3.2", tag="v2.3.2", commit="61cbb21e8dfdeea47a0add772cd52abac33c4901", submodules=True - ) - version( - "2.3.1", tag="v2.3.1", commit="cc51dadb34de9f333605a5bfb83b72c9310f676a", submodules=True - ) - version( - "2.3.0", tag="v2.3.0", commit="6ba000b628aa3178545cdbbea508cc2cb2e5c76c", submodules=True - ) - version( - "2.2.1", tag="v2.2.1", commit="e131a79f8e68be181390a2656f54268f90a9e78a", submodules=True - ) - version( - "2.2.0", tag="v2.2.0", commit="bc787f21deca9239928182e27400133934c62658", submodules=True - ) - version( - "2.1.0", tag="v2.1.0", commit="13e15b52f4a1651a3d72324a71ba1e18255663e7", submodules=True - ) - version( - "2.0.0", tag="v2.0.0", commit="ea448365033fc6bc9ee0febeb369b377f4fd8240", submodules=True - ) - version( - "1.4.0", tag="v1.4.0", commit="bdddf133e41a9b7b4c8ce28f1ea1bebec47678f5", submodules=True - ) - version( - "1.3.1", tag="v1.3.1", commit="63692889143599de57232e64a9c7e4af8f0a2e1e", submodules=True - ) - version( - "1.3.0", tag="v1.3.0", commit="f74d7b3801f0492e586d440fac729d9dec595a8b", submodules=True - ) - version( - "1.2.1", tag="v1.2.1", commit="7291737434ca339ecc765355eab88ddd529ff68f", submodules=True - ) - version( - "1.2.0", tag="v1.2.0", commit="db9add5c1c68583a9019cb7ba6776bd580b0ab3e", submodules=True - ) - version( - "1.1.0", tag="v1.1.0", commit="30396bf70f0bd5ac65dd0f7b29757b0e02b22459", submodules=True - ) - version( - "1.0.1", tag="v1.0.1", commit="aa9b7e8e63833e6ac1cc3f60fcba5140416cc139", submodules=True - ) - version( - "1.0.0", tag="v1.0.0", commit="885f4137ce7b9e6c60f48aa5e4c1a54f1418ea9e", submodules=True - ) - version( - "0.9.0", tag="v0.9.0", commit="cf66ebe31fd5f27b76a83451cd22f346e7a67160", submodules=True - ) - - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + version("3.2.0", tag="v3.2.0", submodules=True) + version("3.1.7", tag="v3.1.7", submodules=True) + version("3.1.6", tag="v3.1.6", submodules=True) + version("3.1.5", tag="v3.1.5", submodules=True) + version("3.1.4", tag="v3.1.4", submodules=True) + version("3.1.3", tag="v3.1.3", submodules=True) + version("3.1.2", tag="v3.1.2", submodules=True) + version("3.1.1", tag="v3.1.1", submodules=True) + version("3.1.0", tag="v3.1.0", submodules=True) + version("3.0.2", tag="v3.0.2", submodules=True) + version("3.0.1", tag="v3.0.1", submodules=True) + version("3.0.0", tag="v3.0.0", submodules=True) + version("2.6.0", tag="v2.6.0", submodules=True) + version("2.5.0", tag="v2.5.0", submodules=True) + version("2.4.3", tag="v2.4.3", submodules=True) + version("2.4.2", tag="v2.4.2", submodules=True) + version("2.4.1", tag="v2.4.1", submodules=True) + version("2.4.0", tag="v2.4.0", submodules=True) + version("2.3.2", tag="v2.3.2", submodules=True) + version("2.3.1", tag="v2.3.1", submodules=True) + version("2.3.0", tag="v2.3.0", submodules=True) + version("2.2.1", tag="v2.2.1", submodules=True) + version("2.2.0", tag="v2.2.0", submodules=True) + version("2.1.0", tag="v2.1.0", submodules=True) + version("2.0.0", tag="v2.0.0", submodules=True) + version("1.4.0", tag="v1.4.0", submodules=True) + version("1.3.1", tag="v1.3.1", submodules=True) + version("1.3.0", tag="v1.3.0", submodules=True) + version("1.2.1", tag="v1.2.1", submodules=True) + version("1.2.0", tag="v1.2.0", submodules=True) + version("1.1.0", tag="v1.1.0", submodules=True) + version("1.0.1", tag="v1.0.1", submodules=True) + version("1.0.0", tag="v1.0.0", submodules=True) + version("0.9.0", tag="v0.9.0", submodules=True) + + depends_on("c", type="build") + depends_on("cxx", type="build") variant("hypre", default=False, description="Enable Hypre integration") variant("ascent", default=False, description="Enable Ascent integration") diff --git a/var/spack/repos/builtin/packages/amrex/package.py b/var/spack/repos/builtin/packages/amrex/package.py index 724b5130c19169..07c4d2ae66c8f5 100644 --- a/var/spack/repos/builtin/packages/amrex/package.py +++ b/var/spack/repos/builtin/packages/amrex/package.py @@ -26,6 +26,7 @@ class Amrex(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("develop", branch="development") + version("24.11", sha256="31cc37b39f15e02252875815f6066046fc56a479bf459362b9889b0d6a202df6") version("24.10", sha256="a2d15e417bd7c41963749338e884d939c80c5f2fcae3279fe3f1b463e3e4208a") version("24.09", sha256="a1435d16532d04a1facce9a9ae35d68a57f7cd21a5f22a6590bde3c265ea1449") version("24.08", sha256="e09623e715887a19a1f86ed6fdb8335022fd6c03f19372d8f13b55cdeeadf5de") diff --git a/var/spack/repos/builtin/packages/aocl-compression/package.py b/var/spack/repos/builtin/packages/aocl-compression/package.py index b40854b23f7320..eb0d1c6c9a24c4 100644 --- a/var/spack/repos/builtin/packages/aocl-compression/package.py +++ b/var/spack/repos/builtin/packages/aocl-compression/package.py @@ -4,8 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # ---------------------------------------------------------------------------- -from llnl.util import tty - from spack.package import * @@ -41,15 +39,16 @@ class AoclCompression(CMakePackage): _name = "aocl-compression" homepage = "https://www.amd.com/en/developer/aocl/compression.html" git = "https://github.com/amd/aocl-compression.git" - url = "https://github.com/amd/aocl-compression/archive/refs/tags/4.2.tar.gz" + url = "https://github.com/amd/aocl-compression/archive/4.2.tar.gz" maintainers("amd-toolchain-support") version( - "4.2", - sha256="a18b3e7f64a8105c1500dda7b4c343e974b5e26bfe3dd838a1c1acf82a969c6f", + "5.0", + sha256="50bfb2c4a4738b96ed6d45627062b17bb9d0e1787c7d83ead2841da520327fa4", preferred=True, ) + version("4.2", sha256="a18b3e7f64a8105c1500dda7b4c343e974b5e26bfe3dd838a1c1acf82a969c6f") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -67,28 +66,25 @@ class AoclCompression(CMakePackage): default=False, description="openmp based multi-threaded compression and decompression", ) + variant( + "decompress_fast", + default="OFF", + values=("OFF", "1", "2"), + description="Enable fast decompression modes", + multi=False, + ) + variant("enable_fast_math", default=False, description="Enable fast-math optimizations") - depends_on("cmake@3.15:", type="build") + depends_on("cmake@3.22:", type="build") def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec args = [] - if not ( - spec.satisfies(r"%aocc@4.1:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@16:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@4.1:4.2, and clang@16:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - args = [ self.define_from_variant("AOCL_ENABLE_THREADS", "openmp"), + self.define_from_variant("ENABLE_FAST_MATH", "enable_fast_math"), "-DLZ4_FRAME_FORMAT_SUPPORT=ON", "-DAOCL_LZ4HC_DISABLE_PATTERN_ANALYSIS=ON", ] @@ -109,4 +105,5 @@ def cmake_args(self): if spec.satisfies("~lz4hc"): args.append("-DAOCL_EXCLUDE_LZ4HC=ON") + args.append("-DAOCL_DECOMPRESS_FAST={}".format(spec.variants["decompress_fast"].value)) return args diff --git a/var/spack/repos/builtin/packages/aocl-crypto/lsb_release.patch b/var/spack/repos/builtin/packages/aocl-crypto/lsb_release.patch new file mode 100644 index 00000000000000..6043876c41db6a --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-crypto/lsb_release.patch @@ -0,0 +1,153 @@ +diff --git a/cmake/CompilerLinux.cmake b/cmake/CompilerLinux.cmake +index f54bea37..8541e343 100644 +--- a/cmake/CompilerLinux.cmake ++++ b/cmake/CompilerLinux.cmake +@@ -32,22 +32,11 @@ function(alcp_get_build_environment) + set (ALCP_BUILD_COMPILER "Clang_v${CMAKE_CXX_COMPILER_VERSION}") + endif() + +- # uses lsb_release utility on linux, as cmake doesnt have a variable which has the Linux flavor information +- find_program(LSB_RELEASE_EXEC lsb_release) +- if(NOT LSB_RELEASE_EXEC) +- MESSAGE(FATAL_ERROR "LSB Release is missing from the machine, please install lsb_release!") +- endif() +- execute_process(COMMAND ${LSB_RELEASE_EXEC} -r -s +- OUTPUT_VARIABLE OS_VERSION +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) +- execute_process(COMMAND ${LSB_RELEASE_EXEC} -i -s +- OUTPUT_VARIABLE OS_VENDOR +- OUTPUT_STRIP_TRAILING_WHITESPACE +- ) +- ++ cmake_host_system_information(RESULT OS_VERSION QUERY DISTRIB_PRETTY_NAME) ++ message(STATUS "OS Information: ${OS_VERSION}") ++ + # final build env string will contain compiler and system environment details where the binary was created +- set (ALCP_BUILD_ENV ${ALCP_BUILD_COMPILER}_${OS_VENDOR}_${OS_VERSION} PARENT_SCOPE) ++ set (ALCP_BUILD_ENV ${ALCP_BUILD_COMPILER}_${OS_VERSION} PARENT_SCOPE) + endfunction(alcp_get_build_environment) + + +diff --git a/docs/resources/Quick_Start.md b/docs/resources/Quick_Start.md +index 17bc025a..278a3d1f 100644 +--- a/docs/resources/Quick_Start.md ++++ b/docs/resources/Quick_Start.md +@@ -141,47 +141,6 @@ AOCL_CRYPTO_REPO="https://github.com/amd/aocl-crypto.git" + AOCL_UTILS_REPO="https://github.com/amd/aocl-utils.git" + AOCL_BRANCH="amd-main" + +-# Function to check if lsb_release is installed +-ensure_lsb_release(){ +- if ! type "lsb_release" > /dev/null; then +- if type "apt" > /dev/null; then +- if type "sudo" > /dev/null; then +- sudo apt update +- sudo apt install lsb-release +- else +- echo "lsb-release not found, cannot install! missing \"sudo\" binary" +- exit -1; # We cannot do anything anymore +- fi +- else +- echo "lsb-release not found, cannot install! missing \"apt\" binary" +- fi +- fi +- +- type lsb_release > /dev/null +- if [ $? -ne 0 ]; then +- echo "lsb_release not found!" +- exit -1; +- else +- echo "lsb_release found" +- fi +-} +- +-# Function to check if OS is ubuntu with a specific version +-detect_ubuntu(){ +- +- lsb_release --id | grep "Ubuntu" > /dev/null +- if [ $? -eq 0 ]; then +- # Detected Ubuntu +- echo "Detected Ubuntu" +- lsb_release --release | grep $1 > /dev/null +- if [ $? -eq 0 ]; then +- echo "Detected OS Release Version $1" +- return 0 +- fi +- fi +- return 1 # Return error +-} +- + # Function to exit with an error if some execution failed + quit_if_status_not_zero(){ + if [ $1 -ne 0 ]; then +@@ -338,8 +297,6 @@ run_example_cfb(){ + + # Make sure we dont destroy anything + ensure_no_directory_conflict +-# Make sure we can detect the OS +-ensure_lsb_release + # Make sure all the needed packages (dependancies) are installed + ensure_packages + # Clone Utils and Crypto +diff --git a/scripts/Clone_Build.sh b/scripts/Clone_Build.sh +index 89a7cd2f..1ed2f3cf 100755 +--- a/scripts/Clone_Build.sh ++++ b/scripts/Clone_Build.sh +@@ -36,47 +36,6 @@ AOCL_CRYPTO_REPO="git@er.github.amd.com:AOCL/aocl-crypto" + AOCL_UTILS_REPO="git@github.amd.com:AOCL/aocl-utils" + AOCL_BRANCH="amd-main" + +-# Function to check if lsb_release is installed +-ensure_lsb_release(){ +- if ! type "lsb_release" > /dev/null; then +- if type "apt" > /dev/null; then +- if type "sudo" > /dev/null; then +- sudo apt update +- sudo apt install lsb-release +- else +- echo "lsb-release not found, cannot install! missing \"sudo\" binary" +- exit -1; # We cannot do anything anymore +- fi +- else +- echo "lsb-release not found, cannot install! missing \"apt\" binary" +- fi +- fi +- +- type lsb_release > /dev/null +- if [ $? -ne 0 ]; then +- echo "lsb_release not found!" +- exit -1; +- else +- echo "lsb_release found" +- fi +-} +- +-# Function to check if OS is ubuntu with a specific version +-detect_ubuntu(){ +- +- lsb_release --id | grep "Ubuntu" > /dev/null +- if [ $? -eq 0 ]; then +- # Detected Ubuntu +- echo "Detected Ubuntu" +- lsb_release --release | grep $1 > /dev/null +- if [ $? -eq 0 ]; then +- echo "Detected OS Release Version $1" +- return 0 +- fi +- fi +- return 1 # Return error +-} +- + # Function to exit with an error if some execution failed + quit_if_status_not_zero(){ + if [ $1 -ne 0 ]; then +@@ -233,8 +192,6 @@ run_example_cfb(){ + + # Make sure we dont destroy anything + ensure_no_directory_conflict +-# Make sure we can detect the OS +-ensure_lsb_release + # Make sure all the needed packages (dependancies) are installed + ensure_packages + # Clone Utils and Crypto diff --git a/var/spack/repos/builtin/packages/aocl-crypto/package.py b/var/spack/repos/builtin/packages/aocl-crypto/package.py index 65a687cb27c82f..4de7a3a439b57d 100644 --- a/var/spack/repos/builtin/packages/aocl-crypto/package.py +++ b/var/spack/repos/builtin/packages/aocl-crypto/package.py @@ -2,10 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) - # ---------------------------------------------------------------------------- -from llnl.util import tty - from spack.package import * @@ -35,24 +32,35 @@ class AoclCrypto(CMakePackage): _name = "aocl-crypto" homepage = "https://www.amd.com/en/developer/aocl/cryptography.html" - git = "https://github.com/amd/aocl-crypto" - url = "https://github.com/amd/aocl-crypto/archive/refs/tags/4.2.tar.gz" + url = "https://github.com/amd/aocl-crypto/archive/4.2.tar.gz" + git = "https://github.com/amd/aocl-crypto/" maintainers("amd-toolchain-support") + version( - "4.2", - sha256="2bdbedd8ab1b28632cadff237f4abd776e809940ad3633ad90fc52ce225911fe", + "5.0", + sha256="b15e609943f9977e13f2d5839195bb7411c843839a09f0ad47f78f57e8821c23", preferred=True, ) + version("4.2", sha256="2bdbedd8ab1b28632cadff237f4abd776e809940ad3633ad90fc52ce225911fe") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated variant("examples", default=False, description="Build examples") + variant("ipp", default=False, description="Build Intel IPP library") + + # Removed dependency on lsb_release + patch( + "lsb_release.patch", + sha256="b61d6d2518276c56d37e8c64d18488081af70f29a62f315ecbd23664e0e440b9", + when="@5.0", + ) - depends_on("cmake@3.15:", type="build") - depends_on("openssl@3.0.0:") + depends_on("cmake@3.22:", type="build") + depends_on("openssl@3.1.5:") + depends_on("intel-oneapi-ippcp@2021.12.0:", when="+ipp") depends_on("p7zip", type="build") - for vers in ["4.2"]: + for vers in ["4.2", "5.0"]: with when(f"@={vers}"): depends_on(f"aocl-utils@={vers}") @@ -75,22 +83,22 @@ def build_directory(self): def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec - if not ( - spec.satisfies(r"%aocc@4.1:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@16:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@4.1:4.2, and clang@16:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - - args = ["-DCMAKE_C_COMPILER=%s" % spack_cc, "-DCMAKE_CXX_COMPILER=%s" % spack_cxx] - args.append(self.define_from_variant("ALCP_ENABLE_EXAMPLES", "examples")) - args.append("-DOPENSSL_INSTALL_DIR=" + spec["openssl"].prefix) - args.append("-DENABLE_AOCL_UTILS=ON") - args.append("-DAOCL_UTILS_INSTALL_DIR=" + spec["aocl-utils"].prefix) + + args = [ + self.define_from_variant("ALCP_ENABLE_EXAMPLES", "examples"), + self.define("ENABLE_AOCL_UTILS", True), + self.define("AOCL_UTILS_INSTALL_DIR", spec["aocl-utils"].prefix), + self.define("CMAKE_INSTALL_LIBDIR", "lib"), + self.define("ALCP_ENABLE_DYNAMIC_COMPILER_PICK", False), + ] + + compat_libs = ["openssl"] + args.append(self.define("OPENSSL_INSTALL_DIR", spec["openssl"].prefix)) + + if "+ipp" in spec: + compat_libs.append("ipp") + args.append(self.define("IPP_INSTALL_DIR", spec["intel-oneapi-ippcp"].prefix)) + + args.append(self.define("AOCL_COMPAT_LIBS", ",".join(compat_libs))) return args diff --git a/var/spack/repos/builtin/packages/aocl-da/0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch b/var/spack/repos/builtin/packages/aocl-da/0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch new file mode 100644 index 00000000000000..95fbe82b44d044 --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-da/0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch @@ -0,0 +1,27 @@ +From 961ce9edbba7e18eca97cf3725515e627bbe39e1 Mon Sep 17 00:00:00 2001 +From: Edvin Hopkins +Date: Wed, 16 Oct 2024 11:38:28 +0100 +Subject: [PATCH] Fix to enable cmake to be configured with examples off but + gtests on + +--- + tests/unit_tests/CMakeLists.txt | 3 --- + 1 file changed, 3 deletions(-) + +diff --git a/tests/unit_tests/CMakeLists.txt b/tests/unit_tests/CMakeLists.txt +index e5e05c6..e479c7d 100644 +--- a/tests/unit_tests/CMakeLists.txt ++++ b/tests/unit_tests/CMakeLists.txt +@@ -107,9 +107,6 @@ add_executable(kmeans_tests kmeans_tests.cpp) + add_executable(nlls_tests nlls_tests.cpp) + + add_executable(pca_tests pca_tests.cpp) +-target_compile_definitions( +- pca +- PRIVATE DATA_DIR="${CMAKE_CURRENT_SOURCE_DIR}/../data/factorization_data/") + target_link_libraries(pca_tests PRIVATE ${BLAS}) + + add_executable(data data_tests.cpp) +-- +2.34.1 + diff --git a/var/spack/repos/builtin/packages/aocl-da/package.py b/var/spack/repos/builtin/packages/aocl-da/package.py new file mode 100644 index 00000000000000..067cb8d03d89cb --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-da/package.py @@ -0,0 +1,130 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import os + +from spack.package import * +from spack.util.environment import EnvironmentModifications + + +class AoclDa(CMakePackage): + """ + The AOCL Data Analytics Library (AOCL-DA) is a data analytics library + providing optimized building blocks for data analysis. It is written with a + C-compatible interface to make it as seamless as possible to integrate + with the library from whichever programming language you are using. + The intended workflow for using the library is as follows: + • load data from memory by reading CSV files or using the in-built + da_datastore object + • preprocess the data by removing missing values, standardizing, and + selecting certain subsets of the data, before extracting contiguous + arrays of data from the da_datastore objects + • data processing (e.g. principal component analysis, linear model + fitting, etc.) + C++ example programs can be found in the examples folder of your + installation. + """ + + _name = "aocl-da" + homepage = "https://www.amd.com/en/developer/aocl/data-analytics.html" + git = "https://github.com/amd/aocl-data-analytics" + url = "https://github.com/amd/aocl-data-analytics/archive/5.0.tar.gz" + + maintainers("amd-toolchain-support") + + version("5.0", sha256="3458adc7be39c78a08232c887f32838633149df0a69ccea024327c3edc5a5c1d") + + variant("examples", default=True, description="Build examples") + variant("gtest", default=False, description="Build and install Googletest") + variant("ilp64", default=False, description="Build with ILP64 support") + variant( + "openmp", + default=True, + description="Build using OpenMP and link to threaded BLAS and LAPACK", + ) + variant("shared", default=True, description="Build shared libraries") + variant("python", default=True, description="Build with Python bindings") + + # Fix to enable cmake to be configured with examples off but gtest on + patch( + "0001-Fix-to-enable-cmake-to-be-configured-with-examples-o.patch", + sha256="65be59e99d52816cb77d3e887cd4816870576b46748b53073658caa9ca07d127", + when="@5.0", + ) + + depends_on("cmake@3.22:", type="build") + for vers in ["5.0"]: + with when(f"@={vers}"): + depends_on(f"aocl-utils@={vers} +shared", when="+shared") + depends_on(f"aocl-utils@={vers} ~shared", when="~shared") + depends_on(f"amdblis@={vers} libs=shared", when="+shared") + depends_on(f"amdblis@={vers} libs=static", when="~shared") + depends_on(f"amdlibflame@={vers} +shared", when="+shared") + depends_on(f"amdlibflame@={vers} ~shared", when="~shared") + depends_on(f"aocl-sparse@={vers} +shared", when="+shared") + depends_on(f"aocl-sparse@={vers} ~shared", when="~shared") + + depends_on("amdblis threads=openmp", when="+openmp") + depends_on("amdlibflame threads=openmp", when="+openmp") + depends_on("amdblis threads=none", when="~openmp") + depends_on("amdlibflame threads=none", when="~openmp") + depends_on("aocl-sparse +openmp", when="+openmp") + depends_on("aocl-sparse ~openmp", when="~openmp") + + with when("+python"): + depends_on("python", type=("build", "run")) + depends_on("py-wheel", type=("build", "run")) + depends_on("py-setuptools", type=("build", "run")) + depends_on("py-pybind11", type=("build", "link", "run")) + depends_on("py-numpy", type=("build", "run")) + depends_on("py-pip", type=("build", "run")) + depends_on("patchelf", type="build") + depends_on("py-pytest", type="test") + depends_on("py-scikit-learn", type=("test", "run")) + + def setup_build_environment(self, env): + if self.spec.satisfies("%aocc"): + cc = self.compiler.cc + compiler_install_dir = os.path.dirname(os.path.dirname(cc)) + env.append_path("LD_LIBRARY_PATH", join_path(compiler_install_dir, "lib")) + + def setup_run_environment(self, env): + env.prepend_path("PYTHONPATH", join_path(self.prefix, "python_package")) + + def cmake_args(self): + """Runs ``cmake`` in the build directory""" + spec = self.spec + args = [] + args.append(f"-DUTILS_LIB={spec['aocl-utils'].libs}") + args.append(f"-DUTILS_CPUID_LIB={spec['aocl-utils'].libs}") + args.append(f"-DUTILS_CORE_LIB={spec['aocl-utils'].libs}") + args.append(f"-DBLAS_LIB={spec['amdblis'].libs}") + args.append("-DBLAS_INCLUDE_DIR={0}/blis".format(spec["amdblis"].prefix.include)) + args.append(f"-DLAPACK_LIB={spec['amdlibflame'].libs}") + args.append("-DLAPACK_INCLUDE_DIR={0}".format(spec["amdlibflame"].prefix.include)) + args.append(f"-DSPARSE_LIB={spec['aocl-sparse'].libs}") + args.append("-DSPARSE_INCLUDE_DIR={0}".format(spec["aocl-sparse"].prefix.include)) + args.append(self.define_from_variant("BUILD_EXAMPLES", "examples")) + args.append(self.define_from_variant("BUILD_GTEST", "gtest")) + args.append(self.define_from_variant("BUILD_ILP64", "ilp64")) + args.append(self.define_from_variant("BUILD_SMP", "openmp")) + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + args.append(self.define_from_variant("BUILD_PYTHON", "python")) + + return args + + @run_after("install") + @on_package_attributes(run_tests=True) + def test_python(self): + """Perform smoke tests on the installed package.""" + pytest = which("pytest") + envmod = EnvironmentModifications() + envmod.append_path("PYTHONPATH", join_path(self.prefix, "python_package")) + pytest.add_default_envmod(envmod) + pytest( + join_path( + install_test_root(self), join_path(self.stage.source_path, "python_interface") + ) + ) diff --git a/var/spack/repos/builtin/packages/aocl-libmem/cmake.patch b/var/spack/repos/builtin/packages/aocl-libmem/cmake.patch new file mode 100644 index 00000000000000..733ef7c048c5a6 --- /dev/null +++ b/var/spack/repos/builtin/packages/aocl-libmem/cmake.patch @@ -0,0 +1,46 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 74b7bd8..d787a7d 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -32,7 +32,7 @@ endif() + # set the project name and version + set(LIBMEM_VERSION_STRING 5.0) + +-project(aocl-libmem VERSION ${LIBMEM_VERSION_STRING} LANGUAGES C DESCRIPTION ++project(aocl-libmem VERSION ${LIBMEM_VERSION_STRING} LANGUAGES C CXX DESCRIPTION + "Library of AMD optimized string/memory functions") + + string(TIMESTAMP BUILD_DATE "%Y%m%d") +@@ -45,7 +45,7 @@ add_definitions(-DLIBMEM_BUILD_VERSION="${LIBMEM_BUILD_VERSION_STR}") + set(DEFAULT_BUILD_TYPE "Release") + + set(CMAKE_C_STANDARD 99) +- ++set(CMAKE_CXX_STANDARD 17) + option(ENABLE_LOGGING "Enable Logger" OFF) + + option(ENABLE_TUNABLES "Enable user input" OFF) +@@ -100,6 +100,22 @@ endif () + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src) + + # let the build system know the tools directory +-add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tools) ++include(CheckCXXSourceRuns) ++check_cxx_source_runs(" ++#include ++int main() { ++ unsigned int eax, ebx, ecx, edx; ++ if (__get_cpuid(0, &eax, &ebx, &ecx, &edx)) { ++ // The 'AuthenticAMD' string is EBX, EDX, ECX after calling cpuid with eax=0 ++ if (ebx == 0x68747541 && edx == 0x69746E65 && ecx == 0x444D4163) { ++ return 0; // AMD CPU detected ++ } ++ } ++ return 1; // Non-AMD CPU ++} ++" AMD_Tools) ++if(AMD_Tools) ++ add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/tools) ++endif() + + file(WRITE ${CMAKE_BINARY_DIR}/version.h ${LIBMEM_BUILD_VERSION_STR}) diff --git a/var/spack/repos/builtin/packages/aocl-libmem/package.py b/var/spack/repos/builtin/packages/aocl-libmem/package.py index c01365db7dd717..d01693622556fb 100644 --- a/var/spack/repos/builtin/packages/aocl-libmem/package.py +++ b/var/spack/repos/builtin/packages/aocl-libmem/package.py @@ -4,8 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) # ---------------------------------------------------------------------------- -from llnl.util import tty - from spack.package import * @@ -31,15 +29,16 @@ class AoclLibmem(CMakePackage): _name = "aocl-libmem" homepage = "https://www.amd.com/en/developer/aocl/libmem.html" git = "https://github.com/amd/aocl-libmem" - url = "https://github.com/amd/aocl-libmem/archive/refs/tags/4.2.tar.gz" + url = "https://github.com/amd/aocl-libmem/archive/4.2.tar.gz" maintainers("amd-toolchain-support") version( - "4.2", - sha256="4ff5bd8002e94cc2029ef1aeda72e7cf944b797c7f07383656caa93bcb447569", + "5.0", + sha256="d3148db1a57fec4f3468332c775cade356e8133bf88385991964edd7534b7e22", preferred=True, ) + version("4.2", sha256="4ff5bd8002e94cc2029ef1aeda72e7cf944b797c7f07383656caa93bcb447569") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -55,7 +54,14 @@ class AoclLibmem(CMakePackage): multi=False, ) - depends_on("cmake@3.15:", type="build") + # validator needs to be built only for AuthenticAMD targets + patch( + "cmake.patch", + sha256="43453a83f322de7c89264439b2e9cbde855e50f550e13ebc884d13d959002092", + when="@5.0", + ) + + depends_on("cmake@3.22:", type="build") @property def libs(self): @@ -67,18 +73,6 @@ def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec - if not ( - spec.satisfies(r"%aocc@4.1:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@16:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@4.1:4.2, and clang@16:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - args = [] args.append(self.define_from_variant("ENABLE_LOGGING", "logging")) args.append(self.define_from_variant("ENABLE_TUNABLES", "tunables")) diff --git a/var/spack/repos/builtin/packages/aocl-sparse/package.py b/var/spack/repos/builtin/packages/aocl-sparse/package.py index 7d37966e25788c..eb438a130c5bf3 100644 --- a/var/spack/repos/builtin/packages/aocl-sparse/package.py +++ b/var/spack/repos/builtin/packages/aocl-sparse/package.py @@ -5,8 +5,6 @@ import os -from llnl.util import tty - from spack.package import * @@ -33,10 +31,11 @@ class AoclSparse(CMakePackage): license("MIT") version( - "4.2", - sha256="03cd67adcfea4a574fece98b60b4aba0a6e5a9c8f608ff1ccc1fb324a7185538", + "5.0", + sha256="7528970f41ae60563df9fe1f8cc74a435be1566c01868a603ab894e9956c3c94", preferred=True, ) + version("4.2", sha256="03cd67adcfea4a574fece98b60b4aba0a6e5a9c8f608ff1ccc1fb324a7185538") version("4.1", sha256="35ef437210bc25fdd802b462eaca830bfd928f962569b91b592f2866033ef2bb") version("4.0", sha256="68524e441fdc7bb923333b98151005bed39154d9f4b5e8310b5c37de1d69c2c3") version("3.2", sha256="db7d681a8697d6ef49acf3e97e8bec35b048ce0ad74549c3b738bbdff496618f") @@ -58,16 +57,29 @@ class AoclSparse(CMakePackage): when="@4.0: target=zen4:", description="Enable experimental AVX512 support", ) + variant("openmp", default=True, when="@4.2:", description="Enable OpenMP support") - for vers in ["4.1", "4.2"]: + for vers in ["4.1", "4.2", "5.0"]: with when(f"@={vers}"): depends_on(f"amdblis@={vers}") depends_on(f"amdlibflame@={vers}") if Version(vers) >= Version("4.2"): depends_on(f"aocl-utils@={vers}") + + depends_on("amdblis threads=openmp", when="+openmp") + depends_on("amdlibflame threads=openmp", when="+openmp") + depends_on("amdblis threads=none", when="~openmp") + depends_on("amdlibflame threads=none", when="~openmp") depends_on("boost", when="+benchmarks") depends_on("boost", when="@2.2") - depends_on("cmake@3.15:", type="build") + depends_on("cmake@3.22:", type="build") + + @property + def libs(self): + """find libaoclsparse libs function""" + return find_libraries( + "libaoclsparse", root=self.prefix, shared="+shared" in self.spec, recursive=True + ) @property def build_directory(self): @@ -89,18 +101,6 @@ def cmake_args(self): """Runs ``cmake`` in the build directory""" spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" - ) - args = [] args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) args.append(self.define_from_variant("BUILD_CLIENTS_SAMPLES", "examples")) @@ -111,21 +111,19 @@ def cmake_args(self): if spec.satisfies("@3.0:"): args.append(self.define_from_variant("BUILD_ILP64", "ilp64")) - if self.spec.satisfies("@4.1:"): + if spec.satisfies("@4.0:"): args.append(f"-DAOCL_BLIS_LIB={self.spec['amdblis'].libs}") + args.append("-DAOCL_BLIS_INCLUDE_DIR={0}/blis".format(spec["amdblis"].prefix.include)) + args.append(f"-DAOCL_LIBFLAME={spec['amdlibflame'].libs}") args.append( - "-DAOCL_BLIS_INCLUDE_DIR={0}/blis".format(self.spec["amdblis"].prefix.include) - ) - args.append(f"-DAOCL_LIBFLAME={self.spec['amdlibflame'].libs}") - args.append( - "-DAOCL_LIBFLAME_INCLUDE_DIR={0}".format(self.spec["amdlibflame"].prefix.include) + "-DAOCL_LIBFLAME_INCLUDE_DIR={0}".format(spec["amdlibflame"].prefix.include) ) - if self.spec.satisfies("@4.2:"): - args.append(f"-DAOCL_UTILS_LIB={self.spec['aocl-utils'].libs}") - args.append( - "-DAOCL_UTILS_INCLUDE_DIR={0}".format(self.spec["aocl-utils"].prefix.include) - ) + if spec.satisfies("@4.2:"): + args.append(f"-DAOCL_UTILS_LIB={spec['aocl-utils'].libs}") + args.append("-DAOCL_UTILS_INCLUDE_DIR={0}".format(spec["aocl-utils"].prefix.include)) + + args.append(self.define_from_variant("SUPPORT_OMP", "openmp")) return args diff --git a/var/spack/repos/builtin/packages/aocl-utils/package.py b/var/spack/repos/builtin/packages/aocl-utils/package.py index 693228ba9adec3..343b4eb11ebf4c 100644 --- a/var/spack/repos/builtin/packages/aocl-utils/package.py +++ b/var/spack/repos/builtin/packages/aocl-utils/package.py @@ -3,8 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -from llnl.util import tty - from spack.package import * @@ -38,10 +36,11 @@ class AoclUtils(CMakePackage): license("BSD-3-Clause") version( - "4.2", - sha256="1294cdf275de44d3a22fea6fc4cd5bf66260d0a19abb2e488b898aaf632486bd", + "5.0", + sha256="ee2e5d47f33a3f673b3b6fcb88a7ef1a28648f407485ad07b6e9bf1b86159c59", preferred=True, ) + version("4.2", sha256="1294cdf275de44d3a22fea6fc4cd5bf66260d0a19abb2e488b898aaf632486bd") version("4.1", sha256="660746e7770dd195059ec25e124759b126ee9f060f43302d13354560ca76c02c") depends_on("cxx", type="build") # generated @@ -51,6 +50,7 @@ class AoclUtils(CMakePackage): variant("shared", default=True, when="@4.2:", description="build shared library") variant("examples", default=False, description="enable examples") + depends_on("cmake@3.22:", type="build") depends_on("doxygen", when="+doc") @property @@ -60,23 +60,26 @@ def libs(self): return find_libraries("libaoclutils", root=self.prefix, recursive=True, shared=shared) def cmake_args(self): - spec = self.spec - if not ( - spec.satisfies(r"%aocc@3.2:4.2") - or spec.satisfies(r"%gcc@12.2:13.1") - or spec.satisfies(r"%clang@15:17") - ): - tty.warn( - "AOCL has been tested to work with the following compilers " - "versions - gcc@12.2:13.1, aocc@3.2:4.2, and clang@15:17 " - "see the following aocl userguide for details: " - "https://www.amd.com/content/dam/amd/en/documents/developer/version-4-2-documents/aocl/aocl-4-2-user-guide.pdf" + args = [ + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define("CMAKE_INSTALL_LIBDIR", "lib"), + ] + + if self.spec.satisfies("@5.0:"): + args.extend( + [ + self.define_from_variant("AU_BUILD_DOCS", "doc"), + self.define_from_variant("AU_BUILD_TESTS", "tests"), + self.define_from_variant("AU_BUILD_EXAMPLES", "examples"), + ] + ) + else: + args.extend( + [ + self.define_from_variant("ALCI_DOCS", "doc"), + self.define_from_variant("ALCI_TESTS", "tests"), + self.define_from_variant("ALCI_EXAMPLES", "examples"), + ] ) - - args = [] - args.append(self.define_from_variant("ALCI_DOCS", "doc")) - args.append(self.define_from_variant("ALCI_TESTS", "tests")) - args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) - args.append(self.define_from_variant("ALCI_EXAMPLES", "examples")) return args diff --git a/var/spack/repos/builtin/packages/arborx/package.py b/var/spack/repos/builtin/packages/arborx/package.py index b5fc91a175d542..da7b9e857c6b9a 100644 --- a/var/spack/repos/builtin/packages/arborx/package.py +++ b/var/spack/repos/builtin/packages/arborx/package.py @@ -63,7 +63,7 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): for backend in kokkos_backends: deflt, descr = kokkos_backends[backend] variant(backend.lower(), default=deflt, description=descr) - variant("trilinos", default=False, description="use Kokkos from Trilinos") + variant("trilinos", default=False, when="@:1.5", description="use Kokkos from Trilinos") depends_on("cmake@3.12:", type="build") depends_on("cmake@3.16:", type="build", when="@1.0:") @@ -77,8 +77,8 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos@3.6.00:", when="@1.3~trilinos") depends_on("kokkos@3.7.01:", when="@1.4:1.4.1~trilinos") depends_on("kokkos@4.0.00:", when="@1.5~trilinos") - depends_on("kokkos@4.1.00:", when="@1.6~trilinos") - depends_on("kokkos@4.2.00:", when="@1.7:~trilinos") + depends_on("kokkos@4.1.00:", when="@1.6") + depends_on("kokkos@4.2.00:", when="@1.7:") for backend in kokkos_backends: depends_on("kokkos+%s" % backend.lower(), when="~trilinos+%s" % backend.lower()) @@ -96,8 +96,9 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): conflicts("^kokkos", when="+trilinos") depends_on("kokkos+cuda_lambda", when="~trilinos+cuda") - # Trilinos/Kokkos + # Trilinos with internal Kokkos # Notes: + # - starting with Trilinos 14.4, Trilinos' spack package uses external Kokkos # - current version of Trilinos package does not allow disabling Serial # - current version of Trilinos package does not allow enabling CUDA depends_on("trilinos+kokkos", when="+trilinos") @@ -106,18 +107,16 @@ class Arborx(CMakePackage, CudaPackage, ROCmPackage): depends_on("trilinos@13.4.0:", when="@1.3+trilinos") depends_on("trilinos@14.0.0:", when="@1.4:1.4.1+trilinos") depends_on("trilinos@14.2.0:", when="@1.5+trilinos") - depends_on("trilinos@14.4.0:", when="@1.6+trilinos") - depends_on("trilinos@15.1.0:", when="@1.7:+trilinos") patch("trilinos14.0-kokkos-major-version.patch", when="@1.4+trilinos ^trilinos@14.0.0") conflicts("~serial", when="+trilinos") def cmake_args(self): spec = self.spec - if "~trilinos" in spec: - kokkos_spec = spec["kokkos"] - else: + if "+trilinos" in spec: kokkos_spec = spec["trilinos"] + else: + kokkos_spec = spec["kokkos"] options = [ f"-DKokkos_ROOT={kokkos_spec.prefix}", diff --git a/var/spack/repos/builtin/packages/armadillo/package.py b/var/spack/repos/builtin/packages/armadillo/package.py index 0f723296caf920..a2b562518ab33e 100644 --- a/var/spack/repos/builtin/packages/armadillo/package.py +++ b/var/spack/repos/builtin/packages/armadillo/package.py @@ -87,4 +87,9 @@ def cmake_args(self): self.define("SuperLU_LIBRARY", spec["superlu"].libs.joined(";")), # HDF5 support self.define("DETECT_HDF5", "ON" if spec.satisfies("+hdf5") else "OFF"), + # disable flexiblas support because armadillo will possibly detect system + # flexiblas which causes problems. If this is removed, then SuperLU and ARPACK must + # also link with Flexiblas. As this does not seem to be needed with the spack + # blas and lapack, it is easier to disable + self.define("ALLOW_FLEXIBLAS_LINUX", "OFF"), ] diff --git a/var/spack/repos/builtin/packages/armpl-gcc/package.py b/var/spack/repos/builtin/packages/armpl-gcc/package.py index b6dffafb85a671..25f187781e4822 100644 --- a/var/spack/repos/builtin/packages/armpl-gcc/package.py +++ b/var/spack/repos/builtin/packages/armpl-gcc/package.py @@ -54,6 +54,11 @@ } _versions = { + "24.10": { + "deb": ("2be772d41c0e8646e24c4f57e188e96f2dd8934966ae560c74fa905cbde5e1bc"), + "macOS": ("04e794409867e6042ed0f487bbaf47cc6edd527dc6ddad67160f1dba83906969"), + "rpm": ("055d4b3c63d990942d453a8720d029be7e604646218ffc3262321683f51f23aa"), + }, "24.04": { "deb": ("a323074cd08af82f4d79988cc66088b18e47dea4b93323b1b8a0f994f769f2f0"), "macOS": ("228bf3a2c25dbd45c2f89c78f455ee3c7dfb25e121c20d2765138b5174e688dc"), @@ -261,7 +266,8 @@ def get_os_or_pkg_manager(ver): return _os_pkg_map.get(platform.default_os, "rpm") -def get_package_url_before_24(base_url, version): +def get_package_url_before_24(version): + base_url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries" armpl_version = version.split("_")[0] armpl_version_dashed = armpl_version.replace(".", "-") compiler_version = version.split("_", 1)[1] @@ -270,7 +276,7 @@ def get_package_url_before_24(base_url, version): if armpl_version.startswith("23.06"): return ( f"{base_url}/{armpl_version_dashed}/" - + f"armpl_{armpl_version}_{compiler_version}.dmg" + f"armpl_{armpl_version}_{compiler_version}.dmg" ) else: filename = f"arm-performance-libraries_{armpl_version}_macOS.dmg" @@ -286,9 +292,11 @@ def get_package_url_before_24(base_url, version): return f"{base_url}/{armpl_version_dashed}/{os_short}/{filename}" -def get_package_url_from_24(base, version): +def get_package_url_from_24(version): + base_url = ( + "https://developer.arm.com/-/cdn-downloads/permalink/Arm-Performance-Libraries/Version" + ) pkg_system = get_os_or_pkg_manager(version) - os = "macOS" if pkg_system == "macOS" else "linux" extension = "tgz" if pkg_system == "macOS" else "tar" @@ -298,17 +306,15 @@ def get_package_url_from_24(base, version): full_name_library = f"{full_name_library}_gcc" file_name = f"{full_name_library}.{extension}" - vn = version.replace(".", "-") - url_parts = f"{base}/{vn}/{os}/{file_name}" + url_parts = f"{base_url}_{version}/{file_name}" return url_parts def get_package_url(version): - base_url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries" if version[:2] >= "24": - return get_package_url_from_24(base_url, version) + return get_package_url_from_24(version) else: - return get_package_url_before_24(base_url, version) + return get_package_url_before_24(version) def get_armpl_prefix(spec): @@ -335,8 +341,6 @@ class ArmplGcc(Package): high-performance computing applications on Arm processors.""" homepage = "https://developer.arm.com/tools-and-software/server-and-hpc/downloads/arm-performance-libraries" - url = "https://developer.arm.com/-/media/Files/downloads/hpc/arm-performance-libraries/24-04/linux/arm-performance-libraries_24.04_deb_gcc.tar" - maintainers("paolotricerri") for ver, packages in _versions.items(): @@ -434,7 +438,7 @@ def install(self, spec, prefix): exe = Executable( f"./arm-performance-libraries_{armpl_version}_" - + f"{get_os_or_pkg_manager(armpl_version)}.sh" + f"{get_os_or_pkg_manager(armpl_version)}.sh" ) exe("--accept", "--force", "--install-to", prefix) diff --git a/var/spack/repos/builtin/packages/arrow/package.py b/var/spack/repos/builtin/packages/arrow/package.py index 994579cdb9d297..53fc4bd8c67b79 100644 --- a/var/spack/repos/builtin/packages/arrow/package.py +++ b/var/spack/repos/builtin/packages/arrow/package.py @@ -17,6 +17,7 @@ class Arrow(CMakePackage, CudaPackage): license("Apache-2.0") + version("18.0.0", sha256="9c473f2c9914c59ab571761c9497cf0e5cfd3ea335f7782ccc6121f5cb99ae9b") version("16.1.0", sha256="9762d9ecc13d09de2a03f9c625a74db0d645cb012de1e9a10dfed0b4ddc09524") version("15.0.2", sha256="4735b349845bff1fe95ed11abbfed204eb092cabc37523aa13a80cb830fe5b5e") version("14.0.2", sha256="07cdb4da6795487c800526b2865c150ab7d80b8512a31793e6a7147c8ccd270f") diff --git a/var/spack/repos/builtin/packages/at-spi2-atk/package.py b/var/spack/repos/builtin/packages/at-spi2-atk/package.py index 85233ec111fcf1..584d008a5d4a6d 100644 --- a/var/spack/repos/builtin/packages/at-spi2-atk/package.py +++ b/var/spack/repos/builtin/packages/at-spi2-atk/package.py @@ -25,7 +25,7 @@ class AtSpi2Atk(MesonPackage): depends_on("c", type="build") # generated depends_on("pkgconfig", type="build") - depends_on("at-spi2-core@2.28.0:") + depends_on("at-spi2-core@2.28.0:2.45.1") depends_on("atk@2.28.1:") def url_for_version(self, version): diff --git a/var/spack/repos/builtin/packages/atk/package.py b/var/spack/repos/builtin/packages/atk/package.py index 6bebc59054cc2f..50fb042771c07a 100644 --- a/var/spack/repos/builtin/packages/atk/package.py +++ b/var/spack/repos/builtin/packages/atk/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Atk(Package): +class Atk(MesonPackage): """ATK provides the set of accessibility interfaces that are implemented by other toolkits and applications. Using the ATK interfaces, accessibility tools have full access to view and @@ -23,20 +23,10 @@ class Atk(Package): version("2.36.0", sha256="fb76247e369402be23f1f5c65d38a9639c1164d934e40f6a9cf3c9e96b652788") version("2.30.0", sha256="dd4d90d4217f2a0c1fee708a555596c2c19d26fef0952e1ead1938ab632c027b") version("2.28.1", sha256="cd3a1ea6ecc268a2497f0cd018e970860de24a6d42086919d6bf6c8e8d53f4fc") - version( - "2.20.0", - sha256="493a50f6c4a025f588d380a551ec277e070b28a82e63ef8e3c06b3ee7c1238f0", - deprecated=True, - ) - version( - "2.14.0", - sha256="2875cc0b32bfb173c066c22a337f79793e0c99d2cc5e81c4dac0d5a523b8fbad", - deprecated=True, - ) - depends_on("c", type="build") # generated + depends_on("c", type="build") - depends_on("meson@0.40.1:", type="build", when="@2.28:") + depends_on("meson@0.40.1:", type="build") depends_on("meson@0.46.0:", type="build", when="@2.29:") depends_on("glib") depends_on("gettext") @@ -45,33 +35,15 @@ class Atk(Package): depends_on("libffi") def url_for_version(self, version): - """Handle gnome's version-based custom URLs.""" - url = "http://ftp.gnome.org/pub/gnome/sources/atk" - return url + f"/{version.up_to(2)}/atk-{version}.tar.xz" + return ( + f"http://ftp.gnome.org/pub/gnome/sources/atk/" + f"{version.up_to(2)}/atk-{version}.tar.xz" + ) def setup_run_environment(self, env): - env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - - def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - - def install(self, spec, prefix): - with working_dir("spack-build", create=True): - meson("..", *std_meson_args) - ninja("-v") - ninja("install") - - @when("@:2.27") - def install(self, spec, prefix): - configure(f"--prefix={prefix}") - make() - if self.run_tests: - make("check") - make("install") - if self.run_tests: - make("installcheck") diff --git a/var/spack/repos/builtin/packages/axl/package.py b/var/spack/repos/builtin/packages/axl/package.py index 998cdc8cd184d2..119cf81da28336 100644 --- a/var/spack/repos/builtin/packages/axl/package.py +++ b/var/spack/repos/builtin/packages/axl/package.py @@ -27,6 +27,7 @@ class Axl(CMakePackage): license("MIT") version("main", branch="main") + version("0.9.0", sha256="da2d74092fb230754a63db3cd5ba72a233ee8153dec28cc604fa8465280299ba") version("0.8.0", sha256="9fcd4eae143a67ff02622feda2a541b85e9a108749c039faeb473cbbc2330459") version("0.7.1", sha256="526a055c072c85cc989beca656717e06b128f148fda8eb19d1d9b43a3325b399") version("0.7.0", sha256="840ef61eadc9aa277d128df08db4cdf6cfa46b8fcf47b0eee0972582a61fbc50") @@ -64,6 +65,9 @@ class Axl(CMakePackage): validator=async_api_validator, ) + variant("mpi", default=True, description="Build with MPI support", when="@0.7.1:") + depends_on("mpi", when="@0.7.1: +mpi") + variant("pthreads", default=True, description="Enable Pthread support", when="@0.6:") variant("bbapi", default=True, description="Enable IBM BBAPI support") @@ -86,6 +90,10 @@ def cmake_args(self): args = [] args.append(self.define("WITH_KVTREE_PREFIX", spec["kvtree"].prefix)) + args.append(self.define_from_variant("MPI")) + if spec.satisfies("+mpi"): + args.append(self.define("MPI_C_COMPILER", spec["mpi"].mpicc)) + if spec.satisfies("@:0.3.0"): apis = list(spec.variants["async_api"].value) if "daemon" in apis: diff --git a/var/spack/repos/builtin/packages/babelstream/package.py b/var/spack/repos/builtin/packages/babelstream/package.py index ec85b2d3569bc4..b09fcc5f6e4a62 100644 --- a/var/spack/repos/builtin/packages/babelstream/package.py +++ b/var/spack/repos/builtin/packages/babelstream/package.py @@ -3,65 +3,107 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import re # To get the variant name after (+) - +import spack.build_systems.cmake +import spack.build_systems.makefile from spack.package import * -def find_model_flag(str): - res = re.findall(r"\+(\w+)", str) - if not res: - return "" - return res - - -class Babelstream(CMakePackage, CudaPackage, ROCmPackage): +class Babelstream(CMakePackage, CudaPackage, ROCmPackage, MakefilePackage): """Measure memory transfer rates to/from global device memory on GPUs. This benchmark is similar in spirit, and based on, the STREAM benchmark for CPUs.""" homepage = "https://github.com/UoB-HPC/BabelStream" - url = "https://github.com/UoB-HPC/BabelStream/archive/refs/tags/v4.0.tar.gz" + url = "https://github.com/UoB-HPC/BabelStream/archive/refs/tags/v5.0.tar.gz" git = "https://github.com/UoB-HPC/BabelStream.git" + version("5.0", sha256="1a418203fbfd95595bdc66047e2e39d8f1bba95a49725c9ecb907caf1af2521f") version("4.0", sha256="a9cd39277fb15d977d468435eb9b894f79f468233f0131509aa540ffda4f5953") + version("3.4", sha256="e34ee9d5ccdead019e3ea478333bcb7886117d600e5da8579a626f6ee34209cf") + version("3.3", sha256="4c89c805b277d52776feeb7a8eef7985a0d9295ce3e0bb2333bf715f724723cf") + version("3.2", sha256="20309b27ddd09ea37406bcc6f46fd32e9372bf3d145757e55938d19d69cdc49d") + version("3.1", sha256="be69e6085e8966e12aa2df897eea6254b172e5adfa03de0adbb89bc3065f4fbe") + version("3.0", sha256="776219c72e0fdc36f134e6975b68c7ab25f38206f8f8af84a6f9630648c24800") + version("1.0", sha256="3cfb9e45601f1f249878355c72baa6e6a61f6c811f8716d60b83c7fb544e1d5c") version("main", branch="main") - version("develop", branch="develop") - - depends_on("cxx", type="build") # generated - - maintainers("tomdeakin", "kaanolgu", "tom91136", "robj0nes") - + maintainers("tomdeakin", "kaanolgu", "tom91136") + # Previous maintainers: "robj0nes" + depends_on("cxx", type="build", when="languages=cxx") + depends_on("fortran", type="build", when="languages=fortran") # Languages - # Also supported variants are cuda and rocm (for HIP) - variant("sycl", default=False, description="Enable SYCL support") - variant("sycl2020", default=False, description="Enable SYCL support") - variant("omp", default=False, description="Enable OpenMP support") - variant("ocl", default=False, description="Enable OpenCL support") - variant("tbb", default=False, description="Enable TBB support") - variant("acc", default=False, description="Enable OpenACC support") - variant("thrust", default=False, description="Enable THRUST support") - variant("raja", default=False, description="Enable RAJA support") - variant("stddata", default=False, description="Enable STD-data support") - variant("stdindices", default=False, description="Enable STD-indices support") - variant("stdranges", default=False, description="Enable STD-ranges support") + # in the future it could be possible to add other languages too + variant( + "languages", + default="cxx", + values=("cxx", "fortran"), + description="Languages Babelstream Spack Package Support", + ) + # Build System + build_system( + conditional("cmake", when="languages=cxx"), + conditional("makefile", when="languages=fortran"), + default="cmake", + ) + with when("languages=cxx"): + # Also supported variants are cuda and rocm (for HIP) + # not included here because they are supplied via respective packages + variant("sycl", default=False, description="Enable SYCL support") + variant("sycl2020", default=False, description="Enable SYCL support") + variant("omp", default=False, description="Enable OpenMP support") + variant("ocl", default=False, description="Enable OpenCL support") + variant("tbb", default=False, description="Enable TBB support") + variant("acc", default=False, description="Enable OpenACC support") + variant("hip", default=False, description="Enable HIP support") + variant("thrust", default=False, description="Enable THRUST support") + variant("raja", default=False, description="Enable RAJA support") + variant("std", default=False, description="Enable STD support") # Some models need to have the programming model abstraction downloaded - # this variant enables a path to be provided. variant("dir", values=str, default="none", description="Enable Directory support") + variant( + "sycl2020_submodel", + values=("usm", "acc"), + when="+sycl2020", + default="usm", + description="SYCL2020 -> choose between usm and acc methods", + ) + variant( + "std_submodel", + values=("data", "indices", "ranges"), + when="+std", + default="data", + description="STD -> choose between data, indices and ranges models", + ) - # Kokkos conflict and variant - conflicts( - "dir=none", when="+kokkos", msg="KOKKKOS requires architecture to be specfied by dir=" + variant( + "sycl2020_offload", + values=("nvidia", "intel"), + default="intel", + when="+sycl2020", + description="Offloading to NVIDIA GPU or not", ) - variant("kokkos", default=False, description="Enable KOKKOS support") - # ACC conflict - variant("cpu_arch", values=str, default="none", description="Enable CPU Target for ACC") - variant("acc_target", values=str, default="none", description="Enable CPU Target for ACC") + variant( + "thrust_submodel", + values=("cuda", "rocm"), + default="cuda", + when="+thrust", + description="Which THRUST implementation to use, supported options include option= \ + - CUDA (via https://github.com/NVIDIA/thrust)\ + - ROCM (via https://github.com/ROCmSoftwarePlatform/rocThrust)", + ) + variant( + "thrust_backend", + values=("cuda", "omp", "tbb"), + default="cuda", + when="+thrust", + description="Which THRUST implementation to use, supported options include option", + ) + + # Kokkos variant + variant("kokkos", default=False, description="Enable KOKKOS support") # STD conflicts - conflicts("+stddata", when="%gcc@:10.1.0", msg="STD-data requires newer version of GCC") - conflicts("+stdindices", when="%gcc@:10.1.0", msg="STD-indices requires newer version of GCC") - conflicts("+stdranges", when="%gcc@:10.1.0", msg="STD-ranges requires newer version of GCC") + conflicts("+std", when="%gcc@:10.1.0", msg="STD requires newer version of GCC") # CUDA conflict conflicts( @@ -69,349 +111,763 @@ class Babelstream(CMakePackage, CudaPackage, ROCmPackage): when="+cuda", msg="CUDA requires architecture to be specfied by cuda_arch=", ) - variant("mem", values=str, default="DEFAULT", description="Enable MEM Target for CUDA") - # Raja Conflict variant( - "offload", values=str, default="none", description="Enable RAJA Target [CPU or NVIDIA]" - ) - conflicts( - "offload=none", - when="+raja", - msg="RAJA requires architecture to be specfied by acc_target=[CPU,NVIDIA]", + "cuda_memory_mode", + values=("default", "managed", "pagefault"), + default="default", + when="+cuda", + description="Enable MEM Target for CUDA", ) - # download raja from https://github.com/LLNL/RAJA + # OMP offload + variant("omp_offload", default=False, when="+omp", description="Enable OpenMP Target") + variant( + "omp_flags", + values=str, + default="none", + when="+omp", + description="If OFFLOAD is enabled, this *overrides* the default offload flags", + ) conflicts( - "dir=none", + "omp_flags=none", + when="+omp_offload", + msg="OpenMP requires offload flags to be specfied by omp_flags=", + ) + # Raja offload + variant( + "raja_offload", + values=("cpu", "nvidia"), + default="cpu", when="+raja", - msg="RAJA implementation requires architecture to be specfied by dir=", + description="Enable RAJA Target [CPU or NVIDIA] / Offload with custom settings for OpenMP", + ) + # std-* offload + variant( + "std_offload", + values=("nvhpc", "none"), + default="none", + when="+std", + description="Enable offloading support (via the non-standard `-stdpar`)\ + for the new NVHPC SDK", + ) + variant( + "std_onedpl_backend", + values=("openmp", "tbb", "dpcpp", "none"), + default="none", + when="+std", + description="Implements policies using OpenMP,TBB or dpc++", + ) + variant( + "std_use_tbb", + values=(True, False), + default=False, + when="+std", + description="No-op if ONE_TBB_DIR is set. Link against an in-tree oneTBB\ + via FetchContent_Declare, see top level CMakeLists.txt for details", + ) + variant( + "std_use_onedpl", + values=(True, False), + default=False, + when="+std", + description="Link oneDPL which implements C++17 executor policies\ + (via execution_policy_tag) for different backends", + ) + # hip memory mode + variant( + "hip_mem_mode", + values=("default", "managed", "pagefault"), + default="default", + when="+hip", + description="Enable MEM Target for HIP", + ) + # tbb use vector + variant( + "tbb_use_vector", + values=(True, False), + default=False, + when="+tbb", + description="Whether to use std::vector for storage or use aligned_alloc. \ + C++ vectors are *zero* initialised where as aligned_alloc is \ + uninitialised before first use.", ) # Thrust Conflict - # conflicts("~cuda", when="+thrust", msg="Thrust requires +cuda variant") depends_on("thrust", when="+thrust") - depends_on("rocthrust", when="+thrust implementation=rocm") - + depends_on("cuda", when="thrust_submodel=cuda") + depends_on("cuda", when="+raja raja_offload=nvidia") + depends_on("hip", when="+hip") + depends_on("rocthrust", when="thrust_submodel=rocm") + depends_on("intel-tbb", when="+std +std_use_tbb") + depends_on("intel-oneapi-dpl", when="+std +std_use_onedpl") + depends_on("intel-tbb", when="+std +std_use_onedpl") # TBB Dependency - depends_on("intel-oneapi-tbb", when="+tbb") - partitioner_vals = ["auto", "affinity", "static", "simple"] + depends_on("intel-tbb", when="+tbb") + variant( - "partitioner", - values=partitioner_vals, + "tbb_partitioner", + values=("auto", "affinity", "static", "simple"), default="auto", + when="+tbb", description="Partitioner specifies how a loop template should partition its work among threads.\ Possible values are:\ AUTO - Optimize range subdivision based on work-stealing events.\ AFFINITY - Proportional splitting that optimizes for cache affinity.\ STATIC - Distribute work uniformly with no additional load balancing.\ SIMPLE - Recursively split its range until it cannot be further subdivided.\ - See https://spec.oneapi.com/versions/latest/elements/oneTBB/source/algorithms.html#partitioners for more details.", + See https://spec.oneapi.com/versions/latest/elements/oneTBB/source/algorithms.html#partitioners", ) - # Kokkos Dependency - depends_on("kokkos@3.7.1", when="+kokkos") + # Kokkos & RAJA Dependency + cuda_archs = CudaPackage.cuda_arch_values + for sm_ in cuda_archs: + depends_on( + "kokkos +cuda +wrapper cuda_arch={0}".format(sm_), + when="kokkos_backend=cuda cuda_arch={0}".format(sm_), + ) + depends_on( + "raja +cuda cuda_arch={0}".format(sm_), + when="raja_offload=nvidia cuda_arch={0}".format(sm_), + ) + depends_on("kokkos +openmp", when="kokkos_backend=omp") + depends_on("raja +openmp", when="raja_offload=cpu") # OpenCL Dependency - - backends = { - "ocl": [ - ("amd", "rocm-opencl", "enable ROCM backend"), - ("cuda", "cuda", "enable Cuda backend"), - ("intel", "intel-oneapi-compilers", "enable Intel backend"), - ("pocl", "pocl@1.5", "enable POCL backend"), - ], - "kokkos": [ - ("cuda", "cuda", "enable Cuda backend"), - ("omp", "none", "enable Cuda backend"), - ], - } - backend_vals = ["none"] - for lang in backends: - for item in backends[lang]: - backend, dpdncy, descr = item - backend_vals.append(backend.lower()) - - variant("backend", values=backend_vals, default="none", description="Enable backend support") - - for lang in backends: - for item in backends[lang]: - backend, dpdncy, descr = item - if dpdncy.lower() != "none": - depends_on("%s" % dpdncy.lower(), when="backend=%s" % backend.lower()) - # this flag could be used in all required languages - variant("flags", values=str, default="none", description="Additional CXX flags to be provided") - - # comp_impl_vals=["ONEAPI-DPCPP","DPCPP","HIPSYCL","COMPUTECPP"] variant( - "implementation", - values=str, + "ocl_backend", + values=("amd", "cuda", "intel", "pocl", "none"), default="none", - description="Compile using the specified SYCL compiler option", + when="+ocl", + description="Enable Backend Target for OpenCL", ) - - conflicts( - "implementation=none", - when="+sycl", - msg="SYCL requires compiler implementation to be specified by option=", + variant( + "kokkos_backend", + values=("cuda", "omp", "none"), + default="none", + when="+kokkos", + description="Enable Backend Target for kokkos", ) conflicts( - "implementation=none", - when="+thrust", - msg="Which Thrust implementation to use, supported options include:\ - - CUDA (via https://github.com/NVIDIA/thrust)\ - - ROCM (via https://github.com/ROCm/rocThrust)", + "ocl_backend=none", + when="+ocl", + msg="OpenCL implementation requires backend to be specfied by ocl_backend=", ) + # depends_on("rocm-opencl@6.0.2", when="+ocl ocl_backend=amd") + depends_on("cuda", when="+ocl ocl_backend=cuda") + depends_on("cuda", when="+sycl2020 sycl2020_offload=nvidia") + depends_on("intel-oneapi-compilers", when="+ocl ocl_backend=intel") + depends_on("pocl@1.5", when="+ocl ocl_backend=pocl") + + variant( + "cuda_extra_flags", + values=str, + default="none", + description="Additional CUDA Compiler flags to be provided", + ) + + # CMake specific dependency + with when("build_system=cmake"): + depends_on("cmake@3.14.0:", type="build") # This applies to all - depends_on("cmake@3.14.0:", type="build") depends_on("opencl-c-headers", when="+ocl") + # Fortran related configurations + with when("languages=fortran"): + implementation_vals = [ + "DoConcurrent", + "Array", + "OpenMP", + "OpenMPWorkshare", + "OpenMPTarget", + "OpenMPTargetLoop", + "OpenMPTaskloop", + "OpenACC", + "OpenACCArray", + "CUDA", + "CUDAKernel", + "Sequential", + ] + variant( + "foption", + values=implementation_vals, + default="Sequential", + description="Implementation", + ) + # The fortran Makefile is inside the src/fortran so we need to address this + build_directory = "src/fortran" + build_name = "" + variant( + "fortran_flags", + values=str, + default="none", + description="Additional Fortran flags to be provided", + ) + + +class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): def cmake_args(self): - # convert spec to string to work on it - spec_string = str(self.spec) - - # take only the first portion of the spec until space - spec_string_truncate = spec_string.split(" ", 1)[0] - model_list = find_model_flag(spec_string_truncate) # Prints out ['cuda', 'thrust'] - - if len(model_list) > 1: - ignore_list = ["cuda"] # if +acc is provided ignore the cuda model - model = list(set(model_list) - set(ignore_list)) - # We choose 'thrust' from the list of ['cuda', 'thrust'] - args = ["-DMODEL=" + model[0]] + model_list = [ + "sycl", + "sycl2020", + "omp", + "cuda", + "ocl", + "tbb", + "acc", + "hip", + "thrust", + "raja", + "std", + "kokkos", + ] + # for +acc and +thrust the CudaPackage appends +cuda variant too so we need + # to filter cuda from list e.g. we choose 'thrust' + # from the list of ['cuda', 'thrust'] + model_names = [name for name in model_list if f"+{name}" in self.spec] + print("model names : ", model_names) + if len(model_names) > 1: + model_names = [elem for elem in model_names if (elem != "cuda" and elem != "rocm")] + if "std" in model_names[0]: + args = ["-DMODEL=" + "std-" + self.spec.variants["std_submodel"].value] + elif "sycl2020" in model_names[0]: # this is for nvidia offload + args = ["-DMODEL=" + "sycl2020-" + self.spec.variants["sycl2020_submodel"].value] + else: + args = ["-DMODEL=" + model_names[0]] else: - # if it is +stddata,indices etc. we need to pass it - # as std-data to the CMake compiler - # do some alterations here - if "std" in model_list[0]: - args = ["-DMODEL=" + "std-" + model_list[0].split("d", 1)[1]] + # do some alterations here to append sub models too + if "std" in model_names[0]: + args = ["-DMODEL=" + "std-" + self.spec.variants["std_submodel"].value] + elif "sycl2020" in model_names[0]: + args = ["-DMODEL=" + "sycl2020-" + self.spec.variants["sycl2020_submodel"].value] + print(args) + elif "rocm" in model_names[0]: + args = ["-DMODEL=hip"] else: - args = ["-DMODEL=" + model_list[0]] + args = ["-DMODEL=" + model_names[0]] + if model_names[0] != "tbb" and model_names[0] != "thrust": + args.append("-DCMAKE_CXX_COMPILER=" + spack_cxx) # =================================== # ACC # =================================== - if ("+acc" in self.spec) and ("~cuda" in self.spec): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - if "cuda_arch" in self.spec.variants: - cuda_arch_list = self.spec.variants["cuda_arch"].value - # the architecture value is only number so append sm_ to the name - cuda_arch = "cc" + cuda_arch_list[0] - args.append("-DTARGET_DEVICE=gpu") - args.append("-DCUDA_ARCH=" + cuda_arch) - elif "cpu_arch" in self.spec.variants: - cpu_arch_list = self.spec.variants["cpu_arch"].value - # the architecture value is only number so append sm_ to the name - cpu_arch = cpu_arch_list[0] - args.append("-DTARGET_DEVICE=multicore") - args.append("-DTARGET_PROCESSOR=" + cpu_arch) - + """ + register_flag_optional(TARGET_DEVICE + "[PGI/NVHPC only] This sets the `-target` flag, possible values are: + gpu - Globally set the target device to an NVIDIA GPU + multicore - Globally set the target device to the host CPU + Refer to `nvc++ --help` for the full list" + register_flag_optional(CUDA_ARCH + "[PGI/NVHPC only] Only applicable if `TARGET_DEVICE` is set to `gpu`. + Nvidia architecture in ccXY format, for example, sm_70 becomes cc70, + will be passed in via `-gpu=` (e.g `cc70`) + Possible values are: + cc35 - Compile for compute capability 3.5 + cc50 - Compile for compute capability 5.0 + cc60 - Compile for compute capability 6.0 + cc62 - Compile for compute capability 6.2 + cc70 - Compile for compute capability 7.0 + cc72 - Compile for compute capability 7.2 + cc75 - Compile for compute capability 7.5 + cc80 - Compile for compute capability 8.0 + ccall - Compile for all supported compute capabilities + Refer to `nvc++ --help` for the full list" + "") + +register_flag_optional(TARGET_PROCESSOR + "[PGI/NVHPC only] This sets the `-tp` (target processor) flag, possible values are: + px - Generic x86 Processor + bulldozer - AMD Bulldozer processor + piledriver - AMD Piledriver processor + zen - AMD Zen architecture (Epyc, Ryzen) + zen2 - AMD Zen 2 architecture (Ryzen 2) + sandybridge - Intel SandyBridge processor + haswell - Intel Haswell processor + knl - Intel Knights Landing processor + skylake - Intel Skylake Xeon processor + host - Link native version of HPC SDK cpu math library + native - Alias for -tp host + Refer to `nvc++ --help` for the full list" + "") + """ + if self.spec.satisfies("+acc~kokkos~raja"): + if (self.spec.compiler.name == "nvhpc") or (self.spec.compiler.name == "pgi"): + target_device = "gpu" if "cuda_arch" in self.spec.variants else "multicore" + if "cuda_arch" in self.spec.variants: + cuda_arch_list = self.spec.variants["cuda_arch"].value + # the architecture value is only number so append cc_ to the name + cuda_arch = "cc" + cuda_arch_list[0] + # args.append( + # "-DCXX_EXTRA_FLAGS=" + "-target=" + target_device + "-gpu=" + cuda_arch + # ) + args.append("-DCUDA_ARCH=" + cuda_arch) + else: + # get the cpu architecture value from user + target_processor = str( + self.spec.target + ) # self.spec.variants["cpu_arch"].value[0] + args.append("-DTARGET_PROCESSOR=" + target_processor) + # args.append( + # "-DCXX_EXTRA_FLAGS=" + # + "-target=" + # + target_device + # + "-tp=" + # + target_processor + # ) + args.append("-DTARGET_DEVICE=" + target_device) # =================================== # STDdata,STDindices,STDranges # =================================== - std_list = ["+stddata", "+stdindices", "+stdranges"] - if spec_string.startswith(tuple(std_list)): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) + + if "+std" in self.spec: + if self.spec.satisfies("+std_use_tbb"): + args.append("-DCXX_EXTRA_FLAGS=-ltbb") + if self.spec.satisfies("+std_use_onedpl"): + # args.append("-DCXX_EXTRA_FLAGS=-ltbb") + # args.append("-DCXX_EXTRA_FLAGS=-loneDPL") + args.append( + "-DUSE_ONEDPL=" + self.spec.variants["std_onedpl_backend"].value.upper() + ) + if self.spec.variants["std_offload"].value != "none": + # the architecture value is only number so append cc_ to the name + cuda_arch = "cc" + self.spec.variants["cuda_arch"].value[0] + args.append("-DNVHPC_OFFLOAD=" + cuda_arch) # =================================== # CUDA # =================================== - - if ("+cuda" in self.spec) and ("~kokkos" in self.spec) and ("~acc" in self.spec): + if self.spec.satisfies("+cuda~kokkos~acc~omp~thrust~raja"): # Set up the cuda macros needed by the build cuda_arch_list = self.spec.variants["cuda_arch"].value + # "-DCUDA_ARCH" requires sm_ # the architecture value is only number so append sm_ to the name cuda_arch = "sm_" + cuda_arch_list[0] args.append("-DCUDA_ARCH=" + cuda_arch) cuda_dir = self.spec["cuda"].prefix cuda_comp = cuda_dir + "/bin/nvcc" args.append("-DCMAKE_CUDA_COMPILER=" + cuda_comp) - args.append("-DMEM=" + self.spec.variants["mem"].value) - if self.spec.variants["flags"].value != "none": - args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["flags"].value) + args.append("-DMEM=" + self.spec.variants["cuda_memory_mode"].value.upper()) + if self.spec.variants["cuda_extra_flags"].value != "none": + args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["cuda_extra_flags"].value) # =================================== # OMP # =================================== # `~kokkos` option is there to prevent +kokkos +omp setting to use omp directly from here # Same applies for raja - if ("+omp" in self.spec) and ("~kokkos" in self.spec) and ("~raja" in self.spec): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - if "cuda_arch" in self.spec.variants: - cuda_arch_list = self.spec.variants["cuda_arch"].value - # the architecture value is only number so append sm_ to the name - cuda_arch = "sm_" + cuda_arch_list[0] - args.append("-DOFFLOAD= " + "NVIDIA:" + cuda_arch) - elif "amdgpu_target" in self.spec.variants: - rocm_arch = self.spec.variants["amdgpu_target"].value - # the architecture value is only number so append sm_ to the name - args.append("-DOFFLOAD=" + " AMD:" + rocm_arch) + if self.spec.satisfies("+omp~kokkos~raja"): + args.append("-DCMAKE_C_COMPILER=" + spack_cc) + if self.spec.satisfies("~omp_offload"): + args.append("-DOFFLOAD=" + "OFF") + # Check if the omp_flags variant is not set to "none" + args.append( + "-DCMAKE_CXX_FLAGS=" + + self.pkg.compiler.openmp_flag + + " " + + ( + self.spec.variants["omp_flags"].value + if self.spec.variants["omp_flags"].value != "none" + else "" + ) + ) else: - args.append("-DOFFLOAD=" + "INTEL") + offload_args = "" + args.append("-DOFFLOAD=ON") + if "cuda_arch" in self.spec.variants: + if self.spec.satisfies("%nvhpc"): + cuda_arch = "cc" + self.spec.variants["cuda_arch"].value[0] + offload_args = " -mp=gpu;" + "-gpu=" + cuda_arch + " " + if self.spec.satisfies("%clang"): + cuda_arch = "sm_" + self.spec.variants["cuda_arch"].value[0] + offload_args = "-fopenmp;--offload-arch=" + cuda_arch + elif ("amdgpu_target" in self.spec.variants) and ( + self.spec.variants["amdgpu_target"].value != "none" + ): + offload_args = ( + ";--offload-arch=" + self.spec.variants["amdgpu_target"].value[0] + ) + + args.append( + "-DOFFLOAD_FLAGS=" + + self.pkg.compiler.openmp_flag + + ";" + + offload_args + + ";" + + self.spec.variants["omp_flags"].value + ) # =================================== - # SYCL + # SYCL # =================================== - if self.spec.satisfies("+sycl"): - args.append("-DSYCL_COMPILER=" + self.spec.variants["implementation"].value.upper()) - if self.spec.variants["implementation"].value.upper() != "ONEAPI-DPCPP": - args.append( - "-DSYCL_COMPILER_DIR=" + self.spec.variants["implementation"].value.upper() - ) - if self.spec.variants["implementation"].value.upper() == "COMPUTE-CPP": - args.append("-DOpenCL_LIBRARY=") + if "+sycl" in self.spec: + if self.spec.satisfies("%oneapi"): + # -fsycl flag is required for setting up sycl/sycl.hpp seems like + # it doesn't get it from the CMake file + args.append("-DSYCL_COMPILER=ONEAPI-ICPX") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + elif self.spec.satisfies("%clang"): + # this requires the clang inside oneapi installation + args.append("-DSYCL_COMPILER=ONEAPI-Clang") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + else: + args.append("-DSYCL_COMPILER=HIPSYCL") + args.append("-DSYCL_COMPILER_DIR=" + self.spec.variants["dir"].value) + args.append("-DCXX_EXTRA_FLAGS= -fsycl") # =================================== - # SYCL 2020 + # SYCL 2020 # =================================== - if self.spec.satisfies("+sycl2020"): + if "+sycl2020" in self.spec: if self.spec.satisfies("%oneapi"): # -fsycl flag is required for setting up sycl/sycl.hpp seems like # it doesn't get it from the CMake file - args.append("-DCXX_EXTRA_FLAGS= -fsycl -O3") - # this is required to enable -DCMAKE_CXX_COMPILER=icpx flag from CMake args.append("-DSYCL_COMPILER=ONEAPI-ICPX") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + elif self.spec.satisfies("%clang"): + # this requires the clang inside oneapi installation + args.append("-DSYCL_COMPILER=ONEAPI-Clang") + args.append("-DCXX_EXTRA_FLAGS= -fsycl") else: + args.append("-DSYCL_COMPILER=HIPSYCL") + args.append("-DSYCL_COMPILER_DIR=" + self.spec.variants["dir"].value) + args.append("-DCXX_EXTRA_FLAGS= -fsycl") + # if self.spec.variants["flags"].value != "none": + if self.spec.variants["sycl2020_offload"].value == "nvidia": + cuda_dir = self.spec["cuda"].prefix + cuda_arch = "sm_" + self.spec.variants["cuda_arch"].value[0] args.append( - "-DSYCL_COMPILER=" + self.spec.variants["implementation"].value.upper() - ) - if self.spec.variants["implementation"].value.upper() != "ONEAPI-DPCPP": - args.append( - "-DSYCL_COMPILER_DIR=" + self.spec.variants["implementation"].value.upper() + "-DCXX_EXTRA_FLAGS=" + + "-fsycl;-fsycl-targets=nvptx64-nvidia-cuda;" + + self.spec.target.optimization_flags( + self.spec.compiler.name, str(self.spec.compiler.version) ) - if self.spec.variants["implementation"].value.upper() == "COMPUTE-CPP": - args.append("-DOpenCL_LIBRARY=") + + " --cuda-path=" + + cuda_dir + ) # =================================== # HIP(ROCM) # =================================== - if self.spec.satisfies("+rocm"): - hip_comp = self.spec["rocm"].prefix + "/bin/hipcc" + if "+hip" in self.spec: + hip_comp = self.spec["hip"].prefix + "/bin/hipcc" + offload_arch = str(self.spec.variants["amdgpu_target"].value[0]) + args.append("-DCMAKE_CXX_COMPILER=" + hip_comp) - args.append( - "-DCXX_EXTRA_FLAGS= --offload-arch=" - + self.spec.variants["amdgpu_target"].value - + " " - + self.spec.variants["flags"].value - + " -O3" - ) + args.append(f"-DCXX_EXTRA_FLAGS=--offload-arch={offload_arch} -O3") + if str(self.spec.variants["hip_mem_mode"].value) != "none": + args.append("-DMEM=" + self.spec.variants["hip_mem_mode"].value.upper()) # =================================== # TBB # =================================== - if self.spec.satisfies("+tbb"): - args.append("-DONE_TBB_DIR=" + self.spec["tbb"].prefix + "/tbb/latest/") - args.append("-DPARTITIONER=" + self.spec.variants["partitioner"].value.upper()) + if "+tbb" in self.spec: + args.append("-DONE_TBB_DIR=" + self.spec["intel-tbb"].prefix + "/tbb/latest/") + args.append("-DCXX_EXTRA_FLAGS=-ltbb") + args.append("-DPARTITIONER=" + self.spec.variants["tbb_partitioner"].value.upper()) + if self.spec.satisfies("+tbb_use_vector"): + args.append("-DUSE_VECTOR=ON") # =================================== # OpenCL (ocl) # =================================== - if self.spec.satisfies("+ocl"): - if "backend" in self.spec.variants: - if "cuda" in self.spec.variants["backend"].value: - cuda_dir = self.spec["cuda"].prefix - args.append("-DOpenCL_LIBRARY=" + cuda_dir + "/lib64/libOpenCL.so") - elif "amd" in self.spec.variants["backend"].value: - rocm_dir = self.spec["rocm-opencl"].prefix - args.append("-DOpenCL_LIBRARY=" + rocm_dir + "/lib64/libOpenCL.so") - elif "intel" in self.spec.variants["backend"].value: - intel_lib = ( - self.spec["intel-oneapi-compilers"].prefix - + "/compiler/2023.0.0/linux/lib/libOpenCL.so" - ) - args.append("-DOpenCL_LIBRARY=" + intel_lib) - elif "pocl" in self.spec.variants["backend"].value: - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - pocl_lib = self.spec["pocl"].prefix + "/lib64/libOpenCL.so" - args.append("-DOpenCL_LIBRARY=" + pocl_lib) - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) + + if "+ocl" in self.spec: + if "cuda" in self.spec.variants["ocl_backend"].value: + cuda_dir = self.spec["cuda"].prefix + args.append("-DOpenCL_LIBRARY=" + cuda_dir + "/lib64/libOpenCL.so") + elif "amd" in self.spec.variants["ocl_backend"].value: + rocm_dir = self.spec["rocm-opencl"].prefix + args.append("-DOpenCL_LIBRARY=" + rocm_dir + "/lib64/libOpenCL.so") + elif "intel" in self.spec.variants["ocl_backend"].value: + intel_lib = ( + self.spec["intel-oneapi-compilers"].prefix + + "/compiler/" + + str(self.spec["intel-oneapi-compilers"].version) + + "/linux/lib/libOpenCL.so" + ) + args.append("-DOpenCL_LIBRARY=" + intel_lib) + elif "pocl" in self.spec.variants["ocl_backend"].value: + pocl_lib = self.spec["pocl"].prefix + "/lib64/libOpenCL.so" + args.append("-DOpenCL_LIBRARY=" + pocl_lib) # =================================== # RAJA # =================================== - if self.spec.satisfies("+raja"): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - args.append("-DRAJA_IN_TREE=" + self.spec.variants["dir"].value) - if "offload" in self.spec.variants: - if "nvidia" in self.spec.variants["offload"].value: - cuda_dir = self.spec["cuda"].prefix - cuda_comp = cuda_dir + "/bin/nvcc" - args.append("-DCMAKE_CUDA_COMPILER=" + cuda_comp) - args.append("-DTARGET=NVIDIA") - cuda_arch_list = self.spec.variants["cuda_arch"].value - cuda_arch = "sm_" + cuda_arch_list[0] - args.append("-DCUDA_ARCH=" + cuda_arch) - args.append("DCUDA_TOOLKIT_ROOT_DIR=" + self.spec["cuda"].prefix) - if self.spec.variants["flags"].value != "none": - args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["flags"].value) - # if("cpu" in self.spec.variants['offload'].value): + if "+raja" in self.spec: + args.append("-DCMAKE_C_COMPILER=" + spack_cc) + args.append("-DRAJA_IN_PACKAGE=" + self.spec["raja"].prefix) + if "nvidia" in self.spec.variants["raja_offload"].value: + cuda_comp = self.spec["cuda"].prefix + "/bin/nvcc" + args.append("-DTARGET=NVIDIA") + cuda_arch = "sm_" + self.spec.variants["cuda_arch"].value[0] + args.append("-DCUDA_ARCH=" + cuda_arch) - if "omp" in self.spec.variants["backend"].value: - args.append("-DENABLE_OPENMP=ON") - if "cuda" in self.spec.variants["backend"].value: args.append("-DENABLE_CUDA=ON") + args.append("-DCUDA_TOOLKIT_ROOT_DIR=" + self.spec["cuda"].prefix) + if self.spec.variants["cuda_extra_flags"].value != "none": + args.append( + "-DCMAKE_CUDA_FLAGS=" + self.spec.variants["cuda_extra_flags"].value + ) # =================================== # THRUST # =================================== - if self.spec.satisfies("+thrust"): - if "cuda" in self.spec.variants["implementation"].value: - args.append("-DTHRUST_IMPL=" + self.spec.variants["implementation"].value.upper()) + + if "+thrust" in self.spec: + if "cuda" in self.spec.variants["thrust_submodel"].value: + args.append("-DTHRUST_IMPL=" + self.spec.variants["thrust_submodel"].value.upper()) + args.append("-SDK_DIR=" + self.spec["thrust"].prefix + "/include") - cuda_arch_list = self.spec.variants["cuda_arch"].value - # the architecture value is only number so append sm_ to the name - cuda_arch = "sm_" + cuda_arch_list[0] - args.append("-DCUDA_ARCH=" + cuda_arch) + # this model uses CMAKE_CUDA_ARCHITECTURES which only requires number of cuda_arch + # no need to append sm_ or cc_ + args.append("-DCUDA_ARCH=" + self.spec.variants["cuda_arch"].value[0]) cuda_dir = self.spec["cuda"].prefix cuda_comp = cuda_dir + "/bin/nvcc" args.append("-DCMAKE_CUDA_COMPILER=" + cuda_comp) - args.append("-DBACKEND=" + self.spec.variants["backend"].value.upper()) - if self.spec.variants["flags"].value != "none": - args.append("-DCUDA_EXTRA_FLAGS=" + self.spec.variants["flags"].value) - - if "rocm" in self.spec.variants["implementation"].value: - args.append("-DTHRUST_IMPL=" + self.spec.variants["implementation"].value.upper()) + # args.append("-DCMAKE_CUDA_COMPILER=" + spack_cxx) + # args.append("-DCMAKE_CUDA_FLAGS=-ccbin " + spack_cc) + args.append("-DBACKEND=" + self.spec.variants["thrust_backend"].value.upper()) + if self.spec.variants["cuda_extra_flags"].value != "none": + args.append( + "-DCUDA_EXTRA_FLAGS=" + self.spec.variants["cuda_extra_flags"].value + ) + if "rocm" in self.spec.variants["thrust_submodel"].value: + args.append("-DCMAKE_CXX_COMPILER=" + self.spec["hip"].hipcc) + args.append("-DTHRUST_IMPL=" + self.spec.variants["thrust_submodel"].value.upper()) args.append("-SDK_DIR=" + self.spec["rocthrust"].prefix) - args.append("-DBACKEND=" + self.spec.variants["backend"].value.upper()) # =================================== # kokkos # =================================== # kokkos implementation is versatile and it could use cuda or omp architectures as backend - # The usage should be spack install babelstream +kokkos +cuda [or +omp] - if self.spec.satisfies("+kokkos"): - args.append("-DCMAKE_CXX_COMPILER=" + self.compiler.cxx) - args.append("-DKOKKOS_IN_TREE=" + self.spec.variants["dir"].value) - # args.append("-DKOKKOS_IN_PACKAGE=" + self.spec["kokkos"].prefix) - if "backend" in self.spec.variants: - if "cuda" in self.spec.variants["backend"].value: - args.append("-DKokkos_ENABLE_CUDA=ON") - cuda_arch_list = self.spec.variants["cuda_arch"].value - cuda_arch = cuda_arch_list[0] - # arhitecture kepler optimisations - if cuda_arch in ("30", "32", "35", "37"): - args.append("-D" + "Kokkos_ARCH_KEPLER" + cuda_arch + "=ON") - # arhitecture maxwell optimisations - if cuda_arch in ("50", "52", "53"): - args.append("-D" + "Kokkos_ARCH_MAXWELL" + cuda_arch + "=ON") - # arhitecture pascal optimisations - if cuda_arch in ("60", "61"): - args.append("-D" + "Kokkos_ARCH_PASCAL" + cuda_arch + "=ON") - # architecture volta optimisations - if cuda_arch in ("70", "72"): - args.append("-D" + "Kokkos_ARCH_VOLTA" + cuda_arch + "=ON") - if cuda_arch == "75": - args.append("-DKokkos_ARCH_TURING75=ON") - if "omp" in self.spec.variants["backend"].value: - args.append("-DKokkos_ENABLE_OPENMP=ON") + + # The usage should be spack install babelstream +kokkos backend=[cuda or omp or none] + if "+kokkos" in self.spec: + args.append("-DCMAKE_C_COMPILER=" + spack_cc) + args.append("-DKOKKOS_IN_PACKAGE=" + self.spec["kokkos"].prefix) + if "cuda" in self.spec.variants["kokkos_backend"].value: + # args.append("-DCMAKE_CXX_COMPILER=" + self.spec["cuda"].nvcc) + args.append("-DCMAKE_CXX_COMPILER=" + spack_cxx) + args.append("-DKokkos_ENABLE_CUDA=ON") + int_cuda_arch = int(self.spec.variants["cuda_arch"].value[0]) + # arhitecture kepler optimisations + if int_cuda_arch in (30, 32, 35, 37): + args.append("-D" + "Kokkos_ARCH_KEPLER" + str(int_cuda_arch) + "=ON") + # arhitecture maxwell optimisations + if int_cuda_arch in (50, 52, 53): + args.append("-D" + "Kokkos_ARCH_MAXWELL" + str(int_cuda_arch) + "=ON") + # arhitecture pascal optimisations + if int_cuda_arch in (60, 61): + args.append("-D" + "Kokkos_ARCH_PASCAL" + str(int_cuda_arch) + "=ON") + # architecture volta optimisations + if int_cuda_arch in (70, 72): + args.append("-D" + "Kokkos_ARCH_VOLTA" + str(int_cuda_arch) + "=ON") + if int_cuda_arch == 75: + args.append("-DKokkos_ARCH_TURING75=ON") + if int_cuda_arch == 80: + args.append("-DKokkos_ARCH_AMPERE80=ON") + if "omp" in self.spec.variants["kokkos_backend"].value: + args.append("-DKokkos_ENABLE_OPENMP=ON") # not in ["kokkos", "raja", "acc", "hip"] then compiler forced true if set(model_list).intersection(["kokkos", "raja", "acc", "hip"]) is True: args.append("-DCMAKE_CXX_COMPILER_FORCED=True") return args + + +class MakefileBuilder(spack.build_systems.makefile.MakefileBuilder): + build_directory = "src/fortran" + + # Generate Compiler Specific includes + def edit(self, pkg, spec, prefix): + config = { + "FC": pkg.compiler.fc, + "FCFLAGS": "", + "ARCH": spec.target.family, + "DOCONCURRENT_FLAG": "", + "ARRAY_FLAG": "", + "OPENMP_FLAG": "", + "OPENACC_FLAG": "", + "CUDA_FLAG": "", + "SEQUENTIAL_FLAG": "", + } + # Dictionary mapping compiler names to unsupported options + unsupported_options = { + "arm": ["CUDA", "CUDAKernel", "OpenACC", "OpenACCArray"], + "aocc": ["CUDA", "CUDAKernel"], + "cce": ["CUDA", "CUDAKernel"], + "gcc": ["CUDA", "CUDAKernel"], + "nvhpc": ["OpenMPTaskloop"], + "oneapi": ["CUDA", "CUDAKernel", "OpenACC", "OpenACCArray"], + "fj": ["CUDA", "CUDAKernel", "OpenACC"], + } + + # Check if spec.compiler.name is in the unsupported_options dictionary + unsupported_value = self.spec.variants["foption"].value + compiler_name = spec.compiler.name + unsupported = any( + unsupported_value in options + for options in unsupported_options.get(compiler_name, []) + if options == unsupported_value + ) + if unsupported: + raise InstallError( + f"{unsupported_value} is not supported by the {compiler_name} compiler" + ) + # =================================== + # ARM + # =================================== + if spec.compiler.name == "arm": + fortran_flags = ( + "-std=f2018 " + pkg.compiler.opt_flags[4] + " -Wall -Wno-unused-variable" + ) + fortran_flags += self.spec.target.optimization_flags( + self.spec.compiler.name, str(self.spec.compiler.version) + ) + + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["ARRAY_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENACC_FLAG"] = "-fopenacc" + + # =================================== + # AMD + # =================================== + if spec.compiler.name == "aocc": + fortran_flags = ( + "-std=f2018 " + pkg.compiler.opt_flags[3] + " -Wall -Wno-unused-variable" + ) + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["ARRAY_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag # libomp.so required + config["OPENACC_FLAG"] = "-fopenacc" + + # =================================== + # CRAY + # =================================== + if spec.compiler.name == "cce": + fortran_flags = "-e F -O3" + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = "-h thread_do_concurrent -DCRAY_THREAD_DOCONCURRENT" + config["ARRAY_FLAG"] = "-h autothread" + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag + config["OPENACC_FLAG"] = "-h acc" # for cpu only -h omp + + # =================================== + # GCC + # =================================== + if spec.compiler.name == "gcc": + fortran_flags = "-std=f2018 -O3 " + fortran_flags += "-Wall -Wno-unused-dummy-argument -Wno-unused-variable " + fortran_flags += self.spec.target.optimization_flags( + self.spec.compiler.name, str(self.spec.compiler.version) + ) + + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = "-ftree-parallelize-loops=4" + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag + config["OPENACC_FLAG"] = "-fopenacc" + + # =================================== + # NVHPC + # =================================== + if spec.compiler.name == "nvhpc": + fortran_flags = pkg.compiler.opt_flags[4] # for -O3 + # FCFLAGS := -O3 -Minform=inform -Minfo=all + fortran_flags += " -Minform=warn " + TARGET = "gpu" # target = "multicore" + config["TARGET"] = TARGET + if "cuda_arch" in self.spec.variants: + cuda_arch_list = self.spec.variants["cuda_arch"].value + # the architecture value is only number so append sm_ to the name + cuda_arch = "cc" + cuda_arch_list[0] + GPUFLAG = " -gpu=" + cuda_arch + fortran_flags += "-tp=" + str(spec.target) + # this is to allow apples-to-apples comparison with DC in non-DC GPU impls + # set exactly one of these pairs! + # MANAGED = "-DUSE_MANAGED -gpu=managed" + # DEVICE="" + # ------------ + DEVICE = "-DUSE_DEVICE -cuda -gpu=nomanaged" + MANAGED = "" + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = GPUFLAG + " -stdpar=" + TARGET + " " + DEVICE + config["ARRAY_FLAG"] = GPUFLAG + " -stdpar=" + TARGET + " " + MANAGED + config["OPENMP_FLAG"] = GPUFLAG + " -mp=" + TARGET + " " + MANAGED + config["OPENACC_FLAG"] = GPUFLAG + " -acc=" + TARGET + " " + MANAGED + config["CUDA_FLAG"] = GPUFLAG + " -cuda -acc=gpu" + " " + MANAGED + + # =================================== + # ONEAPI + # =================================== + if spec.compiler.name == "oneapi": + fortran_flags = "-std18 -Ofast -xHOST -qopt-zmm-usage=low" + if config["FC"] == "ifort": + fortran_flags += "-qopt-streaming-stores=always" + + config["DOCONCURRENT_FLAG"] = "-qopenmp" + ( + "-parallel" if config["FC"] == "ifort" else "" + ) + config["ARRAY_FLAG"] = "-qopenmp" + ("-parallel" if config["FC"] == "ifort" else "") + config["OPENMP_FLAG"] = "-qopenmp" + ( + "-fopenmp-targets=spir64 -DUSE_FLOAT=1" if config["FC"] == "ifx" else "" + ) + config["FCFLAGS"] = fortran_flags + + # =================================== + # FJ + # =================================== + if spec.compiler.name == "fj": + fortran_flags = "-X08 -Kfast -KA64FX -KSVE -KARMV8_3_A -Kzfill=100 " + fortran_flags += "-Kprefetch_sequential=soft " + fortran_flags += "-Kprefetch_line=8 -Kprefetch_line_L2=16 -Koptmsg=2 " + # FJ Fortran system_clock is low resolution + fortran_flags += "-Keval -DUSE_OMP_GET_WTIME=1 " + + config["FCFLAGS"] = fortran_flags + config["DOCONCURRENT_FLAG"] = "-Kparallel,reduction -DNOTSHARED" + config["ARRAY_FLAG"] = "-Kparallel,reduction" + config["OPENMP_FLAG"] = pkg.compiler.openmp_flag + + with open(self.build_directory + "/make.inc." + spec.compiler.name, "w+") as inc: + for key in config: + inc.write("{0} = {1}\n".format(key, config[key])) + + def setup_build_environment(self, env): + ###################################### + # Build and Installation Directories # + ###################################### + + # The environment variable ESMF_DIR must be set to the full pathname + # of the top level ESMF directory before building the framework. + env.set("COMPILER", self.spec.compiler.name) + env.set("IMPLEMENTATION", self.spec.variants["foption"].value) + # DEBUG + # print(self.spec.variants["foption"].value) + # print(self.spec.compiler.version) + # print(platform.machine()) + # This creates a testing tree (if one doesn't already exist) and + # copies the binaries from `src/fortran` to `SpackPackage/bin`. + # This allows you to use the testing tree independently of the + # source tree in the future. + # print(pkg.compiler.cc_pic_flag) + + @property + def build_name(self): + compiler_prefix = self.spec.compiler.name + implementation_prefix = self.spec.variants["foption"].value + return "{}.{}.{}".format("BabelStream", compiler_prefix, implementation_prefix) + + def install(self, pkg, spec, prefix): + mkdir(prefix.bin) + install(self.build_directory + "/" + self.build_name, prefix.bin) + # To check the make.inc file generated + install_tree(self.build_directory, prefix.lib) diff --git a/var/spack/repos/builtin/packages/bazel/package.py b/var/spack/repos/builtin/packages/bazel/package.py index bbd0acf278fe70..32bcd23f9e5c97 100644 --- a/var/spack/repos/builtin/packages/bazel/package.py +++ b/var/spack/repos/builtin/packages/bazel/package.py @@ -140,6 +140,9 @@ class Bazel(Package): # Newer versions of grpc and abseil dependencies are needed but are not in bazel-4.0.0 conflicts("@4.0.0", when="%gcc@11:") + # https://github.com/bazelbuild/bazel/pull/23667 + conflicts("%apple-clang@16:", when="@:7.3") + executables = ["^bazel$"] # Download resources to perform offline build with bazel. diff --git a/var/spack/repos/builtin/packages/beatnik/package.py b/var/spack/repos/builtin/packages/beatnik/package.py index ac817cca25359d..8d75a590db80f2 100644 --- a/var/spack/repos/builtin/packages/beatnik/package.py +++ b/var/spack/repos/builtin/packages/beatnik/package.py @@ -16,9 +16,10 @@ class Beatnik(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") + version("1.1", commit="7d5a6fa588bcb7065fc53c3e8ae52d4d7f13b6f1", submodules=True) version("1.0", commit="ae31ef9cb44678d5ace77994b45b0778defa3d2f") - version("develop", branch="develop") - version("main", branch="main") + version("develop", branch="develop", submodules=True) + version("main", branch="main", submodules=True) depends_on("cxx", type="build") # generated @@ -47,13 +48,17 @@ class Beatnik(CMakePackage, CudaPackage, ROCmPackage): depends_on("kokkos +wrapper", when="%gcc+cuda") # Cabana dependencies - depends_on("cabana @0.6.0 +grid +heffte +silo +hdf5 +mpi") + depends_on("cabana @0.7.0 +grid +heffte +silo +hdf5 +mpi +arborx", when="@1.1") + depends_on("cabana @0.7.0 +grid +heffte +silo +hdf5 +mpi +arborx", when="@1.0") + depends_on("cabana @master +grid +heffte +silo +hdf5 +mpi +arborx", when="@develop") + depends_on("cabana @0.7.0 +grid +heffte +silo +hdf5 +mpi +arborx", when="@main") depends_on("cabana +cuda", when="+cuda") depends_on("cabana +rocm", when="+rocm") # Silo dependencies depends_on("silo @4.11:") - depends_on("silo @4.11.1:", when="%cce") # Eariler silo versions have trouble cce + depends_on("silo @4.11.1 +fpzip+hzip~python", when="%cce") + # Eariler silo versions have trouble with cce # Heffte dependencies - We always require FFTW so that there's a host # backend even when we're compiling for GPUs diff --git a/var/spack/repos/builtin/packages/benchmark/package.py b/var/spack/repos/builtin/packages/benchmark/package.py index 8e398aefa3c722..488a7509518904 100644 --- a/var/spack/repos/builtin/packages/benchmark/package.py +++ b/var/spack/repos/builtin/packages/benchmark/package.py @@ -14,6 +14,7 @@ class Benchmark(CMakePackage): git = "https://github.com/google/benchmark.git" license("Apache-2.0") + maintainers("stephenswat") # first properly installed CMake config packages in # 1.2.0 release: https://github.com/google/benchmark/issues/363 @@ -54,6 +55,9 @@ class Benchmark(CMakePackage): when="@1.5.4:", description="Enable performance counters provided by libpfm", ) + variant( + "shared", default=True, sticky=True, description="Build the libraries as shared objects" + ) depends_on("cmake@2.8.11:", type="build", when="@:1.1.0") depends_on("cmake@2.8.12:", type="build", when="@1.2.0:1.4") @@ -64,6 +68,7 @@ def cmake_args(self): # No need for testing for the install args = [ self.define("BENCHMARK_ENABLE_TESTING", False), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), self.define_from_variant("BENCHMARK_ENABLE_LIBPFM", "performance_counters"), ] return args diff --git a/var/spack/repos/builtin/packages/bfs/package.py b/var/spack/repos/builtin/packages/bfs/package.py index add324f8d44e8f..105b698be4aefc 100644 --- a/var/spack/repos/builtin/packages/bfs/package.py +++ b/var/spack/repos/builtin/packages/bfs/package.py @@ -16,6 +16,7 @@ class Bfs(MakefilePackage): license("0BSD") + version("4.0.4", sha256="209da9e9f43d8fe30fd689c189ea529e9d6b5358ce84a63a44721003aea3e1ca") version("4.0.1", sha256="8117b76b0a967887278a11470cbfa9e7aeae98f11a7eeb136f456ac462e5ba23") version("3.1.1", sha256="d73f345c1021e0630e0db930a3fa68dd1f968833037d8471ee1096e5040bf91b") version("3.1", sha256="aa6a94231915d3d37e5dd62d194cb58a575a8f45270020f2bdd5ab41e31d1492") diff --git a/var/spack/repos/builtin/packages/bigdft-futile/package.py b/var/spack/repos/builtin/packages/bigdft-futile/package.py index 94a66f100dd528..99bf739a1d01b7 100644 --- a/var/spack/repos/builtin/packages/bigdft-futile/package.py +++ b/var/spack/repos/builtin/packages/bigdft-futile/package.py @@ -49,6 +49,14 @@ class BigdftFutile(AutotoolsPackage, CudaPackage): configure_directory = "futile" + # missing MPI_BOTTOM in fake mpif.h (generated when compiling without MPI support) + # similar issue (maybe others) also in 1.9.4 but this patch does not work for 1.9.4 + patch( + "https://gitlab.com/l_sim/bigdft-suite/-/commit/ec7419011fa9fd815de77bfca8642973091fb64b.diff", + sha256="66c493e37fe7f7f9800ae7f49bb0172a5b2372a2ce0ee4c3bcb7ff5c59a3925c", + when="@1.9.5~mpi", + ) + def configure_args(self): spec = self.spec prefix = self.prefix diff --git a/var/spack/repos/builtin/packages/blaspp/package.py b/var/spack/repos/builtin/packages/blaspp/package.py index e58d274483cc1d..2bdaf62c747a58 100644 --- a/var/spack/repos/builtin/packages/blaspp/package.py +++ b/var/spack/repos/builtin/packages/blaspp/package.py @@ -21,6 +21,9 @@ class Blaspp(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("master", branch="master") + version( + "2024.10.26", sha256="c15ae19dbed1be35e8258048a044d3104da59e7e52b4fe7fe7ea5032708a8d2c" + ) version( "2024.05.31", sha256="24f325d2e1c2cc4275324bd88406555688379480877d19553656a0328287927a" ) diff --git a/var/spack/repos/builtin/packages/boost/package.py b/var/spack/repos/builtin/packages/boost/package.py index 41a7859c5ba381..80daa99b0d3326 100644 --- a/var/spack/repos/builtin/packages/boost/package.py +++ b/var/spack/repos/builtin/packages/boost/package.py @@ -154,8 +154,12 @@ class Boost(Package): "wave", ] + # Add any extra requirements for specific + all_libs_opts = {"charconv": {"when": "@1.85.0:"}, "cobalt": {"when": "@1.84.0:"}} + for lib in all_libs: - variant(lib, default=False, description="Compile with {0} library".format(lib)) + lib_opts = all_libs_opts.get(lib, {}) + variant(lib, default=False, description="Compile with {0} library".format(lib), **lib_opts) @property def libs(self): @@ -242,6 +246,7 @@ def libs(self): depends_on("icu4c cxxstd=14", when="+icu cxxstd=14") depends_on("icu4c cxxstd=17", when="+icu cxxstd=17") conflicts("cxxstd=98", when="+icu") # Requires c++11 at least + conflicts("+locale ~icu") # Boost.Locale "strongly recommends" icu, so enforce it depends_on("python", when="+python") # https://github.com/boostorg/python/commit/cbd2d9f033c61d29d0a1df14951f4ec91e7d05cd @@ -254,7 +259,7 @@ def libs(self): depends_on("xz", when="+iostreams") depends_on("py-numpy", when="+numpy", type=("build", "run")) # https://github.com/boostorg/python/issues/431 - depends_on("py-numpy@:1", when="@:1.85+numpy", type=("build", "run")) + depends_on("py-numpy@:1", when="@:1.86+numpy", type=("build", "run")) # Improve the error message when the context-impl variant is conflicting conflicts("context-impl=fcontext", when="@:1.65.0") @@ -627,9 +632,13 @@ def determine_b2_options(self, spec, options): options.append("runtime-link=shared") else: options.append("runtime-link=static") + + # Any lib that is in self.all_libs AND in the variants dictionary + # AND is set to False should be added to options in a --without flag for lib in self.all_libs: - if f"+{lib}" not in spec: - options.append(f"--without-{lib}") + if lib not in self.spec.variants.dict or self.spec.satisfies(f"+{lib}"): + continue + options.append(f"--without-{lib}") if not spec.satisfies("@:1.75 %intel") and not spec.satisfies("platform=windows"): # When building any version >= 1.76, the toolset must be specified. diff --git a/var/spack/repos/builtin/packages/butterflypack/package.py b/var/spack/repos/builtin/packages/butterflypack/package.py index 7fc6cbd77b9648..c36d1d3a4bd08d 100644 --- a/var/spack/repos/builtin/packages/butterflypack/package.py +++ b/var/spack/repos/builtin/packages/butterflypack/package.py @@ -28,6 +28,7 @@ class Butterflypack(CMakePackage): license("BSD-3-Clause-LBNL") version("master", branch="master") + version("3.2.0", sha256="0f1570947f0a7c0e130bbec3abbb2fa275ae453dc3f428e7a3a2265fecafe1ae") version("2.4.0", sha256="12d04e7101b2c8292b5c62d9f42b5cd1e8a3c5af639d2665596e3e4255fd0804") version("2.2.2", sha256="73f67073e4291877f1eee19483a8a7b3c761eaf79a75805d52105ceedead85ea") version("2.2.1", sha256="4cedc2896a6b368773ce4f9003aa2c0230baf56a4464a6b899a155e01406a232") @@ -61,9 +62,9 @@ class Butterflypack(CMakePackage): # https://github.com/spack/spack/issues/31818 patch("qopenmp-for-oneapi.patch", when="@2.1.1 %oneapi") - patch("longline.patch", when="%fj") - patch("fjfortran.patch", when="%fj") - patch("isnan.patch", when="%fj") + patch("longline.patch", when="@1.2.0 %fj") + patch("fjfortran.patch", when="@1.2.0 %fj") + patch("isnan.patch", when="@1.2.0 %fj") def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/byte-lite/package.py b/var/spack/repos/builtin/packages/byte-lite/package.py new file mode 100644 index 00000000000000..44dfe3b6417615 --- /dev/null +++ b/var/spack/repos/builtin/packages/byte-lite/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class ByteLite(CMakePackage): + """byte lite - A C++17-like byte type for C++98, C++11 and later + in a single-file header-only library""" + + homepage = "https://github.com/martinmoene/byte-lite" + url = "https://github.com/martinmoene/byte-lite/archive/refs/tags/v0.3.0.tar.gz" + + license("BSL-1.0", checked_by="pranav-sivaraman") + + version("0.3.0", sha256="1a19e237b12bb098297232b0a74ec08c18ac07ac5ac6e659c1d5d8a4ed0e4813") + + depends_on("cxx", type="build") + depends_on("cmake@3.5:", type="build") + + conflicts("%gcc@:4.7") + conflicts("%clang@:3.4") + conflicts("%apple-clang@:5") + conflicts("%mvsc@:5") + + def cmake_args(self): + return [self.define("BYTE_LITE_OPT_BUILD_TESTS", self.run_tests)] diff --git a/var/spack/repos/builtin/packages/caliper/package.py b/var/spack/repos/builtin/packages/caliper/package.py index e165899674a2b9..ad06a5e242b71d 100644 --- a/var/spack/repos/builtin/packages/caliper/package.py +++ b/var/spack/repos/builtin/packages/caliper/package.py @@ -101,6 +101,8 @@ class Caliper(CachedCMakePackage, CudaPackage, ROCmPackage): variant("vtune", default=False, description="Enable Intel Vtune support") variant("kokkos", default=True, when="@2.3.0:", description="Enable Kokkos profiling support") variant("tests", default=False, description="Enable tests") + # TODO change the 'when' argument for the next release of Caliper + variant("python", default=False, when="@master", description="Build Python bindings") depends_on("adiak@0.1:0", when="@2.2:2.10 +adiak") depends_on("adiak@0.4:0", when="@2.11: +adiak") @@ -121,6 +123,9 @@ class Caliper(CachedCMakePackage, CudaPackage, ROCmPackage): depends_on("cmake", type="build") depends_on("python", type="build") + depends_on("python@3", when="+python", type=("build", "link", "run")) + depends_on("py-pybind11", when="+python", type=("build", "link", "run")) + # sosflow support not yet in 2.0 conflicts("+sosflow", "@2.0.0:2.11") conflicts("+adiak", "@:2.1") @@ -228,6 +233,7 @@ def initconfig_package_entries(self): entries.append(cmake_cache_option("WITH_KOKKOS", spec.satisfies("+kokkos"))) entries.append(cmake_cache_option("WITH_VARIORUM", spec.satisfies("+variorum"))) entries.append(cmake_cache_option("WITH_VTUNE", spec.satisfies("+vtune"))) + entries.append(cmake_cache_option("WITH_PYTHON_BINDINGS", spec.satisfies("+python"))) # -DWITH_CALLPATH was renamed -DWITH_LIBUNWIND in 2.5 callpath_flag = "LIBUNWIND" if spec.satisfies("@2.5:") else "CALLPATH" @@ -238,6 +244,11 @@ def initconfig_package_entries(self): def cmake_args(self): return [] + def setup_run_environment(self, env): + if self.spec.satisfies("+python"): + env.prepend_path("PYTHONPATH", self.spec.prefix.join(python_platlib)) + env.prepend_path("PYTHONPATH", self.spec.prefix.join(python_purelib)) + @run_after("install") def cache_test_sources(self): """Copy the example source files after the package is installed to an diff --git a/var/spack/repos/builtin/packages/cassandra/package.py b/var/spack/repos/builtin/packages/cassandra/package.py index 36f89c148d8b91..7464bef4bdb466 100644 --- a/var/spack/repos/builtin/packages/cassandra/package.py +++ b/var/spack/repos/builtin/packages/cassandra/package.py @@ -12,25 +12,30 @@ class Cassandra(Package): organized into tables with a required primary key. """ - homepage = "https://github.com/apache/cassandra" + homepage = "https://cassandra.apache.org/" url = "https://archive.apache.org/dist/cassandra/4.0.1/apache-cassandra-4.0.1-bin.tar.gz" - license("Apache-2.0") - - version("4.0.1", sha256="ed7022e30d9b77d9ce1072f8de95ab01ef7c5c6ed30f304e413dd5a3f92a52f8") - version("3.11.11", sha256="a5639af781005410995a96f512d505c1def7b70cf5bbbec52e7cd5ff31b6cea3") - version( - "3.11.6", - sha256="ce34edebd1b6bb35216ae97bd06d3efc338c05b273b78267556a99f85d30e45b", - deprecated=True, - ) - version( - "3.11.5", - sha256="a765adcaa42a6c881f5e79d030854d082900992cc11da40eee413bb235970a6a", - deprecated=True, - ) - version("2.2.19", sha256="5496c0254a66b6d50bde7999d1bab9129b0406b71ad3318558f4d7dbfbed0ab9") - + license("Apache-2.0", checked_by="wdconinc") + + version("5.0.1", sha256="73f4c807b0aa4036500d5dc54e30ef82bcf549ab1917eff2bbc7189b0337ea84") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2021-44521 + version("4.0.1", sha256="ed7022e30d9b77d9ce1072f8de95ab01ef7c5c6ed30f304e413dd5a3f92a52f8") + version( + "3.11.11", sha256="a5639af781005410995a96f512d505c1def7b70cf5bbbec52e7cd5ff31b6cea3" + ) + version( + "3.11.6", sha256="ce34edebd1b6bb35216ae97bd06d3efc338c05b273b78267556a99f85d30e45b" + ) + version( + "3.11.5", sha256="a765adcaa42a6c881f5e79d030854d082900992cc11da40eee413bb235970a6a" + ) + # https://nvd.nist.gov/vuln/detail/CVE-2020-17516 + version( + "2.2.19", sha256="5496c0254a66b6d50bde7999d1bab9129b0406b71ad3318558f4d7dbfbed0ab9" + ) + + depends_on("java@11:", type=("build", "run"), when="@5:") depends_on("java@9:", type=("build", "run"), when="@4.0.0:") depends_on("java@:8", type=("build", "run"), when="@:3.11.11") diff --git a/var/spack/repos/builtin/packages/cbflib/package.py b/var/spack/repos/builtin/packages/cbflib/package.py index d883fdcd5eeef8..5277b3a12488e5 100644 --- a/var/spack/repos/builtin/packages/cbflib/package.py +++ b/var/spack/repos/builtin/packages/cbflib/package.py @@ -49,8 +49,7 @@ def edit(self, spec, prefix): mf.filter(r"^C\+\+.+", "C++ = {0}".format(spack_cxx)) mf.filter("gfortran", spack_fc) mf.filter(r"^INSTALLDIR .+", "INSTALLDIR = {0}".format(prefix)) - real_version = Version(self.compiler.get_real_version()) - if real_version >= Version("10"): + if self.spec.satisfies("%gcc@10:"): mf.filter(r"^F90FLAGS[ \t]*=[ \t]*(.+)", "F90FLAGS = \\1 -fallow-invalid-boz") def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/cbtf/package.py b/var/spack/repos/builtin/packages/cbtf/package.py index dcd00bb0f9f392..7daccff49836a0 100644 --- a/var/spack/repos/builtin/packages/cbtf/package.py +++ b/var/spack/repos/builtin/packages/cbtf/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * -from spack.pkg.builtin.boost import Boost class Cbtf(CMakePackage): @@ -48,12 +47,7 @@ class Cbtf(CMakePackage): # for rpc depends_on("libtirpc", type="link") - depends_on("boost@1.70.0:") - - # TODO: replace this with an explicit list of components of Boost, - # for instance depends_on('boost +filesystem') - # See https://github.com/spack/spack/pull/22303 for reference - depends_on(Boost.with_default_variants) + depends_on("boost@1.70.0:1.84.0+date_time+filesystem+test+thread") # For MRNet depends_on("mrnet@5.0.1-3:+lwthreads", when="@develop") diff --git a/var/spack/repos/builtin/packages/ceed/package.py b/var/spack/repos/builtin/packages/ceed/package.py index d346bb667ed865..7eaf0411186840 100644 --- a/var/spack/repos/builtin/packages/ceed/package.py +++ b/var/spack/repos/builtin/packages/ceed/package.py @@ -240,7 +240,7 @@ class Ceed(BundlePackage, CudaPackage, ROCmPackage): # Omega_h # ceed-5.0 - depends_on("omega-h@scorec.10.1.0", when="@5.0.0+omega-h") + depends_on("omega-h@10.1.0", when="@5.0.0+omega-h") depends_on("omega-h~trilinos", when="@5.0.0+omega-h+quickbuild") # MFEM, Laghos, Remhos diff --git a/var/spack/repos/builtin/packages/cgal/package.py b/var/spack/repos/builtin/packages/cgal/package.py index 18170077580437..c1030d42d0aba1 100644 --- a/var/spack/repos/builtin/packages/cgal/package.py +++ b/var/spack/repos/builtin/packages/cgal/package.py @@ -17,6 +17,7 @@ class Cgal(CMakePackage): homepage = "https://www.cgal.org/" url = "https://github.com/CGAL/cgal/releases/download/v5.4.1/CGAL-5.4.1.tar.xz" + version("6.0.1", sha256="0acdfbf317c556630dd526f3253780f29b6ec9713ee92903e81b5c93c0f59b7f") version("5.6", sha256="dcab9b08a50a06a7cc2cc69a8a12200f8d8f391b9b8013ae476965c10b45161f") version("5.5.3", sha256="0a04f662693256328b05babfabb5e3a5b7db2f5a58d52e3c520df9d0828ddd73") version("5.5.2", sha256="b2b05d5616ecc69facdc24417cce0b04fb4321491d107db45103add520e3d8c3") diff --git a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py index 67bab58d7a950c..bff3edef945780 100644 --- a/var/spack/repos/builtin/packages/clingo-bootstrap/package.py +++ b/var/spack/repos/builtin/packages/clingo-bootstrap/package.py @@ -75,15 +75,13 @@ def cmake_py_shared(self): return self.define("CLINGO_BUILD_PY_SHARED", "OFF") def cmake_args(self): - args = super().cmake_args() - args.append(self.define("CLINGO_BUILD_APPS", False)) - return args + return [*super().cmake_args(), self.define("CLINGO_BUILD_APPS", False)] @run_before("cmake", when="+optimized") def pgo_train(self): - if self.spec.compiler.name == "clang": + if self.spec.satisfies("%clang"): llvm_profdata = which("llvm-profdata", required=True) - elif self.spec.compiler.name == "apple-clang": + elif self.spec.satisfies("%apple-clang"): llvm_profdata = Executable( Executable("xcrun")("-find", "llvm-profdata", output=str).strip() ) @@ -119,7 +117,7 @@ def pgo_train(self): # Clean the build dir. rmtree(self.build_directory, ignore_errors=True) - if self.spec.compiler.name in ("clang", "apple-clang"): + if self.spec.satisfies("%clang") or self.spec.satisfies("apple-clang"): # merge reports use_report = join_path(reports, "merged.prof") raw_files = glob.glob(join_path(reports, "*.profraw")) @@ -136,9 +134,7 @@ def pgo_train(self): cmake.add_default_envmod(use_mods) def setup_build_environment(self, env): - if self.spec.satisfies("%apple-clang"): - env.append_flags("CFLAGS", "-mmacosx-version-min=10.13") - env.append_flags("CXXFLAGS", "-mmacosx-version-min=10.13") - env.append_flags("LDFLAGS", "-mmacosx-version-min=10.13") - elif self.spec.compiler.name in ("gcc", "clang") and "+static_libstdcpp" in self.spec: + if ( + self.spec.satisfies("%gcc") or self.spec.satisfies("%clang") + ) and "+static_libstdcpp" in self.spec: env.append_flags("LDFLAGS", "-static-libstdc++ -static-libgcc -Wl,--exclude-libs,ALL") diff --git a/var/spack/repos/builtin/packages/cloverleaf-ref/package.py b/var/spack/repos/builtin/packages/cloverleaf-ref/package.py index 025a6b5d0f65ef..7982479eccf9a5 100644 --- a/var/spack/repos/builtin/packages/cloverleaf-ref/package.py +++ b/var/spack/repos/builtin/packages/cloverleaf-ref/package.py @@ -103,9 +103,6 @@ def build_targets(self): elif self.spec.satisfies("%xl"): targets.append("COMPILER=XLF") - else: - raise ValueError("Compiler {} not supported".format(self.spec.compiler.name)) - return targets def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/cmake/package.py b/var/spack/repos/builtin/packages/cmake/package.py index 4e6dbc6c0de4f8..f8830f3366e438 100644 --- a/var/spack/repos/builtin/packages/cmake/package.py +++ b/var/spack/repos/builtin/packages/cmake/package.py @@ -162,6 +162,12 @@ class Cmake(Package): depends_on("gmake", when="platform=freebsd") depends_on("qt", when="+qtgui") + # Qt depends on libmng, which is a CMake package; + # ensure we build using a non CMake build system + # when libmng is build as a transitive dependency of CMake + for plat in ["linux", "darwin", "freebsd"]: + with when(f"platform={plat}"): + depends_on("libmng build_system=autotools", when="+qtgui") # See https://gitlab.kitware.com/cmake/cmake/-/issues/21135 conflicts( diff --git a/var/spack/repos/builtin/packages/cmdstan/package.py b/var/spack/repos/builtin/packages/cmdstan/package.py index 23ab6b990d6b66..98a3f82fadeab3 100644 --- a/var/spack/repos/builtin/packages/cmdstan/package.py +++ b/var/spack/repos/builtin/packages/cmdstan/package.py @@ -32,7 +32,7 @@ class Cmdstan(MakefilePackage): filter_compiler_wrappers("local", relative_root="make") def edit(self, spec, prefix): - if spec.compiler.name == "intel": + if spec.satisfies("%intel"): cxx_type = "icc" else: cxx_type = spec.compiler.name diff --git a/var/spack/repos/builtin/packages/cmor/package.py b/var/spack/repos/builtin/packages/cmor/package.py index 56db33761540be..817ffbe9a1c973 100644 --- a/var/spack/repos/builtin/packages/cmor/package.py +++ b/var/spack/repos/builtin/packages/cmor/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -76,5 +77,4 @@ def install(self, spec, prefix): make("install") if spec.satisfies("+python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", ".") diff --git a/var/spack/repos/builtin/packages/composable-kernel/0001-mark-kernels-maybe-unused.patch b/var/spack/repos/builtin/packages/composable-kernel/0001-mark-kernels-maybe-unused.patch new file mode 100644 index 00000000000000..f2fbc24f614421 --- /dev/null +++ b/var/spack/repos/builtin/packages/composable-kernel/0001-mark-kernels-maybe-unused.patch @@ -0,0 +1,88 @@ +diff --git a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp +index f4f496fc10..d9e300b737 100644 +--- a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp ++++ b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_bwd_weight_two_stage_xdl_cshuffle.hpp +@@ -47,12 +47,12 @@ __global__ void + #endif + kernel_grouped_conv_bwd_weight_xdl_cshuffle_v3( + typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock + c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, +- const index_t num_k_per_block) ++ [[maybe_unused]] const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, ++ [[maybe_unused]] const index_t num_k_per_block) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx908__) || defined(__gfx90a__) || \ + defined(__gfx94__)) +@@ -103,12 +103,12 @@ __global__ void + #endif + kernel_grouped_conv_bwd_weight_xdl_cshuffle_v3_2lds( + typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock + c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, +- const index_t num_k_per_block) ++ [[maybe_unused]] const ComputePtrOffsetOfBatch compute_ptr_offset_of_batch, ++ [[maybe_unused]] const index_t num_k_per_block) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx908__) || defined(__gfx90a__) || \ + defined(__gfx940__) || defined(__gfx941__) || defined(__gfx942__)) +diff --git a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp +index 415ae3d496..a4d4a01a01 100644 +--- a/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp ++++ b/include/ck/tensor_operation/gpu/device/impl/device_grouped_conv_fwd_multiple_abd_xdl_cshuffle_v3.hpp +@@ -69,14 +69,15 @@ __global__ void + #if CK_USE_LAUNCH_BOUNDS + __launch_bounds__(CK_MAX_THREAD_PER_BLOCK, MinimumOccupancy) + #endif +- kernel_grouped_conv_fwd_xdl_cshuffle_v3(typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock +- c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffset compute_ptr_offset_of_groups, +- const ComputePtrOffset compute_ptr_offset_of_n, +- const index_t groups_count) ++ kernel_grouped_conv_fwd_xdl_cshuffle_v3( ++ typename GridwiseGemm::Argument karg, ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ c_grid_desc_mblock_mperblock_nblock_nperblock, ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_groups, ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_n, ++ [[maybe_unused]] const index_t groups_count) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx9__)) + // offset base pointer for each work-group +@@ -132,13 +133,13 @@ __global__ void + #endif + kernel_grouped_conv_fwd_xdl_cshuffle_v3_2lds( + typename GridwiseGemm::Argument karg, +- const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, +- const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, +- const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock ++ [[maybe_unused]] const AGridDesc_AK0_M_K1 a_grid_desc_ak0_m_ak1, ++ [[maybe_unused]] const BGridDesc_BK0_N_K1 b_grid_desc_bk0_n_bk1, ++ [[maybe_unused]] const CGridDesc_MBlock_MPerBlock_NBlock_NPerBlock + c_grid_desc_mblock_mperblock_nblock_nperblock, +- const ComputePtrOffset compute_ptr_offset_of_groups, +- const ComputePtrOffset compute_ptr_offset_of_n, +- const index_t groups_count) ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_groups, ++ [[maybe_unused]] const ComputePtrOffset compute_ptr_offset_of_n, ++ [[maybe_unused]] const index_t groups_count) + { + #if(!defined(__HIP_DEVICE_COMPILE__) || defined(__gfx9__)) + // offset base pointer for each work-group diff --git a/var/spack/repos/builtin/packages/composable-kernel/package.py b/var/spack/repos/builtin/packages/composable-kernel/package.py index fcb8dc682d0768..d666737cb3ec57 100644 --- a/var/spack/repos/builtin/packages/composable-kernel/package.py +++ b/var/spack/repos/builtin/packages/composable-kernel/package.py @@ -78,6 +78,10 @@ class ComposableKernel(CMakePackage): depends_on("llvm-amdgpu@" + ver, when="@" + ver) depends_on("rocm-cmake@" + ver, when="@" + ver, type="build") + # Build is breaking on warning, -Werror, -Wunused-parameter. The patch is part of: + # https://github.com/ROCm/composable_kernel/commit/959073842c0db839d45d565eb260fd018c996ce4 + patch("0001-mark-kernels-maybe-unused.patch", when="@6.2") + def setup_build_environment(self, env): env.set("CXX", self.spec["hip"].hipcc) @@ -101,6 +105,8 @@ def cmake_args(self): args.append(self.define("CMAKE_POSITION_INDEPENDENT_CODE", "ON")) if self.spec.satisfies("@:5.7"): args.append(self.define("CMAKE_CXX_FLAGS", "-O3")) + if self.spec.satisfies("@6.2:"): + args.append(self.define("BUILD_DEV", "OFF")) return args def build(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/costo/package.py b/var/spack/repos/builtin/packages/costo/package.py new file mode 100644 index 00000000000000..2e509974de1d87 --- /dev/null +++ b/var/spack/repos/builtin/packages/costo/package.py @@ -0,0 +1,49 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Costo(CMakePackage): + """costo stand for COSimulation TOols. + Its a layer above MPI to share data between meshes. + """ + + homepage = "https://gitlab.com/Te_ch/costo" + git = "https://gitlab.com/Te_ch/costo.git" + + maintainers("tech-91") + + license("LGPL-3.0-or-later") + + version("0.0.5", tag="v0.0.5", preferred=True) + version("develop", branch="devel") + version("main", branch="main", deprecated=True) + + variant("shared", default=True, description="Build shared library") + variant("tests", default=False, description="Enable testing") + + depends_on("mpi", type=all) + depends_on("python@3.10:", type=all) + + depends_on("py-non-regression-test-tools", type="build") + depends_on("py-pyvista", type=("build", "run")) + depends_on("py-numpy", type=("build", "link", "run")) + depends_on("py-mpi4py", type=("build", "run")) + depends_on("py-scipy", type=("build", "run")) + depends_on("py-mgmetis", type=("build", "run")) + depends_on("py-colorama", type=("build", "run")) + depends_on("py-pip", type="build") + + def cmake_args(self): + args = [ + # self.define("COSTO_ENABLE_TESTS", "OFF"), + self.define("COSTO_ENABLE_PYTHON_BINDINGS", "OFF"), + self.define("WITH_PYTHON_MODULE", "ON"), + self.define_from_variant("WITH_SHARED_LIBS", "shared"), + self.define_from_variant("WITH_TESTS", "tests"), + ] + + return args diff --git a/var/spack/repos/builtin/packages/cp2k/package.py b/var/spack/repos/builtin/packages/cp2k/package.py index 0a590013b1b373..71d6bab5a2e024 100644 --- a/var/spack/repos/builtin/packages/cp2k/package.py +++ b/var/spack/repos/builtin/packages/cp2k/package.py @@ -201,6 +201,7 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): depends_on("libxc@5.1.7:5.1", when="@9:2022.2") depends_on("libxc@6.1:", when="@2023.1:") depends_on("libxc@6.2:", when="@2023.2:") + depends_on("libxc@:6", when="@:2024.3") with when("+spla"): depends_on("spla+cuda+fortran", when="+cuda") @@ -378,6 +379,14 @@ class Cp2k(MakefilePackage, CMakePackage, CudaPackage, ROCmPackage): # https://github.com/cp2k/cp2k/issues/3688 patch("d4-dispersion-bugfix-2024.3.patch", when="@2024.3") + # Fix segmentation faults caused by accessing unallocated arrays + # https://github.com/cp2k/cp2k/pull/3733 + patch( + "https://github.com/cp2k/cp2k/commit/7a99649828ecf7d5dc53d952a1bf7be6970deabe.patch?full_index=1", + sha256="37f4f1a76634ff4a5617fe0c670e6acfe2afa2b2cfc5b2875e438a54baa4525e", + when="@2024.2:2024.3", + ) + def patch(self): # Patch for an undefined constant due to incompatible changes in ELPA if self.spec.satisfies("@9.1:2022.2 +elpa"): diff --git a/var/spack/repos/builtin/packages/cpr/package.py b/var/spack/repos/builtin/packages/cpr/package.py index 4c962b729e1d90..0f6daf03e42f61 100644 --- a/var/spack/repos/builtin/packages/cpr/package.py +++ b/var/spack/repos/builtin/packages/cpr/package.py @@ -12,11 +12,17 @@ class Cpr(CMakePackage): homepage = "https://docs.libcpr.org/" url = "https://github.com/libcpr/cpr/archive/refs/tags/1.10.4.tar.gz" + maintainers("prudhomm") license("MIT") + version("1.11.0", sha256="fdafa3e3a87448b5ddbd9c7a16e7276a78f28bbe84a3fc6edcfef85eca977784") + version("1.10.5", sha256="c8590568996cea918d7cf7ec6845d954b9b95ab2c4980b365f582a665dea08d8") version("1.10.4", sha256="88462d059cd3df22c4d39ae04483ed50dfd2c808b3effddb65ac3b9aa60b542d") version("1.9.2", sha256="3bfbffb22c51f322780d10d3ca8f79424190d7ac4b5ad6ad896de08dbd06bf31") + variant("pic", default=True, description="Position independent code") + variant("shared", default=True, description="Build shared library") + depends_on("cxx", type="build") depends_on("curl") @@ -29,4 +35,6 @@ def cmake_args(self): self.define("CPR_USE_SYSTEM_GTEST", True), self.define(f"CPR{_force}_USE_SYSTEM_CURL", True), self.define("CPR_ENABLE_SSL", True), + self.define_from_variant("BUILD_SHARED_LIBS", "shared"), + self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), ] diff --git a/var/spack/repos/builtin/packages/cprnc/install_rpath.patch b/var/spack/repos/builtin/packages/cprnc/install_rpath.patch new file mode 100644 index 00000000000000..92888468f8f7b2 --- /dev/null +++ b/var/spack/repos/builtin/packages/cprnc/install_rpath.patch @@ -0,0 +1,18 @@ +--- a/CMakeLists.txt 2023-12-04 07:01:57.000000000 -0700 ++++ b/CMakeLists.txt 2024-11-08 06:53:55.090900241 -0700 +@@ -21,6 +21,7 @@ + + set(CMAKE_POSITION_INDEPENDENT_CODE ON) + set(CMAKE_MACOSX_RPATH 1) ++SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) + + # Compiler-specific compile options + if ("${CMAKE_Fortran_COMPILER_ID}" STREQUAL "GNU") +@@ -79,6 +80,7 @@ + get_filename_component(netcdf_c_lib_location ${netcdf_c_lib} DIRECTORY) + #message (STATUS "netcdf_c_lib_location == ${netcdf_c_lib_location}") + ++SET(CMAKE_INSTALL_RPATH "${netcdf_fortran_lib_location};${netcdf_c_lib_location}") + list(APPEND CMAKE_BUILD_RPATH ${netcdf_fortran_lib_location} ${netcdf_c_lib_location}) + #message("CMAKE_BUILD_RPATH is ${CMAKE_BUILD_RPATH}") + add_executable (cprnc ${CPRNC_Fortran_SRCS} ${CPRNC_GenF90_SRCS}) diff --git a/var/spack/repos/builtin/packages/cprnc/package.py b/var/spack/repos/builtin/packages/cprnc/package.py index c719c107155cc5..c1bb841ad9fcaa 100644 --- a/var/spack/repos/builtin/packages/cprnc/package.py +++ b/var/spack/repos/builtin/packages/cprnc/package.py @@ -15,6 +15,7 @@ class Cprnc(CMakePackage): maintainers("jedwards4b", "billsacks") + version("1.0.8", sha256="94ee3b4e724bc06161e576d45f34401f1452acf738803528cb80726eed230cae") version("1.0.3", sha256="3e7400f9a13d5de01964d7dd95151d08e6e30818d2a1efa9a9c7896cf6646d69") version("1.0.2", sha256="02edfa8050135ac0dc4a74aea05d19b0823d769b22cafa88b9352e29723d4179") version("1.0.1", sha256="b8a8fd4ad7e2716968dfa60f677217c55636580807b1309276f4c062ee432ccd") @@ -25,6 +26,8 @@ class Cprnc(CMakePackage): depends_on("netcdf-fortran") depends_on("cmake@3:", type="build") + patch("install_rpath.patch", when="@:1.0.7") + resource( name="genf90", git="https://github.com/PARALLELIO/genf90", diff --git a/var/spack/repos/builtin/packages/cpuinfo/package.py b/var/spack/repos/builtin/packages/cpuinfo/package.py index fd990da38af3bd..2a3e905be07177 100644 --- a/var/spack/repos/builtin/packages/cpuinfo/package.py +++ b/var/spack/repos/builtin/packages/cpuinfo/package.py @@ -19,7 +19,9 @@ class Cpuinfo(CMakePackage): license("BSD-2-Clause") version("main", branch="main") - version("2023-11-04", commit="d6860c477c99f1fce9e28eb206891af3c0e1a1d7") # py-torch@2.3: + version("2024-09-06", commit="094fc30b9256f54dad5ad23bcbfb5de74781422f") # py-torch@2.5.1: + version("2024-08-30", commit="fa1c679da8d19e1d87f20175ae1ec10995cd3dd3") # py-torch@2.5.0 + version("2023-11-04", commit="d6860c477c99f1fce9e28eb206891af3c0e1a1d7") # py-torch@2.3:2.4 version("2023-01-13", commit="6481e8bef08f606ddd627e4d3be89f64d62e1b8a") # py-torch@2.1:2.2 version("2022-08-19", commit="8ec7bd91ad0470e61cf38f618cc1f270dede599c") # py-torch@1.13:2.0 version("2020-12-17", commit="5916273f79a21551890fd3d56fc5375a78d1598d") # py-torch@1.8:1.12 @@ -30,8 +32,8 @@ class Cpuinfo(CMakePackage): version("2018-05-13", commit="1e6c8c99d27f2b5eb9d2e6231055c6a4115b85e5") # py-torch@0.4.1 version("2018-04-04", commit="831dc28341b5f20d13e840caf87eaba644d82643") # py-torch@:0.4.0 - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") generator("ninja") depends_on("cmake@3.5:", type="build") diff --git a/var/spack/repos/builtin/packages/cqrlib/Makefile.patch b/var/spack/repos/builtin/packages/cqrlib/Makefile.patch new file mode 100644 index 00000000000000..222da4cef1bbea --- /dev/null +++ b/var/spack/repos/builtin/packages/cqrlib/Makefile.patch @@ -0,0 +1,29 @@ +--- a/Makefile ++++ b/Makefile +@@ -87,16 +87,16 @@ else + INCLUDES = -I$(INC) + endif + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib +-CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CXX) $(CPPFLAGS) $(INCLUDES) $(WARNINGS) -c +-CPPLIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CXX) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib +-CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CXX) $(CPPFLAGS) $(INCLUDES) +-CPPBUILD_COMMAND_DYNAMIC= $(LIBTOOL) --mode=link $(CXX) $(CPPFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib +-CPPBUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CXX) $(CPPFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CPPFLAGS) $(INCLUDES) $(WARNINGS) -c ++CPPLIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CXX $(CXX) -version-info $(VERSION) -rpath $(INSTALLDIR)/lib ++CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(CPPFLAGS) $(INCLUDES) ++CPPBUILD_COMMAND_DYNAMIC= $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(CPPFLAGS) -dynamic -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib ++CPPBUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CXX $(CXX) $(CPPFLAGS) -static -I $(INSTALLDIR)/include -L$(INSTALLDIR)/lib + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/cqrlib/package.py b/var/spack/repos/builtin/packages/cqrlib/package.py index ba698f7ed7a36f..6d2e644b938944 100644 --- a/var/spack/repos/builtin/packages/cqrlib/package.py +++ b/var/spack/repos/builtin/packages/cqrlib/package.py @@ -10,12 +10,10 @@ class Cqrlib(MakefilePackage): """CQRlib -- ANSI C API for Quaternion Rotations""" homepage = "https://cqrlib.sourceforge.net/" - url = ( - "https://downloads.sourceforge.net/project/cqrlib/cqrlib/CQRlib-1.1.2/CQRlib-1.1.2.tar.gz" - ) license("LGPL-2.1-or-later") + version("1.1.3", sha256="90ecd9aabfb72e55e56957c7b233910d18b8c2bb522a8e59eddbcc4618c72d0e") version("1.1.2", sha256="af3cf2402974579f3c6efc6a6174a5da52786db4bfee9d38d504d93bc42410fd") depends_on("c", type="build") # generated @@ -23,7 +21,12 @@ class Cqrlib(MakefilePackage): depends_on("libtool", type="build") - patch("cqr.patch") + patch("cqr.patch", when="@1.1.2") + patch("Makefile.patch", when="@1.1.2:") + + def url_for_version(self, version): + full_vers = str(version) + return f"https://downloads.sourceforge.net/project/cqrlib/cqrlib/CQRlib-{full_vers}/CQRlib-{full_vers}.tar.gz" def edit(self, spec, prefix): mf = FileFilter("Makefile") diff --git a/var/spack/repos/builtin/packages/cups/package.py b/var/spack/repos/builtin/packages/cups/package.py index b2c5b84ecfba5d..34c5fdd80bdd5a 100644 --- a/var/spack/repos/builtin/packages/cups/package.py +++ b/var/spack/repos/builtin/packages/cups/package.py @@ -20,9 +20,12 @@ class Cups(AutotoolsPackage): license("Apache-2.0", checked_by="wdconinc") + version("2.4.11", sha256="9a88fe1da3a29a917c3fc67ce6eb3178399d68e1a548c6d86c70d9b13651fd71") version("2.4.10", sha256="d75757c2bc0f7a28b02ee4d52ca9e4b1aa1ba2affe16b985854f5336940e5ad7") - version("2.3.3", sha256="261fd948bce8647b6d5cb2a1784f0c24cc52b5c4e827b71d726020bcc502f3ee") - version("2.2.3", sha256="66701fe15838f2c892052c913bde1ba106bbee2e0a953c955a62ecacce76885f") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-4504 + version("2.3.3", sha256="261fd948bce8647b6d5cb2a1784f0c24cc52b5c4e827b71d726020bcc502f3ee") + version("2.2.3", sha256="66701fe15838f2c892052c913bde1ba106bbee2e0a953c955a62ecacce76885f") depends_on("c", type="build") depends_on("cxx", type="build") diff --git a/var/spack/repos/builtin/packages/curl/package.py b/var/spack/repos/builtin/packages/curl/package.py index 127fbd991b59ba..ab040906c19ce3 100644 --- a/var/spack/repos/builtin/packages/curl/package.py +++ b/var/spack/repos/builtin/packages/curl/package.py @@ -31,12 +31,29 @@ class Curl(NMakePackage, AutotoolsPackage): license("curl") - version("8.8.0", sha256="40d3792d38cfa244d8f692974a567e9a5f3387c547579f1124e95ea2a1020d0d") - version("8.7.1", sha256="05bbd2b698e9cfbab477c33aa5e99b4975501835a41b7ca6ca71de03d8849e76") - version("8.6.0", sha256="b4785f2d8877fa92c0e45d7155cf8cc6750dbda961f4b1a45bcbec990cf2fa9b") - version("8.4.0", sha256="e5250581a9c032b1b6ed3cf2f9c114c811fc41881069e9892d115cc73f9e88c6") + version("8.10.1", sha256="3763cd97aae41dcf41950d23e87ae23b2edb2ce3a5b0cf678af058c391b6ae31") # Deprecated versions due to CVEs + version( + "8.8.0", + sha256="40d3792d38cfa244d8f692974a567e9a5f3387c547579f1124e95ea2a1020d0d", + deprecated=True, + ) + version( + "8.7.1", + sha256="05bbd2b698e9cfbab477c33aa5e99b4975501835a41b7ca6ca71de03d8849e76", + deprecated=True, + ) + version( + "8.6.0", + sha256="b4785f2d8877fa92c0e45d7155cf8cc6750dbda961f4b1a45bcbec990cf2fa9b", + deprecated=True, + ) + version( + "8.4.0", + sha256="e5250581a9c032b1b6ed3cf2f9c114c811fc41881069e9892d115cc73f9e88c6", + deprecated=True, + ) version( "8.1.2", sha256="b54974d32fd610acace92e3df1f643144015ac65847f0a041fdc17db6f43f243", @@ -114,9 +131,11 @@ class Curl(NMakePackage, AutotoolsPackage): depends_on("gnutls", when="tls=gnutls") with when("tls=mbedtls"): - depends_on("mbedtls@:2 +pic", when="@:7.78") - depends_on("mbedtls@2: +pic", when="@7.79:") - depends_on("mbedtls@3.6.0: +pic", when="@8.8.0:") + depends_on("mbedtls +pic") + depends_on("mbedtls@:2", when="@:7.78") + depends_on("mbedtls@:3.5", when="@:8.7") + depends_on("mbedtls@2:", when="@7.79:") + depends_on("mbedtls@3.2:", when="@8.8") # https://github.com/curl/curl/issues/13748 depends_on("nss", when="tls=nss") @@ -178,7 +197,8 @@ def command(self): def flag_handler(self, name, flags): build_system_flags = [] - if name == "cflags" and self.spec.compiler.name in ["intel", "oneapi"]: + spec = self.spec + if name == "cflags" and (spec.satisfies("%intel") or spec.satisfies("%oneapi")): build_system_flags = ["-we147"] return flags, None, build_system_flags diff --git a/var/spack/repos/builtin/packages/cvector/Makefile.patch b/var/spack/repos/builtin/packages/cvector/Makefile.patch new file mode 100644 index 00000000000000..e6169769e2207a --- /dev/null +++ b/var/spack/repos/builtin/packages/cvector/Makefile.patch @@ -0,0 +1,19 @@ +--- a/Makefile ++++ b/Makefile +@@ -89,11 +89,11 @@ else + INCLUDES = -I$(INC) + endif + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -release $(RELEASE) -no-undefined -rpath $(INSTALL_PREFIX)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -dynamic -I $(INSTALL_PREFIX)/include +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static -I $(INSTALL_PREFIX)/include ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -release $(RELEASE) -no-undefined -rpath $(INSTALL_PREFIX)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -dynamic -I $(INSTALL_PREFIX)/include ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static -I $(INSTALL_PREFIX)/include + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/cvector/package.py b/var/spack/repos/builtin/packages/cvector/package.py index 105142bbcd6578..9ca644ab293f0a 100644 --- a/var/spack/repos/builtin/packages/cvector/package.py +++ b/var/spack/repos/builtin/packages/cvector/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -10,16 +12,28 @@ class Cvector(MakefilePackage): """CVector -- ANSI C API for Dynamic Arrays""" homepage = "https://cvector.sourceforge.net/" - url = "https://downloads.sourceforge.net/project/cvector/cvector/CVector-1.0.3/CVector-1.0.3.tar.gz" license("LGPL-2.1-or-later") - version("1.0.3", sha256="d3fa92de3cd5ba8697abdbb52080248b2c252a81cf40a8ec639be301518d0ce3") + version("1.0.3.1", sha256="6492b2beb26c3179cdd19abc90dc47a685be471c594d5ab664283e1d3586acdc") + version( + "1.0.3", + sha256="d3fa92de3cd5ba8697abdbb52080248b2c252a81cf40a8ec639be301518d0ce3", + deprecated=True, + ) depends_on("c", type="build") # generated depends_on("libtool", type="build") + patch("Makefile.patch", when="@1.0.3.1") + + def url_for_version(self, version): + pattern = re.compile(r"^[0-9]+\.[0-9]+\.[0-9]+") + full_vers = str(version) + cropped_vers = pattern.search(full_vers).group() + return f"https://downloads.sourceforge.net/project/cvector/cvector/CVector-{cropped_vers}/CVector-{full_vers}.tar.gz" + def edit(self, spec, prefix): mf = FileFilter("Makefile") mf.filter(r"^CC.+", "CC = {0}".format(spack_cc)) diff --git a/var/spack/repos/builtin/packages/cyrus-sasl/package.py b/var/spack/repos/builtin/packages/cyrus-sasl/package.py index f4f92d0a6dc73e..afc7bd68e88e96 100644 --- a/var/spack/repos/builtin/packages/cyrus-sasl/package.py +++ b/var/spack/repos/builtin/packages/cyrus-sasl/package.py @@ -23,6 +23,14 @@ class CyrusSasl(AutotoolsPackage): version("2.1.24", sha256="1df15c492f7ecb90be49531a347b3df21b041c2e0325dcc4fc5a6e98384c40dd") version("2.1.23", sha256="b1ec43f62d68446a6a5879925c63d94e26089c5a46cd83e061dd685d014c7d1f") + # ensure include time.h, https://github.com/cyrusimap/cyrus-sasl/pull/709 + patch( + "https://github.com/cyrusimap/cyrus-sasl/commit/266f0acf7f5e029afbb3e263437039e50cd6c262.patch?full_index=1", + sha256="819342fe68475ac1690136ff4ce9b73c028f433ae150898add36f724a8e2274b", + when="@2.1.27:2.1.28", + ) + conflicts("%gcc@14:", when="@:2.1.26") + depends_on("c", type="build") # generated depends_on("m4", type="build") diff --git a/var/spack/repos/builtin/packages/dakota/package.py b/var/spack/repos/builtin/packages/dakota/package.py index 2ab8e46e7a6981..35eb19168c5321 100644 --- a/var/spack/repos/builtin/packages/dakota/package.py +++ b/var/spack/repos/builtin/packages/dakota/package.py @@ -64,9 +64,9 @@ class Dakota(CMakePackage): version("6.9", sha256="989b689278964b96496e3058b8ef5c2724d74bcd232f898fe450c51eba7fe0c2") version("6.3", sha256="0fbc310105860d77bb5c96de0e8813d75441fca1a5e6dfaf732aa095c4488d52") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build") variant("shared", default=True, description="Enables the build of shared libraries") variant("mpi", default=True, description="Activates MPI support") @@ -92,6 +92,19 @@ class Dakota(CMakePackage): depends_on("cmake@2.8.9:", type="build") depends_on("cmake@3.17:", type="build", when="@6.18:") + # dakota@:6.20 don't compile with gcc@13, and it is currently the latest version: + conflicts("%gcc@13:") + # dakota@:6.12 don't compile with gcc@12: + conflicts("%gcc@12:", when="@:6.12") + # dakota@:6.9 don't compile with gcc@11: + conflicts("%gcc@11:", when="@:6.9") + + def flag_handler(self, name, flags): + # from gcc@10, dakota@:6.12 need an extra flag + if self.spec.satisfies("@:6.12 %gcc@10:") and name == "fflags": + flags.append("-fallow-argument-mismatch") + return (flags, None, None) + def cmake_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/damask-grid/package.py b/var/spack/repos/builtin/packages/damask-grid/package.py index bf9dd8b5f20890..35398ebf7715d5 100644 --- a/var/spack/repos/builtin/packages/damask-grid/package.py +++ b/var/spack/repos/builtin/packages/damask-grid/package.py @@ -10,13 +10,14 @@ class DamaskGrid(CMakePackage): """Grid solver for DAMASK""" - homepage = "https://damask.mpie.de" - url = "https://damask.mpie.de/download/damask-3.0.0.tar.xz" + homepage = "https://damask-multiphysics.org" + url = "https://damask-multiphysics.org/download/damask-3.0.0.tar.xz" maintainers("MarDiehl") license("AGPL-3.0-or-later") + version("3.0.1", sha256="3db1231f6763356e71b3bb91f66f1abb4fdae2721ce85754fc468446f3d74882") version("3.0.0", sha256="aaebc65b3b10e6c313132ee97cfed427c115079b7e438cc0727c5207e159019f") version( "3.0.0-beta2", sha256="513567b4643f39e27ae32b9f75463fc6f388c1548d42f0393cc87ba02d075f6a" @@ -43,6 +44,7 @@ class DamaskGrid(CMakePackage): depends_on("c", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("petsc@3.21:3.22", when="@3.0.1:") depends_on("petsc@3.21", when="@3.0.0-beta2:") depends_on("petsc@3.20.3:3.20", when="@3.0.0-beta") depends_on("petsc@3.20.2:3.20", when="@3.0.0-alpha8") @@ -60,7 +62,7 @@ class DamaskGrid(CMakePackage): # proper initialization of temperature to avoid segmentation fault. created by @MarDiehl patch("T-init.patch", when="@3.0.0-alpha7") - # relax Fortran sourc limit to 132 char to enable PETSc macro expansion. created by @MarDiehl + # relax Fortran source limit to 132 char to enable PETSc macro expansion. created by @MarDiehl patch("long-lines.patch", when="@3.0.0-alpha7") patch("CMakeDebugRelease.patch", when="@3.0.0-alpha4") diff --git a/var/spack/repos/builtin/packages/damask-mesh/package.py b/var/spack/repos/builtin/packages/damask-mesh/package.py index 5839e5d1f4235c..c7e13df7837903 100644 --- a/var/spack/repos/builtin/packages/damask-mesh/package.py +++ b/var/spack/repos/builtin/packages/damask-mesh/package.py @@ -10,13 +10,14 @@ class DamaskMesh(CMakePackage): """Mesh solver for DAMASK""" - homepage = "https://damask.mpie.de" - url = "https://damask.mpie.de/download/damask-3.0.0.tar.xz" + homepage = "https://damask-multiphysics.org" + url = "https://damask-multiphysics.org/download/damask-3.0.0.tar.xz" maintainers("MarDiehl") license("AGPL-3.0-or-later") + version("3.0.1", sha256="3db1231f6763356e71b3bb91f66f1abb4fdae2721ce85754fc468446f3d74882") version("3.0.0", sha256="aaebc65b3b10e6c313132ee97cfed427c115079b7e438cc0727c5207e159019f") version( "3.0.0-beta2", sha256="513567b4643f39e27ae32b9f75463fc6f388c1548d42f0393cc87ba02d075f6a" @@ -43,6 +44,7 @@ class DamaskMesh(CMakePackage): depends_on("c", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("petsc@3.21:3.22", when="@3.0.1:") depends_on("petsc@3.21", when="@3.0.0-beta2:") depends_on("petsc@3.20.3:3.20", when="@3.0.0-beta") depends_on("petsc@3.20.2:3.20", when="@3.0.0-alpha8") @@ -57,7 +59,7 @@ class DamaskMesh(CMakePackage): depends_on("hdf5@1.10:+mpi+fortran") depends_on("libfyaml", when="@3.0.0-alpha7:") - # relax Fortran sourc limit to 132 char to enable PETSc macro expansion. created by @MarDiehl + # relax Fortran source limit to 132 char to enable PETSc macro expansion. created by @MarDiehl patch("long-lines.patch", when="@3.0.0-alpha7") patch("CMakeDebugRelease.patch", when="@3.0.0-alpha4") diff --git a/var/spack/repos/builtin/packages/damask/package.py b/var/spack/repos/builtin/packages/damask/package.py index ae9a62ef06c6f0..91c39a4e279d45 100644 --- a/var/spack/repos/builtin/packages/damask/package.py +++ b/var/spack/repos/builtin/packages/damask/package.py @@ -24,10 +24,11 @@ class Damask(BundlePackage): """ - homepage = "https://damask.mpie.de" + homepage = "https://damask-multiphysics.org" maintainers("MarDiehl") + version("3.0.1") version("3.0.0") version("3.0.0-beta2") version("3.0.0-beta") @@ -37,6 +38,10 @@ class Damask(BundlePackage): version("3.0.0-alpha5") version("3.0.0-alpha4") + depends_on("damask-grid@3.0.1", when="@3.0.1", type="run") + depends_on("damask-mesh@3.0.1", when="@3.0.1", type="run") + depends_on("py-damask@3.0.1", when="@3.0.1", type="run") + depends_on("damask-grid@3.0.0", when="@3.0.0", type="run") depends_on("damask-mesh@3.0.0", when="@3.0.0", type="run") depends_on("py-damask@3.0.0", when="@3.0.0", type="run") diff --git a/var/spack/repos/builtin/packages/darshan-runtime/package.py b/var/spack/repos/builtin/packages/darshan-runtime/package.py index 81bbd2877ea2d0..25f67b55f9742c 100644 --- a/var/spack/repos/builtin/packages/darshan-runtime/package.py +++ b/var/spack/repos/builtin/packages/darshan-runtime/package.py @@ -25,6 +25,7 @@ class DarshanRuntime(AutotoolsPackage): test_requires_compiler = True version("main", branch="main", submodules=True) + version("3.4.6", sha256="092b35e7af859af903dce0c51bcb5d3901dd0d9ad79d1b2f3282692407f032ee") version("3.4.5", sha256="1c017ac635fab5ee0e87a6b52c5c7273962813569495cb1dd3b7cfa6e19f6ed0") version("3.4.4", sha256="d9c9df5aca94dc5ca3d56fd763bec2f74771d35126d61cb897373d2166ccd867") version("3.4.3", sha256="dca5f9f9b0ead55a8724b218071ecbb5c4f2ef6027eaade3a6477256930ccc2c") diff --git a/var/spack/repos/builtin/packages/darshan-util/package.py b/var/spack/repos/builtin/packages/darshan-util/package.py index 8cbe414d76ab8a..38a9195c7add41 100644 --- a/var/spack/repos/builtin/packages/darshan-util/package.py +++ b/var/spack/repos/builtin/packages/darshan-util/package.py @@ -21,6 +21,7 @@ class DarshanUtil(AutotoolsPackage): tags = ["e4s"] version("main", branch="main", submodules="True") + version("3.4.6", sha256="092b35e7af859af903dce0c51bcb5d3901dd0d9ad79d1b2f3282692407f032ee") version("3.4.5", sha256="1c017ac635fab5ee0e87a6b52c5c7273962813569495cb1dd3b7cfa6e19f6ed0") version("3.4.4", sha256="d9c9df5aca94dc5ca3d56fd763bec2f74771d35126d61cb897373d2166ccd867") version("3.4.3", sha256="dca5f9f9b0ead55a8724b218071ecbb5c4f2ef6027eaade3a6477256930ccc2c") diff --git a/var/spack/repos/builtin/packages/dealii/package.py b/var/spack/repos/builtin/packages/dealii/package.py index 94563ec32dc78e..50ff2dbb5177b7 100644 --- a/var/spack/repos/builtin/packages/dealii/package.py +++ b/var/spack/repos/builtin/packages/dealii/package.py @@ -180,8 +180,9 @@ class Dealii(CMakePackage, CudaPackage): depends_on("arborx+trilinos", when="@9.3:+arborx+trilinos") depends_on("arpack-ng+mpi", when="+arpack+mpi") depends_on("assimp", when="@9.0:+assimp") - depends_on("cgal", when="@9.4:+cgal") - depends_on("cgal@5:", when="@9.5:+cgal") + # cgal 6 not yet supported: https://github.com/spack/spack/pull/47285#issuecomment-2455403447 + depends_on("cgal@:5", when="@9.4:+cgal") + depends_on("cgal@5", when="@9.5:+cgal") depends_on("doxygen+graphviz", when="+doc") depends_on("graphviz", when="+doc") depends_on("ginkgo", when="@9.1:+ginkgo") diff --git a/var/spack/repos/builtin/packages/detray/package.py b/var/spack/repos/builtin/packages/detray/package.py index 1ea2022dfb3f88..ab94c97a835f33 100644 --- a/var/spack/repos/builtin/packages/detray/package.py +++ b/var/spack/repos/builtin/packages/detray/package.py @@ -20,6 +20,8 @@ class Detray(CMakePackage): license("MPL-2.0", checked_by="stephenswat") + version("0.81.0", sha256="821313a7e3ea90fcf5c92153d28bba1f85844e03d7c6b6b98d0b3407adb86357") + version("0.80.0", sha256="a12f3e333778ddd20a568b5c8df5b2375f9a4d74caf921822c1864b07b3f8ab7") version("0.79.0", sha256="3b9f18cb003e59795a0e4b1414069ac8558b975714626449293a71bc4398a380") version("0.78.0", sha256="ca3a348f4e12ed690c3106197e107b9c393b6902224b2543b00382050864bcf3") version("0.77.0", sha256="c2c72f65a7ff2426335b850c0b3cfbbbf666208612b2458c97a534ecf8029cb8") @@ -63,6 +65,7 @@ class Detray(CMakePackage): depends_on("cmake@3.11:", type="build") depends_on("vecmem@1.6.0:") + depends_on("vecmem@1.8.0:", when="@0.76:") depends_on("covfie@0.10.0:") depends_on("nlohmann-json@3.11.0:", when="+json") depends_on("dfelibs@20211029:") @@ -93,6 +96,9 @@ def cmake_args(self): self.define_from_variant("DETRAY_SMATRIX_PLUGIN", "smatrix"), self.define_from_variant("DETRAY_IO_CSV", "csv"), self.define_from_variant("DETRAY_IO_JSON", "json"), + self.define_from_variant("DETRAY_VC_PLUGIN", "vc"), + self.define_from_variant("DETRAY_VC_AOS_PLUGIN", "vc"), + self.define_from_variant("DETRAY_VC_SOA_PLUGIN", "vc"), self.define("DETRAY_SVG_DISPLAY", True), self.define("DETRAY_SETUP_ACTSVG", True), self.define("DETRAY_BUILD_TESTING", False), diff --git a/var/spack/repos/builtin/packages/diamond/package.py b/var/spack/repos/builtin/packages/diamond/package.py index c87e675eaebd5d..1ce6bcae9df68f 100644 --- a/var/spack/repos/builtin/packages/diamond/package.py +++ b/var/spack/repos/builtin/packages/diamond/package.py @@ -16,6 +16,7 @@ class Diamond(CMakePackage): license("GPL-3.0-only") + version("2.1.10", sha256="c6ede5df30d9d496af314e740964c35a0e358458d9c8d9b8dd517d69828d9981") version("2.1.9", sha256="4cde9df78c63e8aef9df1e3265cd06a93ce1b047d6dba513a1437719b70e9d88") version("2.1.8", sha256="b6088259f2bc92d1f9dc4add44590cff68321bcbf91eefbc295a3525118b9415") version("2.1.7", sha256="2dcaba0e79ecb02c3d2a6816d317e714767118a9a056721643abff4c586ca95b") diff --git a/var/spack/repos/builtin/packages/dire/package.py b/var/spack/repos/builtin/packages/dire/package.py index b819f019e794cc..fb7849a032bf41 100644 --- a/var/spack/repos/builtin/packages/dire/package.py +++ b/var/spack/repos/builtin/packages/dire/package.py @@ -4,7 +4,6 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * -from spack.pkg.builtin.boost import Boost class Dire(Package): @@ -27,10 +26,6 @@ class Dire(Package): depends_on("zlib-api") - # TODO: replace this with an explicit list of components of Boost, - # for instance depends_on('boost +filesystem') - # See https://github.com/spack/spack/pull/22303 for reference - depends_on(Boost.with_default_variants) depends_on("lhapdf") depends_on("hepmc") depends_on("pythia8@8.226:") diff --git a/var/spack/repos/builtin/packages/direnv/package.py b/var/spack/repos/builtin/packages/direnv/package.py index e091d1242f22d3..58c8807424f496 100644 --- a/var/spack/repos/builtin/packages/direnv/package.py +++ b/var/spack/repos/builtin/packages/direnv/package.py @@ -16,6 +16,7 @@ class Direnv(GoPackage): license("MIT") + version("2.35.0", sha256="a7aaec49d1b305f0745dad364af967fb3dc9bb5befc9f29d268d528b5a474e57") version("2.34.0", sha256="3d7067e71500e95d69eac86a271a6b6fc3f2f2817ba0e9a589524bf3e73e007c") version("2.33.0", sha256="8ef18051aa6bdcd6b59f04f02acdd0b78849b8ddbdbd372d4957af7889c903ea") version("2.32.3", sha256="c66f6d1000f28f919c6106b5dcdd0a0e54fb553602c63c60bf59d9bbdf8bd33c") diff --git a/var/spack/repos/builtin/packages/draco/package.py b/var/spack/repos/builtin/packages/draco/package.py index 9721303f95e262..b6ed230af938fc 100644 --- a/var/spack/repos/builtin/packages/draco/package.py +++ b/var/spack/repos/builtin/packages/draco/package.py @@ -20,6 +20,7 @@ class Draco(CMakePackage): license("BSD-3-Clause-Open-MPI") version("develop", branch="develop") + version("7.19.0", sha256="04b33cfea244052efcdd40d2b9dd79348749d34647aaf4dfcb15cdfdbe989783") version("7.18.0", sha256="b210e202a06ffdaf149193b5cba164411fd508e20e573e1dfc46d1f56e3fffaa") version("7.14.1", sha256="b05c75f1b8ea1d4fac4900d897fb1c948b470826b174ed8b97b32c6da9f030bf") version("7.14.0", sha256="c8abf293d81c1b8020907557c20d8d2f2edf9ac7ae60a534eab052a8c3b7f99d") @@ -83,6 +84,8 @@ class Draco(CMakePackage): conflicts("+cuda", when="@:7.6") conflicts("+caliper", when="@:7.7") + with when("@7.19.0:"): + conflicts("gcc@:9.0") # Fix python discovery. patch("d710.patch", when="@7.1.0") diff --git a/var/spack/repos/builtin/packages/dtc/package.py b/var/spack/repos/builtin/packages/dtc/package.py index 541041d5322d2b..8790d702fb92c2 100644 --- a/var/spack/repos/builtin/packages/dtc/package.py +++ b/var/spack/repos/builtin/packages/dtc/package.py @@ -24,9 +24,9 @@ class Dtc(MakefilePackage): # Build error with flex 2.6.3 # (convert-dtsv0-lexer.lex.c:398: error: "yywrap" redefined) depends_on("flex@2.6.4:", type="build") - depends_on("libyaml", type="build") depends_on("pkgconfig", type="build") depends_on("python", type="build") + depends_on("libyaml", type=("build", "link")) def edit(self, spec, prefix): makefile = FileFilter("Makefile") @@ -35,3 +35,14 @@ def edit(self, spec, prefix): makefile.filter( r"WARNINGS = -Wall", "WARNINGS = -Wall -Wno-unused-command-line-argument" ) + + if self.spec.satisfies("platform=darwin"): + libfdt_makefile = FileFilter("libfdt/Makefile.libfdt") + libfdt_makefile.filter( + r"LIBFDT_soname = .*", "LIBFDT_soname = libfdt.1.$(SHAREDLIB_EXT)" + ) + + @run_after("install") + def darwin_fix(self): + if self.spec.satisfies("platform=darwin"): + fix_darwin_install_name(self.prefix.lib) diff --git a/var/spack/repos/builtin/packages/dtcmp/package.py b/var/spack/repos/builtin/packages/dtcmp/package.py index 1fa7c28e1dc143..c331ea2ed36c33 100644 --- a/var/spack/repos/builtin/packages/dtcmp/package.py +++ b/var/spack/repos/builtin/packages/dtcmp/package.py @@ -17,6 +17,7 @@ class Dtcmp(AutotoolsPackage): maintainers("gonsie", "camstan", "adammoody") version("main", branch="main") + version("1.1.5", sha256="959c28999b8d1dd2e8703172db55392e38114fde0cd54dfad04555622c5e5974") version("1.1.4", sha256="dd83d8cecd68e13b78b68e88675cc5847cde06742b7740e140b98f4a08127dd3") version("1.1.3", sha256="90b32cadd0ff2f4fa7fc916f8dcfdbe6918e3e285e0292a2470772478ca0aab5") version("1.1.2", sha256="76e1d1fed89bf6abf003179a7aed93350d5ce6282cb000b02a241ec802ec399d") @@ -30,7 +31,8 @@ class Dtcmp(AutotoolsPackage): depends_on("lwgrp") depends_on("lwgrp@main", when="@main") - depends_on("lwgrp@1.0.5", when="@1.1.4") + depends_on("lwgrp@1.0.3:", when="@1.1.2:") + depends_on("lwgrp@1.0.5:", when="@1.1.4:") variant("shared", default=True, description="Build with shared libraries") depends_on("lwgrp+shared", when="+shared") diff --git a/var/spack/repos/builtin/packages/duckdb/package.py b/var/spack/repos/builtin/packages/duckdb/package.py index efb021ca678500..6bac330a3af831 100644 --- a/var/spack/repos/builtin/packages/duckdb/package.py +++ b/var/spack/repos/builtin/packages/duckdb/package.py @@ -18,6 +18,7 @@ class Duckdb(MakefilePackage): maintainers("glentner", "teaguesterling") version("master", branch="master") + version("1.1.2", sha256="a3319a64c390ed0454c869b2e4fc0af2413cd49f55cd0f1400aaed9069cdbc4c") version("1.1.1", sha256="a764cef80287ccfd8555884d8facbe962154e7c747043c0842cd07873b4d6752") version("1.1.0", sha256="d9be2c6d3a5ebe2b3d33044fb2cb535bb0bd972a27ae38c4de5e1b4caa4bf68d") version("1.0.0", sha256="04e472e646f5cadd0a3f877a143610674b0d2bcf9f4102203ac3c3d02f1c5f26") @@ -186,5 +187,10 @@ def patch(self): def install(self, spec, prefix): mkdir(prefix.bin) + mkdirp(prefix.lib) + mkdir(prefix.include) build_dir = join_path("build", "release") install(join_path(build_dir, "duckdb"), prefix.bin) + install(join_path(build_dir, "src", "libduckdb.so"), prefix.lib) + install(join_path(build_dir, "src", "libduckdb_static.a"), prefix.lib) + install_tree(join_path("src", "include"), prefix.include) diff --git a/var/spack/repos/builtin/packages/dyninst/missing_include_deque.patch b/var/spack/repos/builtin/packages/dyninst/missing_include_deque.patch new file mode 100644 index 00000000000000..cee31fdbb0c5ee --- /dev/null +++ b/var/spack/repos/builtin/packages/dyninst/missing_include_deque.patch @@ -0,0 +1,11 @@ +diff --git a/dataflowAPI/src/AbslocInterface.C b/dataflowAPI/src/AbslocInterface.C +index 9d7ad000c..582e64004 100644 +--- a/dataflowAPI/src/AbslocInterface.C ++++ b/dataflowAPI/src/AbslocInterface.C +@@ -29,6 +29,7 @@ + */ + + ++#include + #include "Absloc.h" + #include "AbslocInterface.h" diff --git a/var/spack/repos/builtin/packages/dyninst/package.py b/var/spack/repos/builtin/packages/dyninst/package.py index f71ab53fb762ba..cca8a3026eb7e6 100644 --- a/var/spack/repos/builtin/packages/dyninst/package.py +++ b/var/spack/repos/builtin/packages/dyninst/package.py @@ -110,6 +110,11 @@ class Dyninst(CMakePackage): patch("stackanalysis_h.patch", when="@9.2.0") patch("v9.3.2-auto.patch", when="@9.3.2 %gcc@:4.7") patch("tribool.patch", when="@9.3.0:10.0.0 ^boost@1.69:") + patch( + "missing_include_deque.patch", + when="@10.0.0:12.2.0", + sha256="0064d8d51bd01bd0035e1ebc49276f627ce6366d4524c92cf47d3c09b0031f96", + ) requires("%gcc", when="@:13.0.0", msg="dyninst builds only with GCC") diff --git a/var/spack/repos/builtin/packages/easi/package.py b/var/spack/repos/builtin/packages/easi/package.py index e13180b6846df6..fbe2163509121f 100644 --- a/var/spack/repos/builtin/packages/easi/package.py +++ b/var/spack/repos/builtin/packages/easi/package.py @@ -32,6 +32,7 @@ class Easi(CMakePackage): variant("python", default=True, description="Install python bindings") extends("python", when="+python") + depends_on("mpi", when="+python") variant("asagi", default=True, description="build with ASAGI support") variant( diff --git a/var/spack/repos/builtin/packages/edm4hep/package.py b/var/spack/repos/builtin/packages/edm4hep/package.py index 838c11b101c8f8..97c32283b061b8 100644 --- a/var/spack/repos/builtin/packages/edm4hep/package.py +++ b/var/spack/repos/builtin/packages/edm4hep/package.py @@ -61,12 +61,20 @@ class Edm4hep(CMakePackage): description="Use the specified C++ standard when building.", ) + variant( + "json", + default=True, + description="Build edm4hep with JSON support and edm4hep2json", + when="@0.99.2:", + ) + depends_on("cmake@3.3:", type="build") depends_on("cmake@3.23:", type="build", when="@0.10.3:") depends_on("python", type="build") depends_on("root@6.08:") - depends_on("nlohmann-json@3.10.5:") + depends_on("nlohmann-json@3.10.5:", when="@0.99.2: +json") + depends_on("nlohmann-json@3.10.5:", when="@:0.99.1") depends_on("podio@1:", when="@0.99:") depends_on("podio@0.15:", when="@:0.10.5") for _std in _cxxstd_values: @@ -88,6 +96,8 @@ def cmake_args(self): # C++ Standard args.append(self.define("CMAKE_CXX_STANDARD", self.spec.variants["cxxstd"].value)) args.append(self.define("BUILD_TESTING", self.run_tests)) + if self.spec.satisfies("@0.99.2: +json"): + args.append(self.define_from_variant("EDM4HEP_WITH_JSON", "json")) return args def setup_run_environment(self, env): diff --git a/var/spack/repos/builtin/packages/elasticsearch/package.py b/var/spack/repos/builtin/packages/elasticsearch/package.py index b17ec0668613b4..200a8360539541 100644 --- a/var/spack/repos/builtin/packages/elasticsearch/package.py +++ b/var/spack/repos/builtin/packages/elasticsearch/package.py @@ -13,14 +13,23 @@ class Elasticsearch(Package): """ homepage = "https://www.elastic.co/" - url = "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-6.2.4.tar.gz" + url = "https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-8.15.2-linux-x86_64.tar.gz" - version("6.4.0", sha256="e9786efb5cecd12adee2807c7640ba9a1ab3b484d2e87497bb8d0b6df0e24f01") - version("6.3.0", sha256="0464127140820d82b24bd2830232131ea85bcd49267a8bc7365e4fa391dee2a3") - version("6.2.4", sha256="91e6f1ea1e1dd39011e7a703d2751ca46ee374665b08b0bfe17e0c0c27000e8e") + version("8.15.2", sha256="0b6905ede457be9d1d73d0b6be1c3a7c7c6220829846b532f2604ad30ba7308f") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2018-3831 + version("6.4.0", sha256="e9786efb5cecd12adee2807c7640ba9a1ab3b484d2e87497bb8d0b6df0e24f01") + version("6.3.0", sha256="0464127140820d82b24bd2830232131ea85bcd49267a8bc7365e4fa391dee2a3") + version("6.2.4", sha256="91e6f1ea1e1dd39011e7a703d2751ca46ee374665b08b0bfe17e0c0c27000e8e") depends_on("java", type="run") + def url_for_version(self, version): + if self.spec.satisfies("@:6"): + return f"https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-{version}.tar.gz" + else: + return f"https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-{version}-linux-x86_64.tar.gz" + def install(self, spec, prefix): dirs = ["bin", "config", "lib", "modules", "plugins"] diff --git a/var/spack/repos/builtin/packages/elemental/package.py b/var/spack/repos/builtin/packages/elemental/package.py index a286b4b51543c2..85dba11538a32a 100644 --- a/var/spack/repos/builtin/packages/elemental/package.py +++ b/var/spack/repos/builtin/packages/elemental/package.py @@ -6,7 +6,6 @@ import os from spack.package import * -from spack.spec import UnsupportedCompilerError class Elemental(CMakePackage): @@ -94,6 +93,8 @@ class Elemental(CMakePackage): patch("elemental_cublas.patch", when="+cublas") patch("cmake_0.87.7.patch", when="@0.87.7") + conflicts("%intel@:17.0.2", when="@:0.87.7") + @property def libs(self): shared = True if "+shared" in self.spec else False @@ -101,14 +102,6 @@ def libs(self): def cmake_args(self): spec = self.spec - - if spec.satisfies("@:0.87.7") and spec.satisfies("%intel@:17.0.2"): - raise UnsupportedCompilerError( - "Elemental {0} has a known bug with compiler: {1} {2}".format( - spec.version, spec.compiler.name, spec.compiler.version - ) - ) - args = [ "-DCMAKE_INSTALL_MESSAGE:STRING=LAZY", "-DCMAKE_C_COMPILER=%s" % spec["mpi"].mpicc, diff --git a/var/spack/repos/builtin/packages/enchant/package.py b/var/spack/repos/builtin/packages/enchant/package.py index 673a4d4152b6d6..3221b2332a570e 100644 --- a/var/spack/repos/builtin/packages/enchant/package.py +++ b/var/spack/repos/builtin/packages/enchant/package.py @@ -41,8 +41,9 @@ class Enchant(AutotoolsPackage): version("2.1.1", sha256="5fad0a1e82ddfed91647e93da5955fc76249760fd51865648a36074dc97d526c") version("2.1.0", sha256="2cdda2d9edb62ad895c34be35c598d56ac5b9b9298f3dfdaa2b40a1914d1db7e") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("pkgconfig", type="build", when="platform=linux") variant("hunspell", default=True, description="Enables hunspell backend") diff --git a/var/spack/repos/builtin/packages/environment-modules/package.py b/var/spack/repos/builtin/packages/environment-modules/package.py index 173c340162fd3c..2b28e5651d161e 100644 --- a/var/spack/repos/builtin/packages/environment-modules/package.py +++ b/var/spack/repos/builtin/packages/environment-modules/package.py @@ -13,12 +13,13 @@ class EnvironmentModules(Package): """ homepage = "https://cea-hpc.github.io/modules/" - url = "https://github.com/cea-hpc/modules/releases/download/v5.4.0/modules-5.4.0.tar.gz" + url = "https://github.com/cea-hpc/modules/releases/download/v5.5.0/modules-5.5.0.tar.gz" git = "https://github.com/cea-hpc/modules.git" maintainers("xdelaruelle") version("main", branch="main") + version("5.5.0", sha256="ad0e360c7adc2515a99836863d98499b3ad89cd7548625499b20293845b040cb") version("5.4.0", sha256="586245cbf9420866078d8c28fce8ef4f192530c69a0f368f51e848340dcf3b90") version("5.3.1", sha256="d02f9ce4f8baf6c99edceb7c73bfdd1e97d77bcc4725810b86efed9f58dda962") version("5.3.0", sha256="21b8daa0181044ef65097a1e3517af1f24e7c7343cc5bdaf70be11e3cb0edb51") @@ -62,6 +63,7 @@ class EnvironmentModules(Package): variant("X", default=True, description="Build with X functionality") + depends_on("util-linux", type=("build", "run"), when="@5.5:") depends_on("less", type=("build", "run"), when="@4.1:") with when("@main"): depends_on("autoconf", type="build") @@ -75,7 +77,8 @@ class EnvironmentModules(Package): # Dependencies: depends_on("tcl", type=("build", "link", "run")) depends_on("tcl@8.4:", type=("build", "link", "run"), when="@4.0.0:4.8") - depends_on("tcl@8.5:", type=("build", "link", "run"), when="@5.0.0:") + depends_on("tcl@8.5:8", type=("build", "link", "run"), when="@5.0.0:5.4.0") + depends_on("tcl@8.5:", type=("build", "link", "run"), when="@5.5.0:") def install(self, spec, prefix): tcl = spec["tcl"] @@ -95,6 +98,9 @@ def install(self, spec, prefix): if spec.satisfies("~X"): config_args = ["--without-x"] + config_args + if self.spec.satisfies("@5.5.0:"): + config_args.extend(["--enable-conflict-unload"]) + if self.spec.satisfies("@4.4.0:4.8"): config_args.extend( [ @@ -140,6 +146,9 @@ def install(self, spec, prefix): ] ) + if self.spec.satisfies("@5.5:"): + config_args.append(f"--with-logger={str(self.spec['util-linux'].prefix.bin.logger)}") + if self.spec.satisfies("@4.1:"): config_args.append(f"--with-pager={str(self.spec['less'].prefix.bin.less)}") diff --git a/var/spack/repos/builtin/packages/er/package.py b/var/spack/repos/builtin/packages/er/package.py index 499091390e7c7f..8dc7622d981370 100644 --- a/var/spack/repos/builtin/packages/er/package.py +++ b/var/spack/repos/builtin/packages/er/package.py @@ -19,6 +19,7 @@ class Er(CMakePackage): license("MIT") version("main", branch="main") + version("0.5.0", sha256="dbde4da1fe115b67334085446d413f7365ba94c0a34cb1c38b83944e8fba4d0b") version("0.4.0", sha256="6cb5b6724ddac5c1f5ed6b326a5f3bf5d4eb1c6958a48218e6ca9bb7c02e48a8") version("0.3.0", sha256="01bc71bfb2ebb015ccb948f2bb9138b70972a3e8be0e53f9a4844e46b106a36c") version("0.2.0", sha256="9ddfe2b63682ed0e89685f9b7d5259ef82b802aba55c8ee78cc15a7adbad6bc0") diff --git a/var/spack/repos/builtin/packages/exawind/package.py b/var/spack/repos/builtin/packages/exawind/package.py index 82a8a094060a07..f7c611a918fe34 100644 --- a/var/spack/repos/builtin/packages/exawind/package.py +++ b/var/spack/repos/builtin/packages/exawind/package.py @@ -18,10 +18,12 @@ class Exawind(CMakePackage, CudaPackage, ROCmPackage): license("Apache-2.0") - version("master", branch="main", submodules=True, preferred=True) + version("master", branch="main", submodules=True) + version("1.1.0", tag="v1.1.0", submodules=True) version("1.0.0", tag="v1.0.0", submodules=True) - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("amr_wind_gpu", default=False, description="Enable AMR-Wind on the GPU") variant("nalu_wind_gpu", default=False, description="Enable Nalu-Wind on the GPU") diff --git a/var/spack/repos/builtin/packages/expat/package.py b/var/spack/repos/builtin/packages/expat/package.py index a41d4912de8415..485f773a82db83 100644 --- a/var/spack/repos/builtin/packages/expat/package.py +++ b/var/spack/repos/builtin/packages/expat/package.py @@ -16,9 +16,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.3", sha256="b8baef92f328eebcf731f4d18103951c61fa8c8ec21d5ff4202fb6f2198aeb2d") - # deprecate all releases before 2.6.3 because of security issues + version("2.6.4", sha256="8dc480b796163d4436e6f1352e71800a774f73dbae213f1860b60607d2a83ada") + # deprecate all releases before 2.6.4 because of security issues + # CVE-2024-50602 (fixed in 2.6.4) + version( + "2.6.3", + sha256="b8baef92f328eebcf731f4d18103951c61fa8c8ec21d5ff4202fb6f2198aeb2d", + deprecated=True, + ) # CVE-2024-45490 (fixed in 2.6.3) # CVE-2024-45491 (fixed in 2.6.3) # CVE-2024-45492 (fixed in 2.6.3) diff --git a/var/spack/repos/builtin/packages/extrae/dyninst_instruction.patch b/var/spack/repos/builtin/packages/extrae/dyninst_instruction.patch new file mode 100644 index 00000000000000..08c691c4f74711 --- /dev/null +++ b/var/spack/repos/builtin/packages/extrae/dyninst_instruction.patch @@ -0,0 +1,19 @@ +diff --git a/src/launcher/dyninst/commonSnippets.C b/src/launcher/dyninst/commonSnippets.C +index 94904a23..2f918949 100644 +--- a/src/launcher/dyninst/commonSnippets.C ++++ b/src/launcher/dyninst/commonSnippets.C +@@ -482,9 +482,10 @@ string decodeBasicBlocks(BPatch_function * function, string routine) + ParseAPI::Block* b = ParseAPI::convert(block); + void * buf = b->region()->getPtrToInstruction(b->start()); + InstructionAPI::InstructionDecoder dec((unsigned char*)buf,b->size(),b->region()->getArch()); +- InstructionAPI::Instruction::Ptr insn; +- while((insn = dec.decode())) { +- res <format() << endl; ++ InstructionAPI::Instruction insn = dec.decode(); ++ while(insn.isValid()) { ++ res <. + if self.spec.satisfies("%gcc@14:") and name == "cflags": + flags.extend( + [ + "-Wno-error=incompatible-pointer-types", + "-Wno-error=implicit-function-declaration", + "-Wno-error=int-conversion", + ] + ) + return self.build_system_flags(name, flags) def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/eza/package.py b/var/spack/repos/builtin/packages/eza/package.py index 98e1582ff6ac15..321b4aab22e6bf 100644 --- a/var/spack/repos/builtin/packages/eza/package.py +++ b/var/spack/repos/builtin/packages/eza/package.py @@ -14,6 +14,23 @@ class Eza(CargoPackage): maintainers("trws") - license("MIT") + license("EUPL-1.2", when="@0.20:", checked_by="pranav-sivaraman") + license("MIT", when="@:0.19", checked_by="pranav-sivaraman") + version("0.20.4", sha256="5f25e866521c310d9530b9bbabeb288ad8d9cd208adee79582dde79bdd51c470") version("0.15.3", sha256="09093e565913104acb7a8eba974f8067c95566b6fbedf31138c9923a8cfde42f") + + depends_on("rust@1.70:", when="@0.15.3:") + + @run_after("install") + def install_completions(self): + package_completions_path = f"{self.stage.source_path}/completions" + + mkdirp(bash_completion_path(self.prefix)) + copy(f"{package_completions_path}/bash/eza", bash_completion_path(self.prefix)) + + mkdirp(zsh_completion_path(self.prefix)) + copy(f"{package_completions_path}/zsh/_eza", zsh_completion_path(self.prefix)) + + mkdirp(fish_completion_path(self.prefix)) + copy(f"{package_completions_path}/fish/eza.fish", fish_completion_path(self.prefix)) diff --git a/var/spack/repos/builtin/packages/faiss/package.py b/var/spack/repos/builtin/packages/faiss/package.py index 5af55c95df5103..ceb57a874ec0d3 100644 --- a/var/spack/repos/builtin/packages/faiss/package.py +++ b/var/spack/repos/builtin/packages/faiss/package.py @@ -5,6 +5,7 @@ import os +from spack.build_systems import autotools, cmake, python from spack.package import * @@ -91,7 +92,7 @@ def setup_run_environment(self, env): env.append_path("LD_LIBRARY_PATH", os.path.join(python_platlib, "faiss")) -class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): +class CMakeBuilder(cmake.CMakeBuilder): def cmake_args(self): spec = self.spec args = [ @@ -113,20 +114,19 @@ def install(self, pkg, spec, prefix): super().install(pkg, spec, prefix) if spec.satisfies("+python"): - class CustomPythonPipBuilder(spack.build_systems.python.PythonPipBuilder): + class CustomPythonPipBuilder(python.PythonPipBuilder): def __init__(self, pkg, build_dirname): - spack.build_systems.python.PythonPipBuilder.__init__(self, pkg) + python.PythonPipBuilder.__init__(self, pkg) self.build_dirname = build_dirname @property def build_directory(self): return os.path.join(self.pkg.stage.path, self.build_dirname, "faiss", "python") - customPip = CustomPythonPipBuilder(pkg, self.build_dirname) - customPip.install(pkg, spec, prefix) + CustomPythonPipBuilder(pkg, self.build_dirname).install(pkg, spec, prefix) -class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): +class AutotoolsBuilder(autotools.AutotoolsBuilder): def configure_args(self): args = [] args.extend(self.with_or_without("cuda", activation_value="prefix")) @@ -156,8 +156,7 @@ def install(self, pkg, spec, prefix): if self.spec.satisfies("+python"): with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*python.PythonPipBuilder.std_args(pkg), f"--prefix={prefix}", ".") if "+tests" not in self.spec: return diff --git a/var/spack/repos/builtin/packages/fds/package.py b/var/spack/repos/builtin/packages/fds/package.py index 3143eddde07390..51c983a09dd4fd 100644 --- a/var/spack/repos/builtin/packages/fds/package.py +++ b/var/spack/repos/builtin/packages/fds/package.py @@ -77,7 +77,7 @@ class Fds(MakefilePackage): def edit(self, spec, prefix): env["MKL_ROOT"] = self.spec["mkl"].prefix - if spec.compiler.name == "oneapi": + if spec.satisfies("%oneapi"): env["INTEL_IFORT"] = "ifx" makefile = FileFilter("Build/makefile") makefile.filter(r"\.\./Scripts", "./Scripts") diff --git a/var/spack/repos/builtin/packages/fenics/package.py b/var/spack/repos/builtin/packages/fenics/package.py index ec9d77b5c4ad1a..cec4412ee6579d 100644 --- a/var/spack/repos/builtin/packages/fenics/package.py +++ b/var/spack/repos/builtin/packages/fenics/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * from spack.pkg.builtin.boost import Boost @@ -194,5 +195,4 @@ def setup_run_environment(self, env): def install_python_interface(self): if self.spec.satisfies("+python"): with working_dir("python"): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/flatbuffers/package.py b/var/spack/repos/builtin/packages/flatbuffers/package.py index 38cac7d8e9835c..38ac09ef24babd 100644 --- a/var/spack/repos/builtin/packages/flatbuffers/package.py +++ b/var/spack/repos/builtin/packages/flatbuffers/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -59,8 +60,7 @@ def python_install(self): if self.spec.satisfies("+python"): pydir = join_path(self.stage.source_path, "python") with working_dir(pydir): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") def cmake_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/flux/package.py b/var/spack/repos/builtin/packages/flux/package.py new file mode 100644 index 00000000000000..934f9d56554f20 --- /dev/null +++ b/var/spack/repos/builtin/packages/flux/package.py @@ -0,0 +1,39 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class Flux(CMakePackage): + """A C++20 library for sequence-orientated programming""" + + homepage = "https://tristanbrindle.com/flux/" + url = "https://github.com/tcbrindle/flux/archive/refs/tags/v0.4.0.tar.gz" + + maintainers("pranav-sivaraman") + + license("BSL-1.0", checked_by="pranav-sivaraman") + + version("0.4.0", sha256="95e7d9d71c9ee9e89bb24b46ccba77ddfb0a1580630c2faab0b415dacc7c8d56") + + variant("docs", default=False, description="Build Flux documentation") + + depends_on("cxx", type="build") + depends_on("cmake@3.23:", type="build") + + with default_args(when="+docs"): + depends_on("py-sphinx") + depends_on("py-sphinx-copybutton") + depends_on("py-furo") + + def cmake_args(self): + args = [ + self.define("FLUX_BUILD_TESTS", self.run_tests), + self.define("FLUX_BUILD_EXAMPLES", False), + self.define_from_variant("FLUX_BUILD_DOCS", "docs"), + ] + + return args diff --git a/var/spack/repos/builtin/packages/fmi4cpp/package.py b/var/spack/repos/builtin/packages/fmi4cpp/package.py new file mode 100644 index 00000000000000..837c3e8ef85031 --- /dev/null +++ b/var/spack/repos/builtin/packages/fmi4cpp/package.py @@ -0,0 +1,32 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Fmi4cpp(CMakePackage): + """FMI4cpp is a cross-platform FMI 2.0 implementation written in modern C++. + FMI4cpp supports both Co-simulation and Model Exchange. + """ + + homepage = "https://github.com/NTNU-IHB/FMI4cpp" + url = "https://github.com/NTNU-IHB/FMI4cpp/archive/refs/tags/v0.8.3.tar.gz" + git = "https://github.com/NTNU-IHB/FMI4cpp.git" + + maintainers("prudhomm") + license("MIT", checked_by="prudhomm") + + version("master", branch="master") + version("0.8.3", sha256="f48c630f087bdf8d7a04611f6f30942c870c3c1211a94ef2404c40baa4bcb2c9") + + variant("shared", default=True, description="Build shared library") + + depends_on("cxx", type="build") + depends_on("libzip") + depends_on("pugixml") + + def cmake_args(self): + args = [self.define_from_variant("BUILD_SHARED_LIBS", "shared")] + return args diff --git a/var/spack/repos/builtin/packages/foldseek/package.py b/var/spack/repos/builtin/packages/foldseek/package.py index 018a5cdaf23c26..183785bde239a3 100644 --- a/var/spack/repos/builtin/packages/foldseek/package.py +++ b/var/spack/repos/builtin/packages/foldseek/package.py @@ -14,13 +14,12 @@ class Foldseek(CMakePackage): license("GPL-3.0-only", checked_by="A-N-Other") + version("9-427df8a", sha256="b17d2d85b49a8508f79ffd8b15e54afc5feef5f3fb0276a291141ca5dbbbe8bc") version("8-ef4e960", sha256="c74d02c4924d20275cc567783b56fff10e76ed67f3d642f53c283f67c4180a1e") version("7-04e0ec8", sha256="009d722d600248a680b9e1e9dcb3bf799f8be8de41e80a598b7f39a5ced54191") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("zlib-api") depends_on("bzip2") depends_on("openmpi") depends_on("rust", type="build") + depends_on("rust@1.78.0", when="@:9", type="build") diff --git a/var/spack/repos/builtin/packages/freetype/package.py b/var/spack/repos/builtin/packages/freetype/package.py index 2154009c659505..28784269512674 100644 --- a/var/spack/repos/builtin/packages/freetype/package.py +++ b/var/spack/repos/builtin/packages/freetype/package.py @@ -23,7 +23,14 @@ class Freetype(AutotoolsPackage, CMakePackage): license("FTL OR GPL-2.0-or-later") version("2.13.3", sha256="5c3a8e78f7b24c20b25b54ee575d6daa40007a5f4eea2845861c3409b3021747") - version("2.13.2", sha256="1ac27e16c134a7f2ccea177faba19801131116fd682efc1f5737037c5db224b5") + # Freetype 2.13.3 broke the public interface, so marking 2.13.2 as preferred in spack 0.23 + # Once spack 0.23 has been released, this preference can be removed again. + # https://gitlab.freedesktop.org/freetype/freetype/-/merge_requests/330 + version( + "2.13.2", + sha256="1ac27e16c134a7f2ccea177faba19801131116fd682efc1f5737037c5db224b5", + preferred=True, + ) version("2.13.1", sha256="0b109c59914f25b4411a8de2a506fdd18fa8457eb86eca6c7b15c19110a92fa5") version("2.13.0", sha256="a7aca0e532a276ea8d85bd31149f0a74c33d19c8d287116ef8f5f8357b4f1f80") version("2.12.1", sha256="efe71fd4b8246f1b0b1b9bfca13cfff1c9ad85930340c27df469733bbb620938") diff --git a/var/spack/repos/builtin/packages/fzf/package.py b/var/spack/repos/builtin/packages/fzf/package.py index a3c75798c47fd6..91b838a3fe8222 100644 --- a/var/spack/repos/builtin/packages/fzf/package.py +++ b/var/spack/repos/builtin/packages/fzf/package.py @@ -19,6 +19,7 @@ class Fzf(MakefilePackage): license("MIT") + version("0.56.2", sha256="1d67edb3e3ffbb14fcbf786bfcc0b5b8d87db6a0685135677b8ef4c114d2b864") version("0.55.0", sha256="805383f71bca7f8fb271ecd716852aea88fd898d5027d58add9e43df6ea766da") version("0.54.3", sha256="6413f3916f8058b396820f9078b1336d94c72cbae39c593b1d16b83fcc4fdf74") version("0.53.0", sha256="d45abbfb64f21913c633d46818d9d3eb3d7ebc7e94bd16f45941958aa5480e1d") diff --git a/var/spack/repos/builtin/packages/g2c/package.py b/var/spack/repos/builtin/packages/g2c/package.py index 1ddc6fe37a7313..d4cb7c74a25915 100644 --- a/var/spack/repos/builtin/packages/g2c/package.py +++ b/var/spack/repos/builtin/packages/g2c/package.py @@ -18,6 +18,7 @@ class G2c(CMakePackage): maintainers("AlexanderRichert-NOAA", "Hang-Lei-NOAA", "edwardhartnett") version("develop", branch="develop") + version("2.0.0", sha256="39c23bf1219c60101548c8525e3a879c84119558f768081779d404a8caf4cec9") version("1.9.0", sha256="5554276e18bdcddf387a08c2dd23f9da310c6598905df6a2a244516c22ded9aa") version("1.8.0", sha256="4ce9f5a7cb0950699fe08ebc5a463ab4d09ef550c050391a319308a2494f971f") version("1.7.0", sha256="73afba9da382fed73ed8692d77fa037bb313280879cd4012a5e5697dccf55175") diff --git a/var/spack/repos/builtin/packages/g4abla/package.py b/var/spack/repos/builtin/packages/g4abla/package.py index 710d8de011829c..c36cb6f14845d0 100644 --- a/var/spack/repos/builtin/packages/g4abla/package.py +++ b/var/spack/repos/builtin/packages/g4abla/package.py @@ -24,13 +24,18 @@ class G4abla(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4ABLA{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4ABLA{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4ABLADATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4ABLA.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4ABLA{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4emlow/package.py b/var/spack/repos/builtin/packages/g4emlow/package.py index 87c25b950b6121..458f6da76bf99b 100644 --- a/var/spack/repos/builtin/packages/g4emlow/package.py +++ b/var/spack/repos/builtin/packages/g4emlow/package.py @@ -35,13 +35,18 @@ class G4emlow(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4EMLOW{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4EMLOW{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4LEDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "https://geant4-data.web.cern.ch/geant4-data/datasets/G4EMLOW.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4EMLOW{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4ensdfstate/package.py b/var/spack/repos/builtin/packages/g4ensdfstate/package.py index 59fe04f45deebf..6cb3904756d39d 100644 --- a/var/spack/repos/builtin/packages/g4ensdfstate/package.py +++ b/var/spack/repos/builtin/packages/g4ensdfstate/package.py @@ -25,11 +25,11 @@ class G4ensdfstate(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4ENSDFSTATE{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4ENSDFSTATE{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4ENSDFSTATEDATA", install_path) def url_for_version(self, version): @@ -37,3 +37,8 @@ def url_for_version(self, version): return ( "http://geant4-data.web.cern.ch/geant4-data/datasets/G4ENSDFSTATE.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "G4ENSDFSTATE{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4incl/package.py b/var/spack/repos/builtin/packages/g4incl/package.py index 479ce2dda269d1..056910d71408de 100644 --- a/var/spack/repos/builtin/packages/g4incl/package.py +++ b/var/spack/repos/builtin/packages/g4incl/package.py @@ -25,13 +25,18 @@ class G4incl(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4INCL{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4INCL{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4INCLDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4INCL.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4INCL{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4ndl/package.py b/var/spack/repos/builtin/packages/g4ndl/package.py index a8c8f688985555..fa94da01b307d0 100644 --- a/var/spack/repos/builtin/packages/g4ndl/package.py +++ b/var/spack/repos/builtin/packages/g4ndl/package.py @@ -25,13 +25,18 @@ class G4ndl(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4NDL{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4NDL{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NEUTRONHPDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NDL.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4NDL{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4neutronxs/package.py b/var/spack/repos/builtin/packages/g4neutronxs/package.py index 39f6915346ba04..595d86c71e0cc6 100644 --- a/var/spack/repos/builtin/packages/g4neutronxs/package.py +++ b/var/spack/repos/builtin/packages/g4neutronxs/package.py @@ -24,11 +24,11 @@ class G4neutronxs(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4NEUTRONXS{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4NEUTRONXS{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NEUTRONXSDATA", install_path) def url_for_version(self, version): @@ -36,3 +36,8 @@ def url_for_version(self, version): return ( "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NEUTRONXS.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "G4NEUTRONXS{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4nudexlib/package.py b/var/spack/repos/builtin/packages/g4nudexlib/package.py index 073aebcc7f8fc4..2e02321fe4291f 100644 --- a/var/spack/repos/builtin/packages/g4nudexlib/package.py +++ b/var/spack/repos/builtin/packages/g4nudexlib/package.py @@ -23,13 +23,18 @@ class G4nudexlib(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4NUDEXLIB{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4NUDEXLIB{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4NUDEXLIBDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4NUDEXLIB.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4NUDEXLIB{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4particlexs/package.py b/var/spack/repos/builtin/packages/g4particlexs/package.py index fb86575b466cf1..209831dfa658f4 100644 --- a/var/spack/repos/builtin/packages/g4particlexs/package.py +++ b/var/spack/repos/builtin/packages/g4particlexs/package.py @@ -28,11 +28,11 @@ class G4particlexs(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4PARTICLEXS{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4PARTICLEXS{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PARTICLEXSDATA", install_path) def url_for_version(self, version): @@ -40,3 +40,8 @@ def url_for_version(self, version): return ( "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PARTICLEXS.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "G4PARTICLEXS{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4photonevaporation/package.py b/var/spack/repos/builtin/packages/g4photonevaporation/package.py index 1c847dec3e8eb9..099ded6a5f7044 100644 --- a/var/spack/repos/builtin/packages/g4photonevaporation/package.py +++ b/var/spack/repos/builtin/packages/g4photonevaporation/package.py @@ -27,13 +27,11 @@ class G4photonevaporation(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "PhotonEvaporation{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path( - self.prefix.share, "data", "PhotonEvaporation{0}".format(self.version) - ) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4LEVELGAMMADATA", install_path) def url_for_version(self, version): @@ -42,3 +40,8 @@ def url_for_version(self, version): "http://geant4-data.web.cern.ch/geant4-data/datasets/G4PhotonEvaporation.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "PhotonEvaporation{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4pii/package.py b/var/spack/repos/builtin/packages/g4pii/package.py index a1aa5590bc1a42..c9cf78e5cb095e 100644 --- a/var/spack/repos/builtin/packages/g4pii/package.py +++ b/var/spack/repos/builtin/packages/g4pii/package.py @@ -22,13 +22,18 @@ class G4pii(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4PII{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4PII{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PIIDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "https://geant4-data.web.cern.ch/geant4-data/datasets/G4PII.1.3.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4PII{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py index 69f5681b64996c..33a75291ffa24d 100644 --- a/var/spack/repos/builtin/packages/g4radioactivedecay/package.py +++ b/var/spack/repos/builtin/packages/g4radioactivedecay/package.py @@ -27,13 +27,11 @@ class G4radioactivedecay(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "RadioactiveDecay{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path( - self.prefix.share, "data", "RadioactiveDecay{0}".format(self.version) - ) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4RADIOACTIVEDATA", install_path) def url_for_version(self, version): @@ -42,3 +40,8 @@ def url_for_version(self, version): "http://geant4-data.web.cern.ch/geant4-data/datasets/G4RadioactiveDecay.%s.tar.gz" % version ) + + @property + def g4datasetname(self): + spec = self.spec + return "RadioactiveDecay{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4realsurface/package.py b/var/spack/repos/builtin/packages/g4realsurface/package.py index 28f335bba029c3..1d924943647307 100644 --- a/var/spack/repos/builtin/packages/g4realsurface/package.py +++ b/var/spack/repos/builtin/packages/g4realsurface/package.py @@ -25,11 +25,11 @@ class G4realsurface(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "RealSurface{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "RealSurface{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4REALSURFACEDATA", install_path) def url_for_version(self, version): @@ -39,3 +39,8 @@ def url_for_version(self, version): "G4" if version > Version("1.0") else "", version ) ) + + @property + def g4datasetname(self): + spec = self.spec + return "RealSurface{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4saiddata/package.py b/var/spack/repos/builtin/packages/g4saiddata/package.py index 371811381b0967..b4da3185807f31 100644 --- a/var/spack/repos/builtin/packages/g4saiddata/package.py +++ b/var/spack/repos/builtin/packages/g4saiddata/package.py @@ -23,13 +23,18 @@ class G4saiddata(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4SAIDDATA{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4SAIDDATA{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4SAIDXSDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4SAIDDATA.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4SAIDDATA{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4tendl/package.py b/var/spack/repos/builtin/packages/g4tendl/package.py index 92c12423c27d5a..1a2e9095115c5a 100644 --- a/var/spack/repos/builtin/packages/g4tendl/package.py +++ b/var/spack/repos/builtin/packages/g4tendl/package.py @@ -24,13 +24,18 @@ class G4tendl(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4TENDL{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4TENDL{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4PARTICLEHPDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4TENDL.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4TENDL{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/g4urrpt/package.py b/var/spack/repos/builtin/packages/g4urrpt/package.py index e9ff5df2840c3b..a04e6d5d1addc7 100644 --- a/var/spack/repos/builtin/packages/g4urrpt/package.py +++ b/var/spack/repos/builtin/packages/g4urrpt/package.py @@ -23,13 +23,18 @@ class G4urrpt(Package): def install(self, spec, prefix): mkdirp(join_path(prefix.share, "data")) - install_path = join_path(prefix.share, "data", "G4URRPT{0}".format(self.version)) + install_path = join_path(prefix.share, "data", self.g4datasetname) install_tree(self.stage.source_path, install_path) def setup_dependent_run_environment(self, env, dependent_spec): - install_path = join_path(self.prefix.share, "data", "G4URRPT{0}".format(self.version)) + install_path = join_path(self.prefix.share, "data", self.g4datasetname) env.set("G4URRPTDATA", install_path) def url_for_version(self, version): """Handle version string.""" return "http://geant4-data.web.cern.ch/geant4-data/datasets/G4URRPT.%s.tar.gz" % version + + @property + def g4datasetname(self): + spec = self.spec + return "G4URRPT{0}".format(spec.version) diff --git a/var/spack/repos/builtin/packages/gaudi/package.py b/var/spack/repos/builtin/packages/gaudi/package.py index 92dc3985fde149..b580eeec77c471 100644 --- a/var/spack/repos/builtin/packages/gaudi/package.py +++ b/var/spack/repos/builtin/packages/gaudi/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import sys + from spack.package import * @@ -124,7 +126,8 @@ class Gaudi(CMakePackage): depends_on("cppunit", when="+cppunit") depends_on("doxygen +graphviz", when="+docs") depends_on("gperftools", when="+gperftools") - depends_on("gdb") + # gdb is optional, but useful to have as gaudi adds hooks for it if present during build + depends_on("gdb", when=sys.platform != "darwin") depends_on("heppdt", when="+heppdt") depends_on("jemalloc", when="+jemalloc") depends_on("libunwind", when="+unwind") diff --git a/var/spack/repos/builtin/packages/gcc/detection_test.yaml b/var/spack/repos/builtin/packages/gcc/detection_test.yaml index c0195bb8ca1b7b..67b5bc1e129e0f 100644 --- a/var/spack/repos/builtin/packages/gcc/detection_test.yaml +++ b/var/spack/repos/builtin/packages/gcc/detection_test.yaml @@ -26,7 +26,7 @@ paths: extra_attributes: compilers: c: ".*/bin/gcc" - cxx: ".*/bin/g++" + cxx: ".*/bin/g\\+\\+" # Mock a version < 7 of GCC that requires -dumpversion and # errors with -dumpfullversion diff --git a/var/spack/repos/builtin/packages/gcta/package.py b/var/spack/repos/builtin/packages/gcta/package.py index d3a2e218e181f4..6fc6d60ff7e4dd 100644 --- a/var/spack/repos/builtin/packages/gcta/package.py +++ b/var/spack/repos/builtin/packages/gcta/package.py @@ -21,13 +21,13 @@ class Gcta(CMakePackage): version("1.94.0beta", commit="746e3975ddb463fc7bd15b03c6cc64b023eca497", submodules=True) version("1.91.2", sha256="0609d0fba856599a2acc66adefe87725304117acc226360ec2aabf8a0ac64e85") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") conflicts("target=aarch64:", when="@:1.91.2", msg="aarch64 support added in 1.94.0") depends_on("cmake@3.1:", type="build") - depends_on("intel-mkl@2017:", when="target=x86_64:") + depends_on("intel-oneapi-mkl", when="target=x86_64:") depends_on("openblas", when="target=aarch64:") depends_on("eigen@3.3.1", when="@1.91.2") depends_on("eigen@3.3.7:", when="@1.94.0beta:") @@ -50,6 +50,12 @@ def patch(self): for s in strings: filter_file(s, "", "CMakeLists.txt", string=True) + def flag_handler(self, name, flags): + # To compile with newer compilers like gcc-13, gcta needs to include : + if name == "cxxflags": + flags.extend(["-include", "cstdint"]) + return (flags, None, None) + def cmake_args(self): eigen = self.spec["eigen"].prefix.include args = [self.define("EIGEN3_INCLUDE_DIR", eigen)] @@ -60,7 +66,7 @@ def cmake_args(self): args.extend(deps) if self.spec.satisfies("target=x86_64:"): - mkl = self.spec["intel-mkl"].prefix + mkl = self.spec["intel-oneapi-mkl"].prefix.mkl.latest args.append(self.define("MKLROOT", mkl)) elif self.spec.satisfies("target=aarch64:"): openblas = self.spec["openblas"].prefix diff --git a/var/spack/repos/builtin/packages/gdal/package.py b/var/spack/repos/builtin/packages/gdal/package.py index 1253219e8bf091..67e8e209875e7a 100644 --- a/var/spack/repos/builtin/packages/gdal/package.py +++ b/var/spack/repos/builtin/packages/gdal/package.py @@ -28,10 +28,10 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): list_url = "https://download.osgeo.org/gdal/" list_depth = 1 - maintainers("adamjstewart") - license("MIT") + maintainers("adamjstewart") + version("3.10.0", sha256="af821a3bcf68cf085724c21c9b53605fd451d83af3c8854d8bf194638eb734a8") version("3.9.3", sha256="34a037852ffe6d2163f1b8948a1aa7019ff767148aea55876c1339b22ad751f1") version("3.9.2", sha256="bfbcc9f087f012c36151c20c79f8eac9529e1e5298fbded79cd5a1365f0b113a") version("3.9.1", sha256="aff3086fee75f5773e33a5598df98d8a4d10be411f777d3ce23584b21d8171ca") @@ -115,6 +115,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): variant( "arrow", default=False, when="build_system=cmake", description="Required for Arrow driver" ) + variant("avif", default=False, when="@3.10:", description="Required for AVIF driver") variant( "basisu", default=False, when="@3.6:", description="Required for BASISU and KTX2 drivers" ) @@ -197,6 +198,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): "opencad", default=False, when="build_system=cmake", description="Required for CAD driver" ) variant("opencl", default=False, description="Required to accelerate warping computations") + variant("opendrive", default=False, when="@3.10:", description="Required for XODR driver") variant("openexr", default=False, when="@3.1:", description="Required for EXR driver") variant("openjpeg", default=False, description="Required for JP2OpenJPEG driver") variant("openssl", default=False, when="@2.3:", description="Required for EEDAI driver") @@ -289,6 +291,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): depends_on("blas", when="+armadillo") depends_on("lapack", when="+armadillo") depends_on("arrow", when="+arrow") + depends_on("libavif", when="+avif") # depends_on("basis-universal", when="+basisu") depends_on("c-blosc", when="+blosc") depends_on("brunsli", when="+brunsli") @@ -354,6 +357,7 @@ class Gdal(CMakePackage, AutotoolsPackage, PythonExtension): # depends_on('ogdi', when='+ogdi') # depends_on('lib-opencad', when='+opencad') depends_on("opencl", when="+opencl") + # depends_on("libopendrive@0.6:", when="+opendrive") depends_on("openexr@2.2:", when="+openexr") depends_on("openjpeg@2.3.1:", when="@3.9:+openjpeg") depends_on("openjpeg", when="+openjpeg") @@ -549,6 +553,7 @@ def cmake_args(self): self.define_from_variant("GDAL_USE_ARCHIVE", "archive"), self.define_from_variant("GDAL_USE_ARMADILLO", "armadillo"), self.define_from_variant("GDAL_USE_ARROW", "arrow"), + self.define_from_variant("GDAL_USE_AVIF", "avif"), self.define_from_variant("GDAL_USE_BASISU", "basisu"), self.define_from_variant("GDAL_USE_BLOSC", "blosc"), self.define_from_variant("GDAL_USE_BRUNSLI", "brunsli"), @@ -595,6 +600,7 @@ def cmake_args(self): self.define_from_variant("GDAL_USE_OGDI", "ogdi"), self.define_from_variant("GDAL_USE_OPENCAD", "opencad"), self.define_from_variant("GDAL_USE_OPENCL", "opencl"), + self.define_from_variant("GDAL_USE_OPENDRIVE", "opendrive"), self.define_from_variant("GDAL_USE_OPENEXR", "openexr"), self.define_from_variant("GDAL_USE_OPENJPEG", "openjpeg"), self.define_from_variant("GDAL_USE_OPENSSL", "openssl"), diff --git a/var/spack/repos/builtin/packages/gdb/package.py b/var/spack/repos/builtin/packages/gdb/package.py index 4b500ed36af40e..4d0f7d0ccfc1fd 100644 --- a/var/spack/repos/builtin/packages/gdb/package.py +++ b/var/spack/repos/builtin/packages/gdb/package.py @@ -21,6 +21,7 @@ class Gdb(AutotoolsPackage, GNUMirrorPackage): license("GPL-3.0-or-later AND LGPL-3.0-or-later") + version("15.2", sha256="9d16bc2539a2a20dc3ef99b48b8414d51c51305c8577eb7a1da00996f6dea223") version("14.2", sha256="2de5174762e959a5e529e20c20d88a04735469d8fffd98f61664e70b341dc47c") version("14.1", sha256="683e63182fb72bd5d8db32ab388143796370a8e3e71c26bc264effb487db7927") version("13.2", sha256="7ead13d9e19fa0c57bb19104e1a5f67eefa9fc79f2e6360de491e8fddeda1e30") diff --git a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py index 707d5978e218cf..7c0c74201bea58 100644 --- a/var/spack/repos/builtin/packages/gdk-pixbuf/package.py +++ b/var/spack/repos/builtin/packages/gdk-pixbuf/package.py @@ -6,12 +6,10 @@ from spack.package import * -class GdkPixbuf(Package): - """The Gdk Pixbuf is a toolkit for image loading and pixel buffer - manipulation. It is used by GTK+ 2 and GTK+ 3 to load and - manipulate images. In the past it was distributed as part of - GTK+ 2 but it was split off into a separate package in - preparation for the change to GTK+ 3.""" +class GdkPixbuf(MesonPackage): + """The Gdk Pixbuf is a toolkit for image loading and pixel buffer manipulation. It is used by + GTK+ 2 and GTK+ 3 to load and manipulate images. In the past it was distributed as part of + GTK+ 2 but it was split off into a separate package in preparation for the change to GTK+ 3.""" homepage = "https://gitlab.gnome.org/GNOME/gdk-pixbuf" url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/2.40/gdk-pixbuf-2.40.0.tar.xz" @@ -43,44 +41,20 @@ class GdkPixbuf(Package): sha256="83c66a1cfd591d7680c144d2922c5955d38b4db336d7cd3ee109f7bcf9afef15", deprecated=True, ) - # https://nvd.nist.gov/vuln/detail/CVE-2021-20240 - version( - "2.40.0", - sha256="1582595099537ca8ff3b99c6804350b4c058bb8ad67411bbaae024ee7cead4e6", - deprecated=True, - ) - version( - "2.38.2", - sha256="73fa651ec0d89d73dd3070b129ce2203a66171dfc0bd2caa3570a9c93d2d0781", - deprecated=True, - ) - version( - "2.38.0", - sha256="dd50973c7757bcde15de6bcd3a6d462a445efd552604ae6435a0532fbbadae47", - deprecated=True, - ) - version( - "2.31.2", - sha256="9e467ed09894c802499fb2399cd9a89ed21c81700ce8f27f970a833efb1e47aa", - deprecated=True, - ) depends_on("c", type="build") - variant("x11", default=False, description="Enable X11 support", when="@:2.41") variant("tiff", default=False, description="Enable TIFF support(partially broken)") # Man page creation was getting docbook errors, see issue #18853 variant("man", default=False, description="Enable man page creation") - depends_on("meson@0.55.3:", type="build", when="@2.42.2:") - depends_on("meson@0.46.0:", type="build", when="@2.37.92:") - depends_on("meson@0.45.0:", type="build", when="@2.37.0:") - depends_on("ninja", type="build", when="@2.37.0:") - depends_on("shared-mime-info", when="@2.36.8: platform=linux") - depends_on("pkgconfig", type="build") - # Building the man pages requires libxslt and the Docbook stylesheets - depends_on("libxslt", type="build", when="+man") - depends_on("docbook-xsl@1.79.2:", type="build", when="+man") + with default_args(type="build"): + depends_on("meson@0.55.3:") + depends_on("pkgconfig") + depends_on("libxslt", when="+man") + depends_on("docbook-xsl@1.79.2:", when="+man") + + depends_on("shared-mime-info", when="platform=linux") depends_on("gettext") depends_on("glib@2.38.0:") depends_on("jpeg") @@ -88,68 +62,28 @@ class GdkPixbuf(Package): depends_on("zlib-api") depends_on("libtiff", when="+tiff") depends_on("gobject-introspection") - depends_on("libx11", when="+x11") - # Replace the docbook stylesheet URL with the one that our - # docbook-xsl package uses/recognizes. - # Pach modifies meson build files, so it only applies to versions that - # depend on meson. - patch("docbook-cdn.patch", when="@2.37.0:+man") + # Replace the docbook stylesheet URL with the one that our docbook-xsl package uses/recognizes. + patch("docbook-cdn.patch", when="+man") def url_for_version(self, version): url = "https://ftp.acc.umu.se/pub/gnome/sources/gdk-pixbuf/{0}/gdk-pixbuf-{1}.tar.xz" return url.format(version.up_to(2), version) def setup_run_environment(self, env): - env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - - def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def setup_dependent_run_environment(self, env, dependent_spec): + def setup_dependent_build_environment(self, env, dependent_spec): env.prepend_path("XDG_DATA_DIRS", self.prefix.share) env.prepend_path("GI_TYPELIB_PATH", join_path(self.prefix.lib, "girepository-1.0")) - def install(self, spec, prefix): - with working_dir("spack-build", create=True): - meson_args = std_meson_args + ["-Dman={0}".format("+man" in spec)] - # Only build tests when requested - if self.version >= Version("2.42.9"): - meson_args += ["-Dtests={0}".format(self.run_tests)] - # Based on suggestion by luigi-calori and the fixup shown by lee218llnl: - # https://github.com/spack/spack/pull/27254#issuecomment-974464174 - if spec.satisfies("+x11"): - if self.version >= Version("2.42"): - raise InstallError("+x11 is not valid for {0}".format(self.version)) - meson_args += ["-Dx11=true"] - meson("..", *meson_args) - ninja("-v") - if self.run_tests: - ninja("test") - ninja("install") - - def configure_args(self): - args = [] - # disable building of gtk-doc files following #9771 - args.append("--disable-gtk-doc-html") - true = which("true") - args.append("GTKDOC_CHECK={0}".format(true)) - args.append("GTKDOC_CHECK_PATH={0}".format(true)) - args.append("GTKDOC_MKPDF={0}".format(true)) - args.append("GTKDOC_REBASE={0}".format(true)) + def meson_args(self): + args = [f"-Dman={'true' if self.spec.satisfies('+man') else 'false'}"] + if self.spec.satisfies("@2.42.9:"): + args.append(f"-Dtests={'true' if self.run_tests else 'false'}") return args - @when("@:2.36") - def install(self, spec, prefix): - configure("--prefix={0}".format(prefix), *self.configure_args()) - make() - if self.run_tests: - make("check") - make("install") - if self.run_tests: - make("installcheck") - def setup_build_environment(self, env): # The "post-install.sh" script uses gdk-pixbuf-query-loaders, # which was installed earlier. diff --git a/var/spack/repos/builtin/packages/geant4-data/package.py b/var/spack/repos/builtin/packages/geant4-data/package.py index 201d2e8d88f79a..3b934da3922bcb 100644 --- a/var/spack/repos/builtin/packages/geant4-data/package.py +++ b/var/spack/repos/builtin/packages/geant4-data/package.py @@ -3,7 +3,6 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) -import glob import os from spack.package import * @@ -204,5 +203,11 @@ def datadir(self): def install(self, spec, prefix): with working_dir(self.datadir, create=True): for s in spec.dependencies(): - for d in glob.glob("{0}/data/*".format(s.prefix.share)): - os.symlink(d, os.path.basename(d)) + if not s.name.startswith("g4"): + continue + + if not hasattr(s.package, "g4datasetname"): + raise InstallError(f"Dependency `{s.name}` does not expose `g4datasetname`") + + d = "{0}/data/{1}".format(s.prefix.share, s.package.g4datasetname) + os.symlink(d, os.path.basename(d)) diff --git a/var/spack/repos/builtin/packages/geant4/cpp20.patch b/var/spack/repos/builtin/packages/geant4/cpp20.patch new file mode 100644 index 00000000000000..ed0c716e3a5852 --- /dev/null +++ b/var/spack/repos/builtin/packages/geant4/cpp20.patch @@ -0,0 +1,30 @@ +--- geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITMultiNavigator.hh 2023-05-24 13:43:47.960214329 -0500 ++++ geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITMultiNavigator.hh 2023-05-24 14:13:50.595633742 -0500 +@@ -82,11 +82,11 @@ + class G4TrackState : public G4TrackState + { + public: +- ~G4TrackState() ++ ~G4TrackState() + { + } + +- G4TrackState() ++ G4TrackState() + { + G4ThreeVector Big3Vector(kInfinity, kInfinity, kInfinity); + fLastLocatedPosition = Big3Vector; +--- geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITPathFinder.hh 2023-05-24 14:42:58.550496706 -0500 ++++ geant4.10.07.p04/source/processes/electromagnetic/dna/management/include/G4ITPathFinder.hh 2023-05-24 14:43:17.886350945 -0500 +@@ -116,9 +116,9 @@ + G4int fLastStepNo, fCurrentStepNo; + + public: +- virtual ~G4TrackState(){} ++ virtual ~G4TrackState(){} + +- G4TrackState() : ++ G4TrackState() : + G4TrackStateBase(), + fEndState( G4ThreeVector(), G4ThreeVector(), 0., 0., 0., 0., 0.), + fFieldExertedForce(false), diff --git a/var/spack/repos/builtin/packages/geant4/package.py b/var/spack/repos/builtin/packages/geant4/package.py index a606c9c7e1cdcc..07ec0c09c3857c 100644 --- a/var/spack/repos/builtin/packages/geant4/package.py +++ b/var/spack/repos/builtin/packages/geant4/package.py @@ -4,7 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) from spack.package import * -from spack.variant import _ConditionalVariantValues +from spack.variant import ConditionalVariantValues class Geant4(CMakePackage): @@ -84,6 +84,40 @@ class Geant4(CMakePackage): variant("timemory", default=False, description="Use TiMemory for profiling", when="@9.5:") variant("vtk", default=False, description="Enable VTK support", when="@11:") + # For most users, obtaining the Geant4 data via Spack will be useful; the + # sticky, default-enabled `+data` variant ensures that this happens. + # Furthermore, if this variant is enabled, Spack will automatically set the + # necessary environment variables to ensure that the Geant4 code runs + # correctly. + # + # However, the Geant4 data is also large and it is, on many machines used + # in HEP, already available via e.g. CVMFS. In these cases, users can save + # network bandwidth by using externally supplied Geant4 data. This can be + # done in two different ways. + # + # The first is to declare the Geant4 data directories as externals. This + # can be done by manually adding them to the `packages.yaml` file, e.g.: + # + # ``` + # g4radioactivedecay: + # externals: + # - spec: g4radioactivedecay@5.6 + # prefix: + # buildable: False + # ``` + # + # Where is a path such that /share/data/ + # exists. + # + # Alternatively, the `~data` variant can be supplied; in this case, Spack + # will not attempt to use the `geant4-data` spec at all. It is then + # essential to set up the `GEANT4_DATA_DIR` environment variable manually + # at runtime; see the Geant4 installation guide for more information: + # https://geant4-userdoc.web.cern.ch/UsersGuides/InstallationGuide/html/postinstall.html + variant( + "data", default=True, sticky=True, description="Enable downloading of the data directory" + ) + depends_on("cmake@3.16:", type="build", when="@11.0.0:") depends_on("cmake@3.8:", type="build", when="@10.6.0:") depends_on("cmake@3.5:", type="build") @@ -109,7 +143,7 @@ class Geant4(CMakePackage): "11.2.2:11.2", "11.3:", ]: - depends_on("geant4-data@" + _vers, type="run", when="@" + _vers) + depends_on("geant4-data@" + _vers, type="run", when="+data @" + _vers) depends_on("expat") depends_on("zlib-api") @@ -146,7 +180,7 @@ class Geant4(CMakePackage): def std_when(values): for v in values: - if isinstance(v, _ConditionalVariantValues): + if isinstance(v, ConditionalVariantValues): for c in v: yield (c.value, c.when) else: @@ -192,6 +226,8 @@ def std_when(values): patch("cxx17_geant4_10_0.patch", level=1, when="@10.4.0 cxxstd=17") patch("geant4-10.4.3-cxx17-removed-features.patch", level=1, when="@10.4.3 cxxstd=17") + patch("cpp20.patch", when="@10.7 cxxstd=20") # from Fermi buildshims + # See https://bugzilla-geant4.kek.jp/show_bug.cgi?id=2556 patch("package-cache.patch", level=1, when="@10.7.0:11.1.2^cmake@3.17:") @@ -251,6 +287,8 @@ def _add_variant(feature, variant): def flag_handler(self, name, flags): spec = self.spec if name == "cxxflags": + if spec.satisfies("%gcc"): + flags.append("-fpermissive") if spec.satisfies("%nvhpc"): # error: excessive recursion at instantiation of class # "G4Number<191>" (G4CTCounter.hh) @@ -301,7 +339,8 @@ def cmake_args(self): # geant4-data's install directory to correctly set up the # Geant4Config.cmake values for Geant4_DATASETS . options.append(self.define("GEANT4_INSTALL_DATA", False)) - options.append(self.define("GEANT4_INSTALL_DATADIR", self.datadir)) + if spec.satisfies("+data"): + options.append(self.define("GEANT4_INSTALL_DATADIR", self.datadir)) # Vecgeom if spec.satisfies("+vecgeom"): diff --git a/var/spack/repos/builtin/packages/gem5/package.py b/var/spack/repos/builtin/packages/gem5/package.py new file mode 100644 index 00000000000000..f18a478c3b7e00 --- /dev/null +++ b/var/spack/repos/builtin/packages/gem5/package.py @@ -0,0 +1,70 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class Gem5(SConsPackage): + """The gem5 simulator is a modular platform for computer-system + architecture research, encompassing system-level architecture as + well as processor microarchitecture. gem5 is a community led + project with an open governance model. gem5 was originally + conceived for computer architecture research in academia, but it + has grown to be used in computer system design by academia, + industry for research, and in teaching.""" + + homepage = "https://www.gem5.org" + git = "https://github.com/gem5/gem5" + url = "https://github.com/gem5/gem5/archive/refs/tags/v24.0.0.0.tar.gz" + + version("24.0.0.1", tag="v24.0.0.1", commit="b1a44b89c7bae73fae2dc547bc1f871452075b85") + version("24.0.0.0", tag="v24.0.0.0", commit="43769abaf05120fed1e4e0cfbb34619edbc10f3f") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("scons", type="build") + depends_on("py-mypy", type="build") + depends_on("py-pybind11", type="build") + depends_on("python") + depends_on("gettext") + depends_on("hdf5+cxx") + depends_on("protobuf") + depends_on("gperftools") + depends_on("graphviz+pangocairo", type=("build", "run")) + depends_on("py-pydot", type=("build", "run")) + depends_on("capstone") + + def patch(self): + filter_file( + " Environment(tools=[", + " Environment(ENV=os.environ, tools=[", + "SConstruct", + string=True, + ) + filter_file( + """conf.env['CONF']['HAVE_PERF_ATTR_EXCLUDE_HOST'] = conf.CheckMember(""", + """conf.env['CONF']['HAVE_PERF_ATTR_EXCLUDE_HOST'] = bool(conf.CheckMember(""", + "src/cpu/kvm/SConsopts", + string=True, + ) + filter_file( + """perf_event_attr', 'exclude_host')""", + """perf_event_attr', 'exclude_host'))""", + "src/cpu/kvm/SConsopts", + string=True, + ) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install("build/ALL/gem5.opt", prefix.bin) + + def build_args(self, spec, prefix): + args = [] + args.append("build/ALL/gem5.opt") + args.append(f"-j{spack.config.determine_number_of_jobs(parallel=True)}") + args.append("--ignore-style") + + return args diff --git a/var/spack/repos/builtin/packages/geode/package.py b/var/spack/repos/builtin/packages/geode/package.py index 51e828435624ec..bc1cb40498cd71 100644 --- a/var/spack/repos/builtin/packages/geode/package.py +++ b/var/spack/repos/builtin/packages/geode/package.py @@ -15,14 +15,21 @@ class Geode(Package): homepage = "https://geode.apache.org/" url = "https://archive.apache.org/dist/geode/1.9.2/apache-geode-1.9.2.tgz" + list_url = "https://archive.apache.org/dist/geode/" + list_depth = 1 license("Apache-2.0") - version("1.9.2", sha256="4b8118114ef43166f6bf73af56b93aadbf9108fcab06d1fbbb8e27f7d559d7e0") - version("1.9.0", sha256="8794808ebc89bc855f0b989b32e91e890d446cfd058e123f6ccb9e12597c1c4f") - version("1.8.0", sha256="58edc41edac4eabd899322b73a24727eac41f6253274c2ce7d0a82227121ae3e") - version("1.7.0", sha256="91eec04420f46e949d32104479c4a4b5b34a4e5570dca7b98ca067a30d5a783d") - version("1.6.0", sha256="79e8d81d058b1c4edd5fb414ff30ac530f7913b978f5abc899c353fcb06e5ef3") + version("1.15.1", sha256="2668970982d373ef42cff5076e7073b03e82c8e2fcd7757d5799b2506e265d57") + version("1.14.3", sha256="5efb1c71db34ba3b7ce1004579f8b9b7a43eae30f42c37837d5abd68c6d778bd") + version("1.13.8", sha256="b5fc105ce0a16aaf7ba341668e022d458b18d6d2c44705a8c79c42077c6d8229") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-37021 + version("1.9.2", sha256="4b8118114ef43166f6bf73af56b93aadbf9108fcab06d1fbbb8e27f7d559d7e0") + version("1.9.0", sha256="8794808ebc89bc855f0b989b32e91e890d446cfd058e123f6ccb9e12597c1c4f") + version("1.8.0", sha256="58edc41edac4eabd899322b73a24727eac41f6253274c2ce7d0a82227121ae3e") + version("1.7.0", sha256="91eec04420f46e949d32104479c4a4b5b34a4e5570dca7b98ca067a30d5a783d") + version("1.6.0", sha256="79e8d81d058b1c4edd5fb414ff30ac530f7913b978f5abc899c353fcb06e5ef3") depends_on("java", type="run") diff --git a/var/spack/repos/builtin/packages/geomodel/package.py b/var/spack/repos/builtin/packages/geomodel/package.py index 9d5978f7120e99..68d561a015a373 100644 --- a/var/spack/repos/builtin/packages/geomodel/package.py +++ b/var/spack/repos/builtin/packages/geomodel/package.py @@ -18,7 +18,7 @@ class Geomodel(CMakePackage): license("Apache-2.0", checked_by="wdconinc") - version("7.0.0", sha256="9ad86e9f3e2d67b9056b70550d347db8017f4d5acf829804afc61e4fe7b6a527") + version("6.6.0", sha256="3cefeaa409177d45d3fa63e069b6496ca062991b0d7d71275b1748487659e91b") version("6.5.0", sha256="8a2f71493e54ea4d393f4c0075f3ca13df132f172c891825f3ab949cda052c5f") version("6.4.0", sha256="369f91f021be83d294ba6a9bdbe00077625e9fe798a396aceece8970e7dd5838") version("6.3.0", sha256="d2b101e06d20a8a3b638e6021f517a939f49ea6d8347ce40c927c27efe66b28c") @@ -54,6 +54,14 @@ class Geomodel(CMakePackage): when="+fullsimlight", ) + variant( + "cxxstd", + default="17", + values=("17", "20", "23"), + multi=False, + description="Use the specified C++ standard when building", + ) + conflicts("+fullsimlight", when="+fsl", msg="FSL triggers the build of the FullSimLight") depends_on("cmake@3.16:", type="build") @@ -80,5 +88,6 @@ def cmake_args(self): self.define_from_variant("GEOMODEL_BUILD_FSL", "fsl"), self.define_from_variant("GEOMODEL_BUILD_EXAMPLES", "examples"), self.define_from_variant("GEOMODEL_BUILD_TOOLS", "tools"), + self.define_from_variant("CMAKE_CXX_STANDARD", "cxxstd"), ] return args diff --git a/var/spack/repos/builtin/packages/git/package.py b/var/spack/repos/builtin/packages/git/package.py index da8c14c6ad170a..713fd0abf8de8c 100644 --- a/var/spack/repos/builtin/packages/git/package.py +++ b/var/spack/repos/builtin/packages/git/package.py @@ -29,6 +29,8 @@ 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") @@ -99,6 +101,8 @@ class Git(AutotoolsPackage): depends_on("c", type="build") # generated for _version, _sha256_manpage in { + "2.47.0": "1a6f1e775dfe324a9b521793cbd2b3bba546442cc2ac2106d4df33dea9005038", + "2.46.2": "4bc3774ee4597098977befa4ec30b0f2cbed3b59b756e7cbb59ce1738682d43a", "2.45.2": "48c1e2e3ecbb2ce9faa020a19fcdbc6ce64ea25692111b5930686bc0bb4f0e7f", "2.45.1": "d9098fd93a3c0ef242814fc856a99886ce31dae2ba457afc416ba4e92af8f8f5", "2.44.2": "ee6a7238d5ede18fe21c0cc2131c7fbff1f871c25e2848892ee864d40baf7218", diff --git a/var/spack/repos/builtin/packages/glab/package.py b/var/spack/repos/builtin/packages/glab/package.py index 58ed827e1fd112..ed4eead79820c5 100644 --- a/var/spack/repos/builtin/packages/glab/package.py +++ b/var/spack/repos/builtin/packages/glab/package.py @@ -16,6 +16,7 @@ class Glab(GoPackage): license("MIT") + version("1.48.0", sha256="45410de23a7bad37feeae18f47f3c0113d81133ad9bb97c8f0b8afc5409272c7") version("1.46.1", sha256="935f732ddacc6e54fc83d06351fc25454ac8a58c465c3efa43e066ea226257c2") version("1.36.0", sha256="8d6c759ebfe9c6942fcdb7055a4a5c7209a3b22beb25947f906c9aef3bc067e8") version("1.35.0", sha256="7ed31c7a9b425fc15922f83c5dd8634a2758262a4f25f92583378655fcad6303") @@ -40,6 +41,7 @@ class Glab(GoPackage): depends_on("go@1.22.4:", type="build", when="@1.42:") depends_on("go@1.22.5:", type="build", when="@1.44:") depends_on("go@1.23:", type="build", when="@1.46:") + depends_on("go@1.23.2:", type="build", when="@1.48:") build_directory = "cmd/glab" diff --git a/var/spack/repos/builtin/packages/gnuconfig/package.py b/var/spack/repos/builtin/packages/gnuconfig/package.py index a0420c6a4ab4e2..d999b073b909cf 100644 --- a/var/spack/repos/builtin/packages/gnuconfig/package.py +++ b/var/spack/repos/builtin/packages/gnuconfig/package.py @@ -21,6 +21,9 @@ class Gnuconfig(Package): maintainers("haampie") version("master", branch="master") + version( + "2024-07-27", sha256="1135044961853c7f116145cee9bb15c3d29b1b081cf8293954efd0f05d801a7c" + ) version( "2022-09-17", sha256="95306801ad7086e6a6e13397cb859183d8b7adbba2e372ce0819bad5fcb919b7" ) diff --git a/var/spack/repos/builtin/packages/go/package.py b/var/spack/repos/builtin/packages/go/package.py index bb073dccd12a12..0a7dffb912d6a5 100644 --- a/var/spack/repos/builtin/packages/go/package.py +++ b/var/spack/repos/builtin/packages/go/package.py @@ -41,7 +41,10 @@ class Go(Package): license("BSD-3-Clause") + version("1.23.2", sha256="36930162a93df417d90bd22c6e14daff4705baac2b02418edda671cdfa9cd07f") version("1.23.1", sha256="6ee44e298379d146a5e5aa6b1c5b5d5f5d0a3365eabdd70741e6e21340ec3b0d") + version("1.22.8", sha256="df12c23ebf19dea0f4bf46a22cbeda4a3eca6f474f318390ce774974278440b8") + version("1.22.7", sha256="66432d87d85e0cfac3edffe637d5930fc4ddf5793313fe11e4a0f333023c879f") version("1.22.6", sha256="9e48d99d519882579917d8189c17e98c373ce25abaebb98772e2927088992a51") version("1.22.4", sha256="fed720678e728a7ca30ba8d1ded1caafe27d16028fab0232b8ba8e22008fb784") diff --git a/var/spack/repos/builtin/packages/goimports/package.py b/var/spack/repos/builtin/packages/goimports/package.py new file mode 100644 index 00000000000000..2c799cfde53ddc --- /dev/null +++ b/var/spack/repos/builtin/packages/goimports/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Goimports(GoPackage): + """Updates your Go import lines, adding missing ones and removing unreferenced ones.""" + + homepage = "https://golang.org/x/tools/cmd/goimports" + url = "https://github.com/golang/tools/archive/refs/tags/v0.25.0.tar.gz" + + maintainers("alecbcs") + + license("BSD-3-Clause", checked_by="alecbcs") + + version("0.25.0", sha256="c536188f5db744371f526f3059960945ed580b3ee60553a4f01956251ab36d20") + + build_directory = "cmd/goimports" diff --git a/var/spack/repos/builtin/packages/google-cloud-cpp/package.py b/var/spack/repos/builtin/packages/google-cloud-cpp/package.py index 7a477505cc94ca..e66aedae3f67b1 100644 --- a/var/spack/repos/builtin/packages/google-cloud-cpp/package.py +++ b/var/spack/repos/builtin/packages/google-cloud-cpp/package.py @@ -18,6 +18,8 @@ class GoogleCloudCpp(CMakePackage): sanity_check_is_dir = ["lib", "include"] + version("2.30.0", sha256="170650b11ece54977b42dd85be648b6bd2d614ff68ea6863a0013865e576b49c") + version("2.29.0", sha256="758e1eca8186b962516c0659b34ce1768ba1c9769cfd998c5bbffb084ad901ff") version("2.28.0", sha256="1d51910cb4419f6100d8b9df6bccd33477d09f50e378f12b06dae0f137ed7bc6") depends_on("abseil-cpp") @@ -30,11 +32,17 @@ class GoogleCloudCpp(CMakePackage): variant("shared", default=False, description="Build shared instead of static libraries") variant( "cxxstd", - default="11", - values=("11", "14", "17", "20"), + default="14", + values=("14", "17", "20"), multi=False, description="Use the specified C++ standard when building.", ) + variant( + "libraries", + default="__ga_libraries__", + multi=False, + description="Which client libraries to build/install. e.g. libraries=bigtable,storage", + ) def cmake_args(self): args = [ @@ -43,6 +51,6 @@ def cmake_args(self): "-DBUILD_TESTING:Bool=OFF", "-DGOOGLE_CLOUD_CPP_WITH_MOCKS:Bool=OFF", "-DGOOGLE_CLOUD_CPP_ENABLE_EXAMPLES:Bool=OFF", - "-DGOOGLE_CLOUD_CPP_ENABLE:String=__ga_libraries__", + self.define_from_variant("GOOGLE_CLOUD_CPP_ENABLE", "libraries"), ] return args diff --git a/var/spack/repos/builtin/packages/gopls/package.py b/var/spack/repos/builtin/packages/gopls/package.py new file mode 100644 index 00000000000000..ba4959d9d9767c --- /dev/null +++ b/var/spack/repos/builtin/packages/gopls/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Gopls(GoPackage): + """The official Go language server developed by the Go team.""" + + homepage = "https://golang.org/x/tools/gopls" + url = "https://github.com/golang/tools/archive/refs/tags/gopls/v0.16.2.tar.gz" + + maintainers("alecbcs") + + license("BSD-3-Clause", checked_by="alecbcs") + + version("0.16.2", sha256="be68b3159fcb8cde9ebb8b468f67f03531c58be2de33edbac69e5599f2d4a2c1") + + build_directory = "gopls" diff --git a/var/spack/repos/builtin/packages/gromacs/package.py b/var/spack/repos/builtin/packages/gromacs/package.py index 0d8942d66f1218..5703587a6584f4 100644 --- a/var/spack/repos/builtin/packages/gromacs/package.py +++ b/var/spack/repos/builtin/packages/gromacs/package.py @@ -116,7 +116,7 @@ class Gromacs(CMakePackage, CudaPackage): description="Enable multi-GPU FFT support with HeFFTe", ) variant("opencl", default=False, description="Enable OpenCL support") - variant("sycl", default=False, when="@2021:", description="Enable SYCL support") + variant("sycl", default=False, when="@2021: %clang", description="Enable SYCL support") variant( "intel-data-center-gpu-max", default=False, @@ -183,7 +183,7 @@ class Gromacs(CMakePackage, CudaPackage): "sve", default=True, description="Enable SVE on aarch64 if available", - when="target=neoverse_v1:,neoverse_v2:", + when="target=neoverse_v1:,neoverse_v2:,neoverse_n2:", ) variant( "sve", default=True, description="Enable SVE on aarch64 if available", when="target=a64fx" diff --git a/var/spack/repos/builtin/packages/gsl/package.py b/var/spack/repos/builtin/packages/gsl/package.py index 2a9b83c80a17d9..6b17ec9e2e56a5 100644 --- a/var/spack/repos/builtin/packages/gsl/package.py +++ b/var/spack/repos/builtin/packages/gsl/package.py @@ -19,6 +19,7 @@ class Gsl(AutotoolsPackage, GNUMirrorPackage): license("GPL-3.0-or-later") + version("2.8", sha256="6a99eeed15632c6354895b1dd542ed5a855c0f15d9ad1326c6fe2b2c9e423190") version("2.7.1", sha256="dcb0fbd43048832b757ff9942691a8dd70026d5da0ff85601e52687f6deeb34b") version("2.7", sha256="efbbf3785da0e53038be7907500628b466152dbc3c173a87de1b5eba2e23602b") version("2.6", sha256="b782339fc7a38fe17689cb39966c4d821236c28018b6593ddb6fd59ee40786a8") diff --git a/var/spack/repos/builtin/packages/gsoap/package.py b/var/spack/repos/builtin/packages/gsoap/package.py index 6eface4e36b683..d1d8b3d1e4deae 100644 --- a/var/spack/repos/builtin/packages/gsoap/package.py +++ b/var/spack/repos/builtin/packages/gsoap/package.py @@ -17,13 +17,30 @@ class Gsoap(AutotoolsPackage, SourceforgePackage): maintainers("greenc-FNAL", "gartung", "marcmengel", "vitodb") - version("2.8.127", sha256="25ecad1bbc363494eb7ea95a68508e4c93cc20596fad9ebc196c6572bbbd3c08") - version("2.8.124", sha256="4b798780989338f665ef8e171bbcc422a271004d62d5852666d5eeca33a6a636") - version("2.8.119", sha256="8997c43b599a2bfe4a788e303a5dd24bbf5992fd06d56f606ca680ca5b0070cf") - version("2.8.114", sha256="aa70a999258100c170a3f8750c1f91318a477d440f6a28117f68bc1ded32327f") - version("2.8.113", sha256="e73782b618303cf55ea6a45751b75ba96797a7a12967ed9d02e6d5761977e73a") - version("2.8.112", sha256="05345312e0bb4d81c98ae63b97cff9eb097f38dafe09356189f9d8e235c54095") - version("2.8.111", sha256="f1670c7e3aeaa66bc5658539fbd162e5099f022666855ef2b2c2bac07fec4bd3") + version("2.8.135", sha256="b11757e405d55d4674dfbf88c4fa6d7e24155cf64ed8ed578ccad2f2b555e98d") + with default_args(deprecated=True): + # Unavailable for direct download anymore + version( + "2.8.127", sha256="25ecad1bbc363494eb7ea95a68508e4c93cc20596fad9ebc196c6572bbbd3c08" + ) + version( + "2.8.124", sha256="4b798780989338f665ef8e171bbcc422a271004d62d5852666d5eeca33a6a636" + ) + version( + "2.8.119", sha256="8997c43b599a2bfe4a788e303a5dd24bbf5992fd06d56f606ca680ca5b0070cf" + ) + version( + "2.8.114", sha256="aa70a999258100c170a3f8750c1f91318a477d440f6a28117f68bc1ded32327f" + ) + version( + "2.8.113", sha256="e73782b618303cf55ea6a45751b75ba96797a7a12967ed9d02e6d5761977e73a" + ) + version( + "2.8.112", sha256="05345312e0bb4d81c98ae63b97cff9eb097f38dafe09356189f9d8e235c54095" + ) + version( + "2.8.111", sha256="f1670c7e3aeaa66bc5658539fbd162e5099f022666855ef2b2c2bac07fec4bd3" + ) depends_on("openssl") depends_on("pkgconfig", type="build") diff --git a/var/spack/repos/builtin/packages/gtkplus/package.py b/var/spack/repos/builtin/packages/gtkplus/package.py index 0db55334b023df..158d7adfd71f03 100644 --- a/var/spack/repos/builtin/packages/gtkplus/package.py +++ b/var/spack/repos/builtin/packages/gtkplus/package.py @@ -24,6 +24,11 @@ class Gtkplus(AutotoolsPackage, MesonPackage): version("3.24.41", sha256="47da61487af3087a94bc49296fd025ca0bc02f96ef06c556e7c8988bd651b6fa") version("3.24.29", sha256="f57ec4ade8f15cab0c23a80dcaee85b876e70a8823d9105f067ce335a8268caa") version("3.24.26", sha256="2cc1b2dc5cad15d25b6abd115c55ffd8331e8d4677745dd3ce6db725b4fff1e9") + version( + "3.22.30", + sha256="a1a4a5c12703d4e1ccda28333b87ff462741dc365131fbc94c218ae81d9a6567", + deprecated=True, + ) version( "3.20.10", sha256="e81da1af1c5c1fee87ba439770e17272fa5c06e64572939814da406859e56b70", @@ -58,11 +63,15 @@ class Gtkplus(AutotoolsPackage, MesonPackage): # depends_on('docbook-xsl', when='@3.24:', type='build') # depends_on('libxslt', when='@3.24:', type='build') depends_on("pkgconfig", type="build") - depends_on("glib@2.57.2:") + depends_on("glib") + depends_on("glib@2.49.4:", when="@3.22:") + depends_on("glib@2.57.2:", when="@3.24:") depends_on("pango@1.41.0:+X") depends_on("fribidi@0.19.7:") - depends_on("atk@2.35.1:") - depends_on("at-spi2-atk@2.15.1:", when="@3:") + # atk was also merged into at-spi2-core, but gtk3 doesn't want to build without it + depends_on("atk@2.35.1:", when="@:3") + # at-spi2-atk was merged into at-spi2-core, but gtk3 is picky + depends_on("at-spi2-core@2.46:2.48", when="@:3") depends_on("cairo@1.14.0:+X+pdf+gobject") depends_on("gdk-pixbuf@2.30.0:") depends_on("gobject-introspection@1.39.0:") @@ -92,7 +101,7 @@ def patch(self): ) # https://gitlab.gnome.org/GNOME/gtk/-/issues/3776 - if self.spec.satisfies("@3:%gcc@11:"): + if self.spec.satisfies("@3.24:%gcc@11:"): filter_file(" '-Werror=array-bounds',", "", "meson.build", string=True) def setup_run_environment(self, env): diff --git a/var/spack/repos/builtin/packages/gxsview/package.py b/var/spack/repos/builtin/packages/gxsview/package.py index 0d94df2f6eed1c..d50fe08e3cd2eb 100644 --- a/var/spack/repos/builtin/packages/gxsview/package.py +++ b/var/spack/repos/builtin/packages/gxsview/package.py @@ -24,6 +24,9 @@ class Gxsview(QMakePackage): license("LGPL-3.0-only") + version( + "2024.03.15", sha256="5a6e6384a79fc2f39370846814f049b6c4c32f418cb00363cfb18bc1b6598d3a" + ) version( "2023.05.29", sha256="1e768fd7afd22198b7f73adeb42f4ccf7e0ff68996a3843b1ea138225c4c1da3" ) @@ -40,12 +43,17 @@ class Gxsview(QMakePackage): depends_on("fontconfig") depends_on("qt@5.14.0:+opengl+gui") depends_on("vtk@8.0:+qt+opengl2") # +mpi+python are optional + depends_on("vtk@9:+qt+opengl2", when="@2024.03.15:") conflicts("%gcc@:7.2.0", msg="Requires C++17 compiler support") # need C++17 standard + conflicts("qt@6:", msg="Qt 6 support is not yet achieved") + conflicts("qt-base@6:", msg="Qt 6 support is not yet achieved") # required for clingo patch("vtk9.patch", when="^vtk@9:") # gcc11 compilation rule for std::numeric_limits, # avoid "numeric_limits" is not a member of "std" patch("gcc11.patch", when="@2021.07.01 %gcc@11:") + # sets fontconfig inc/lib, removes useless stuffs + patch("vtk90.patch", when="@2024.03.15") build_directory = "gui" @@ -57,11 +65,14 @@ def qmake_args(self): if not os.path.exists(vtk_include_dir): vtk_include_dir = join_path(self.spec["vtk"].prefix.include, "vtk") args.append("VTK_NO_VER_SUFFIX=ON") + fontconfig = self.spec["fontconfig"] args.extend( [ "VTK_LIB_DIR={0}".format(vtk_lib_dir), "VTK_INC_DIR={0}".format(vtk_include_dir), "VTK_MAJOR_VER={0}".format(str(vtk_suffix)), + "FONTCONFIG_LIBDIR={0}".format(fontconfig.prefix.lib), + "FONTCONFIG_INCDIR={0}".format(fontconfig.prefix.include), ] ) # Below to avoid undefined reference to `std::filesystem::__cxx11::path::_M_split_cmpts()' diff --git a/var/spack/repos/builtin/packages/gxsview/vtk90.patch b/var/spack/repos/builtin/packages/gxsview/vtk90.patch new file mode 100644 index 00000000000000..afe6990e451de0 --- /dev/null +++ b/var/spack/repos/builtin/packages/gxsview/vtk90.patch @@ -0,0 +1,51 @@ +diff --git a/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp b/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp +index 92802f2..af731e3 100644 +--- a/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp ++++ b/gui/geometryviewer/trajectorypane/trajectorycreatingworker.cpp +@@ -7,6 +7,7 @@ + #include "trajectorycreatingworker.hpp" + + #include // for coloring ++#include + + #include "core/image/color.hpp" + +diff --git a/gui/geometryviewer/trajectorypane/trajectorypane.cpp b/gui/geometryviewer/trajectorypane/trajectorypane.cpp +index eeae291..337e0e1 100644 +--- a/gui/geometryviewer/trajectorypane/trajectorypane.cpp ++++ b/gui/geometryviewer/trajectorypane/trajectorypane.cpp +@@ -35,7 +35,7 @@ + #include + #include + #include +-#include ++// #include + #include + #include + #if defined(_WIN32) || defined(__WIN32__) || defined(_WIN64) || defined(__WIN64__) || defined(_MSC_VER) +diff --git a/gui/gui.pro b/gui/gui.pro +index cab6c36..81861b7 100644 +--- a/gui/gui.pro ++++ b/gui/gui.pro +@@ -302,7 +302,8 @@ unix:{ + + + unix:!macx { +- LIBS += -lfontconfig ++ LIBS += -L$$FONTCONFIG_LIBDIR -lfontconfig ++ INCLUDEPATH += $$FONTCONFIG_INCDIR + # gcc7 requires libstdc++fs + linux-g++ { + lessThan(QMAKE_GCC_MAJOR_VERSION, 8) { +diff --git a/gui/vtk9.pri b/gui/vtk9.pri +index 298dedb..82993f2 100644 +--- a/gui/vtk9.pri ++++ b/gui/vtk9.pri +@@ -58,7 +58,6 @@ LIBS += \ + -lvtkRenderingGL2PSOpenGL2$$VTK_VER_SUFFIX \ + -lvtkRenderingSceneGraph$$VTK_VER_SUFFIX \ + -lvtkRenderingOpenGL2$$VTK_VER_SUFFIX \ +- -lvtkRenderingQt$$VTK_VER_SUFFIX \ + -lvtkRenderingUI$$VTK_VER_SUFFIX \ + -lvtkRenderingVolume$$VTK_VER_SUFFIX \ + -lvtkRenderingVtkJS$$VTK_VER_SUFFIX \ diff --git a/var/spack/repos/builtin/packages/hdf5/package.py b/var/spack/repos/builtin/packages/hdf5/package.py index d42d4d1122fa04..29b9ad833a9950 100644 --- a/var/spack/repos/builtin/packages/hdf5/package.py +++ b/var/spack/repos/builtin/packages/hdf5/package.py @@ -38,8 +38,7 @@ class Hdf5(CMakePackage): # The 'develop' version is renamed so that we could uninstall (or patch) it # without affecting other develop version. - version("develop-1.17", branch="develop") - version("develop-1.16", branch="hdf5_1_16") + version("develop-2.0", branch="develop") version("develop-1.14", branch="hdf5_1_14") version("develop-1.12", branch="hdf5_1_12") version("develop-1.10", branch="hdf5_1_10") @@ -339,7 +338,12 @@ def flag_handler(self, name, flags): cmake_flags = [] if name == "cflags": - if spec.compiler.name in ["gcc", "clang", "apple-clang", "oneapi"]: + if ( + spec.satisfies("%gcc") + or spec.satisfies("%clang") + or spec.satisfies("%apple-clang") + or spec.satisfies("%oneapi") + ): # Quiet warnings/errors about implicit declaration of functions # in C99: cmake_flags.append("-Wno-error=implicit-function-declaration") @@ -589,6 +593,10 @@ def cmake_args(self): if spec.satisfies("@1.10.8,1.13.0"): args.append(self.define("HDF5_INSTALL_CMAKE_DIR", "share/cmake/hdf5")) + # AOCC does not support _Float16 + if spec.satisfies("@1.14.4: %aocc"): + args.append(self.define("HDF5_ENABLE_NONSTANDARD_FEATURE_FLOAT16", False)) + return args @run_after("install") diff --git a/var/spack/repos/builtin/packages/heffte/package.py b/var/spack/repos/builtin/packages/heffte/package.py index 7ad6c880435f5c..fd6d9ed5b41023 100644 --- a/var/spack/repos/builtin/packages/heffte/package.py +++ b/var/spack/repos/builtin/packages/heffte/package.py @@ -21,6 +21,7 @@ class Heffte(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("develop", branch="master") + version("2.4.1", sha256="de2cf26df5d61baac7841525db3f393cb007f79612ac7534fd4757f154ba3e6c") version("2.4.0", sha256="02310fb4f9688df02f7181667e61c3adb7e38baf79611d80919d47452ff7881d") version("2.3.0", sha256="63db8c9a8822211d23e29f7adf5aa88bb462c91d7a18c296c3ef3a06be8d6171") version("2.2.0", sha256="332346d5c1d1032288d09839134c79e4a9704e213a2d53051e96c3c414c74df0") @@ -142,7 +143,12 @@ def test_make_test(self): cmake_dir = self.test_suite.current_test_cache_dir.testing options = [cmake_dir] - options.append(self.define("Heffte_DIR", self.spec.prefix.lib.cmake.Heffte)) + # changing the default install path search to newer cmake convention + if self.spec.satisfies("@2.4.1:"): + options.append(self.define("Heffte_ROOT", self.spec.prefix)) + else: + options.append(self.define("Heffte_DIR", self.spec.prefix.lib.cmake.Heffte)) + if self.spec.satisfies("+rocm"): # path name is 'hsa-runtime64' but python cannot have '-' in variable name hsa_runtime = join_path(self.spec["hsa-rocr-dev"].prefix.lib.cmake, "hsa-runtime64") diff --git a/var/spack/repos/builtin/packages/hepmc3/package.py b/var/spack/repos/builtin/packages/hepmc3/package.py index fc2e42b7c458ae..c3c4cb086d1980 100644 --- a/var/spack/repos/builtin/packages/hepmc3/package.py +++ b/var/spack/repos/builtin/packages/hepmc3/package.py @@ -66,6 +66,10 @@ class Hepmc3(CMakePackage): conflicts("%gcc@9.3.0", when="@:3.1.1") patch("ba38f14d8f56c16cc4105d98f6d4540c928c6150.patch", when="@3.1.2:3.2.1 %gcc@9.3.0") + @property + def libs(self): + return find_libraries(["libHepMC3", "libHepMC3Search"], root=self.prefix, recursive=True) + def cmake_args(self): spec = self.spec from_variant = self.define_from_variant diff --git a/var/spack/repos/builtin/packages/hermes-shm/package.py b/var/spack/repos/builtin/packages/hermes-shm/package.py index 6b51724548add4..f93300553af0a0 100644 --- a/var/spack/repos/builtin/packages/hermes-shm/package.py +++ b/var/spack/repos/builtin/packages/hermes-shm/package.py @@ -40,7 +40,8 @@ class HermesShm(CMakePackage): depends_on("pkgconfig", type="build") depends_on("catch2@3.0.1") depends_on("yaml-cpp") - depends_on("doxygen@1.9.3", type="build") + depends_on("doxygen@1.9.3:", type="build") + depends_on("pkgconfig", type="build") depends_on("libelf") # Machine variants diff --git a/var/spack/repos/builtin/packages/hermes/package.py b/var/spack/repos/builtin/packages/hermes/package.py index 7072524c53a9a7..fa04336fc6cb2d 100644 --- a/var/spack/repos/builtin/packages/hermes/package.py +++ b/var/spack/repos/builtin/packages/hermes/package.py @@ -11,38 +11,102 @@ class Hermes(CMakePackage): I/O buffering system that aims to significantly accelerate I/O performance. """ - homepage = "http://www.cs.iit.edu/~scs/assets/projects/Hermes/Hermes.html" + homepage = "https://grc.iit.edu/research/projects/hermes" git = "https://github.com/HDFGroup/hermes.git" - maintainers("hyoklee") + maintainers("lukemartinlogan", "hyoklee") - license("GPL-2.0-only") + version("master", branch="master", submodules=True) - version("master", branch="master") + version( + "1.2.1", + url="https://github.com/HDFGroup/hermes/archive/refs/tags/v1.2.1.tar.gz", + sha256="d60ee5d6856dc1a1f389fb08f61252cc7736d1c38d3049043749640897fe3b6d", + ) version( "0.9.0-beta", url="https://github.com/HDFGroup/hermes/archive/refs/tags/v0.9.0-beta.tar.gz", sha256="abf258a52fa79729dfeb28559957abf8945f3ad37cadefb3bc685227c5f057a8", ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - + variant("adios", default=False, description="Build Adios tests") + variant("ares", default=False, description="Enable full libfabric install") + variant("compress", default=False, description="Enable compression") + variant("encrypt", default=False, description="Enable encryption") + variant("mpiio", default=True, description="Enable MPI I/O adapter") + # Builds with hermes@master. 1.2.1, we'd need to extract pybind11 source in external/pybind11: + variant("python", default=False, description="Build Python Wrapper", when="@master") + variant("stdio", default=True, description="Enable STDIO adapter") variant("vfd", default=False, description="Enable HDF5 VFD") + variant("zmq", default=False, description="Build ZeroMQ tests") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("pkgconfig", type="build") + depends_on("libelf") + + depends_on("hermes-shm@master+boost+cereal+mochi") + + depends_on("hermes-shm+adios", when="+adios") + depends_on("hermes-shm+ares", when="+ares") + depends_on("hermes-shm+compress", when="+compress") + depends_on("hermes-shm+encrypt", when="+encrypt") + depends_on("hermes-shm+mpiio", when="+mpiio") + depends_on("hermes-shm+vfd", when="+vfd") + depends_on("hermes-shm+zmq", when="+zmq") - depends_on("mochi-thallium~cereal@0.8:") - depends_on("catch2") - depends_on("glpk") - depends_on("glog@0.4.0:") - depends_on("mpi") - depends_on("hdf5@1.14.0:", when="+vfd") - depends_on("yaml-cpp") + depends_on("py-jarvis-util", type="test") + + depends_on("mpi", when="+mpiio") + conflicts("^[virtuals=mpi] nvhpc", when="+mpiio", msg="+mpio does not support nvhpc MPI") def cmake_args(self): - args = [ - self.define("HERMES_RPC_THALLIUM", True), - self.define("HERMES_INSTALL_TESTS", True), - self.define("BUILD_TESTING", True), - self.define_from_variant("HERMES_ENABLE_VFD", "vfd"), - ] + args = [] + if "+mpiio" in self.spec: + args.append("-DHERMES_ENABLE_MPIIO_ADAPTER=ON") + mpi_name = self.spec["mpi"].name + if mpi_name == "openmpi": + args.append("-DHERMES_OPENMPI=ON") + elif mpi_name == "mpich": + args.append("-DHERMES_MPICH=ON") + else: + raise InstallError("hermes+mpiio needs openmpi or mpich, got " + mpi_name) + if "+stdio" in self.spec: + args.append("-DHERMES_ENABLE_STDIO_ADAPTER=ON") + if "+vfd" in self.spec: + args.append("-DHERMES_ENABLE_VFD=ON") + if "+compress" in self.spec: + args.append(self.define("HERMES_ENABLE_COMPRESSION", "ON")) + if "+encrypt" in self.spec: + args.append(self.define("HERMES_ENABLE_ENCRYPTION", "ON")) + if "+adios" in self.spec: + args.append(self.define("HERMES_ENABLE_ADIOS", "ON")) + if "+python" in self.spec: + args.append(self.define("HERMES_ENABLE_PYTHON", "ON")) return args + + def set_include(self, env, path): + env.append_flags("CFLAGS", "-I{}".format(path)) + env.append_flags("CXXFLAGS", "-I{}".format(path)) + env.prepend_path("INCLUDE", "{}".format(path)) + env.prepend_path("CPATH", "{}".format(path)) + + def set_lib(self, env, path): + env.prepend_path("LIBRARY_PATH", path) + env.prepend_path("LD_LIBRARY_PATH", path) + env.append_flags("LDFLAGS", "-L{}".format(path)) + env.prepend_path("PYTHONPATH", "{}".format(path)) + + def set_flags(self, env): + self.set_include(env, "{}/include".format(self.prefix)) + self.set_include(env, "{}/include".format(self.prefix)) + self.set_lib(env, "{}/lib".format(self.prefix)) + self.set_lib(env, "{}/lib64".format(self.prefix)) + env.prepend_path("CMAKE_PREFIX_PATH", "{}/cmake".format(self.prefix)) + env.prepend_path("CMAKE_MODULE_PATH", "{}/cmake".format(self.prefix)) + + def setup_dependent_environment(self, spack_env, run_env, dependent_spec): + self.set_flags(spack_env) + + def setup_run_environment(self, env): + self.set_flags(env) diff --git a/var/spack/repos/builtin/packages/heyoka/package.py b/var/spack/repos/builtin/packages/heyoka/package.py index ee4ef5be62dbc4..a76e4b6a761555 100644 --- a/var/spack/repos/builtin/packages/heyoka/package.py +++ b/var/spack/repos/builtin/packages/heyoka/package.py @@ -18,6 +18,8 @@ class Heyoka(CMakePackage): # SPDX identifier of the project's license. license("MPL-2.0") + version("6.1.0", sha256="a0f01afb1fb4f93fdc41b2a8dfebf9f9ddd45b28b7b373c4ef9355aeda7107b4") + version("6.0.0", sha256="9cf56a6a29db5c72c5203af70d568aede78cb549baf1505b8abd04b888492895") version("5.1.0", sha256="dd405328ace718865ae2690384fbf5f7ee4d03ab6821b908e7d0ca0a02c35e14") version("5.0.0", sha256="e9a4b5683a08706addc1b448e232f1e269d78586859fe3f4d93d4c5eee3bc8ae") version("4.0.3", sha256="47608e785607782d896ae2347a29a143cdb7e5c602f48f5ea795cf682051dbee") @@ -57,8 +59,10 @@ class Heyoka(CMakePackage): # Required dependencies depends_on("llvm@13:17", when="@:4") depends_on("llvm@13:18", when="@5") + depends_on("llvm@15:19", when="@6") depends_on("boost@1.69: +serialization") - depends_on("fmt@9:10") + depends_on("fmt@9:10", when="@:5") + depends_on("fmt@9:11", when="@6") depends_on("spdlog") depends_on("intel-tbb@2021.4.0:") diff --git a/var/spack/repos/builtin/packages/hicup/package.py b/var/spack/repos/builtin/packages/hicup/package.py new file mode 100644 index 00000000000000..daf3f5da39a478 --- /dev/null +++ b/var/spack/repos/builtin/packages/hicup/package.py @@ -0,0 +1,55 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Hicup(Package): + """HiCUP: a bioinformatics pipeline for processing Hi-C data""" + + homepage = "https://stevenwingett.github.io/HiCUP" + url = "https://github.com/StevenWingett/HiCUP/archive/refs/tags/v0.9.2.tar.gz" + git = "https://github.com/StevenWingett/HiCUP.git" + + license("LGPL-3.0-only", checked_by="A-N-Other") + + version("0.9.2", sha256="7f9f65669d14fd2499afc4ac87735834b57b8f30b8e5785c4b406ec206cf9d2a") + version("0.8.3", sha256="e2381c2c45e0d79a6d1a2d9a8358b3efe8da727112d262cb0122132012266368") + version("combinations", branch="combinations") + + variant("bowtie2", description="Use bowtie2 aligner", default=True) + variant("bowtie", description="Use bowtie aligner", default=False) + + depends_on("pandoc", type="run") + depends_on("perl", type="run") + depends_on("perl-math-round", type="run") + depends_on("r", type="run") + depends_on("r-stringi@1.7.8:", type="run") + depends_on("r-markdown", type="run") + depends_on("r-tidyverse", type="run") + depends_on("r-plotly", type="run") + depends_on("samtools@0.1.18:", type="run") + # variant dependencies + depends_on("bowtie2", type="run", when="+bowtie2") + depends_on("bowtie", type="run", when="+bowtie") + + def edit(self, spec, prefix): + grep = which("grep") + chmod = which("chmod") + perl_files = grep("-lRr", "#!/usr/bin/perl", ".").splitlines() + for f in perl_files: + filter_file("/usr/bin/perl", self.spec["perl"].command.path, f, backup=False) + filter_file("$Bin", "$RealBin", f, backup=False) + chmod("+x", f) + + def install(self, spec, prefix): + mkdirp(prefix.bin) + install("hicup*", prefix.bin) + if self.spec.satisfies("@combinations"): + install("Misc/get_captured_reads", prefix.bin) + else: + install("Misc/hicup_capture", prefix.bin) + install("Conversion/hicup2*", prefix.bin) + install_tree("r_scripts", prefix.bin.r_scripts) diff --git a/var/spack/repos/builtin/packages/hip/package.py b/var/spack/repos/builtin/packages/hip/package.py index f0235f1aea6deb..91dc94d33c9008 100644 --- a/var/spack/repos/builtin/packages/hip/package.py +++ b/var/spack/repos/builtin/packages/hip/package.py @@ -638,14 +638,7 @@ def test_samples(self): test_dir = join_path(self.test_suite.current_test_cache_dir, self.test_src_dir_old) elif self.spec.satisfies("@5.6:"): test_dir = join_path(self.test_suite.current_test_cache_dir, self.test_src_dir) - prefixes = ";".join( - [ - self.spec["hip"].prefix, - self.spec["llvm-amdgpu"].prefix, - self.spec["comgr"].prefix, - self.spec["hsa-rocr-dev"].prefix, - ] - ) + prefixes = ";".join(spack.build_environment.get_cmake_prefix_path(self)) cc_options = ["-DCMAKE_PREFIX_PATH=" + prefixes, ".."] amdclang_path = join_path(self.spec["llvm-amdgpu"].prefix, "bin", "amdclang++") diff --git a/var/spack/repos/builtin/packages/hipsolver/package.py b/var/spack/repos/builtin/packages/hipsolver/package.py index 82c35643e70c44..9769f44ebb1ceb 100644 --- a/var/spack/repos/builtin/packages/hipsolver/package.py +++ b/var/spack/repos/builtin/packages/hipsolver/package.py @@ -29,6 +29,7 @@ class Hipsolver(CMakePackage, CudaPackage, ROCmPackage): version("develop", branch="develop") version("master", branch="master") + version("6.2.1", sha256="614e3c0bc11bfa84acd81d46db63f3852a750adaaec094b7701ab7b996cc8e93") version("6.2.0", sha256="637577a9cc38e4865894dbcd7eb35050e3de5d45e6db03472e836b318602a84d") version("6.1.2", sha256="406a8e5b82daae2fc03e0a738b5a054ade01bb41785cee4afb9e21c7ec91d492") version("6.1.1", sha256="01d4553458f417824807c069cacfc65d23f6cac79536158473b4356986c8fafd") @@ -101,6 +102,7 @@ class Hipsolver(CMakePackage, CudaPackage, ROCmPackage): "6.1.1", "6.1.2", "6.2.0", + "6.2.1", "master", "develop", ]: diff --git a/var/spack/repos/builtin/packages/hyperfine/package.py b/var/spack/repos/builtin/packages/hyperfine/package.py index e862d07392c561..ce795592319b99 100644 --- a/var/spack/repos/builtin/packages/hyperfine/package.py +++ b/var/spack/repos/builtin/packages/hyperfine/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Hyperfine(Package): +class Hyperfine(CargoPackage): """A command-line benchmarking tool.""" homepage = "https://github.com/sharkdp/hyperfine" @@ -16,14 +16,15 @@ class Hyperfine(Package): license("Apache-2.0 AND MIT") + version("1.18.0", sha256="fea7b92922117ed04b9c84bb9998026264346768804f66baa40743c5528bed6b") version("1.17.0", sha256="3dcd86c12e96ab5808d5c9f3cec0fcc04192a87833ff009063c4a491d5487b58") version("1.16.1", sha256="ffb3298945cbe2c068ca1a074946d55b9add83c9df720eda2ed7f3d94d7e65d2") version("1.14.0", sha256="59018c22242dd2ad2bd5fb4a34c0524948b7921d02aa79419ccec4c1ffd3da14") version("1.13.0", sha256="6e57c8e51962dd24a283ab46dde6fe306da772f4ef9bad86f8c89ac3a499c87e") version("1.12.0", sha256="2120870a97e68fa3426eac5646a071c9646e96d2309220e3c258bf588e496454") - depends_on("rust@1.46:") - - def install(self, spec, prefix): - cargo = which("cargo") - cargo("install", "--root", prefix, "--path", ".") + depends_on("rust@1.70:", when="@1.18.0:") + depends_on("rust@1.65:", when="@1.17.0:") + depends_on("rust@1.64:", when="@1.16.0:") + depends_on("rust@1.54:", when="@1.13.0:") + depends_on("rust@1.46:", when="@1.12.0:") diff --git a/var/spack/repos/builtin/packages/icon/package.py b/var/spack/repos/builtin/packages/icon/package.py index d5066545509456..e75d8d6b05d028 100644 --- a/var/spack/repos/builtin/packages/icon/package.py +++ b/var/spack/repos/builtin/packages/icon/package.py @@ -16,10 +16,12 @@ class Icon(AutotoolsPackage): homepage = "https://www.icon-model.org" url = "https://gitlab.dkrz.de/icon/icon-model/-/archive/icon-2024.01-public/icon-model-icon-2024.01-public.tar.gz" - maintainers("skosukhin") + maintainers("skosukhin", "Try2Code") license("BSD-3-Clause", checked_by="skosukhin") + version("2024.10", sha256="5c461c783eb577c97accd632b18140c3da91c1853d836ca2385f376532e9bad1") + version("2024.07", sha256="f53043ba1b36b8c19d0d2617ab601c3b9138b90f8ff8ca6db0fd079665eb5efa") version("2024.01-1", sha256="3e57608b7e1e3cf2f4cb318cfe2fdb39678bd53ca093955d99570bd6d7544184") version("2024.01", sha256="d9408fdd6a9ebf5990298e9a09c826e8c15b1e79b45be228f7a5670a3091a613") diff --git a/var/spack/repos/builtin/packages/infernal/package.py b/var/spack/repos/builtin/packages/infernal/package.py index 90ef8da99b46e3..d5dda6d05eeb36 100644 --- a/var/spack/repos/builtin/packages/infernal/package.py +++ b/var/spack/repos/builtin/packages/infernal/package.py @@ -15,6 +15,7 @@ class Infernal(AutotoolsPackage): homepage = "http://eddylab.org/infernal/" url = "http://eddylab.org/infernal/infernal-1.1.2.tar.gz" + version("1.1.5", sha256="ad4ddae02f924ca7c85bc8c4a79c9f875af8df96aeb726702fa985cbe752497f") version("1.1.4", sha256="f9493c7dee9fbf25f6405706818883d24b9f5e455121a0662c96c8f0307f95fc") version("1.1.3", sha256="3b98a6a3a0e7b01aa077a0caf1e958223c4d8f80a69a4eb602ca59a3475da85e") version("1.1.2", sha256="ac8c24f484205cfb7124c38d6dc638a28f2b9035b9433efec5dc753c7e84226b") @@ -25,8 +26,13 @@ class Infernal(AutotoolsPackage): depends_on("mpi", when="+mpi") + # v1.1.4 and below do not build on aarch64 # https://github.com/EddyRivasLab/infernal/issues/30 - conflicts("target=aarch64:", msg="infernal is only available for x86_64 and PowerPC") + conflicts( + "target=aarch64:", + when="@:1.1.4", + msg="infernal v1.1.4 and below are only available for x86_64 and PowerPC", + ) def configure_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py b/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py index 6523c0c1edd81e..354c01f17d174c 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-advisor/package.py @@ -24,6 +24,12 @@ class IntelOneapiAdvisor(IntelOneApiLibraryPackageWithSdk): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/advisor.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/fe95ae4a-3692-4e31-919d-3e7bdf5832f1/intel-advisor-2025.0.0.798_offline.sh", + sha256="bf85d4b0bd199a2babdff6b4bd3885ce569a3ad0e992b99b2e14dbb30af88cd4", + expand=False, + ) version( "2024.3.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e36c14f6-6142-44ff-b498-d4ff169cc8b0/l_oneapi_advisor_p_2024.3.0.43_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py index ae26272fa392fe..78f939f16ff47f 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-ccl/package.py @@ -27,6 +27,12 @@ class IntelOneapiCcl(IntelOneApiLibraryPackage): depends_on("intel-oneapi-mpi") + version( + "2021.14.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/88a7a6db-816c-4cd5-993f-821729da5648/intel-oneccl-2021.14.0.506_offline.sh", + sha256="2a02ebf10e9b129df8538520b4b343c5ac30350ada6bd1f2bdc9b4ef0f46e165", + expand=False, + ) version( "2021.13.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4b4cf672-c1f9-4bac-97c4-f4ae10a0a020/l_oneapi_ccl_p_2021.13.1.32_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py index 9a965c2d50f56b..d7cb974a56e185 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-compilers/package.py @@ -10,6 +10,25 @@ from spack.package import * versions = [ + { + "version": "2025.0.0", + "cpp": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ac92f2bb-4818-4e53-a432-f8b34d502f23/intel-dpcpp-cpp-compiler-2025.0.0.740_offline.sh", + "sha256": "04fadf63789acee731895e631db63f65a98b8279db3d0f48bdf0d81e6103bdd8", + }, + "ftn": { + "url": "https://registrationcenter-download.intel.com/akdlm/IRC_NAS/69f79888-2d6c-4b20-999e-e99d72af68d4/intel-fortran-compiler-2025.0.0.723_offline.sh", + "sha256": "2be6d607ce84f35921228595b118fbc516d28587cbc4e6dcf6b7219e5cd1a9a9", + }, + "nvidia-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=nvidia&version=2025.0.0&filters[]=12.0&filters[]=linux", + "sha256": "264a43d2e07c08eb31d6483fb1c289a6b148709e48e9a250efc1b1e9a527feb6", + }, + "amd-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=amd&version=2025.0.0&filters[]=6.1.0&filters[]=linux", + "sha256": "2c5a147e82f0e995b9c0457b53967cc066d5741d675cb64cb9eba8e3c791a064", + }, + }, { "version": "2024.2.1", "cpp": { @@ -24,6 +43,10 @@ "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=nvidia&version=2024.2.1&filters[]=12.0&filters[]=linux", "sha256": "2c377027c650291ccd8267cbf75bd3d00c7b11998cc59d5668a02a0cbc2c015f", }, + "amd-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=amd&version=2024.2.1&filters[]=6.1.0&filters[]=linux", + "sha256": "fbeb64f959f907cbf3469f4e154b2af6d8ff46fe4fc667c811e04f3872a13823", + }, }, { "version": "2024.2.0", @@ -39,6 +62,10 @@ "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=nvidia&version=2024.2.0&filters[]=12.0&filters[]=linux", "sha256": "0622df0054364b01e91e7ed72a33cb3281e281db5b0e86579f516b1cc5336b0f", }, + "amd-plugin": { + "url": "https://developer.codeplay.com/api/v1/products/download?product=oneapi&variant=amd&version=2024.2.0&filters[]=6.1.0&filters[]=linux", + "sha256": "d1e9d30fa92f3ef606f054d8cbd7c338b3e46f6a9f8472736e29e8ccd9e50688", + }, }, { "version": "2024.1.0", @@ -275,6 +302,9 @@ class IntelOneapiCompilers(IntelOneApiPackage, CompilerPackage): # Add the nvidia variant variant("nvidia", default=False, description="Install NVIDIA plugin for OneAPI") conflicts("@:2022.2.1", when="+nvidia", msg="Codeplay NVIDIA plugin requires newer release") + # Add the amd variant + variant("amd", default=False, description="Install AMD plugin for OneAPI") + conflicts("@:2022.2.1", when="+amd", msg="Codeplay AMD plugin requires newer release") # TODO: effectively gcc is a direct dependency of intel-oneapi-compilers, but we # cannot express that properly. For now, add conflicts for non-gcc compilers # instead. @@ -298,6 +328,14 @@ class IntelOneapiCompilers(IntelOneApiPackage, CompilerPackage): expand=False, **v["nvidia-plugin"], ) + if "amd-plugin" in v: + resource( + name="amd-plugin-installer", + placement="amd-plugin-installer", + when="@{0}".format(v["version"]), + expand=False, + **v["amd-plugin"], + ) @property def v2_layout_versions(self): @@ -363,12 +401,15 @@ def install(self, spec, prefix): if nvidia_script: if platform.system() == "Linux": bash = Executable("bash") - # Installer writes files in ~/intel set HOME so it goes to prefix - bash.add_default_env("HOME", prefix) - # Installer checks $XDG_RUNTIME_DIR/.bootstrapper_lock_file as well - bash.add_default_env("XDG_RUNTIME_DIR", join_path(self.stage.path, "runtime")) # For NVIDIA plugin installer bash(nvidia_script[0], "-y", "--install-dir", self.prefix) + if self.spec.satisfies("+amd"): + amd_script = find("amd-plugin-installer", "*") + if amd_script: + if platform.system() == "Linux": + bash = Executable("bash") + # For AMD plugin installer + bash(amd_script[0], "-y", "--install-dir", self.prefix) @run_after("install") def inject_rpaths(self): diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py index 97bddf49d5a74a..afebb68a8e0637 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dal/package.py @@ -26,6 +26,12 @@ class IntelOneapiDal(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onedal.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d9f2cdb2-93ec-4c78-a3fb-a59d27050c16/intel-onedal-2025.0.0.958_offline.sh", + sha256="be6c4130c29a77323515d1febcd55163f1db3e1cecdc8d477617cb8e560e4a3f", + expand=False, + ) version( "2024.7.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/ed2c397a-9a78-4466-9179-b39b7da07e83/l_daal_oneapi_p_2024.7.0.14_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py index 93a34ef4cd1f1c..8d682d268d40d0 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dnn/package.py @@ -26,6 +26,12 @@ class IntelOneapiDnn(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onednn.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/87e117ab-039b-437d-9c80-dcd5c9e675d5/intel-onednn-2025.0.0.862_offline.sh", + sha256="267f63e8a3fe2a37c92873e53f3bf14a2cf680e888005cb6deb2014bc3be077c", + expand=False, + ) version( "2024.2.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7c850be0-b17d-4b7f-898d-3bc5fc36aa8d/l_onednn_p_2024.2.1.76_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py index 5acc3766782371..1db00291522532 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dpct/package.py @@ -19,6 +19,12 @@ class IntelOneapiDpct(IntelOneApiPackage): homepage = "https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compatibility-tool.html#gs.2p8km6" + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/de77e9b7-1fa2-4329-8777-2de569fee5d9/intel-dpcpp-ct-2025.0.0.912_offline.sh", + sha256="a675a0c6261c31c73ca8c37e9d6b4bd19018e9fcba72800c245ed61eb0fac9ee", + expand=False, + ) version( "2024.2.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e3b7b68d-65dd-4d03-9119-ce3ad448657e/l_dpcpp-ct_p_2024.2.1.64_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py index f631242b634a67..5f0877cf0f68df 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-dpl/package.py @@ -22,6 +22,12 @@ class IntelOneapiDpl(IntelOneApiLibraryPackage): homepage = "https://github.com/oneapi-src/oneDPL" + version( + "2022.7.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/85ad74ff-f4fa-45e2-b50d-67d637d42baa/intel-onedpl-2022.7.0.647_offline.sh", + sha256="8eecb6bd35ad414248fc03f9fd8ef4ec504d0ce44724b2c23d42f5f08e046a3f", + expand=False, + ) version( "2022.6.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/fe007d71-c49f-4cdd-8a95-5c8e29c5b19c/l_oneDPL_p_2022.6.1.15_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py b/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py index 95781edbb690e8..99b2fea2d05a47 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-ipp/package.py @@ -27,6 +27,12 @@ class IntelOneapiIpp(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html" ) + version( + "2022.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/acf220fa-326d-4f6e-9b63-f2da47b6f680/intel-ipp-2022.0.0.809_offline.sh", + sha256="e5e9be64ed79d9f3b2a11d9cdb573bea4a3a9a5cf08e5b7cc713947e622abbd6", + expand=False, + ) version( "2021.12.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/7e07b203-af56-4b52-b69d-97680826a8df/l_ipp_oneapi_p_2021.12.1.16_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py b/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py index bc988992c67423..ed40dbac3521a4 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-ippcp/package.py @@ -28,6 +28,12 @@ class IntelOneapiIppcp(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/ipp.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4592da40-6f1c-4d4b-aa5b-0bb97ec66c92/intel-cryptography-primitives-library-2025.0.0.616_offline.sh", + sha256="a529b52ad8b2bdc2ad8372e11e8dac0df1daebaf8f5ade8a7ceb9b8669778c42", + expand=False, + ) version( "2021.12.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/8d82c537-2756-4000-a6cf-d7fedbfb9499/l_ippcp_oneapi_p_2021.12.1.14_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py index 06c0252936da99..c233490408170f 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mkl/package.py @@ -25,11 +25,18 @@ class IntelOneapiMkl(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onemkl.html" ) + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/79153e0f-74d7-45af-b8c2-258941adf58a/intel-onemkl-2025.0.0.940_offline.sh", + sha256="c0fe8c43718c56858df96ad469b22d9d5e5c1aa4b872e34c6cbebfb17bd15b9c", + expand=False, + ) version( "2024.2.2", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/89a381f6-f85d-4dda-ae62-30d51470f53c/l_onemkl_p_2024.2.2.17_offline.sh", sha256="6b64ab95567bee53d6cf7e78f9f7b15695902fb9da0d20c29e638ad001b6b348", expand=False, + preferred=True, ) version( "2024.2.1", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py index 023af78e4a056d..a20a1ac41cef4f 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-mpi/package.py @@ -21,6 +21,12 @@ class IntelOneapiMpi(IntelOneApiLibraryPackage): homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/mpi-library.html" + version( + "2021.14.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/4b14b28c-2ca6-4559-a0ca-8a157627e0c8/intel-mpi-2021.14.0.791_offline.sh", + sha256="81ea7aaf8039c134b4df40bab1423a269425d26bb90ac05f7decac39719d21f3", + expand=False, + ) version( "2021.13.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/364c798c-4cad-4c01-82b5-e1edd1b476af/l_mpi_oneapi_p_2021.13.1.769_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py b/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py index 622814ee7ef4e5..ae07f734bdb0c4 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-tbb/package.py @@ -22,6 +22,12 @@ class IntelOneapiTbb(IntelOneApiLibraryPackage): "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/onetbb.html" ) + version( + "2022.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/9d5f5bd1-6021-41f7-aa3e-36d44c4ac190/intel-onetbb-2022.0.0.403_offline.sh", + sha256="02077de6748422c1b5396afc3806addd9b1e832d9807126b54f22ed18853f86f", + expand=False, + ) version( "2021.13.1", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/b9aad7b8-0a4c-4f95-a100-e0e2921d5777/l_tbb_oneapi_p_2021.13.1.15_offline.sh", diff --git a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py index 74700b30008346..008dee29121d52 100644 --- a/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py +++ b/var/spack/repos/builtin/packages/intel-oneapi-vtune/package.py @@ -25,6 +25,12 @@ class IntelOneapiVtune(IntelOneApiLibraryPackageWithSdk): homepage = "https://software.intel.com/content/www/us/en/develop/tools/oneapi/components/vtune-profiler.html" + version( + "2025.0.0", + url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/e7797b12-ce87-4df0-aa09-df4a272fc5d9/intel-vtune-2025.0.0.1130_offline.sh", + sha256="6742e5c6b1cd6e4efb794bde5d995ba738be1a991ac84678e0efca04fc080074", + expand=False, + ) version( "2024.3.0", url="https://registrationcenter-download.intel.com/akdlm/IRC_NAS/d7e1fdb1-cfc7-40fb-bf46-3719e9372d67/l_oneapi_vtune_p_2024.3.0.31_offline.sh", diff --git a/var/spack/repos/builtin/packages/isoquant/package.py b/var/spack/repos/builtin/packages/isoquant/package.py new file mode 100644 index 00000000000000..7655204ec5050b --- /dev/null +++ b/var/spack/repos/builtin/packages/isoquant/package.py @@ -0,0 +1,45 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Isoquant(Package): + """IsoQuant: Transcript discovery and quantification with long RNA reads""" + + # IsoQuant is a collection of Python scripts but does not install as a + # typical Python package, so this is a `Package` rather than a `PythonPackage` + # and we move things into place manually ... + + homepage = "https://ablab.github.io/IsoQuant/" + url = "https://github.com/ablab/IsoQuant/releases/download/v3.6.1/IsoQuant-3.6.1.tar.gz" + + license("GPL-2.0-only", checked_by="A-N-Other") + + version("3.6.1", sha256="6d16e47e9ca45f9a0d029940d5b84e03038d9ba3d640945e3a5087acfd7ed56d") + + depends_on("minimap2", type="run") + depends_on("samtools", type="run") + + depends_on("python@3.8:", type="run") + depends_on("py-gffutils@0.10.1:", type="run") + depends_on("py-biopython@1.76:", type="run") + depends_on("py-pandas@1.0.1:", type="run") + depends_on("py-pybedtools@0.8.1:", type="run") + depends_on("py-pysam@0.15:", type="run") + depends_on("py-packaging", type="run") + depends_on("py-pyfaidx@0.7:", type="run") + depends_on("py-pyyaml@5.4:", type="run") + depends_on("py-matplotlib@3.1.3:", type="run") + depends_on("py-numpy@1.18.1:", type="run") + depends_on("py-scipy@1.4.1:", type="run") + depends_on("py-seaborn@0.10.0:", type="run") + + def install(self, spec, prefix): + chmod = which("chmod") + chmod("+x", "isoquant.py", "visualize.py") + mkdirp(prefix.bin) + install("*.py", prefix.bin) + install_tree("src", prefix.bin.src) diff --git a/var/spack/repos/builtin/packages/jsonnet/package.py b/var/spack/repos/builtin/packages/jsonnet/package.py index 37d7464653a084..24d5465b40947e 100644 --- a/var/spack/repos/builtin/packages/jsonnet/package.py +++ b/var/spack/repos/builtin/packages/jsonnet/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -40,5 +41,4 @@ def install_targets(self): @run_after("install") def python_install(self): if "+python" in self.spec: - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/justbuild/package.py b/var/spack/repos/builtin/packages/justbuild/package.py index 18c4939dd26651..1cf96c1bbb09ca 100644 --- a/var/spack/repos/builtin/packages/justbuild/package.py +++ b/var/spack/repos/builtin/packages/justbuild/package.py @@ -24,6 +24,7 @@ class Justbuild(Package): license("Apache-2.0") version("master", branch="master") + version("1.4.0", tag="v1.4.0", commit="562bddf70175a602f896397f41ee5f5e07e834eb") version("1.3.2", tag="v1.3.2", commit="27a56845398b07471f8185648a79a63f97851659") version("1.3.1", tag="v1.3.1", commit="b248838ed0f01bc5824caee3a555e7fd22d5ad10") version("1.3.0", tag="v1.3.0", commit="a7be2417f358049e6a0e28e01bc4020d8de2fdc5") diff --git a/var/spack/repos/builtin/packages/kibana/package.py b/var/spack/repos/builtin/packages/kibana/package.py index bbf8146ec2fb01..0245929e6b2cbf 100644 --- a/var/spack/repos/builtin/packages/kibana/package.py +++ b/var/spack/repos/builtin/packages/kibana/package.py @@ -13,9 +13,10 @@ class Kibana(Package): homepage = "https://www.elastic.co/products/kibana" url = "https://artifacts.elastic.co/downloads/kibana/kibana-6.4.0-linux-x86_64.tar.gz" - version("6.4.0", sha256="df2056105a08c206a1adf9caed09a152a53429a0f1efc1ba3ccd616092d78aee") - - depends_on("cxx", type="build") # generated + version("8.15.2", sha256="b1f8082a4200867078170e92ad299e293ee514f5fdbb96b7a0d1de17a880d1eb") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2019-7609 + version("6.4.0", sha256="df2056105a08c206a1adf9caed09a152a53429a0f1efc1ba3ccd616092d78aee") depends_on("java", type="run") diff --git a/var/spack/repos/builtin/packages/kokkos-kernels/package.py b/var/spack/repos/builtin/packages/kokkos-kernels/package.py index f8dc26ad8969e3..af6abf4c11aca1 100644 --- a/var/spack/repos/builtin/packages/kokkos-kernels/package.py +++ b/var/spack/repos/builtin/packages/kokkos-kernels/package.py @@ -11,7 +11,7 @@ class KokkosKernels(CMakePackage, CudaPackage): homepage = "https://github.com/kokkos/kokkos-kernels" git = "https://github.com/kokkos/kokkos-kernels.git" - url = "https://github.com/kokkos/kokkos-kernels/archive/4.0.00.tar.gz" + url = "https://github.com/kokkos/kokkos-kernels/releases/download/4.4.01/kokkos-kernels-4.4.01.tar.gz" tags = ["e4s"] @@ -21,32 +21,111 @@ class KokkosKernels(CMakePackage, CudaPackage): license("Apache-2.0 WITH LLVM-exception") - # generate checksum for each release tarball with the following command - # openssl sha256 kokkos-kernels-x.y.z.tar.gz version("develop", branch="develop") version("master", branch="master") - version("4.4.01", sha256="9f741449f5ace5a7d8a5a81194ff2108e5525d16f08fcd9bb6c9bb4853d7720d") - version("4.4.00", sha256="6559871c091eb5bcff53bae5a0f04f2298971d1aa1b2c135bd5a2dae3f9376a2") - version("4.3.01", sha256="749553a6ea715ba1e56fa0b13b42866bb9880dba7a94e343eadf40d08c68fab8") - version("4.3.00", sha256="03c3226ee97dbca4fa56fe69bc4eefa0673e23c37f2741943d9362424a63950e") - version("4.2.01", sha256="058052b3a40f5d4e447b7ded5c480f1b0d4aa78373b0bc7e43804d0447c34ca8") - version("4.2.00", sha256="c65df9a101dbbef2d8fd43c60c9ea85f2046bb3535fa1ad16e7c661ddd60401e") - version("4.1.00", sha256="d6a4108444ea226e43bf6a9c0dfc557f223a72b1142bf81aa78dd60e16ac2d56") - version("4.0.01", sha256="3f493fcb0244b26858ceb911be64092fbf7785616ad62c81abde0ea1ce86688a") - version("4.0.00", sha256="750079d0be1282d18ecd280e130ca303044ac399f1e5864488284b92f5ce0a86") - version("3.7.01", sha256="b2060f5894bdaf7f7d4793b90444fac260460cfa80595afcbcb955518864b446") - version("3.7.00", sha256="51bc6db3995392065656848e2b152cfd1c3a95a951ab18a3934278113d59f32b") - version("3.6.01", sha256="f000b156c8c0b80e85d38587907c11d9479aaf362408b812effeda5e22b24d0d") - version("3.6.00", sha256="2753643fd643b9eed9f7d370e0ff5fa957211d08a91aa75398e31cbc9e5eb0a5") - version("3.5.00", sha256="a03a41a047d95f9f07cd1e1d30692afdb75b5c705ef524e19c1d02fe60ccf8d1") - version("3.4.01", sha256="f504aa4afbffb58fa7c4430d0fdb8fd5690a268823fa15eb0b7d58dab9d351e6") - version("3.4.00", sha256="07ba11869e686cb0d47272d1ef494ccfbcdef3f93ff1c8b64ab9e136a53a227a") - version("3.3.01", sha256="0f21fe6b5a8b6ae7738290e293aa990719aefe88b32f84617436bfd6074a8f77") - version("3.3.00", sha256="8d7f78815301afb90ddba7914dce5b718cea792ac0c7350d2f8d00bd2ef1cece") - version("3.2.01", sha256="c486e5cac19e354a517498c362838619435734d64b44f44ce909b0531c21d95c") - version("3.2.00", sha256="8ac20ee28ae7813ce1bda461918800ad57fdbac2af86ef5d1ba74e83e10956de") - version("3.1.00", sha256="27fea241ae92f41bd5b070b1a590ba3a56a06aca750207a98bea2f64a4a40c89") - version("3.0.00", sha256="e4b832aed3f8e785de24298f312af71217a26067aea2de51531e8c1e597ef0e6") + version("4.4.01", sha256="4a32bc8330e0113856bdf181df94cc4f9902e3cebb5dc7cea5948f30df03bfa1") + version("4.4.00", sha256="66d5c3f728a8c7689159c97006996164ea00fd39702476220e3dbf2a05c49e8f") + + version( + "4.3.01", + sha256="749553a6ea715ba1e56fa0b13b42866bb9880dba7a94e343eadf40d08c68fab8", + url="https://github.com/kokkos/kokkos-kernels/archive/4.3.01.tar.gz", + ) + version( + "4.3.00", + sha256="03c3226ee97dbca4fa56fe69bc4eefa0673e23c37f2741943d9362424a63950e", + url="https://github.com/kokkos/kokkos-kernels/archive/4.3.00.tar.gz", + ) + version( + "4.2.01", + sha256="058052b3a40f5d4e447b7ded5c480f1b0d4aa78373b0bc7e43804d0447c34ca8", + url="https://github.com/kokkos/kokkos-kernels/archive/4.2.01.tar.gz", + ) + version( + "4.2.00", + sha256="c65df9a101dbbef2d8fd43c60c9ea85f2046bb3535fa1ad16e7c661ddd60401e", + url="https://github.com/kokkos/kokkos-kernels/archive/4.2.00.tar.gz", + ) + version( + "4.1.00", + sha256="d6a4108444ea226e43bf6a9c0dfc557f223a72b1142bf81aa78dd60e16ac2d56", + url="https://github.com/kokkos/kokkos-kernels/archive/4.1.00.tar.gz", + ) + version( + "4.0.01", + sha256="3f493fcb0244b26858ceb911be64092fbf7785616ad62c81abde0ea1ce86688a", + url="https://github.com/kokkos/kokkos-kernels/archive/4.0.01.tar.gz", + ) + version( + "4.0.00", + sha256="750079d0be1282d18ecd280e130ca303044ac399f1e5864488284b92f5ce0a86", + url="https://github.com/kokkos/kokkos-kernels/archive/4.0.00.tar.gz", + ) + version( + "3.7.01", + sha256="b2060f5894bdaf7f7d4793b90444fac260460cfa80595afcbcb955518864b446", + url="https://github.com/kokkos/kokkos-kernels/archive/3.7.01.tar.gz", + ) + version( + "3.7.00", + sha256="51bc6db3995392065656848e2b152cfd1c3a95a951ab18a3934278113d59f32b", + url="https://github.com/kokkos/kokkos-kernels/archive/3.7.00.tar.gz", + ) + version( + "3.6.01", + sha256="f000b156c8c0b80e85d38587907c11d9479aaf362408b812effeda5e22b24d0d", + url="https://github.com/kokkos/kokkos-kernels/archive/3.6.01.tar.gz", + ) + version( + "3.6.00", + sha256="2753643fd643b9eed9f7d370e0ff5fa957211d08a91aa75398e31cbc9e5eb0a5", + url="https://github.com/kokkos/kokkos-kernels/archive/3.6.00.tar.gz", + ) + version( + "3.5.00", + sha256="a03a41a047d95f9f07cd1e1d30692afdb75b5c705ef524e19c1d02fe60ccf8d1", + url="https://github.com/kokkos/kokkos-kernels/archive/3.5.00.tar.gz", + ) + version( + "3.4.01", + sha256="f504aa4afbffb58fa7c4430d0fdb8fd5690a268823fa15eb0b7d58dab9d351e6", + url="https://github.com/kokkos/kokkos-kernels/archive/3.4.01.tar.gz", + ) + version( + "3.4.00", + sha256="07ba11869e686cb0d47272d1ef494ccfbcdef3f93ff1c8b64ab9e136a53a227a", + url="https://github.com/kokkos/kokkos-kernels/archive/3.4.00.tar.gz", + ) + version( + "3.3.01", + sha256="0f21fe6b5a8b6ae7738290e293aa990719aefe88b32f84617436bfd6074a8f77", + url="https://github.com/kokkos/kokkos-kernels/archive/3.3.01.tar.gz", + ) + version( + "3.3.00", + sha256="8d7f78815301afb90ddba7914dce5b718cea792ac0c7350d2f8d00bd2ef1cece", + url="https://github.com/kokkos/kokkos-kernels/archive/3.3.00.tar.gz", + ) + version( + "3.2.01", + sha256="c486e5cac19e354a517498c362838619435734d64b44f44ce909b0531c21d95c", + url="https://github.com/kokkos/kokkos-kernels/archive/3.2.01.tar.gz", + ) + version( + "3.2.00", + sha256="8ac20ee28ae7813ce1bda461918800ad57fdbac2af86ef5d1ba74e83e10956de", + url="https://github.com/kokkos/kokkos-kernels/archive/3.2.00.tar.gz", + ) + version( + "3.1.00", + sha256="27fea241ae92f41bd5b070b1a590ba3a56a06aca750207a98bea2f64a4a40c89", + url="https://github.com/kokkos/kokkos-kernels/archive/3.1.00.tar.gz", + ) + version( + "3.0.00", + sha256="e4b832aed3f8e785de24298f312af71217a26067aea2de51531e8c1e597ef0e6", + url="https://github.com/kokkos/kokkos-kernels/archive/3.0.00.tar.gz", + ) depends_on("cxx", type="build") # generated diff --git a/var/spack/repos/builtin/packages/kokkos/package.py b/var/spack/repos/builtin/packages/kokkos/package.py index fe9989afb5f8d6..7eeac574d9d3e9 100644 --- a/var/spack/repos/builtin/packages/kokkos/package.py +++ b/var/spack/repos/builtin/packages/kokkos/package.py @@ -15,7 +15,7 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): homepage = "https://github.com/kokkos/kokkos" git = "https://github.com/kokkos/kokkos.git" - url = "https://github.com/kokkos/kokkos/archive/3.6.00.tar.gz" + url = "https://github.com/kokkos/kokkos/releases/download/4.4.01/kokkos-4.4.01.tar.gz" tags = ["e4s"] @@ -27,30 +27,120 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): version("master", branch="master") version("develop", branch="develop") - version("4.4.01", sha256="3f7096d17eaaa4004c7497ac082bf1ae3ff47b5104149e54af021a89414c3682") - version("4.4.00", sha256="c638980cb62c34969b8c85b73e68327a2cb64f763dd33e5241f5fd437170205a") - version("4.3.01", sha256="5998b7c732664d6b5e219ccc445cd3077f0e3968b4be480c29cd194b4f45ec70") - version("4.3.00", sha256="53cf30d3b44dade51d48efefdaee7a6cf109a091b702a443a2eda63992e5fe0d") - version("4.2.01", sha256="cbabbabba021d00923fb357d2e1b905dda3838bd03c885a6752062fe03c67964") - version("4.2.00", sha256="ac08765848a0a6ac584a0a46cd12803f66dd2a2c2db99bb17c06ffc589bf5be8") - version("4.1.00", sha256="cf725ea34ba766fdaf29c884cfe2daacfdc6dc2d6af84042d1c78d0f16866275") - version("4.0.01", sha256="bb942de8afdd519fd6d5d3974706bfc22b6585a62dd565c12e53bdb82cd154f0") - version("4.0.00", sha256="1829a423883d4b44223c7c3a53d3c51671145aad57d7d23e6a1a4bebf710dcf6") - version("3.7.02", sha256="5024979f06bc8da2fb696252a66297f3e0e67098595a0cc7345312b3b4aa0f54") - version("3.7.01", sha256="0481b24893d1bcc808ec68af1d56ef09b82a1138a1226d6be27c3b3c3da65ceb") - version("3.7.00", sha256="62e3f9f51c798998f6493ed36463f66e49723966286ef70a9dcba329b8443040") - version("3.6.01", sha256="1b80a70c5d641da9fefbbb652e857d7c7a76a0ebad1f477c253853e209deb8db") - version("3.6.00", sha256="53b11fffb53c5d48da5418893ac7bc814ca2fde9c86074bdfeaa967598c918f4") - version("3.5.00", sha256="748f06aed63b1e77e3653cd2f896ef0d2c64cb2e2d896d9e5a57fec3ff0244ff") - version("3.4.01", sha256="146d5e233228e75ef59ca497e8f5872d9b272cb93e8e9cdfe05ad34a23f483d1") - version("3.4.00", sha256="2e4438f9e4767442d8a55e65d000cc9cde92277d415ab4913a96cd3ad901d317") - version("3.3.01", sha256="4919b00bb7b6eb80f6c335a32f98ebe262229d82e72d3bae6dd91aaf3d234c37") - version("3.3.00", sha256="170b9deaa1943185e928f8fcb812cd4593a07ed7d220607467e8f0419e147295") - version("3.2.01", sha256="9e27a3d8f81559845e190d60f277d84d6f558412a3df3301d9545e91373bcaf1") - version("3.2.00", sha256="05e1b4dd1ef383ca56fe577913e1ff31614764e65de6d6f2a163b2bddb60b3e9") - version("3.1.01", sha256="ff5024ebe8570887d00246e2793667e0d796b08c77a8227fe271127d36eec9dd") - version("3.1.00", sha256="b935c9b780e7330bcb80809992caa2b66fd387e3a1c261c955d622dae857d878") - version("3.0.00", sha256="c00613d0194a4fbd0726719bbed8b0404ed06275f310189b3493f5739042a92b") + + version("4.4.01", sha256="3413f0cb39912128d91424ebd92e8832009e7eeaf6fa8da58e99b0d37860d972") + version("4.4.00", sha256="0b46372f38c48aa088411ac1b7c173a5c90f0fdb69ab40271827688fc134f58b") + + version( + "4.3.01", + sha256="5998b7c732664d6b5e219ccc445cd3077f0e3968b4be480c29cd194b4f45ec70", + url="https://github.com/kokkos/kokkos/archive/4.3.01.tar.gz", + ) + version( + "4.3.00", + sha256="53cf30d3b44dade51d48efefdaee7a6cf109a091b702a443a2eda63992e5fe0d", + url="https://github.com/kokkos/kokkos/archive/4.3.00.tar.gz", + ) + version( + "4.2.01", + sha256="cbabbabba021d00923fb357d2e1b905dda3838bd03c885a6752062fe03c67964", + url="https://github.com/kokkos/kokkos/archive/4.2.01.tar.gz", + ) + version( + "4.2.00", + sha256="ac08765848a0a6ac584a0a46cd12803f66dd2a2c2db99bb17c06ffc589bf5be8", + url="https://github.com/kokkos/kokkos/archive/4.2.00.tar.gz", + ) + version( + "4.1.00", + sha256="cf725ea34ba766fdaf29c884cfe2daacfdc6dc2d6af84042d1c78d0f16866275", + url="https://github.com/kokkos/kokkos/archive/4.1.00.tar.gz", + ) + version( + "4.0.01", + sha256="bb942de8afdd519fd6d5d3974706bfc22b6585a62dd565c12e53bdb82cd154f0", + url="https://github.com/kokkos/kokkos/archive/4.0.01.tar.gz", + ) + version( + "4.0.00", + sha256="1829a423883d4b44223c7c3a53d3c51671145aad57d7d23e6a1a4bebf710dcf6", + url="https://github.com/kokkos/kokkos/archive/4.0.00.tar.gz", + ) + version( + "3.7.02", + sha256="5024979f06bc8da2fb696252a66297f3e0e67098595a0cc7345312b3b4aa0f54", + url="https://github.com/kokkos/kokkos/archive/3.7.02.tar.gz", + ) + version( + "3.7.01", + sha256="0481b24893d1bcc808ec68af1d56ef09b82a1138a1226d6be27c3b3c3da65ceb", + url="https://github.com/kokkos/kokkos/archive/3.7.01.tar.gz", + ) + version( + "3.7.00", + sha256="62e3f9f51c798998f6493ed36463f66e49723966286ef70a9dcba329b8443040", + url="https://github.com/kokkos/kokkos/archive/3.7.00.tar.gz", + ) + version( + "3.6.01", + sha256="1b80a70c5d641da9fefbbb652e857d7c7a76a0ebad1f477c253853e209deb8db", + url="https://github.com/kokkos/kokkos/archive/3.6.01.tar.gz", + ) + version( + "3.6.00", + sha256="53b11fffb53c5d48da5418893ac7bc814ca2fde9c86074bdfeaa967598c918f4", + url="https://github.com/kokkos/kokkos/archive/3.6.00.tar.gz", + ) + version( + "3.5.00", + sha256="748f06aed63b1e77e3653cd2f896ef0d2c64cb2e2d896d9e5a57fec3ff0244ff", + url="https://github.com/kokkos/kokkos/archive/3.5.00.tar.gz", + ) + version( + "3.4.01", + sha256="146d5e233228e75ef59ca497e8f5872d9b272cb93e8e9cdfe05ad34a23f483d1", + url="https://github.com/kokkos/kokkos/archive/3.4.01.tar.gz", + ) + version( + "3.4.00", + sha256="2e4438f9e4767442d8a55e65d000cc9cde92277d415ab4913a96cd3ad901d317", + url="https://github.com/kokkos/kokkos/archive/3.4.00.tar.gz", + ) + version( + "3.3.01", + sha256="4919b00bb7b6eb80f6c335a32f98ebe262229d82e72d3bae6dd91aaf3d234c37", + url="https://github.com/kokkos/kokkos/archive/3.3.01.tar.gz", + ) + version( + "3.3.00", + sha256="170b9deaa1943185e928f8fcb812cd4593a07ed7d220607467e8f0419e147295", + url="https://github.com/kokkos/kokkos/archive/3.3.00.tar.gz", + ) + version( + "3.2.01", + sha256="9e27a3d8f81559845e190d60f277d84d6f558412a3df3301d9545e91373bcaf1", + url="https://github.com/kokkos/kokkos/archive/3.2.01.tar.gz", + ) + version( + "3.2.00", + sha256="05e1b4dd1ef383ca56fe577913e1ff31614764e65de6d6f2a163b2bddb60b3e9", + url="https://github.com/kokkos/kokkos/archive/3.2.00.tar.gz", + ) + version( + "3.1.01", + sha256="ff5024ebe8570887d00246e2793667e0d796b08c77a8227fe271127d36eec9dd", + url="https://github.com/kokkos/kokkos/archive/3.1.01.tar.gz", + ) + version( + "3.1.00", + sha256="b935c9b780e7330bcb80809992caa2b66fd387e3a1c261c955d622dae857d878", + url="https://github.com/kokkos/kokkos/archive/3.1.00.tar.gz", + ) + version( + "3.0.00", + sha256="c00613d0194a4fbd0726719bbed8b0404ed06275f310189b3493f5739042a92b", + url="https://github.com/kokkos/kokkos/archive/3.0.00.tar.gz", + ) depends_on("cxx", type="build") # Kokkos requires a C++ compiler @@ -69,6 +159,10 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): conflicts("+rocm", when="@:3.0") conflicts("+sycl", when="@:3.3") conflicts("+openmptarget", when="@:3.5") + conflicts( + "".join([f"~{d}" for d in devices_variants]), + msg="Kokkos requires at least one active backend", + ) # https://github.com/spack/spack/issues/29052 conflicts("@:3.5 +sycl", when="%oneapi@2022:") @@ -212,10 +306,17 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): depends_on(tpl, when="+%s" % tpl) variant("wrapper", default=False, description="Use nvcc-wrapper for CUDA build") + variant( + "cmake_lang", + default=False, + description="Use CMake language support for CUDA/HIP", + when="@3.6:", + ) depends_on("kokkos-nvcc-wrapper", when="+wrapper") depends_on("kokkos-nvcc-wrapper@develop", when="@develop+wrapper") depends_on("kokkos-nvcc-wrapper@master", when="@master+wrapper") conflicts("+wrapper", when="~cuda") + conflicts("+wrapper", when="+cmake_lang") cxxstds = ["11", "14", "17", "20"] variant("cxxstd", default="17", values=cxxstds, multi=False, description="C++ standard") @@ -227,6 +328,10 @@ class Kokkos(CMakePackage, CudaPackage, ROCmPackage): conflicts("+cuda", when="cxxstd=17 ^cuda@:10") conflicts("+cuda", when="cxxstd=20 ^cuda@:11") + # Expose a way to disable CudaMallocAsync that can cause problems + # with some MPI such as cray-mpich + variant("alloc_async", default=False, description="Use CudaMallocAsync", when="@4.2: +cuda") + # SYCL and OpenMPTarget require C++17 or higher for cxxstdver in cxxstds[: cxxstds.index("17")]: conflicts( @@ -292,7 +397,7 @@ def append_args(self, cmake_prefix, cmake_options, spack_options): variant_to_cmake_option = {"rocm": "hip"} for variant_name in cmake_options: opt = variant_to_cmake_option.get(variant_name, variant_name) - optname = "Kokkos_%s_%s" % (cmake_prefix, opt.upper()) + optname = f"Kokkos_{cmake_prefix}_{opt.upper()}" # Explicitly enable or disable option = self.define_from_variant(optname, variant_name) if option: @@ -309,14 +414,17 @@ def cmake_args(self): from_variant = self.define_from_variant if spec.satisfies("~wrapper+cuda") and not ( - spec.satisfies("%clang") or spec.satisfies("%cce") + spec.satisfies("%clang") or spec.satisfies("%cce") or spec.satisfies("+cmake_lang") ): - raise InstallError("Kokkos requires +wrapper when using +cuda" "without clang") + raise InstallError( + "Kokkos requires +wrapper when using +cuda without %clang, %cce or +cmake_lang" + ) options = [ from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), from_variant("CMAKE_CXX_STANDARD", "cxxstd"), from_variant("BUILD_SHARED_LIBS", "shared"), + from_variant("Kokkos_ENABLE_COMPILE_AS_CMAKE_LANGUAGE", "cmake_lang"), ] spack_microarches = [] @@ -360,23 +468,34 @@ def cmake_args(self): if spec.variants[tpl].value: options.append(self.define(tpl + "_DIR", spec[tpl].prefix)) - if self.spec.satisfies("+rocm"): - options.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) - options.append(self.define("Kokkos_ENABLE_ROCTHRUST", True)) - elif self.spec.satisfies("+wrapper"): + if self.spec.satisfies("+wrapper"): options.append( self.define("CMAKE_CXX_COMPILER", self.spec["kokkos-nvcc-wrapper"].kokkos_cxx) ) + elif "+rocm" in self.spec: + if "+cmake_lang" in self.spec: + options.append( + self.define( + "CMAKE_HIP_COMPILER", + join_path(self.spec["llvm-amdgpu"].prefix.bin, "amdclang++"), + ) + ) + options.append(from_variant("CMAKE_HIP_STANDARD", "cxxstd")) + else: + options.append(self.define("CMAKE_CXX_COMPILER", self.spec["hip"].hipcc)) + options.append(self.define("Kokkos_ENABLE_ROCTHRUST", True)) + elif "+cuda" in self.spec and "+cmake_lang" in self.spec: + options.append( + self.define("CMAKE_CUDA_COMPILER", join_path(self.spec["cuda"].prefix.bin, "nvcc")) + ) + options.append(from_variant("CMAKE_CUDA_STANDARD", "cxxstd")) if self.spec.satisfies("%oneapi") or self.spec.satisfies("%intel"): options.append(self.define("CMAKE_CXX_FLAGS", "-fp-model=precise")) - # Kokkos 4.2.00+ changed the default to Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC=on - # which breaks GPU-aware with Cray-MPICH - # See https://github.com/kokkos/kokkos/pull/6402 - # TODO: disable this once Cray-MPICH is fixed - if self.spec.satisfies("@4.2.00:") and self.spec.satisfies("^[virtuals=mpi] cray-mpich"): - options.append(self.define("Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC", False)) + options.append( + self.define_from_variant("Kokkos_ENABLE_IMPL_CUDA_MALLOC_ASYNC", "alloc_async") + ) # Remove duplicate options return lang.dedupe(options) @@ -414,7 +533,7 @@ def test_run(self): cmake = self.spec["cmake"].command cmake_args = ["-DEXECUTABLE_OUTPUT_PATH=" + cmake_path] if self.spec.satisfies("+rocm"): - prefix_paths = ";".join(spack.build_environment.get_cmake_prefix_path(self)) + prefix_paths = ";".join(spack.build_systems.cmake.get_cmake_prefix_path(self)) cmake_args.append("-DCMAKE_PREFIX_PATH={0}".format(prefix_paths)) cmake(cmake_path, *cmake_args) diff --git a/var/spack/repos/builtin/packages/krb5/package.py b/var/spack/repos/builtin/packages/krb5/package.py index cbe034fcae0ecc..af52da5396c193 100644 --- a/var/spack/repos/builtin/packages/krb5/package.py +++ b/var/spack/repos/builtin/packages/krb5/package.py @@ -106,7 +106,7 @@ def patch(self): def configure_args(self): spec = self.spec - args = ["--without-system-verto"] + args = ["--without-system-verto", "--without-keyutils"] if spec.satisfies("~shared"): args.append("--enable-static") diff --git a/var/spack/repos/builtin/packages/kvtree/package.py b/var/spack/repos/builtin/packages/kvtree/package.py index 68328da1975431..865c712c14ca3c 100644 --- a/var/spack/repos/builtin/packages/kvtree/package.py +++ b/var/spack/repos/builtin/packages/kvtree/package.py @@ -20,6 +20,7 @@ class Kvtree(CMakePackage): license("MIT") version("main", branch="main") + version("1.5.0", sha256="9617948bdb905615aeb0604d4998d92eb970ecd5c9c851116266972462f0b350") version("1.4.0", sha256="48a36fd578f0d1198a9c1512d6446c830b915ace5bb97539eec615495bee5a51") version("1.3.0", sha256="8281e075772d3534183c46133553d5765455d79ed98a895743663db891755ca9") version("1.2.0", sha256="ecd4b8bc479c33ab4f23fc764445a3bb353a1d15c208d011f5577a32c182477f") diff --git a/var/spack/repos/builtin/packages/lammps/package.py b/var/spack/repos/builtin/packages/lammps/package.py index 7486b5272196ef..6b8287b49ce2d4 100644 --- a/var/spack/repos/builtin/packages/lammps/package.py +++ b/var/spack/repos/builtin/packages/lammps/package.py @@ -6,6 +6,7 @@ import os from spack.build_environment import optimization_flags +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -30,10 +31,15 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension): # marked deprecated=True # * patch releases older than a stable release should be marked deprecated=True version("develop", branch="develop") + version( + "20240829.1", + sha256="3aea41869aa2fb8120fc4814cab645686f969e2eb7c66aa5587e500597d482dc", + preferred=True, + ) version( "20240829", sha256="6112e0cc352c3140a4874c7f74db3c0c8e30134024164509ecf3772b305fde2e", - preferred=True, + deprecated=True, ) version( "20240627", @@ -403,6 +409,7 @@ class Lammps(CMakePackage, CudaPackage, ROCmPackage, PythonExtension): depends_on("fortran", type="build", when=f"+{fc_pkg}") stable_versions = { + "20240829.1", "20240829", "20230802.4", "20230802.3", @@ -635,6 +642,13 @@ def url_for_version(self, version): values=("kiss", "fftw3", "mkl"), multi=False, ) + variant( + "heffte", + default=False, + when="+kspace @20240207:", + description="Use heffte as distubuted FFT engine", + ) + variant( "fft_kokkos", default="fftw3", @@ -653,15 +667,18 @@ def url_for_version(self, version): ) variant("tools", default=False, description="Build LAMMPS tools (msi2lmp, binary2txt, chain)") - depends_on("cmake@3.16:", when="@20231121:") + depends_on("cmake@3.16:", when="@20231121:", type="build") depends_on("mpi", when="+mpi") depends_on("mpi", when="+mpiio") depends_on("fftw-api@3", when="+kspace fft=fftw3") + depends_on("heffte", when="+heffte") + depends_on("heffte+fftw", when="+heffte fft=fftw3") + depends_on("heffte+mkl", when="+heffte fft=mkl") depends_on("mkl", when="+kspace fft=mkl") depends_on("hipfft", when="+kokkos+kspace+rocm fft_kokkos=hipfft") depends_on("fftw-api@3", when="+kokkos+kspace fft_kokkos=fftw3") depends_on("mkl", when="+kokkos+kspace fft_kokkos=mkl") - depends_on("voropp+pic", when="+voronoi") + depends_on("voropp", when="+voronoi") depends_on("netcdf-c+mpi", when="+user-netcdf") depends_on("netcdf-c+mpi", when="+netcdf") depends_on("blas", when="+user-atc") @@ -884,11 +901,16 @@ def cmake_args(self): "-O3 -fno-math-errno -fno-unroll-loops " "-fveclib=AMDLIBM -muse-unaligned-vector-move" ) - if spec.satisfies("%aocc@4.1:"): + if spec.satisfies("%aocc@4.1:4.2"): cxx_flags += ( " -mllvm -force-gather-overhead-cost=50" " -mllvm -enable-masked-gather-sequence=false" ) + elif spec.satisfies("%aocc@5.0:"): + cxx_flags += " -mllvm -enable-aggressive-gather" + if spec.target >= "zen5": + cxx_flags += " -fenable-restrict-based-lv" + # add -fopenmp-simd if OpenMP not already turned on if spec.satisfies("~openmp"): cxx_flags += " -fopenmp-simd" @@ -916,6 +938,7 @@ def cmake_args(self): if spec.satisfies("+kspace"): args.append(self.define_from_variant("FFT", "fft")) + args.append(self.define_from_variant("FFT_USE_HEFFTE", "heffte")) if spec.satisfies("fft=fftw3 ^armpl-gcc") or spec.satisfies("fft=fftw3 ^acfl"): args.append(self.define("FFTW3_LIBRARY", self.spec["fftw-api"].libs[0])) args.append( @@ -981,5 +1004,4 @@ def install_python(self): os.environ["LAMMPS_VERSION_FILE"] = join_path( self.stage.source_path, "src", "version.h" ) - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/lapackpp/package.py b/var/spack/repos/builtin/packages/lapackpp/package.py index db32de97e15430..a97579255586c5 100644 --- a/var/spack/repos/builtin/packages/lapackpp/package.py +++ b/var/spack/repos/builtin/packages/lapackpp/package.py @@ -11,6 +11,7 @@ _versions = [ # LAPACK++, BLAS++ ["master", "master"], + ["2024.10.26", "2024.10.26"], ["2024.05.31", "2024.05.31"], ["2023.11.05", "2023.11.05"], ["2023.08.25", "2023.08.25"], @@ -37,6 +38,9 @@ class Lapackpp(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("master", branch="master") + version( + "2024.10.26", sha256="67f81f585a7ac89b779c79297cab75cc23d2492cb5055c2348381ebdb751821d" + ) version( "2024.05.31", sha256="093646d492a4c2c6b4d7001effb559c80da7fa31fd5ba517a6d686ca8c78cd99" ) diff --git a/var/spack/repos/builtin/packages/legion/package.py b/var/spack/repos/builtin/packages/legion/package.py index 74f46d380ae1f3..4e1a9cccf7ff1b 100644 --- a/var/spack/repos/builtin/packages/legion/package.py +++ b/var/spack/repos/builtin/packages/legion/package.py @@ -310,6 +310,12 @@ def validate_gasnet_root(value): "sysomp", default=False, description="Use system OpenMP implementation instead of Realm's" ) + def flag_handler(self, name, flags): + if name == "cxxflags": + if self.spec.satisfies("%oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") + return (flags, None, None) + def cmake_args(self): spec = self.spec from_variant = self.define_from_variant diff --git a/var/spack/repos/builtin/packages/less/package.py b/var/spack/repos/builtin/packages/less/package.py index 3e4b402deec5b0..8e974da266dcbc 100644 --- a/var/spack/repos/builtin/packages/less/package.py +++ b/var/spack/repos/builtin/packages/less/package.py @@ -17,9 +17,13 @@ class Less(AutotoolsPackage): depends_on("ncurses") - license("GPL-3.0-or-later OR BSD-2-Clause") + license("GPL-3.0-or-later OR BSD-2-Clause", checked_by="wdconinc") + version("668", sha256="dbc0de59ea9c50e1e8927e6b077858db3a84954e767909bc599e6e6f602c5717") + version("661", sha256="a900e3916738bf8c1a0a2a059810f1c59b8271ac8bb46898c6e921ea6aefd757") version("643", sha256="3bb417c4b909dfcb0adafc371ab87f0b22e8b15f463ec299d156c495fc9aa196") - version("590", sha256="69056021c365b16504cf5bd3864436a5e50cb2f98b76cd68b99b457064139375") - version("551", sha256="2630db16ef188e88b513b3cc24daa9a798c45643cc7da06e549c9c00cfd84244") - version("530", sha256="8c1652ba88a726314aa2616d1c896ca8fe9a30253a5a67bc21d444e79a6c6bc3") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-46663 + version("590", sha256="69056021c365b16504cf5bd3864436a5e50cb2f98b76cd68b99b457064139375") + version("551", sha256="2630db16ef188e88b513b3cc24daa9a798c45643cc7da06e549c9c00cfd84244") + version("530", sha256="8c1652ba88a726314aa2616d1c896ca8fe9a30253a5a67bc21d444e79a6c6bc3") diff --git a/var/spack/repos/builtin/packages/libavif/package.py b/var/spack/repos/builtin/packages/libavif/package.py new file mode 100644 index 00000000000000..5889f39d407059 --- /dev/null +++ b/var/spack/repos/builtin/packages/libavif/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Libavif(CMakePackage): + """libavif - Library for encoding and decoding .avif files.""" + + homepage = "https://github.com/AOMediaCodec/libavif" + url = "https://github.com/AOMediaCodec/libavif/archive/refs/tags/v1.1.1.tar.gz" + + license("bsd-2-clause") + + version("1.1.1", sha256="914662e16245e062ed73f90112fbb4548241300843a7772d8d441bb6859de45b") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("cmake@3.13:", type="build") + + def cmake_args(self): + return [ + self.define("AVIF_JPEG", False), + self.define("AVIF_LIBYUV", False), + self.define("AVIF_ZLIBPNG", False), + ] diff --git a/var/spack/repos/builtin/packages/libcatalyst/package.py b/var/spack/repos/builtin/packages/libcatalyst/package.py index 6bfc26cf93d33f..bf10c56b430ecf 100644 --- a/var/spack/repos/builtin/packages/libcatalyst/package.py +++ b/var/spack/repos/builtin/packages/libcatalyst/package.py @@ -27,6 +27,7 @@ class Libcatalyst(CMakePackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated + depends_on("pkgconfig", type="build") variant("mpi", default=False, description="Enable MPI support") variant("conduit", default=False, description="Use external Conduit for Catalyst") diff --git a/var/spack/repos/builtin/packages/libcgroup/package.py b/var/spack/repos/builtin/packages/libcgroup/package.py index 98779767171266..67cd8e8ec24899 100644 --- a/var/spack/repos/builtin/packages/libcgroup/package.py +++ b/var/spack/repos/builtin/packages/libcgroup/package.py @@ -9,17 +9,20 @@ class Libcgroup(AutotoolsPackage): """Library of control groups.""" - homepage = "https://sourceforge.net/projects/libcg/" - url = "https://sourceforge.net/projects/libcg/files/libcgroup/v0.41/libcgroup-0.41.tar.bz2" + homepage = "https://github.com/libcgroup/libcgroup/" + url = "https://github.com/libcgroup/libcgroup/releases/download/v3.1.0/libcgroup-3.1.0.tar.gz" license("LGPL-2.1-only") - version("0.41", sha256="e4e38bdc7ef70645ce33740ddcca051248d56b53283c0dc6d404e17706f6fb51") - version("0.37", sha256="15c8f3febb546530d3495af4e4904b3189c273277ca2d8553dec882cde1cd0f6") - version("0.36", sha256="8dcd2ae220435b3de736d3efb0023fdf1192d7a7f4032b439f3cf5342cff7b4c") + version("3.1.0", sha256="976ec4b1e03c0498308cfd28f1b256b40858f636abc8d1f9db24f0a7ea9e1258") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2018-14348 + version("0.41", sha256="e4e38bdc7ef70645ce33740ddcca051248d56b53283c0dc6d404e17706f6fb51") + version("0.37", sha256="15c8f3febb546530d3495af4e4904b3189c273277ca2d8553dec882cde1cd0f6") + version("0.36", sha256="8dcd2ae220435b3de736d3efb0023fdf1192d7a7f4032b439f3cf5342cff7b4c") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("m4", type="build") depends_on("autoconf", type="build") @@ -28,3 +31,10 @@ class Libcgroup(AutotoolsPackage): depends_on("bison", type="build") depends_on("flex", type="build") depends_on("linux-pam") + depends_on("systemd", when="@3.1:") + + def url_for_version(self, version): + if self.spec.satisfies("@2.0.1:"): + return f"https://github.com/libcgroup/libcgroup/releases/download/v{version}/libcgroup-{version}.tar.gz" + else: + return f"https://github.com/libcgroup/libcgroup/releases/download/v{version}/libcgroup-{version}.tar.bz2" diff --git a/var/spack/repos/builtin/packages/libmng/package.py b/var/spack/repos/builtin/packages/libmng/package.py index 3a5f6cb27d29fc..d3b59562f47c25 100644 --- a/var/spack/repos/builtin/packages/libmng/package.py +++ b/var/spack/repos/builtin/packages/libmng/package.py @@ -3,10 +3,13 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import spack.build_systems +import spack.build_systems.autotools +import spack.build_systems.cmake from spack.package import * -class Libmng(CMakePackage): +class Libmng(CMakePackage, AutotoolsPackage): """THE reference library for reading, displaying, writing and examining Multiple-Image Network Graphics. MNG is the animation extension to the popular PNG image format.""" @@ -26,9 +29,24 @@ class Libmng(CMakePackage): depends_on("zlib-api") depends_on("lcms") + build_system("cmake", "autotools", default="cmake") + def patch(self): # jpeg requires stdio to be included before its headers. filter_file(r"^(\#include \)", "#include\n\\1", "libmng_types.h") + +class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): def cmake_args(self): return ["-DWITH_LCMS2:BOOL=ON", "-DWITH_LCMS1:BOOL=OFF"] + + +class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): + @run_before("configure") + def clean_preconf(self): + """Required, otherwise configure will crash as subdirectories have + already been configured""" + make("distclean") + + def configure_args(self): + return ["--with-lcms2", "--without-lcms1"] diff --git a/var/spack/repos/builtin/packages/libpspio/package.py b/var/spack/repos/builtin/packages/libpspio/package.py index b462c5c58c21c1..130cebd07c21cb 100644 --- a/var/spack/repos/builtin/packages/libpspio/package.py +++ b/var/spack/repos/builtin/packages/libpspio/package.py @@ -16,6 +16,7 @@ class Libpspio(AutotoolsPackage): license("MPL-2.0") + version("0.4.1", sha256="e4f87f6d8821042db3a88dad60ae07278e36ad2571e28f5d30f02d8b164b4daa") version("0.3.0", sha256="4dc092457e481e5cd703eeecd87e6f17749941fe274043550c8a2557a649afc5") depends_on("c", type="build") # generated diff --git a/var/spack/repos/builtin/packages/librdkafka/package.py b/var/spack/repos/builtin/packages/librdkafka/package.py index dbc42080596d39..df90516c227e8d 100644 --- a/var/spack/repos/builtin/packages/librdkafka/package.py +++ b/var/spack/repos/builtin/packages/librdkafka/package.py @@ -15,6 +15,8 @@ class Librdkafka(AutotoolsPackage): license("BSD-2-Clause") + version("2.6.0", sha256="abe0212ecd3e7ed3c4818a4f2baf7bf916e845e902bb15ae48834ca2d36ac745") + version("2.5.3", sha256="eaa1213fdddf9c43e28834d9a832d9dd732377d35121e42f875966305f52b8ff") version("2.2.0", sha256="af9a820cbecbc64115629471df7c7cecd40403b6c34bfdbb9223152677a47226") version("2.1.1", sha256="7be1fc37ab10ebdc037d5c5a9b35b48931edafffae054b488faaff99e60e0108") version("2.1.0", sha256="d8e76c4b1cde99e283a19868feaaff5778aa5c6f35790036c5ef44bc5b5187aa") @@ -29,3 +31,6 @@ class Librdkafka(AutotoolsPackage): depends_on("zstd") depends_on("lz4") + depends_on("curl") + depends_on("openssl") + depends_on("zlib") diff --git a/var/spack/repos/builtin/packages/libssh2/package.py b/var/spack/repos/builtin/packages/libssh2/package.py index 23dc57ce2deaff..754d593c4b1305 100644 --- a/var/spack/repos/builtin/packages/libssh2/package.py +++ b/var/spack/repos/builtin/packages/libssh2/package.py @@ -14,6 +14,7 @@ class Libssh2(AutotoolsPackage, CMakePackage): license("BSD-3-Clause") + version("1.11.1", sha256="d9ec76cbe34db98eec3539fe2c899d26b0c837cb3eb466a56b0f109cabf658f7") version("1.11.0", sha256="3736161e41e2693324deb38c26cfdc3efe6209d634ba4258db1cecff6a5ad461") version("1.10.0", sha256="2d64e90f3ded394b91d3a2e774ca203a4179f69aebee03003e5a6fa621e41d51") version("1.9.0", sha256="d5fb8bd563305fd1074dda90bd053fb2d29fc4bce048d182f96eaa466dfadafd") @@ -23,8 +24,7 @@ class Libssh2(AutotoolsPackage, CMakePackage): "1.4.3", sha256="eac6f85f9df9db2e6386906a6227eb2cd7b3245739561cad7d6dc1d5d021b96d" ) # CentOS7 - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") build_system("autotools", "cmake", default="autotools") @@ -53,7 +53,7 @@ class Libssh2(AutotoolsPackage, CMakePackage): # and fails to prepend the -L flags, which is causing issues in libgit2, as # it tries to locate e.g. libssl in the dirs of the pc file's -L flags, and # cannot find the lib. - patch("pr-1114.patch", when="@1.7:") + patch("pr-1114.patch", when="@1.7:1.11.0") class CMakeBuilder(spack.build_systems.cmake.CMakeBuilder): @@ -77,14 +77,27 @@ def cmake_args(self): class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): def configure_args(self): - args = ["--disable-tests", "--disable-docker-tests", "--disable-examples-build"] - args += self.enable_or_disable("shared") + args = [ + "--disable-tests", + "--disable-docker-tests", + "--disable-examples-build", + "--without-libgcrypt", + "--without-wincng", + *self.enable_or_disable("shared"), + ] crypto = self.spec.variants["crypto"].value - if crypto == "openssl": - args.append(f"--with-libssl-prefix={self.spec['openssl'].prefix}") - elif crypto == "mbedtls": - args.append(f"--with-libmbedcrypto-prefix={self.spec['mbedtls'].prefix}") + if self.spec.satisfies("@1.9:"): + # single flag for all crypto backends + args.append(f"--with-crypto={crypto}") + else: + # one flag per crypto backend + if crypto == "openssl": + args.append(f"--with-libssl-prefix={self.spec['openssl'].prefix}") + args.append("--without-mbedtls") + elif crypto == "mbedtls": + args.append(f"--with-libmbedcrypto-prefix={self.spec['mbedtls'].prefix}") + args.append("--without-openssl") return args diff --git a/var/spack/repos/builtin/packages/libunwind/package.py b/var/spack/repos/builtin/packages/libunwind/package.py index 22e324af08c973..74fe99c514347f 100644 --- a/var/spack/repos/builtin/packages/libunwind/package.py +++ b/var/spack/repos/builtin/packages/libunwind/package.py @@ -11,25 +11,23 @@ class Libunwind(AutotoolsPackage): the call-chain of a program.""" homepage = "https://www.nongnu.org/libunwind/" - url = "http://download.savannah.gnu.org/releases/libunwind/libunwind-1.1.tar.gz" + url = "https://github.com/libunwind/libunwind/releases/download/v0.0.0/libunwind-0.0.0.tar.gz" git = "https://github.com/libunwind/libunwind" maintainers("mwkrentel") license("MIT") version("master", branch="master") + version("1.8-stable", branch="v1.8-stable") + version("1.8.1", sha256="ddf0e32dd5fafe5283198d37e4bf9decf7ba1770b6e7e006c33e6df79e6a6157") + version("1.7-stable", branch="v1.7-stable") + version("1.7.2", sha256="a18a6a24307443a8ace7a8acc2ce79fbbe6826cd0edf98d6326d0225d6a5d6e6") version("1.6-stable", branch="v1.6-stable") version("1.6.2", sha256="4a6aec666991fb45d0889c44aede8ad6eb108071c3554fcdff671f9c94794976") - version("1.5-stable", branch="v1.5-stable") version("1.5.0", sha256="90337653d92d4a13de590781371c604f9031cdb50520366aa1e3a91e1efb1017") version("1.4.0", sha256="df59c931bd4d7ebfd83ee481c943edf015138089b8e50abed8d9c57ba9338435") version("1.3.1", sha256="43997a3939b6ccdf2f669b50fdb8a4d3205374728c2923ddc2354c65260214f8") version("1.2.1", sha256="3f3ecb90e28cbe53fba7a4a27ccce7aad188d3210bb1964a923a731a27a75acb") - version( - "1.1", - sha256="9dfe0fcae2a866de9d3942c66995e4b460230446887dbdab302d41a8aee8d09a", - deprecated=True, - ) depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -83,7 +81,7 @@ class Libunwind(AutotoolsPackage): # The libunwind releases contain the autotools generated files, # but the git repo snapshots do not. - reconf_versions = "@master,1.5-stable,1.6-stable" + reconf_versions = "@master,1.6-stable,1.7-stable,1.8-stable" depends_on("autoconf", type="build", when=reconf_versions) depends_on("automake", type="build", when=reconf_versions) depends_on("libtool", type="build", when=reconf_versions) @@ -95,8 +93,21 @@ class Libunwind(AutotoolsPackage): conflicts("platform=darwin", msg="Non-GNU libunwind needs ELF libraries Darwin does not have") conflicts("%gcc@:4.9", when="@1.6:", msg="libunwind >=1.6 requires stdatomic.h") + # Introduced in https://github.com/libunwind/libunwind/pull/555, fixed in + # https://github.com/libunwind/libunwind/pull/723 + conflicts("target=ppc64:", when="@1.8") + conflicts("target=ppc64le:", when="@1.8") + + conflicts("target=aarch64:", when="@1.8:") + provides("unwind") + def url_for_version(self, version): + if version == Version("1.5.0"): + return f"https://github.com/libunwind/libunwind/releases/download/v{version.up_to(2)}/libunwind-{version}.tar.gz" + else: + return super().url_for_version(version) + def flag_handler(self, name, flags): wrapper_flags = [] diff --git a/var/spack/repos/builtin/packages/libva/package.py b/var/spack/repos/builtin/packages/libva/package.py new file mode 100644 index 00000000000000..538ca8914ea654 --- /dev/null +++ b/var/spack/repos/builtin/packages/libva/package.py @@ -0,0 +1,46 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class Libva(AutotoolsPackage): + """Libva is an implementation for VA-API (Video Acceleration API). + VA-API is an open-source library and API specification, which provides + access to graphics hardware acceleration capabilities for video + processing. It consists of a main library and driver-specific + acceleration backends for each supported hardware vendor.""" + + homepage = "https://github.com/intel/libva" + url = "https://github.com/intel/libva/archive/refs/tags/2.22.0.tar.gz" + + version("2.22.0", sha256="467c418c2640a178c6baad5be2e00d569842123763b80507721ab87eb7af8735") + + depends_on("c", type="build") + depends_on("cxx", type="build") + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + depends_on("m4", type="build") + depends_on("pkgconfig", type="build") + + depends_on("libdrm") + depends_on("libx11", when="^[virtuals=gl] glx") + depends_on("libxext", when="^[virtuals=gl] glx") + + def autoreconf(self, spec, prefix): + autogen = Executable("./autogen.sh") + autogen() + + def configure_args(self): + spec = self.spec + args = ["--disable-x11", "--disable-wayland", "--disable-glx", "--enable-libdrm"] + if spec.satisfies("^[virtuals=gl] glx"): + args.append("--enable-x11") + else: + args.append("--disable-x11") + return args diff --git a/var/spack/repos/builtin/packages/libvdwxc/package.py b/var/spack/repos/builtin/packages/libvdwxc/package.py index e0e7241d9516c6..f9d6a0d8452635 100644 --- a/var/spack/repos/builtin/packages/libvdwxc/package.py +++ b/var/spack/repos/builtin/packages/libvdwxc/package.py @@ -56,10 +56,8 @@ def configure_args(self): return args # misuse of fftw_plan in m4 for fftw detection (configure fails with gcc 14) - # two patches for (1) m4 macro from upstream and (2) pre-generated configure in tarball - patch( - "https://gitlab.com/libvdwxc/libvdwxc/-/commit/9340f857515c4a2e56d2aa7cf3a21c41ba8559c3.diff", - sha256="b9ad695e54a25d7ffa92f783bb0a31d3b421225f97958972e32ba42893844b80", - when="@:0.4.0", - ) + # Only the configure script is patched, NOT the m4 macro (to avoid depending on aclocal), + # so running autoreconf is not supported. + # The relevant upstream fix for the m4 would be: + # https://gitlab.com/libvdwxc/libvdwxc/-/commit/9340f857515c4a2e56d2aa7cf3a21c41ba8559c3.diff patch("fftw-detection.patch", when="@:0.4.0") diff --git a/var/spack/repos/builtin/packages/libxc/package.py b/var/spack/repos/builtin/packages/libxc/package.py index 84e6878512970c..46ff91c34f1378 100644 --- a/var/spack/repos/builtin/packages/libxc/package.py +++ b/var/spack/repos/builtin/packages/libxc/package.py @@ -15,6 +15,7 @@ class Libxc(AutotoolsPackage, CudaPackage): license("MPL-2.0-no-copyleft-exception") + version("7.0.0", sha256="8d4e343041c9cd869833822f57744872076ae709a613c118d70605539fb13a77") version("6.2.2", sha256="d1b65ef74615a1e539d87a0e6662f04baf3a2316706b4e2e686da3193b26b20f") version("6.2.1", sha256="da96fc4f6e4221734986f49758b410ffe1d406efd3538761062a4af57a2bd272") version("6.2.0", sha256="31edb72c69157b6c0beaff1f10cbbb6348ce7579ef81d8f286764e5ab61194d1") diff --git a/var/spack/repos/builtin/packages/libxml2/package.py b/var/spack/repos/builtin/packages/libxml2/package.py index c799095ab659fc..048debd6589a8d 100644 --- a/var/spack/repos/builtin/packages/libxml2/package.py +++ b/var/spack/repos/builtin/packages/libxml2/package.py @@ -30,19 +30,40 @@ def url_for_version(self, version): license("MIT") - version("2.10.3", sha256="5d2cc3d78bec3dbe212a9d7fa629ada25a7da928af432c93060ff5c17ee28a9c") - version("2.10.2", sha256="d240abe6da9c65cb1900dd9bf3a3501ccf88b3c2a1cb98317d03f272dda5b265") - version("2.10.1", sha256="21a9e13cc7c4717a6c36268d0924f92c3f67a1ece6b7ff9d588958a6db9fb9d8") - version("2.9.14", sha256="60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee") - version("2.9.13", sha256="276130602d12fe484ecc03447ee5e759d0465558fbc9d6bd144e3745306ebf0e") - version("2.9.12", sha256="c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92") - version("2.9.11", sha256="886f696d5d5b45d780b2880645edf9e0c62a4fd6841b853e824ada4e02b4d331") - version("2.9.10", sha256="aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f") - version("2.9.9", sha256="94fb70890143e3c6549f265cee93ec064c80a84c42ad0f23e85ee1fd6540a871") - version("2.9.8", sha256="0b74e51595654f958148759cfef0993114ddccccbb6f31aee018f3558e8e2732") - version("2.9.4", sha256="ffb911191e509b966deb55de705387f14156e1a56b21824357cdf0053233633c") - version("2.9.2", sha256="5178c30b151d044aefb1b08bf54c3003a0ac55c59c866763997529d60770d5bc") - version("2.7.8", sha256="cda23bc9ebd26474ca8f3d67e7d1c4a1f1e7106364b690d822e009fdc3c417ec") + version("2.13.4", sha256="65d042e1c8010243e617efb02afda20b85c2160acdbfbcb5b26b80cec6515650") + version("2.12.9", sha256="59912db536ab56a3996489ea0299768c7bcffe57169f0235e7f962a91f483590") + version("2.11.9", sha256="780157a1efdb57188ec474dca87acaee67a3a839c2525b2214d318228451809f") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-25062 + version( + "2.10.3", sha256="5d2cc3d78bec3dbe212a9d7fa629ada25a7da928af432c93060ff5c17ee28a9c" + ) + version( + "2.10.2", sha256="d240abe6da9c65cb1900dd9bf3a3501ccf88b3c2a1cb98317d03f272dda5b265" + ) + version( + "2.10.1", sha256="21a9e13cc7c4717a6c36268d0924f92c3f67a1ece6b7ff9d588958a6db9fb9d8" + ) + version( + "2.9.14", sha256="60d74a257d1ccec0475e749cba2f21559e48139efba6ff28224357c7c798dfee" + ) + version( + "2.9.13", sha256="276130602d12fe484ecc03447ee5e759d0465558fbc9d6bd144e3745306ebf0e" + ) + version( + "2.9.12", sha256="c8d6681e38c56f172892c85ddc0852e1fd4b53b4209e7f4ebf17f7e2eae71d92" + ) + version( + "2.9.11", sha256="886f696d5d5b45d780b2880645edf9e0c62a4fd6841b853e824ada4e02b4d331" + ) + version( + "2.9.10", sha256="aafee193ffb8fe0c82d4afef6ef91972cbaf5feea100edc2f262750611b4be1f" + ) + version("2.9.9", sha256="94fb70890143e3c6549f265cee93ec064c80a84c42ad0f23e85ee1fd6540a871") + version("2.9.8", sha256="0b74e51595654f958148759cfef0993114ddccccbb6f31aee018f3558e8e2732") + version("2.9.4", sha256="ffb911191e509b966deb55de705387f14156e1a56b21824357cdf0053233633c") + version("2.9.2", sha256="5178c30b151d044aefb1b08bf54c3003a0ac55c59c866763997529d60770d5bc") + version("2.7.8", sha256="cda23bc9ebd26474ca8f3d67e7d1c4a1f1e7106364b690d822e009fdc3c417ec") depends_on("c", type="build") # generated diff --git a/var/spack/repos/builtin/packages/libxsmm/package.py b/var/spack/repos/builtin/packages/libxsmm/package.py index 16fb0dbeffdbdf..14e287a918547a 100644 --- a/var/spack/repos/builtin/packages/libxsmm/package.py +++ b/var/spack/repos/builtin/packages/libxsmm/package.py @@ -28,7 +28,11 @@ class Libxsmm(MakefilePackage): version("main-2023-11", commit="0d9be905527ba575c14ca5d3b4c9673916c868b2") version("main", branch="main") version("1.17-cp2k", commit="6f883620f58afdeebab28039fc9cf580e76a5ec6") - version("1.17", sha256="8b642127880e92e8a75400125307724635ecdf4020ca4481e5efe7640451bb92") + version( + "1.17", + sha256="8b642127880e92e8a75400125307724635ecdf4020ca4481e5efe7640451bb92", + preferred=True, + ) version("1.16.3", sha256="e491ccadebc5cdcd1fc08b5b4509a0aba4e2c096f53d7880062a66b82a0baf84") version("1.16.2", sha256="bdc7554b56b9e0a380fc9c7b4f4394b41be863344858bc633bc9c25835c4c64e") version("1.16.1", sha256="93dc7a3ec40401988729ddb2c6ea2294911261f7e6cd979cf061b5c3691d729d") diff --git a/var/spack/repos/builtin/packages/linaro-forge/package.py b/var/spack/repos/builtin/packages/linaro-forge/package.py index a673f275bd92fe..d1f862a5b86a37 100644 --- a/var/spack/repos/builtin/packages/linaro-forge/package.py +++ b/var/spack/repos/builtin/packages/linaro-forge/package.py @@ -23,6 +23,9 @@ class LinaroForge(Package): maintainers("kenche-linaro") if platform.machine() == "aarch64": + version( + "24.0.6", sha256="a7f9f71e4352be3680854611fe433a9974fcb8a327ac65ca3bc950c956eac6e4" + ) version( "24.0.5", sha256="fc0c80ce9f66c6966faaca77de0f13e26da564c853e5bfc1e8acd17b65bc2ba0" ) @@ -97,6 +100,9 @@ class LinaroForge(Package): "21.1.3", sha256="eecbc5686d60994c5468b2d7cd37bebe5d9ac0ba37bd1f98fbfc69b071db541e" ) elif platform.machine() == "x86_64": + version( + "24.0.6", sha256="eab198b964862b4664359ccbec1edb27c2dd3b9fa82bcb4e14fc616a2b0341da" + ) version( "24.0.5", sha256="da0d4d6fa9120b5e7c4a248795b7f5da32c4987588ecb7406213c8c9846af2bc" ) diff --git a/var/spack/repos/builtin/packages/linux-pam/package.py b/var/spack/repos/builtin/packages/linux-pam/package.py index 484e9e2cb9a5d2..265a96e4a6a678 100644 --- a/var/spack/repos/builtin/packages/linux-pam/package.py +++ b/var/spack/repos/builtin/packages/linux-pam/package.py @@ -31,6 +31,7 @@ class LinuxPam(AutotoolsPackage): variant("lastlog", default=False, description="Build pam_lastlog model") variant("regenerate-docu", default=False, description="Regenerate docs") + depends_on("pkgconfig", type="build") depends_on("libtirpc") depends_on("libxcrypt") depends_on("xauth", when="+xauth") diff --git a/var/spack/repos/builtin/packages/lksctp-tools/package.py b/var/spack/repos/builtin/packages/lksctp-tools/package.py index 1222dddffb42f3..e690b5a9be127d 100644 --- a/var/spack/repos/builtin/packages/lksctp-tools/package.py +++ b/var/spack/repos/builtin/packages/lksctp-tools/package.py @@ -14,6 +14,7 @@ class LksctpTools(AutotoolsPackage): license("GPL-2.0-or-later AND LGPL-2.1-or-later") + version("1.0.21", sha256="8738bf17ecffbbe2440a6e2ffaf1cbcebb633fc99d63d88761af35c02a571893") version("1.0.18", sha256="3e9ab5b3844a8b65fc8152633aafe85f406e6da463e53921583dfc4a443ff03a") depends_on("c", type="build") # generated diff --git a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py index bfa175a8df89a0..6c98043a3add54 100644 --- a/var/spack/repos/builtin/packages/llvm-amdgpu/package.py +++ b/var/spack/repos/builtin/packages/llvm-amdgpu/package.py @@ -20,7 +20,7 @@ class LlvmAmdgpu(CMakePackage, CompilerPackage): executables = [r"amdclang", r"amdclang\+\+", r"amdflang", r"clang.*", r"flang.*", "llvm-.*"] generator("ninja") - maintainers("srekolam", "renjithravindrankannath", "haampie") + maintainers("srekolam", "renjithravindrankannath", "haampie", "afzpatel") license("Apache-2.0") @@ -78,6 +78,7 @@ class LlvmAmdgpu(CMakePackage, CompilerPackage): depends_on("z3", type="link") depends_on("zlib-api", type="link") depends_on("ncurses+termlib", type="link") + depends_on("libxml2", type="link") depends_on("pkgconfig", type="build") # This flavour of LLVM doesn't work on MacOS, so we should ensure that it @@ -222,12 +223,16 @@ def cmake_args(self): self.define("LIBCXXABI_ENABLE_STATIC", "ON"), self.define("LIBCXXABI_INSTALL_STATIC_LIBRARY", "OFF"), self.define("LLVM_ENABLE_RTTI", "ON"), - self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;X86"), self.define("LLVM_AMDGPU_ALLOW_NPI_TARGETS", "ON"), self.define("PACKAGE_VENDOR", "AMD"), self.define("CLANG_ENABLE_AMDCLANG", "ON"), ] + if self.spec.target.family == "aarch64": + args.append(self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;AArch64")) + else: + args.append(self.define("LLVM_TARGETS_TO_BUILD", "AMDGPU;X86")) + # Enable rocm-device-libs as a external project if self.spec.satisfies("+rocm-device-libs"): if self.spec.satisfies("@:6.0"): @@ -319,6 +324,5 @@ def post_install(self): def setup_dependent_build_environment(self, env, dependent_spec): for root, _, files in os.walk(self.spec["llvm-amdgpu"].prefix): if "libclang_rt.asan-x86_64.so" in files: - asan_lib_path = root - env.prepend_path("LD_LIBRARY_PATH", asan_lib_path) + env.prepend_path("LD_LIBRARY_PATH", root) env.prune_duplicate_paths("LD_LIBRARY_PATH") diff --git a/var/spack/repos/builtin/packages/llvm/package.py b/var/spack/repos/builtin/packages/llvm/package.py index 297cda2ad1a3fb..61f66f3f9dc3b9 100644 --- a/var/spack/repos/builtin/packages/llvm/package.py +++ b/var/spack/repos/builtin/packages/llvm/package.py @@ -28,7 +28,7 @@ def filter_detected_exes(cls, prefix, exes_in_prefix): # Executables like lldb-vscode-X are daemon listening on some port and would hang Spack # during detection. clang-cl, clang-cpp, etc. are dev tools that we don't need to test reject = re.compile( - r"-(vscode|cpp|cl|gpu|tidy|rename|scan-deps|format|refactor|offload|" + r"-(vscode|cpp|cl|ocl|gpu|tidy|rename|scan-deps|format|refactor|offload|" r"check|query|doc|move|extdef|apply|reorder|change-namespace|" r"include-fixer|import-test|dap|server)" ) @@ -56,6 +56,9 @@ class Llvm(CMakePackage, CudaPackage, LlvmDetection, CompilerPackage): license("Apache-2.0") version("main", branch="main") + version("19.1.3", sha256="e5106e2bef341b3f5e41340e4b6c6a58259f4021ad801acf14e88f1a84567b05") + version("19.1.2", sha256="622cb6c5e95a3bb7e9876c4696a65671f235bd836cfd0c096b272f6c2ada41e7") + version("19.1.1", sha256="115dfd98a353d05bffdab3f80db22f159da48aca0124e8c416f437adcd54b77f") version("19.1.0", sha256="0a08341036ca99a106786f50f9c5cb3fbe458b3b74cab6089fd368d0edb2edfe") version("18.1.8", sha256="09c08693a9afd6236f27a2ebae62cda656eba19021ef3f94d59e931d662d4856") version("18.1.7", sha256="b60df7cbe02cef2523f7357120fb0d46cbb443791cde3a5fb36b82c335c0afc9") diff --git a/var/spack/repos/builtin/packages/logstash/package.py b/var/spack/repos/builtin/packages/logstash/package.py index 5f6318faa03bef..4ad690c764d89f 100644 --- a/var/spack/repos/builtin/packages/logstash/package.py +++ b/var/spack/repos/builtin/packages/logstash/package.py @@ -15,12 +15,24 @@ class Logstash(Package): """ homepage = "https://artifacts.elastic.co" - url = "https://artifacts.elastic.co/downloads/logstash/logstash-6.6.0.tar.gz" + url = "https://artifacts.elastic.co/downloads/logstash/logstash-8.15.2-linux-x86_64.tar.gz" - version("6.6.0", sha256="5a9a8b9942631e9d4c3dfb8d47075276e8c2cff343841145550cc0c1cfe7bba7") + version("8.15.2", sha256="fc75c8cad1016b07f7aeeeeb7ea23f4195ab1beee2ced282f11ff6d0e84f7e51") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2019-7612 + version("6.6.0", sha256="5a9a8b9942631e9d4c3dfb8d47075276e8c2cff343841145550cc0c1cfe7bba7") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("java@11:") + + def url_for_version(self, version): + if self.spec.satisfies("@:6"): + return f"https://artifacts.elastic.co/downloads/logstash/logstash-{version}.tar.gz" + else: + return f"https://artifacts.elastic.co/downloads/logstash/logstash-{version}-linux-x86_64.tar.gz" def install(self, spec, prefix): install_tree(".", prefix) + + def setup_run_environment(self, env): + # do not use the bundled jdk + env.set("LS_JAVA_HOME", self.spec["java"].home) diff --git a/var/spack/repos/builtin/packages/loki/package.py b/var/spack/repos/builtin/packages/loki/package.py index 91bf32a1dec74e..360d2ad587d3ef 100644 --- a/var/spack/repos/builtin/packages/loki/package.py +++ b/var/spack/repos/builtin/packages/loki/package.py @@ -24,6 +24,8 @@ class Loki(MakefilePackage): def flag_handler(self, name, flags): if name == "cxxflags": + if self.spec.satisfies("%oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") if self.spec.satisfies("%oneapi@2023.0.0:"): flags.append("-Wno-error=dynamic-exception-spec") if self.spec.satisfies("@0.1.7 %gcc@11:"): diff --git a/var/spack/repos/builtin/packages/lua-luaposix/package.py b/var/spack/repos/builtin/packages/lua-luaposix/package.py index 04bc97d6e490b1..579b172ce33523 100644 --- a/var/spack/repos/builtin/packages/lua-luaposix/package.py +++ b/var/spack/repos/builtin/packages/lua-luaposix/package.py @@ -23,6 +23,7 @@ class LuaLuaposix(LuaPackage): version("33.4.0", sha256="e66262f5b7fe1c32c65f17a5ef5ffb31c4d1877019b4870a5d373e2ab6526a21") version("33.2.1", sha256="4fb34dfea67f4cf3194cdecc6614c9aea67edc3c4093d34137669ea869c358e1") - depends_on("c", type="build") # generated + depends_on("c", type="build") + depends_on("libxcrypt", when="platform=linux") depends_on("lua-bit32", when="^lua-lang@5.1") diff --git a/var/spack/repos/builtin/packages/lua/package.py b/var/spack/repos/builtin/packages/lua/package.py index 683657882359f0..8f791b5cd867b7 100644 --- a/var/spack/repos/builtin/packages/lua/package.py +++ b/var/spack/repos/builtin/packages/lua/package.py @@ -12,6 +12,23 @@ from spack.package import * from spack.util.executable import Executable +# This is the template for a pkgconfig file for rpm +# https://github.com/guix-mirror/guix/raw/dcaf70897a0bad38a4638a2905aaa3c46b1f1402/gnu/packages/patches/lua-pkgconfig.patch +_LUA_PC_TEMPLATE = """prefix={0} +libdir={0}/lib +includedir={0}/include +bindir={0}/bin +INSTALL_LMOD={0}/share/lua/{1} +INSTALL_CMOD={0}/lib/lua/{1} +INTERPRETER=${{bindir}}/lua +COMPILER=${{bindir}}/luac +Name: Lua +Description: A powerful, fast, lightweight, embeddable scripting language +Version: {2} +Libs: -L${{libdir}} -llua -lm +Cflags: -I${{includedir}} +""" + class LuaImplPackage(MakefilePackage): """Specialized class for lua *implementations* @@ -226,7 +243,6 @@ class Lua(LuaImplPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - variant("pcfile", default=False, description="Add patch for lua.pc generation") variant("shared", default=True, description="Builds a shared version of the library") provides("lua-lang@5.1", when="@5.1:5.1.99") @@ -237,12 +253,6 @@ class Lua(LuaImplPackage): depends_on("ncurses+termlib") depends_on("readline") - patch( - "http://lua.2524044.n2.nabble.com/attachment/7666421/0/pkg-config.patch", - sha256="208316c2564bdd5343fa522f3b230d84bd164058957059838df7df56876cb4ae", - when="+pcfile @:5.3.9999", - ) - def build(self, spec, prefix): if spec.satisfies("platform=darwin"): target = "macosx" @@ -289,10 +299,10 @@ def install(self, spec, prefix): os.symlink(src_path, dest_path) @run_after("install") - def link_pkg_config(self): - if self.spec.satisfies("+pcfile"): - versioned_pc_file_name = "lua{0}.pc".format(self.version.up_to(2)) - symlink( - join_path(self.prefix.lib, "pkgconfig", versioned_pc_file_name), - join_path(self.prefix.lib, "pkgconfig", "lua.pc"), - ) + def generate_pkg_config(self): + mkdirp(self.prefix.lib.pkgconfig) + versioned_pc_file_name = "lua{0}.pc".format(self.version.up_to(2)) + versioned_pc_file_path = join_path(self.prefix.lib.pkgconfig, versioned_pc_file_name) + with open(versioned_pc_file_path, "w") as pcfile: + pcfile.write(_LUA_PC_TEMPLATE.format(self.prefix, self.version.up_to(2), self.version)) + symlink(versioned_pc_file_path, join_path(self.prefix.lib.pkgconfig, "lua.pc")) diff --git a/var/spack/repos/builtin/packages/lwgrp/package.py b/var/spack/repos/builtin/packages/lwgrp/package.py index 79a55066209442..eb0dc95ed764f1 100644 --- a/var/spack/repos/builtin/packages/lwgrp/package.py +++ b/var/spack/repos/builtin/packages/lwgrp/package.py @@ -17,6 +17,7 @@ class Lwgrp(AutotoolsPackage): maintainers("CamStan", "gonsie", "adammoody") version("main", branch="main") + version("1.0.6", sha256="9f697978361b4bd9914beaaafffcee0b62a480a9a7dd3d75176910cebda81438") version("1.0.5", sha256="16b579e13b8a5218f4fe1b8715f6aafb09133a0cefbcd6b2eaf73802955dee6b") version("1.0.4", sha256="0c933df7658660a0225f8e3a940eb2621efa4421397859417c8d90d906d4e90a") version("1.0.3", sha256="20b2fc3908bfdf04d1c177f86e227a147214cd155c548b3dd75e54c78e1c1c47") diff --git a/var/spack/repos/builtin/packages/lz4/package.py b/var/spack/repos/builtin/packages/lz4/package.py index 375e75aa699840..5063dccdc9c02d 100644 --- a/var/spack/repos/builtin/packages/lz4/package.py +++ b/var/spack/repos/builtin/packages/lz4/package.py @@ -94,7 +94,7 @@ def setup_build_environment(self, env): def build(self, pkg, spec, prefix): par = True - if spec.compiler.name == "nvhpc": + if spec.satisfies("%nvhpc"): # relocation error when building shared and dynamic libs in # parallel par = False diff --git a/var/spack/repos/builtin/packages/magma/package.py b/var/spack/repos/builtin/packages/magma/package.py index 86be7b09d97db6..ee0397b66f7a4f 100644 --- a/var/spack/repos/builtin/packages/magma/package.py +++ b/var/spack/repos/builtin/packages/magma/package.py @@ -67,6 +67,7 @@ class Magma(CMakePackage, CudaPackage, ROCmPackage): "6.1.1", "6.1.2", "6.2.0", + "6.2.1", ]: depends_on(f"rocm-core@{ver}", when=f"@2.8.0: +rocm ^hip@{ver}") depends_on("python", when="@master", type="build") @@ -167,7 +168,7 @@ def cmake_args(self): if "@2.5.0" in spec: options.append(define("MAGMA_SPARSE", False)) - if spec.compiler.name in ["xl", "xl_r"]: + if spec.satisfies("%xl") or spec.satisfies("%xl_r"): options.append(define("CMAKE_DISABLE_FIND_PACKAGE_OpenMP", True)) if "+rocm" in spec: diff --git a/var/spack/repos/builtin/packages/mapl/package.py b/var/spack/repos/builtin/packages/mapl/package.py index ed7898a9369776..9f31c3be66fbb2 100644 --- a/var/spack/repos/builtin/packages/mapl/package.py +++ b/var/spack/repos/builtin/packages/mapl/package.py @@ -38,10 +38,14 @@ class Mapl(CMakePackage): version("develop", branch="develop") version("main", branch="main") + version("2.50.2", sha256="1c72f8598cf01bab6ef30c1f461444ba5a13f55c61164b7b3c15efb0cd1096c0") + version("2.50.1", sha256="26dd7a3ec82d484d60a559bb90a20ad9a2a717af52c25b6a752dd971aeeb5075") version("2.50.0", sha256="12282e547936f667f85c95d466273dcbaccbd600add72fa5981c0c734ccb1f7d") version("2.49.1", sha256="975e349c7ff8be65d4e63f2a6adf74ca96127628505dbce16c7ba7a3901edc70") version("2.49.0", sha256="fdf4d48bd38abd1059180b123c5d9fdc2781992c783244ddc51ab0f2ef63dd67") version("2.48.0", sha256="60a0fc4fd82b1a05050666ae478da7d79d86305aff1643a57bc09cb5347323b7") + version("2.47.1.2", sha256="ae9032b4c833887b9ddc932ea9eb7e59e713829f6c39f3152fee4caf2f3ba21f") + version("2.47.1.1", sha256="9553e91e0325dfe57856564e9970b3871069f902fb109fcced6ad87151f95be7") version("2.47.2", sha256="d4ca384bf249b755454cd486a26bae76944a7cae3a706b9a7c9298825077cac0") version("2.47.1", sha256="ca3e94c0caa78a91591fe63603d1836196f5294d4baad7cf1d83b229b3a85916") version("2.47.0", sha256="66c862d2ab8bcd6969e9728091dbca54f1f420e97e41424c4ba93ef606088459") diff --git a/var/spack/repos/builtin/packages/margo/package.py b/var/spack/repos/builtin/packages/margo/package.py deleted file mode 100644 index 399b38d63af4c8..00000000000000 --- a/var/spack/repos/builtin/packages/margo/package.py +++ /dev/null @@ -1,135 +0,0 @@ -# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other -# Spack Project Developers. See the top-level COPYRIGHT file for details. -# -# SPDX-License-Identifier: (Apache-2.0 OR MIT) - -from spack.package import * - - -class Margo(AutotoolsPackage): - """A library that provides Argobots bindings to the Mercury RPC - implementation. This name will be deprecated soon; please use the - mochi-margo package instead.""" - - homepage = "https://github.com/mochi-hpc/mochi-margo" - git = "https://github.com/mochi-hpc/mochi-margo.git" - url = "https://github.com/mochi-hpc/mochi-margo/archive/v0.9.tar.gz" - - maintainers("carns", "mdorier", "fbudin69500") - - version("master", branch="master", deprecated=True) - version( - "0.9.1", - sha256="3fe933f2d758ef23d582bc776e4f8cfae9bf9d0849b8b1f9d73ee024e218f2bc", - deprecated=True, - ) - version( - "0.9", - sha256="a24376f66450cc8fd7a43043e189f8efce5a931585e53c1e2e41894a3e99b517", - deprecated=True, - ) - version( - "0.7", - sha256="492d1afe2e7984fa638614a5d34486d2ff761f5599b5984efd5ae3f55cafde54", - deprecated=True, - ) - version( - "0.7.2", - sha256="0ca796abdb82084813a5de033d92364910b5ad1a0df135534d6b1c36ef627859", - deprecated=True, - ) - version( - "0.7.1", - sha256="eebbe02c47ed4c65ef1d4f23ffdc6a8aa2e2348ca6c51bfc3c4dfbf78fbfc30b", - deprecated=True, - ) - version( - "0.6", - sha256="56feb718da2b155d7277a7b10b669516ebffaa034f811f3665ceed7ad0f19d1b", - deprecated=True, - ) - version( - "0.6.4", - sha256="5ba1c72ee05aa9738d3dc4d6d01bd59790284c6c77b909c5d7756fe7049d6177", - deprecated=True, - ) - version( - "0.6.3", - sha256="5f373cd554edd15cead58bd5d30093bd88d45039d06ff7738eb18b3674287c76", - deprecated=True, - ) - version( - "0.6.2", - sha256="c6a6909439e1d3ba1a1693d8da66057eb7e4ec4b239c04bc7f19fc487c4c58da", - deprecated=True, - ) - version( - "0.6.1", - sha256="80d8d15d0917b5522c31dc2d83136de2313d50ca05c71c5e5ad83c483a3214b7", - deprecated=True, - ) - version( - "0.5", - sha256="d3b768b8300bc2cb87964e74c39b4e8eb9822d8a2e56fc93dc475ddcb1a868e3", - deprecated=True, - ) - version( - "0.5.2", - sha256="73be3acaf012a85a91ac62824c93f5ee1ea0ffe4c25779ece19723f4baf9547d", - deprecated=True, - ) - version( - "0.5.1", - sha256="6fdf58e189538e22341c8361ab069fc80fe5460a6869882359b295a890febad7", - deprecated=True, - ) - version( - "0.4.7", - sha256="596d83b11fb2bd9950fd99c9ab12c14915ab2cda233084ae40ecae1e6c584333", - deprecated=True, - ) - version( - "0.4.6", - sha256="b27447a2050ae61091bae3ff6b4d23a56153947f18847face9f98facbdb4e329", - deprecated=True, - ) - version( - "0.4.5", - sha256="b0d02f73edf180f2393f54c5a980620b8d6dcd42b90efdea6866861824fa49cf", - deprecated=True, - ) - version( - "0.4.4", - sha256="2e2e6e2a8a7d7385e2fe204c113cb149f30847f0b1f48ec8dd708a74280bd89e", - deprecated=True, - ) - version( - "0.4.3", - sha256="61a634d6983bee2ffa06e1e2da4c541cb8f56ddd9dd9f8e04e8044fb38657475", - deprecated=True, - ) - version( - "0.4.2", - sha256="91085e28f50e373b9616e1ae5c3c8d40a19a7d3776259592d8f361766890bcaa", - deprecated=True, - ) - - depends_on("c", type="build") # generated - - depends_on("json-c", when="@0.9:") - depends_on("autoconf@2.65:", type=("build")) - depends_on("m4", type=("build")) - depends_on("automake", type=("build")) - depends_on("libtool", type=("build")) - depends_on("pkgconfig", type=("build")) - depends_on("argobots@1.0:") - # "breadcrumb" support not available in mercury-1.0 - depends_on("mercury@1.0.0:", type=("build", "link", "run"), when="@:0.5.1") - depends_on("mercury@2.0.0:", type=("build", "link", "run"), when="@0.5.2:") - - # dependencies for develop version - depends_on("mercury@master", type=("build", "link", "run"), when="@develop") - - def autoreconf(self, spec, prefix): - sh = which("sh") - sh("./prepare.sh") diff --git a/var/spack/repos/builtin/packages/masa/package.py b/var/spack/repos/builtin/packages/masa/package.py index 3145f4d4f2e6f1..c7086a54a1a887 100644 --- a/var/spack/repos/builtin/packages/masa/package.py +++ b/var/spack/repos/builtin/packages/masa/package.py @@ -19,20 +19,27 @@ class Masa(AutotoolsPackage): license("LGPL-2.1-or-later") version("master", branch="master") + version("0.51.0", tag="0.51.0") + version("0.50.0", tag="0.50.0") + version("0.44.0", tag="0.44.0") + version("0.43.1", tag="0.43.1") + version("0.43.0", tag="0.43.0") + version("0.42.0", tag="0.42.0") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+fortran") - variant("fortran", default=True, description="Compile with Fortran interfaces") - variant("python", default=True, description="Compile with Python interfaces") + variant("fortran", default=False, description="Compile with Fortran interfaces") + variant("python", default=False, description="Compile with Python interfaces") + depends_on("gettext") + depends_on("metaphysicl") + depends_on("python") depends_on("autoconf", type="build") depends_on("automake", type="build") depends_on("libtool", type="build") - depends_on("swig", type="build") - depends_on("python", when="+python") - depends_on("metaphysicl") + depends_on("swig", type="build", when="+python") def configure_args(self): options = [] diff --git a/var/spack/repos/builtin/packages/mbedtls/package.py b/var/spack/repos/builtin/packages/mbedtls/package.py index 73f463239d026c..2478192bc48f66 100644 --- a/var/spack/repos/builtin/packages/mbedtls/package.py +++ b/var/spack/repos/builtin/packages/mbedtls/package.py @@ -18,13 +18,18 @@ class Mbedtls(MakefilePackage): maintainers("haampie") - license("Apache-2.0 OR GPL-2.0-or-later") + license("Apache-2.0 OR GPL-2.0-or-later", checked_by="wdconinc") # version 3.x - version("3.6.0", sha256="3ecf94fcfdaacafb757786a01b7538a61750ebd85c4b024f56ff8ba1490fcd38") - version("3.3.0", sha256="a22ff38512697b9cd8472faa2ea2d35e320657f6d268def3a64765548b81c3ec") + version("3.6.2", sha256="8b54fb9bcf4d5a7078028e0520acddefb7900b3e66fec7f7175bb5b7d85ccdca") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-45159 + version("3.6.1", sha256="fc8bef0991b43629b7e5319de6f34f13359011105e08e3e16eed3a9fe6ffd3a3") + version("3.6.0", sha256="3ecf94fcfdaacafb757786a01b7538a61750ebd85c4b024f56ff8ba1490fcd38") + version("3.3.0", sha256="a22ff38512697b9cd8472faa2ea2d35e320657f6d268def3a64765548b81c3ec") # version 2.x + version("2.28.9", sha256="e85ea97aaf78dd6c0a5ba2e54dd5932ffa15f39abfc189c26beef7684630c02b") version("2.28.8", sha256="241c68402cef653e586be3ce28d57da24598eb0df13fcdea9d99bfce58717132") version("2.28.2", sha256="1db6d4196178fa9f8264bef5940611cd9febcd5d54ec05f52f1e8400f792b5a4") version("2.7.19", sha256="3da12b1cebe1a25da8365d5349f67db514aefcaa75e26082d7cb2fa3ce9608aa") @@ -79,7 +84,10 @@ class Mbedtls(MakefilePackage): def url_for_version(self, version): if self.spec.satisfies("@:2.28.7,3:3.5"): return f"https://github.com/Mbed-TLS/mbedtls/archive/refs/tags/v{version}.tar.gz" - return f"https://github.com/Mbed-TLS/mbedtls/releases/download/v{version}/mbedtls-{version}.tar.bz2" + if self.spec.satisfies("@2.28.8,3.6.0"): + return f"https://github.com/Mbed-TLS/mbedtls/releases/download/v{version}/mbedtls-{version}.tar.bz2" + # release tags for @2.28.9:2,3.6.1: + return f"https://github.com/Mbed-TLS/mbedtls/releases/download/mbedtls-{version}/mbedtls-{version}.tar.bz2" def flag_handler(self, name, flags): # Compile with PIC, if requested. diff --git a/var/spack/repos/builtin/packages/mcpp/package.py b/var/spack/repos/builtin/packages/mcpp/package.py index 0dd0562ee2d32d..f2ee6652a2c34d 100644 --- a/var/spack/repos/builtin/packages/mcpp/package.py +++ b/var/spack/repos/builtin/packages/mcpp/package.py @@ -12,11 +12,13 @@ class Mcpp(AutotoolsPackage, SourceforgePackage): homepage = "https://sourceforge.net/projects/mcpp/" sourceforge_mirror_path = "mcpp/mcpp/V.2.7.2/mcpp-2.7.2.tar.gz" + git = "https://github.com/jbrandwood/mcpp.git" + # Versions from `git describe --tags` + version("2.7.2-25-g619046f", commit="619046fa0debac3f86ff173098aeb59b8f051d19") version("2.7.2", sha256="3b9b4421888519876c4fc68ade324a3bbd81ceeb7092ecdbbc2055099fcb8864") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") def configure_args(self): config_args = ["--enable-mcpplib", "--disable-static"] diff --git a/var/spack/repos/builtin/packages/mgcfd-op2/package.py b/var/spack/repos/builtin/packages/mgcfd-op2/package.py index bec689e0cff69a..6eaa3b079479cb 100644 --- a/var/spack/repos/builtin/packages/mgcfd-op2/package.py +++ b/var/spack/repos/builtin/packages/mgcfd-op2/package.py @@ -43,21 +43,21 @@ def setup_build_environment(self, env): env.set("COMPILER", self.spec.compiler.name) # Set Fortran compiler to GCC if using Arm. - if self.spec.compiler.name == "arm": + if self.spec.satisfies("%arm"): env.set("OP2_F_COMPILER", "gnu") # This overrides a flag issue in downstream OP2. - if self.spec.compiler.name == "nvhpc": + if self.spec.satisfies("%nvhpc"): env.set("CFLAGS", "-O3 -DOMPI_SKIP_MPICXX -DMPICH_IGNORE_CXX_SEEK -DMPIPP_H") def edit(self, spec, prefix): # Makefile tweaks to ensure the correct compiler commands are called. makefile = FileFilter("Makefile") - if self.spec.compiler.name == "arm": + if self.spec.satisfies("%arm"): makefile.filter(r"CPP := clang", r"CPP := armclang") makefile.filter(r"-cxx=clang.*", "") - if self.spec.compiler.name == "nvhpc": + if self.spec.satisfies("%nvhpc"): makefile.filter("pgc", "nvc") @property diff --git a/var/spack/repos/builtin/packages/miniforge3/package.py b/var/spack/repos/builtin/packages/miniforge3/package.py index f690742acafb48..8f5d3c05e255ba 100644 --- a/var/spack/repos/builtin/packages/miniforge3/package.py +++ b/var/spack/repos/builtin/packages/miniforge3/package.py @@ -56,6 +56,21 @@ def install(self, spec, prefix): bash = which("bash") bash(script, "-b", "-f", "-p", self.prefix) + @run_after("install") + def patch_sbang(self): + # Conda replaces the full path to the Python executable with `/usr/bin/env python` + # if the full path exceeds 127 characters. This does however break `conda deactivate` + # because the wrong Python interpreter is used after activating an environment. + # The 127 character limit is not relevant in Spack as Spack will automatically + # use the `sbang` script to deal with the overly long sbang line. + filter_file( + r"#!/usr/bin/env python", rf"#!{self.prefix.bin.python}", self.prefix.bin.conda + ) + if "+mamba" in self.spec: + filter_file( + r"#!/usr/bin/env python", rf"#!{self.prefix.bin.python}", self.prefix.bin.mamba + ) + def setup_run_environment(self, env): filename = self.prefix.etc.join("profile.d").join("conda.sh") env.extend(EnvironmentModifications.from_sourcing_file(filename)) diff --git a/var/spack/repos/builtin/packages/minio/package.py b/var/spack/repos/builtin/packages/minio/package.py index ec216a538f91c1..185dbd881b506f 100644 --- a/var/spack/repos/builtin/packages/minio/package.py +++ b/var/spack/repos/builtin/packages/minio/package.py @@ -18,17 +18,23 @@ class Minio(MakefilePackage): license("AGPL-3.0-or-later") version( - "2020-07-13T18-09-56Z", - sha256="147fca3930389162cc7306a0fa5cf478ee2deba4b31a9317f3d35e82aa58d41e", - ) - version( - "2020-07-12T19-14-17Z", - sha256="bb8ba5d93215ab37788171d8b9ce68e78d64e7b7c74aea508c15958158d85b03", - ) - version( - "2020-07-02T00-15-09Z", - sha256="4255c4d95a3e010f16a3f1e974768dc68509075403a97a9b9882f7d9e89fedc5", + "2024-10-13T13-34-11Z", + sha256="53301a6822f8466da88e3b24252d2551c37e7f96e9d37a36121d0616a69af1dd", ) + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-24747 + version( + "2020-07-13T18-09-56Z", + sha256="147fca3930389162cc7306a0fa5cf478ee2deba4b31a9317f3d35e82aa58d41e", + ) + version( + "2020-07-12T19-14-17Z", + sha256="bb8ba5d93215ab37788171d8b9ce68e78d64e7b7c74aea508c15958158d85b03", + ) + version( + "2020-07-02T00-15-09Z", + sha256="4255c4d95a3e010f16a3f1e974768dc68509075403a97a9b9882f7d9e89fedc5", + ) depends_on("go", type="build") diff --git a/var/spack/repos/builtin/packages/minizip/package.py b/var/spack/repos/builtin/packages/minizip/package.py index 55aa8c2cea1925..af3ac94d21cfe2 100644 --- a/var/spack/repos/builtin/packages/minizip/package.py +++ b/var/spack/repos/builtin/packages/minizip/package.py @@ -14,10 +14,14 @@ class Minizip(AutotoolsPackage): license("Zlib") - version("1.2.11", sha256="c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1") + version("1.3.1", sha256="9a93b2b7dfdac77ceba5a558a580e74667dd6fede4585b91eefb60f03b72df23") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-37434 + version( + "1.2.11", sha256="c3e5e9fdd5004dcb542feda5ee4f0ff0744628baf8ed2dd5d66f8ca1197cb1a1" + ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") configure_directory = "contrib/minizip" @@ -28,8 +32,9 @@ class Minizip(AutotoolsPackage): depends_on("zlib-api") # error: implicit declaration of function 'mkdir' is invalid in C99 - patch("implicit.patch", when="%apple-clang@12:") - patch("implicit.patch", when="%gcc@7.3.0:") + with when("@:1.2.11"): + patch("implicit.patch", when="%apple-clang@12:") + patch("implicit.patch", when="%gcc@7.3.0:") # statically link to libz.a # https://github.com/Homebrew/homebrew-core/blob/master/Formula/minizip.rb diff --git a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch new file mode 100644 index 00000000000000..c12450b45164bb --- /dev/null +++ b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch @@ -0,0 +1,26 @@ +From bbfc08e034b80d8b8c6895cb74c38544ffa9a9b4 Mon Sep 17 00:00:00 2001 +From: sreenivasa murthy kolam +Date: Thu, 24 Oct 2024 14:01:27 +0000 +Subject: [PATCH] link with roctracer when building miopendriver for 6.1.0 + +--- + driver/CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt +index 7d4fdbb..31de1ba 100644 +--- a/driver/CMakeLists.txt ++++ b/driver/CMakeLists.txt +@@ -34,6 +34,9 @@ endif() + add_dependencies(MIOpenDriver generate_kernels) + target_include_directories(MIOpenDriver PRIVATE ../src/kernels) + target_link_libraries(MIOpenDriver MIOpen Threads::Threads) ++if(MIOPEN_USE_ROCTRACER) ++ target_link_libraries(MIOpenDriver ${rocTracer}) ++endif() + if(NOT MIOPEN_EMBED_DB STREQUAL "") + target_link_libraries(MIOpenDriver $ ) + endif() +-- +2.39.3 + diff --git a/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch new file mode 100644 index 00000000000000..fd8a3bb88c4abe --- /dev/null +++ b/var/spack/repos/builtin/packages/miopen-hip/0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch @@ -0,0 +1,26 @@ +From 5565f0bf0a8e7b8217ed1a943a4210fec303ec42 Mon Sep 17 00:00:00 2001 +From: sreenivasa murthy kolam +Date: Thu, 24 Oct 2024 13:55:01 +0000 +Subject: [PATCH] link with roctracer when building miopendriver + +--- + driver/CMakeLists.txt | 3 +++ + 1 file changed, 3 insertions(+) + +diff --git a/driver/CMakeLists.txt b/driver/CMakeLists.txt +index 8f19a90..6c701d6 100644 +--- a/driver/CMakeLists.txt ++++ b/driver/CMakeLists.txt +@@ -64,6 +64,9 @@ endif() + add_dependencies(MIOpenDriver generate_kernels) + target_include_directories(MIOpenDriver PRIVATE ../src/kernels) + target_link_libraries(MIOpenDriver MIOpen Threads::Threads roc::rocrand) ++if(MIOPEN_USE_ROCTRACER) ++ target_link_libraries(MIOpenDriver ${rocTracer}) ++endif() + if(NOT MIOPEN_EMBED_DB STREQUAL "") + target_link_libraries(MIOpenDriver $ ) + endif() +-- +2.39.3 + diff --git a/var/spack/repos/builtin/packages/miopen-hip/0002-add-include-dir-miopen-hip-6.1.0.patch b/var/spack/repos/builtin/packages/miopen-hip/0002-add-include-dir-miopen-hip-6.1.0.patch deleted file mode 100644 index 44e68e401c1cea..00000000000000 --- a/var/spack/repos/builtin/packages/miopen-hip/0002-add-include-dir-miopen-hip-6.1.0.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 1693afd9690b97fcceff09ffce765712e3c7361a Mon Sep 17 00:00:00 2001 -From: Renjith Ravindran -Date: Mon, 29 Apr 2024 08:01:47 +0000 -Subject: [PATCH] Adding roctracer-dev include and library path - ---- - src/CMakeLists.txt | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - -diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt -index 0741a60..84b6805 100644 ---- a/src/CMakeLists.txt -+++ b/src/CMakeLists.txt -@@ -739,6 +739,9 @@ if(WIN32) - endif() - - target_include_directories(MIOpen SYSTEM PUBLIC $) -+target_include_directories(MIOpen SYSTEM PUBLIC "${NLOHMANN_JSON_INCLUDE}") -+target_include_directories(MIOpen SYSTEM PUBLIC "${ROCTRACER_INCLUDE_DIR}") -+target_include_directories(MIOpen SYSTEM PUBLIC "${SQLITE_INCLUDE_DIR}") - # Workaround : change in rocm-cmake was causing linking error so had to add ${CMAKE_DL_LIBS} - # We can remove ${CMAKE_DL_LIBS} once root cause is identified. - target_link_libraries(MIOpen PRIVATE ${CMAKE_DL_LIBS} Threads::Threads BZip2::BZip2 ${MIOPEN_CK_LINK_FLAGS}) -@@ -861,7 +864,7 @@ if(NOT WIN32 AND NOT APPLE) - endif() - - if(MIOPEN_USE_ROCTRACER) -- target_link_libraries(MIOpen PRIVATE roctx64) -+ target_link_libraries(MIOpen PRIVATE "${ROCTRACER_LIB_DIR}/libroctx64.so") - endif() - - ############################################################ --- -2.31.1 - diff --git a/var/spack/repos/builtin/packages/miopen-hip/package.py b/var/spack/repos/builtin/packages/miopen-hip/package.py index 73c7d08c6c1da1..c9544379f46dae 100644 --- a/var/spack/repos/builtin/packages/miopen-hip/package.py +++ b/var/spack/repos/builtin/packages/miopen-hip/package.py @@ -63,7 +63,8 @@ class MiopenHip(CMakePackage): patch("miopen-hip-include-nlohmann-include-directory.patch", when="@5.4.0:5.7") patch("0002-add-include-dir-miopen-hip-6.0.0.patch", when="@6.0") - patch("0002-add-include-dir-miopen-hip-6.1.0.patch", when="@6.1") + patch("0001-link-with-roctracer-when-building-miopendriver-6.1.0.patch", when="@6.1") + patch("0001-link-with-roctracer-when-building-miopendriver-6.2.0.patch", when="@6.2:") patch( "https://github.com/ROCm/MIOpen/commit/f60aa1ff89f8fb596b4a6a4c70aa7d557803db87.patch?full_index=1", sha256="7f382c872d89f22da1ad499e85ffe9881cc7404c8465e42877a210a09382e2ea", @@ -135,7 +136,7 @@ class MiopenHip(CMakePackage): depends_on("nlohmann-json", type="link") depends_on(f"rocmlir@{ver}", when=f"@{ver}") for ver in ["6.0.0", "6.0.2", "6.1.0", "6.1.1", "6.1.2", "6.2.0", "6.2.1"]: - depends_on("roctracer-dev@" + ver, when="@" + ver) + depends_on(f"roctracer-dev@{ver}", when=f"@{ver}") for ver in ["6.1.0", "6.1.1", "6.1.2"]: depends_on("googletest") for ver in ["6.2.0", "6.2.1"]: @@ -200,19 +201,19 @@ def cmake_args(self): args.append(self.define("MIOPEN_USE_MLIR", "OFF")) if self.spec.satisfies("@5.7.0:"): args.append(self.define("MIOPEN_ENABLE_AI_IMMED_MODE_FALLBACK", "OFF")) - if self.spec.satisfies("@6:6.1"): + if self.spec.satisfies("@6.0"): args.append( "-DROCTRACER_INCLUDE_DIR={0}".format(self.spec["roctracer-dev"].prefix.include) ) args.append("-DROCTRACER_LIB_DIR={0}".format(self.spec["roctracer-dev"].prefix.lib)) - if self.spec.satisfies("@6.1"): args.append("-DSQLITE_INCLUDE_DIR={0}".format(self.spec["sqlite"].prefix.include)) - if self.spec.satisfies("@6.2:"): + if self.spec.satisfies("@6.1:"): + args.append(self.define("MIOPEN_USE_ROCTRACER", "ON")) args.append( self.define( "CMAKE_CXX_FLAGS", f"-I{self.spec['roctracer-dev'].prefix.include} " - f"-L{self.spec['roctracer-dev'].prefix.lib} " + f"-L{self.spec['roctracer-dev'].prefix.roctracer.lib} " f"-I{self.spec['nlohmann-json'].prefix.include} " f"-I{self.spec['sqlite'].prefix.include} ", ) diff --git a/var/spack/repos/builtin/packages/mivisionx/package.py b/var/spack/repos/builtin/packages/mivisionx/package.py index f3e565f99f40a9..332d9d4ca97d4b 100644 --- a/var/spack/repos/builtin/packages/mivisionx/package.py +++ b/var/spack/repos/builtin/packages/mivisionx/package.py @@ -15,7 +15,7 @@ class Mivisionx(CMakePackage): git = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX.git" url = "https://github.com/GPUOpen-ProfessionalCompute-Libraries/MIVisionX/archive/rocm-6.1.2.tar.gz" - maintainers("srekolam", "renjithravindrankannath") + maintainers("srekolam", "renjithravindrankannath", "afzpatel") tags = ["rocm"] def url_for_version(self, version): @@ -211,7 +211,7 @@ def patch(self): when="@5.3:", ) depends_on("openssl") - depends_on("libjpeg-turbo@2.0.6+partial_decoder", type="build") + depends_on("libjpeg-turbo@2.0.6+partial_decoder", type="build", when="@:6.2.0") depends_on("rpp@1.2.0", when="@5.5:5.6") depends_on("lmdb", when="@5.5:") depends_on("py-setuptools", when="@5.6:") diff --git a/var/spack/repos/builtin/packages/mmg/package.py b/var/spack/repos/builtin/packages/mmg/package.py index eb14be0c7761bf..38a8123516b31a 100644 --- a/var/spack/repos/builtin/packages/mmg/package.py +++ b/var/spack/repos/builtin/packages/mmg/package.py @@ -30,8 +30,11 @@ class Mmg(CMakePackage): homepage = "https://www.mmgtools.org/" url = "https://github.com/MmgTools/mmg/archive/v5.3.13.tar.gz" + maintainers("jcortial-safran") + license("LGPL-3.0-or-later") + version("5.8.0", sha256="686eaab84de79c072f3aedf26cd11ced44c84b435d51ce34e016ad203172922f") version("5.7.3", sha256="b0a9c5ad6789df369a68f94295df5b324b6348020b73bcc395d32fdd44abe706") version("5.7.2", sha256="4c396dd44aec69e0a171a04f857e28aad2e0bbfb733b48b6d81a2c6868e86840") version("5.7.1", sha256="27c09477ebc080f54919f76f8533a343936677c81809fe37ce4e2d62fa97237b") diff --git a/var/spack/repos/builtin/packages/mpidiff/package.py b/var/spack/repos/builtin/packages/mpidiff/package.py new file mode 100644 index 00000000000000..47ae0b8ee196c3 --- /dev/null +++ b/var/spack/repos/builtin/packages/mpidiff/package.py @@ -0,0 +1,39 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class Mpidiff(CMakePackage): + """Library for comparing numerical differences between binaries.""" + + homepage = "https://github.com/LLNL/MPIDiff" + url = "https://github.com/LLNL/MPIDiff/archive/refs/tags/v0.2.0.tar.gz" + + maintainers("adayton1") + + license("BSD-3-Clause", checked_by="alecbcs") + + version("0.2.0", sha256="726b59fe4af0bb0812fc34c456cb0d801e03313a8fdfb9dc63d23a9b316b6118") + + variant("docs", default=False, description="Build and include documentation") + variant("examples", default=False, description="Build and include examples") + variant("tests", default=False, description="Build tests") + + depends_on("cxx", type="build") + + depends_on("blt", type="build") + depends_on("mpi") + + def cmake_args(self): + spec = self.spec + return [ + self.define("MPI_DIR", spec["mpi"].prefix), + self.define("BLT_SOURCE_DIR", spec["blt"].prefix), + self.define_from_variant("MPIDIFF_ENABLE_DOCS", "docs"), + self.define_from_variant("MPIDIFF_ENABLE_EXAMPLES", "examples"), + self.define_from_variant("MPIDIFF_ENABLE_TESTS", "tests"), + ] diff --git a/var/spack/repos/builtin/packages/mxnet/package.py b/var/spack/repos/builtin/packages/mxnet/package.py index 084b1d241556da..690b3803aa3a9e 100644 --- a/var/spack/repos/builtin/packages/mxnet/package.py +++ b/var/spack/repos/builtin/packages/mxnet/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -126,5 +127,4 @@ def cmake_args(self): def install_python(self): if "+python" in self.spec: with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/mysql/package.py b/var/spack/repos/builtin/packages/mysql/package.py index 638ac397861e0d..9c19d2c55332d9 100644 --- a/var/spack/repos/builtin/packages/mysql/package.py +++ b/var/spack/repos/builtin/packages/mysql/package.py @@ -237,3 +237,12 @@ def setup_build_environment(self, env): if "python" in self.spec and self.spec.satisfies("@:7"): self._fix_dtrace_shebang(env) + + @run_before("install") + def fixup_mysqlconfig(self): + if not self.spec.satisfies("platform=windows"): + # mysql uses spack libz but exports -lzlib to its dependencies. Fix that: + with working_dir(self.build_directory): + for config in ("scripts/mysql_config", "scripts/mysqlclient.pc"): + if os.path.exists(config): + filter_file(" -lzlib ", " -lz ", config) diff --git a/var/spack/repos/builtin/packages/nalu-wind/package.py b/var/spack/repos/builtin/packages/nalu-wind/package.py index eb923367541098..f7a481f2d60fca 100644 --- a/var/spack/repos/builtin/packages/nalu-wind/package.py +++ b/var/spack/repos/builtin/packages/nalu-wind/package.py @@ -13,15 +13,6 @@ def _parse_float(val): return False -def submodules(package): - submodules = [] - if package.spec.satisfies("+wind-utils"): - submodules.append("wind-utils") - if package.spec.satisfies("+tests"): - submodules.append("reg_tests/mesh") - return submodules - - class NaluWind(CMakePackage, CudaPackage, ROCmPackage): """Nalu-Wind: Wind energy focused variant of Nalu.""" @@ -33,8 +24,9 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): tags = ["ecp", "ecp-apps"] - version("master", branch="master", submodules=submodules) - version("2.0.0", tag="v2.0.0", submodules=submodules) + version("master", branch="master", submodules=True) + version("2.1.0", tag="v2.1.0", submodules=True) + version("2.0.0", tag="v2.0.0", submodules=True) variant("pic", default=True, description="Position independent code") variant( @@ -65,9 +57,14 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): "tests", default=False, description="Enable regression tests and clone the mesh submodule" ) + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("fortran", type="build", when="+openfast") + depends_on("mpi") - depends_on("yaml-cpp@0.5.3:") + depends_on("yaml-cpp@0.6.0:0.7.0") depends_on("openfast@4.0.0:+cxx+netcdf", when="+fsi") + depends_on("trilinos@15.1.1", when="@=2.1.0") depends_on("trilinos@13.4.1", when="@=2.0.0") depends_on("hypre@2.29.0:", when="@2.0.0:+hypre") depends_on( @@ -96,16 +93,16 @@ class NaluWind(CMakePackage, CudaPackage, ROCmPackage): when="+cuda cuda_arch={0}".format(_arch), ) depends_on( - "hypre@develop +mpi+cuda~int64~superlu-dist cuda_arch={0}".format(_arch), + "hypre@2.30.0: +cuda cuda_arch={0}".format(_arch), when="+hypre+cuda cuda_arch={0}".format(_arch), ) for _arch in ROCmPackage.amdgpu_targets: depends_on( - "trilinos@13.4: ~shared+rocm+rocm_rdc amdgpu_target={0}".format(_arch), + "trilinos~shared+rocm+rocm_rdc amdgpu_target={0}".format(_arch), when="+rocm amdgpu_target={0}".format(_arch), ) depends_on( - "hypre+rocm amdgpu_target={0}".format(_arch), + "hypre@2.30.0: +rocm amdgpu_target={0}".format(_arch), when="+hypre+rocm amdgpu_target={0}".format(_arch), ) @@ -155,7 +152,6 @@ def cmake_args(self): args = [ self.define("CMAKE_CXX_COMPILER", spec["mpi"].mpicxx), - self.define("CMAKE_Fortran_COMPILER", spec["mpi"].mpifc), self.define("Trilinos_DIR", spec["trilinos"].prefix), self.define("YAML_DIR", spec["yaml-cpp"].prefix), self.define("CMAKE_CXX_STANDARD", "17"), @@ -176,6 +172,7 @@ def cmake_args(self): if spec.satisfies("+openfast"): args.append(self.define("OpenFAST_DIR", spec["openfast"].prefix)) + args.append(self.define("CMAKE_Fortran_COMPILER", spec["mpi"].mpifc)) if spec.satisfies("+tioga"): args.append(self.define("TIOGA_DIR", spec["tioga"].prefix)) diff --git a/var/spack/repos/builtin/packages/nano/package.py b/var/spack/repos/builtin/packages/nano/package.py index 0fb2035b637bfa..1f0767e21736ac 100644 --- a/var/spack/repos/builtin/packages/nano/package.py +++ b/var/spack/repos/builtin/packages/nano/package.py @@ -14,13 +14,16 @@ class Nano(AutotoolsPackage): list_url = "https://www.nano-editor.org/dist/" list_depth = 1 - license("GPL-3.0-or-later") + license("GPL-3.0-or-later", checked_by="wdconinc") # 8.x + version("8.2", sha256="d5ad07dd862facae03051c54c6535e54c7ed7407318783fcad1ad2d7076fffeb") + version("8.1", sha256="93b3e3e9155ae389fe9ccf9cb7ab380eac29602835ba3077b22f64d0f0cbe8cb") version("8.0", sha256="c17f43fc0e37336b33ee50a209c701d5beb808adc2d9f089ca831b40539c9ac4") # 7.x version("7.2", sha256="86f3442768bd2873cec693f83cdf80b4b444ad3cc14760b74361474fc87a4526") # 6.x + version("6.4", sha256="4199ae8ca78a7796de56de1a41b821dc47912c0307e9816b56cc317df34661c0") version("6.3", sha256="eb532da4985672730b500f685dbaab885a466d08fbbf7415832b95805e6f8687") version("6.2", sha256="2bca1804bead6aaf4ad791f756e4749bb55ed860eec105a97fba864bc6a77cb3") version("6.1", sha256="3d57ec893fbfded12665b7f0d563d74431fc43abeaccacedea23b66af704db40") @@ -82,9 +85,11 @@ class Nano(AutotoolsPackage): version("2.6.2", sha256="22f79cc635458e0c0d110d211576f1edc03b112a62d73b914826a46547a6ac27") version("2.6.1", sha256="45721fa6d6128068895ad71a6967ff7398d11b064b3f888e5073c97a2b6e9a81") - depends_on("c", type="build") # generated + depends_on("c", type="build") depends_on("pkgconfig", type="build") + depends_on("gettext@0.18.3:") + depends_on("gettext@0.20:", when="@8.1:") depends_on("ncurses") def url_for_version(self, version): diff --git a/var/spack/repos/builtin/packages/neartree/Makefile-3.1.patch b/var/spack/repos/builtin/packages/neartree/Makefile-3.1.patch new file mode 100644 index 00000000000000..722eea809eb37d --- /dev/null +++ b/var/spack/repos/builtin/packages/neartree/Makefile-3.1.patch @@ -0,0 +1,23 @@ +--- a/Makefile ++++ b/Makefile +@@ -114,13 +114,13 @@ CPPLIBRARIES = -lm + # + CLIBRARIES = $(CVECTOR_LIBLOC) -lCVector -lm + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CXX $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/neartree/Makefile.patch b/var/spack/repos/builtin/packages/neartree/Makefile.patch new file mode 100644 index 00000000000000..77023f687e856e --- /dev/null +++ b/var/spack/repos/builtin/packages/neartree/Makefile.patch @@ -0,0 +1,23 @@ +--- a/Makefile ++++ b/Makefile +@@ -117,13 +117,13 @@ CPPLIBRARIES = -lm + # + CLIBRARIES = $(CVECTOR_LIBLOC) -lCVector -lm + +-COMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c +-LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib +-BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) $(INCLUDES) +-CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) +-BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include +-BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include ++COMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CC $(CC) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++CPPCOMPILE_COMMAND = $(LIBTOOL) --mode=compile --tag=CXX $(CXX) $(CFLAGS) $(INCLUDES) $(WARNINGS) -c ++LIBRARY_LINK_COMMAND = $(LIBTOOL) --mode=link --tag=CC $(CC) -version-info $(VERSION) -no-undefined -rpath $(INSTALL_PREFIX)/lib ++BUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) $(INCLUDES) ++CPPBUILD_COMMAND_LOCAL = $(LIBTOOL) --mode=link --tag=CXX $(CXX) -no-undefined $(CFLAGS) $(INCLUDES) ++BUILD_COMMAND_DYNAMIC = $(LIBTOOL) --mode=link --tag=CC $(CC) -no-undefined $(CFLAGS) -shared -I$(INSTALL_PREFIX)/include ++BUILD_COMMAND_STATIC = $(LIBTOOL) --mode=link --tag=CC $(CC) $(CFLAGS) -static-libtool-libs -I$(INSTALL_PREFIX)/include + INSTALL_COMMAND = $(LIBTOOL) --mode=install cp + INSTALL_FINISH_COMMAND = $(LIBTOOL) --mode=finish + diff --git a/var/spack/repos/builtin/packages/neartree/package.py b/var/spack/repos/builtin/packages/neartree/package.py index e2cb4e3716e132..89fb15fe2a56d9 100644 --- a/var/spack/repos/builtin/packages/neartree/package.py +++ b/var/spack/repos/builtin/packages/neartree/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import re + from spack.package import * @@ -11,10 +13,10 @@ class Neartree(MakefilePackage): points in spaces of arbitrary dimensions.""" homepage = "https://neartree.sourceforge.net/" - url = "https://downloads.sourceforge.net/project/neartree/neartree/NearTree-3.1/NearTree-3.1.tar.gz" license("LGPL-2.1-or-later") + version("5.1.1", sha256="b951eb23bb4235ada82cef85b9f129bf74a14e45d992097431e7bfb6bdca6642") version("3.1", sha256="07b668516f15a7c13c219fd005b14e73bced5dc6b23857edcc24d3e5cf0d3be3") depends_on("c", type="build") # generated @@ -23,6 +25,15 @@ class Neartree(MakefilePackage): depends_on("libtool", type="build") depends_on("cvector") + patch("Makefile.patch", when="@5.1.1") + patch("Makefile-3.1.patch", when="@3.1") + + def url_for_version(self, version): + pattern = re.compile(r"^[0-9]+\.[0-9]+") + full_vers = str(version) + cropped_vers = pattern.search(full_vers).group() + return f"https://downloads.sourceforge.net/project/neartree/neartree/NearTree-{cropped_vers}/NearTree-{full_vers}.tar.gz" + def edit(self, spec, prefix): mf = FileFilter("Makefile") mf.filter(r"^CC.+", "CC = {0}".format(spack_cc)) diff --git a/var/spack/repos/builtin/packages/netcdf-fortran/package.py b/var/spack/repos/builtin/packages/netcdf-fortran/package.py index c80f8843005e0d..ec74f25fc43fca 100644 --- a/var/spack/repos/builtin/packages/netcdf-fortran/package.py +++ b/var/spack/repos/builtin/packages/netcdf-fortran/package.py @@ -156,7 +156,7 @@ def cray_module_filenames(self): # To avoid warning messages when compiler user applications in both # cases, we create copies of all '*.mod' files in the prefix/include # with names in upper- and lowercase. - if self.spec.compiler.name != "cce": + if not self.spec.satisfies("%cce"): return with working_dir(self.spec.prefix.include): diff --git a/var/spack/repos/builtin/packages/nextflow/package.py b/var/spack/repos/builtin/packages/nextflow/package.py index 4687218fc6bfbe..316e4da17cfe10 100644 --- a/var/spack/repos/builtin/packages/nextflow/package.py +++ b/var/spack/repos/builtin/packages/nextflow/package.py @@ -14,6 +14,11 @@ class Nextflow(Package): maintainers("dialvarezs", "marcodelapierre") + version( + "24.10.0", + sha256="e848918fb9b85762822c078435d9ff71979a88cccff81ce5babd75d5eee52fe6", + expand=False, + ) version( "24.04.3", sha256="e258f6395a38f044eb734cba6790af98b561aa521f63e2701fe95c050986e11c", @@ -187,7 +192,6 @@ class Nextflow(Package): deprecated=True, ) - depends_on("java@17", when="@24", type="run") depends_on("java", type="run") def install(self, spec, prefix): diff --git a/var/spack/repos/builtin/packages/nlopt/package.py b/var/spack/repos/builtin/packages/nlopt/package.py index fd9ed9b18f4877..132fff424c70ed 100644 --- a/var/spack/repos/builtin/packages/nlopt/package.py +++ b/var/spack/repos/builtin/packages/nlopt/package.py @@ -22,6 +22,7 @@ class Nlopt(CMakePackage): version("master", branch="master") + version("2.8.0", sha256="e02a4956a69d323775d79fdaec7ba7a23ed912c7d45e439bc933d991ea3193fd") version("2.7.1", sha256="db88232fa5cef0ff6e39943fc63ab6074208831dc0031cf1545f6ecd31ae2a1a") version("2.7.0", sha256="b881cc2a5face5139f1c5a30caf26b7d3cb43d69d5e423c9d78392f99844499f") version("2.6.2", sha256="cfa5981736dd60d0109c534984c4e13c615314d3584cf1c392a155bfe1a3b17e") diff --git a/var/spack/repos/builtin/packages/node-js/package.py b/var/spack/repos/builtin/packages/node-js/package.py index b76d72ae91bdb9..8850255deba572 100644 --- a/var/spack/repos/builtin/packages/node-js/package.py +++ b/var/spack/repos/builtin/packages/node-js/package.py @@ -79,6 +79,15 @@ class NodeJs(Package): depends_on("openssl@1.1:", when="+openssl") depends_on("zlib-api", when="+zlib") + # https://github.com/nodejs/node/blob/main/BUILDING.md#supported-toolchains + conflicts("%gcc@:12.1", when="@23:") + conflicts("%gcc@:10.0", when="@20:") + conflicts("%gcc@:8.2", when="@16:") + conflicts("%gcc@:6.2", when="@12:") + conflicts("%apple-clang@:11", when="@21:") + conflicts("%apple-clang@:10", when="@16:") + conflicts("%apple-clang@:9", when="@13:") + phases = ["configure", "build", "install"] # https://github.com/spack/spack/issues/19310 @@ -113,8 +122,14 @@ def configure_args(self): # # /usr/bin/libtool # libtool: /usr/bin/libtool + # + # We specify -M -f (an empty list of man-path entries) to prevent man-page + # searching to avoid an Illegal seek error processing manpath results in CI, + # which prevents the last form: # libtool: /usr/bin/libtool /Applications/Xcode.app/.../share/man/man1/libtool.1 - process_pipe = subprocess.Popen(["whereis", "libtool"], stdout=subprocess.PIPE) + process_pipe = subprocess.Popen( + ["whereis", "-M", "-f", "libtool"], stdout=subprocess.PIPE + ) result_whereis_list = process_pipe.communicate()[0].strip().split() if len(result_whereis_list) == 1: result_whereis = result_whereis_list[0] diff --git a/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml b/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml index bdf1c6b596c4dd..fc8ccfafc84553 100644 --- a/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml +++ b/var/spack/repos/builtin/packages/nvhpc/detection_test.yaml @@ -24,7 +24,7 @@ paths: extra_attributes: compilers: c: ".*/bin/nvc" - cxx: ".*/bin/nvc++" + cxx: ".*/bin/nvc\\+\\+" fortran: ".*/bin/nvfortran" - layout: - executables: @@ -51,7 +51,7 @@ paths: extra_attributes: compilers: c: ".*/bin/nvc" - cxx: ".*/bin/nvc++" + cxx: ".*/bin/nvc\\+\\+" fortran: ".*/bin/nvfortran" - layout: - executables: @@ -78,5 +78,5 @@ paths: extra_attributes: compilers: c: ".*/bin/nvc" - cxx: ".*/bin/nvc++" + cxx: ".*/bin/nvc\\+\\+" fortran: ".*/bin/nvfortran" diff --git a/var/spack/repos/builtin/packages/nvidia-nsight-systems/package.py b/var/spack/repos/builtin/packages/nvidia-nsight-systems/package.py new file mode 100644 index 00000000000000..945bbe92f465ba --- /dev/null +++ b/var/spack/repos/builtin/packages/nvidia-nsight-systems/package.py @@ -0,0 +1,127 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import os +import platform +import re +import shutil +from glob import glob + +from spack.package import * + +# FIXME Remove hack for polymorphic versions +# This package uses a ugly hack to be able to dispatch, given the same +# version, to different binary packages based on the platform that is +# running spack. See #13827 for context. +# If you need to add a new version, please be aware that: +# - versions in the following dict are automatically added to the package +# - version tuple must be in the form (checksum, url) +# - checksum must be sha256 +# - package key must be in the form '{os}-{arch}' where 'os' is in the +# format returned by platform.system() and 'arch' by platform.machine() +_versions = { + "2024.6.1": { + "Linux-aarch64": ( + "24700c28dfda9f95d4e93de218b86ab1ba0ee8b74cb61c3c581767296159c75c", + "https://developer.nvidia.com/downloads/assets/tools/secure/nsight-systems/2024_6/nsight-systems-2024.6.1-2024.6.1.90_3490548-0.aarch64.rpm", + ), + "Linux-x86_64": ( + "dd4359a47ff3857395c55a0da483b64f5c0c3a1a2e57dd543a512dc3d2cd2674", + "https://developer.nvidia.com/downloads/assets/tools/secure/nsight-systems/2024_6/nsight-systems-2024.6.1-2024.6.1.90_3490548-0.x86_64.rpm", + ), + }, + "2024.1.1": { + "Linux-aarch64": ( + "41dc15ae128ef1de8e582b66bb465ac6bd67b9d20ef77fc70528b735d80fb3ec", + "https://developer.download.nvidia.com/devtools/repos/rhel8/arm64/nsight-systems-2024.1.1-2024.1.1.59_3380207-0.aarch64.rpm", + ), + "Linux-ppc64le": ( + "8c98b511df1747c4c782430504ae6fa4b3fce6fa72623083a828fc0a1e11f1b8", + "https://developer.download.nvidia.com/devtools/repos/rhel8/ppc64le/nsight-systems-cli-2024.1.1-2024.1.1.59_3380207-0.ppc64le.rpm", + ), + "Linux-x86_64": ( + "96f57548e0bd69cb02cd1fe8c70ed4a650636ecb3a5ea5ec490c8049adc2beb5", + "https://developer.download.nvidia.com/devtools/repos/rhel8/x86_64/nsight-systems-2024.1.1-2024.1.1.59_3380207-0.x86_64.rpm", + ), + }, +} + + +class NvidiaNsightSystems(Package): + """NVIDIA Nsight™ Systems is a system-wide performance analysis tool designed + to visualize an application’s algorithms, identify the largest opportunities + to optimize, and tune to scale efficiently across any quantity or size of CPUs + and GPUs, from large servers to the smallest system on a chip""" + + homepage = "https://developer.nvidia.com/nsight-systems" + url = "https://developer.download.nvidia.com/devtools/repos/" + maintainers("scothalverson") + license("NVIDIA Software License Agreement") + + executables = ["^nsys$"] + + # Used to unpack the source RPM archives. + depends_on("libarchive programs='bsdtar'", type="build") + + for ver, packages in _versions.items(): + key = "{0}-{1}".format(platform.system(), platform.machine()) + pkg = packages.get(key) + if pkg: + version(ver, sha256=pkg[0], url=pkg[1], expand=False) + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + # Example output: + # NVIDIA Nsight Systems version 2024.1.1.59-241133802077v0 + # but we only want to match 2024.1.1 + match = re.search(r"NVIDIA Nsight Systems version ((?:[0-9]+.){2}[0-9])", output) + return match.group(1) if match else None + + def install(self, spec, prefix): + bsdtar = which("bsdtar") + rpm_file = glob(join_path(self.stage.source_path, "nsight-systems*.rpm"))[0] + params = ["-x", "-f", rpm_file] + ver = prefix.split("/")[-1].split("-")[-2] + bsdtar(*params) + + arch = self.spec.target.family + if arch == "aarch64": + folders = ["documentation", "host-linux-armv8", "target-linux-sbsa-armv8"] + elif arch == "ppc64le": + folders = ["documentation", "host-linux-ppc64le", "target-linux-ppc64le"] + elif arch == "x86_64": + folders = ["documentation", "host-linux-x64", "target-linux-x64"] + if os.path.exists(join_path("opt", "nvidia", "nsight-systems-cli")): + base_path = join_path("opt", "nvidia", "nsight-systems-cli") + elif os.path.exists(join_path("opt", "nvidia", "nsight-systems")): + base_path = join_path("opt", "nvidia", "nsight-systems") + else: + raise InstallError("Couldn't determine subdirectories to install.") + + for sd in folders: + shutil.copytree(join_path(base_path, ver, sd), join_path(prefix, sd)) + os.mkdir(join_path(prefix, "bin")) + if arch == "aarch64": + os.symlink( + join_path(prefix, "host-linux-armv8", "nsys-ui"), + join_path(prefix, "bin", "nsys-ui"), + ) + os.symlink( + join_path(prefix, "target-linux-sbsa-armv8", "nsys"), + join_path(prefix, "bin", "nsys"), + ) + elif arch == "ppc64le": + # `nsys-ui` is missing in the PowerPC version of the package. + os.symlink( + join_path(prefix, "target-linux-ppc64le", "nsys"), join_path(prefix, "bin", "nsys") + ) + elif arch == "x86_64": + os.symlink( + join_path(prefix, "host-linux-x64", "nsys-ui"), join_path(prefix, "bin", "nsys-ui") + ) + os.symlink( + join_path(prefix, "target-linux-x64", "nsys"), join_path(prefix, "bin", "nsys") + ) diff --git a/var/spack/repos/builtin/packages/nvtx/package.py b/var/spack/repos/builtin/packages/nvtx/package.py index ef2ecfa64c9249..c6f6af43817774 100644 --- a/var/spack/repos/builtin/packages/nvtx/package.py +++ b/var/spack/repos/builtin/packages/nvtx/package.py @@ -48,6 +48,5 @@ def install(self, spec, prefix): install("./nvtx-config.cmake", prefix) # added by the patch above - args = std_pip_args + ["--prefix=" + prefix, "."] with working_dir(self.build_directory): - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/nwchem/package.py b/var/spack/repos/builtin/packages/nwchem/package.py index 497ae0bf83872a..a3882f55f12bbe 100644 --- a/var/spack/repos/builtin/packages/nwchem/package.py +++ b/var/spack/repos/builtin/packages/nwchem/package.py @@ -46,6 +46,7 @@ class Nwchem(Package): depends_on("fortran", type="build") # generated variant("openmp", default=False, description="Enables OpenMP support") + variant("f90allocatable", default=False, description="Use F90 allocatable instead of MA") variant( "armci", values=("mpi-ts", "mpi-pr", "armcimpi", "mpi3", "openib", "ofi"), @@ -57,6 +58,7 @@ class Nwchem(Package): default=False, description="Enables rarely-used TCE features (CCSDTQ, CCSDTLR, EACCSD, IPCCSD, MRCC)", ) + variant("tcecuda", default=False, description="Enable TCE CCSD(T) CUDA support") variant("fftw3", default=False, description="Link against the FFTW library") variant("libxc", default=False, description="Support additional functionals via libxc") variant( @@ -86,6 +88,7 @@ class Nwchem(Package): depends_on("blas") depends_on("lapack") depends_on("mpi") + depends_on("cuda", when="+tcecuda") depends_on("armcimpi", when="armci=armcimpi") depends_on("libfabric", when="armci=ofi") depends_on("rdma-core", when="armci=openib") @@ -155,9 +158,18 @@ def install(self, spec, prefix): args.extend(["CCSDTLR=y"]) args.extend(["CCSDTQ=y"]) + if spec.satisfies("+tcecuda"): + args.extend(["TCE_CUDA=y"]) + args.extend(["CUDA_INCLUDE=-I{0}".format(self.spec["cuda"].headers.directories[0])]) + # args.extend(["CUDA_LIBS={0}".format(self.spec["cuda"].libs)]) + args.extend(["CUDA_LIBS=-L{0} -lcudart".format(self.spec["cuda"].libs.directories[0])]) + if spec.satisfies("+openmp"): args.extend(["USE_OPENMP=y"]) + if spec.satisfies("+f90allocatable"): + args.extend(["USE_F90_ALLOCATABLE=1"]) + if self.spec.variants["armci"].value == "armcimpi": armcimpi = spec["armci"] args.extend(["ARMCI_NETWORK=ARMCI"]) diff --git a/var/spack/repos/builtin/packages/omega-h/package.py b/var/spack/repos/builtin/packages/omega-h/package.py index e4432f2e104dcb..a1e3a2363df611 100644 --- a/var/spack/repos/builtin/packages/omega-h/package.py +++ b/var/spack/repos/builtin/packages/omega-h/package.py @@ -20,22 +20,27 @@ class OmegaH(CMakePackage, CudaPackage): tags = ["e4s"] version("main", branch="main") version( - "scorec.10.8.5", + "10.8.6-scorec", + commit="a730c78e516d7f6cca4f8b4e4e0a5eb8020f9ad9", + git="https://github.com/SCOREC/omega_h.git", + ) + version( + "10.8.5-scorec", commit="62026fc305356abb5e02a9fce3fead9cf5077fbe", git="https://github.com/SCOREC/omega_h.git", ) version( - "scorec.10.7.0", + "10.7.0-scorec", commit="0e5de8618c3370f702e08c1b1af476dbbc118892", git="https://github.com/SCOREC/omega_h.git", ) version( - "scorec.10.6.0", + "10.6.0-scorec", commit="f376fad4741b55a4b2482218eb3437d719b7c72e", git="https://github.com/SCOREC/omega_h.git", ) version( - "scorec.10.1.0", + "10.1.0-scorec", commit="e88912368e101d940f006019585701a704295ab0", git="https://github.com/SCOREC/omega_h.git", ) @@ -73,26 +78,19 @@ class OmegaH(CMakePackage, CudaPackage): depends_on("trilinos +kokkos", when="+trilinos") depends_on("kokkos", when="+kokkos") depends_on("zlib-api", when="+zlib") - # Note: '+cuda' and 'cuda_arch' variants are added by the CudaPackage - depends_on("cuda", when="+cuda") - conflicts( - "^cuda@11.2", - when="@scorec.10.1.0:", - msg="Thrust is broken in CUDA = 11.2.* see https://github.com/sandialabs/omega_h/issues/366", - ) - conflicts( - "^cuda@:11.3", - when="@scorec.10.8.5:", - msg="see https://github.com/SCOREC/omega_h/issues/66", - ) - # the sandia repo has a fix for cuda > 11.2 support - # see github.com/sandialabs/omega_h/pull/373 - conflicts( - "^cuda@11.2", - when="@:9.34.4", - msg="Thrust is broken in CUDA = 11.2.* see https://github.com/sandialabs/omega_h/issues/366", - ) + with when("+cuda"): + # https://github.com/SCOREC/omega_h/commit/40a2d36d0b747a7147aeed238a0323f40b227cb2 + depends_on("cuda@11.4:", when="@10.8.3:") + + # https://github.com/SCOREC/omega_h/commit/c2109d2900696974ee66c3fbe6a1ec0e93b66cb6 + depends_on("cuda@:11", when="@:10.6") + + # Single, broken CUDA version. + conflicts("^cuda@11.2", msg="See https://github.com/sandialabs/omega_h/issues/366") + + # https://github.com/SCOREC/omega_h/pull/118 + conflicts("@10.5:10.8.5 +cuda~kokkos") # https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86610 conflicts("%gcc@8:8.2", when="@:9.22.1") @@ -120,9 +118,8 @@ def cmake_args(self): args.append("-DBUILD_SHARED_LIBS:BOOL=OFF") if "+mpi" in self.spec: args.append("-DOmega_h_USE_MPI:BOOL=ON") - ver = self.spec.version # old versions don't call find_package(MPI) - if ver < Version("9.33.2") and "scorec" not in str(ver): + if self.spec.satisfies("@:9.33.1"): args.append("-DCMAKE_CXX_COMPILER:FILEPATH={0}".format(self.spec["mpi"].mpicxx)) else: args.append("-DOmega_h_USE_MPI:BOOL=OFF") @@ -131,7 +128,7 @@ def cmake_args(self): cuda_arch_list = self.spec.variants["cuda_arch"].value cuda_arch = cuda_arch_list[0] if cuda_arch != "none": - if "scorec" in str(self.spec.version): + if self.spec.satisfies("@10:"): args.append("-DOmega_h_CUDA_ARCH={0}".format(cuda_arch)) else: args.append("-DCMAKE_CUDA_FLAGS=-arch=sm_{0}".format(cuda_arch)) @@ -174,7 +171,7 @@ def flag_handler(self, name, flags): def test_mesh(self): """test construction, adaptation, and conversion of a mesh""" - if self.spec.satisfies("@:9.34.0") and not self.spec.satisfies("@:scorec"): + if self.spec.satisfies("@:9.34.0"): raise SkipTest("Package must be installed as version 9.34.1 or later") with test_part(self, "test_mesh_create", purpose="mesh construction"): diff --git a/var/spack/repos/builtin/packages/opencolorio/package.py b/var/spack/repos/builtin/packages/opencolorio/package.py new file mode 100644 index 00000000000000..bed7b22eb3d0ec --- /dev/null +++ b/var/spack/repos/builtin/packages/opencolorio/package.py @@ -0,0 +1,39 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Opencolorio(CMakePackage): + """OpenColorIO (OCIO) is a complete color management solution geared towards motion + picture production with an emphasis on visual effects and computer animation.""" + + homepage = "https://opencolorio.readthedocs.io" + git = "https://github.com/AcademySoftwareFoundation/OpenColorIO" + url = ( + "https://github.com/AcademySoftwareFoundation/OpenColorIO/archive/refs/tags/v2.4.0.tar.gz" + ) + license("Apache-2.0") + + version("2.4.0", sha256="0ff3966b9214da0941b2b1cbdab3975a00a51fc6f3417fa860f98f5358f2c282") + + # Core dependencies + depends_on("cmake@3.14:", type="build") + depends_on("expat@2.2.8:") + depends_on("yaml-cpp@0.6.3:") + depends_on("imath@3.0.5:") + depends_on("pystring@1.1.3:") + + # Optional dependencies + variant("lcms", default=False, description="Little CMS for ociobakelut") + depends_on("lcms@2.2:", when="+lcms") + + variant("python", default=False, description="Build python bindings") + extends("python", when="+python") + depends_on("py-pybind11", when="+python", type=("build", "run")) + + def cmake_args(self): + args = ["-DOCIO_BUILD_PYTHON={0}".format("ON" if "+python" in self.spec else "OFF")] + return args diff --git a/var/spack/repos/builtin/packages/openfast/package.py b/var/spack/repos/builtin/packages/openfast/package.py index 8b99fda2c669e3..2fd434465054e3 100644 --- a/var/spack/repos/builtin/packages/openfast/package.py +++ b/var/spack/repos/builtin/packages/openfast/package.py @@ -18,22 +18,23 @@ class Openfast(CMakePackage): version("develop", branch="dev") version("master", branch="main") - version("3.5.3", tag="v3.5.3", commit="6a7a543790f3cad4a65b87242a619ac5b34b4c0f") - version("3.4.1", tag="v3.4.1", commit="18704086dad861ab13daf804825da7c4b8d59428") - version("3.4.0", tag="v3.4.0", commit="e8ec53f9c7f9d3f6a13bfb61dba12a0ca04d8a2f") - version("3.3.0", tag="v3.3.0", commit="5f3fb6ef74f48e75ca94000090737a41866fb264") - version("3.2.1", tag="v3.2.1", commit="08fffef240461a8334596179f1de462be43ad3e9") - version("3.2.0", tag="v3.2.0", commit="90a1ffb626baf398d89681b9422bdbfef11cd3ad") - version("3.1.0", tag="v3.1.0", commit="3456a645581456883e44d441eb285ed688e98797") - version("3.0.0", tag="v3.0.0", commit="42a5a8196529ae0349eda6d797a79461c2c03ff0") - version("2.6.0", tag="v2.6.0", commit="bbbb1ca7b28a4ba411613b5c85f5de02f8316754") - version("2.5.0", tag="v2.5.0", commit="718d46f707d78e85edf1b49d3b1a63e8e23e1aae") - version("2.4.0", tag="v2.4.0", commit="ff33ca1cf65f2e13c1de0ab78cc2396ec4a47ce0") - version("2.3.0", tag="v2.3.0", commit="f2419c5d1c23caad9146b95a103d89e9dcaefe30") - version("2.2.0", tag="v2.2.0", commit="e4faf27b774982df274b87c0570e4b58c4a13fe3") - version("2.1.0", tag="v2.1.0", commit="f147b80521eff90c19f065eabeceac13de39ac59") - version("2.0.0", tag="v2.0.0", commit="0769598a17e19b3ccd00a85cde389995f55024a8") - version("1.0.0", tag="v1.0.0", commit="e788b9b18bd5ed96ea59d4bc0812d461bc430cfe") + version("3.5.4", tag="v3.5.4") + version("3.5.3", tag="v3.5.3") + version("3.4.1", tag="v3.4.1") + version("3.4.0", tag="v3.4.0") + version("3.3.0", tag="v3.3.0") + version("3.2.1", tag="v3.2.1") + version("3.2.0", tag="v3.2.0") + version("3.1.0", tag="v3.1.0") + version("3.0.0", tag="v3.0.0") + version("2.6.0", tag="v2.6.0") + version("2.5.0", tag="v2.5.0") + version("2.4.0", tag="v2.4.0") + version("2.3.0", tag="v2.3.0") + version("2.2.0", tag="v2.2.0") + version("2.1.0", tag="v2.1.0") + version("2.0.0", tag="v2.0.0") + version("1.0.0", tag="v1.0.0") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated @@ -49,6 +50,7 @@ class Openfast(CMakePackage): variant("openmp", default=False, description="Enable OpenMP support") variant("netcdf", default=False, description="Enable NetCDF support") variant("rosco", default=False, description="Build ROSCO controller") + variant("fastfarm", default=False, description="Enable FAST.Farm capabilities") depends_on("blas") depends_on("lapack") @@ -77,6 +79,7 @@ def cmake_args(self): self.define_from_variant("BUILD_OPENFAST_CPP_API", "cxx"), self.define_from_variant("BUILD_OPENFAST_CPP_DRIVER", "cxx"), self.define_from_variant("CMAKE_POSITION_INDEPENDENT_CODE", "pic"), + self.define_from_variant("BUILD_FASTFARM", "fastfarm"), ] ) diff --git a/var/spack/repos/builtin/packages/openimageio/package.py b/var/spack/repos/builtin/packages/openimageio/package.py index 4f03b0df35ed3c..fe48959156bc3b 100644 --- a/var/spack/repos/builtin/packages/openimageio/package.py +++ b/var/spack/repos/builtin/packages/openimageio/package.py @@ -42,6 +42,9 @@ class Openimageio(CMakePackage): variant("qt", default=False, description="Build qt viewer") depends_on("qt@5.6.0:+opengl", when="+qt") + variant("ocio", default=False, description="Support video frames") + depends_on("opencolorio@2.2:", when="+ocio") + def url_for_version(self, version): if version >= Version("2"): return super().url_for_version(version) diff --git a/var/spack/repos/builtin/packages/openjdk/package.py b/var/spack/repos/builtin/packages/openjdk/package.py index a884eaddbb6a4b..bcaec85a861270 100644 --- a/var/spack/repos/builtin/packages/openjdk/package.py +++ b/var/spack/repos/builtin/packages/openjdk/package.py @@ -406,6 +406,14 @@ class Openjdk(Package): version(ver, sha256=pkg[0], url=pkg[1], preferred=is_preferred) + variant( + "certs", + default="none", + values=("system", "none"), + multi=False, + description=("symlink system certs if requested, otherwise use default package version"), + ) + provides("java@21", when="@21.0:21") provides("java@17", when="@17.0:17") provides("java@16", when="@16.0:16") @@ -479,6 +487,37 @@ def install(self, spec, prefix): top_dir = "Contents/Home/" if platform.system() == "Darwin" else "." install_tree(top_dir, prefix) + @run_after("install") + def link_system_certs(self): + if self.spec.variants["certs"].value != "system": + return + + system_dirs = [ + # CentOS, Fedora, RHEL + "/etc/pki/java", + # Ubuntu + "/etc/ssl/certs/java", + # OpenSUSE + "/var/lib/ca-certificates/java-certs", + ] + + for directory in system_dirs: + # Link configuration file + sys_certs = join_path(directory, "cacerts") + + # path for 1.8.0 versions + pkg_dir = join_path(self.prefix, "jre", "lib", "security") + if not os.path.exists(pkg_dir): + # path for version 11 and newer + pkg_dir = join_path(self.prefix, "lib", "security") + if not os.path.exists(pkg_dir): + break + pkg_conf = join_path(pkg_dir, "cacerts") + if os.path.exists(sys_certs): + if os.path.exists(pkg_conf): + os.remove(pkg_conf) + os.symlink(sys_certs, pkg_conf) + def setup_run_environment(self, env): """Set JAVA_HOME.""" diff --git a/var/spack/repos/builtin/packages/openldap/package.py b/var/spack/repos/builtin/packages/openldap/package.py index d5fe9f11007eb1..629a81950b6d71 100644 --- a/var/spack/repos/builtin/packages/openldap/package.py +++ b/var/spack/repos/builtin/packages/openldap/package.py @@ -21,6 +21,7 @@ class Openldap(AutotoolsPackage): license("OLDAP-2.8") + version("2.6.8", sha256="48969323e94e3be3b03c6a132942dcba7ef8d545f2ad35401709019f696c3c4e") version("2.6.4", sha256="d51704e50178430c06cf3d8aa174da66badf559747a47d920bb54b2d4aa40991") version("2.6.0", sha256="b71c580eac573e9aba15d95f33dd4dd08f2ed4f0d7fc09e08ad4be7ed1e41a4f") version("2.4.49", sha256="e3b117944b4180f23befe87d0dcf47f29de775befbc469dcf4ac3dab3311e56e") @@ -67,6 +68,9 @@ class Openldap(AutotoolsPackage): depends_on("findutils", type="build") # see https://github.com/openldap/openldap/blob/OPENLDAP_REL_ENG_2_4_48/libraries/liblunicode/Makefile.in + # Newer C compilers (>= Clang 16 and >= GCC 14) reject some constructs removed in C99 + conflicts("%gcc@14:", when="@:2.6.4", msg="Newer C compilers required 2.6.5 or newer") + # Ref: https://www.linuxfromscratch.org/blfs/view/svn/server/openldap.html @when("+client_only") def configure_args(self): diff --git a/var/spack/repos/builtin/packages/openmpi/package.py b/var/spack/repos/builtin/packages/openmpi/package.py index 4b2c81dc033967..425156907245cb 100644 --- a/var/spack/repos/builtin/packages/openmpi/package.py +++ b/var/spack/repos/builtin/packages/openmpi/package.py @@ -63,6 +63,9 @@ class Openmpi(AutotoolsPackage, CudaPackage): version( "5.0.0", sha256="9d845ca94bc1aeb445f83d98d238cd08f6ec7ad0f73b0f79ec1668dbfdacd613" ) # libmpi.so.40.40.0 + version( + "4.1.7", sha256="54a33cb7ad81ff0976f15a6cc8003c3922f0f3d8ceed14e1813ef3603f22cd34" + ) # libmpi.so.40.30.7 version( "4.1.6", sha256="f740994485516deb63b5311af122c265179f5328a0d857a567b85db00b11e415" ) # libmpi.so.40.30.6 @@ -449,33 +452,34 @@ class Openmpi(AutotoolsPackage, CudaPackage): patch("pmix_getline_pmix_version.patch", when="@5.0.0:5.0.3") patch("pmix_getline_pmix_version-prte.patch", when="@5.0.3") + FABRICS = ( + "psm", + "psm2", + "verbs", + "mxm", + "ucx", + "ofi", + "fca", + "hcoll", + "ucc", + "xpmem", + "cma", + "knem", + ) + variant( "fabrics", values=disjoint_sets( - ("auto",), - ( - "psm", - "psm2", - "verbs", - "mxm", - "ucx", - "ofi", - "fca", - "hcoll", - "ucc", - "xpmem", - "cma", - "knem", - ), # shared memory transports + ("auto",), FABRICS # shared memory transports ).with_non_feature_values("auto", "none"), description="List of fabrics that are enabled; " "'auto' lets openmpi determine", ) + SCHEDULERS = ("alps", "lsf", "tm", "slurm", "sge", "loadleveler") + variant( "schedulers", - values=disjoint_sets( - ("auto",), ("alps", "lsf", "tm", "slurm", "sge", "loadleveler") - ).with_non_feature_values("auto", "none"), + values=disjoint_sets(("auto",), SCHEDULERS).with_non_feature_values("auto", "none"), description="List of schedulers for which support is enabled; " "'auto' lets openmpi determine", ) @@ -571,6 +575,24 @@ class Openmpi(AutotoolsPackage, CudaPackage): variant("openshmem", default=False, description="Enable building OpenSHMEM") variant("debug", default=False, description="Make debug build", when="build_system=autotools") + variant( + "two_level_namespace", + default=False, + description="""Build shared libraries and programs +built with the mpicc/mpifort/etc. compiler wrappers +with '-Wl,-commons,use_dylibs' and without +'-Wl,-flat_namespace'.""", + ) + + # Patch to allow two-level namespace on a MacOS platform when building + # openmpi. Unfortuntately, the openmpi configure command has flat namespace + # hardwired in. In spack, this only works for openmpi up to versions 4, + # because for versions 5+ autoreconf is triggered (see below) and this + # patch needs to be applied (again) AFTER autoreconf ran. + @when("+two_level_namespace platform=darwin") + def patch(self): + filter_file(r"-flat_namespace", "-commons,use_dylibs", "configure") + provides("mpi@:2.0", when="@:1.2") provides("mpi@:2.1", when="@1.3:1.7.2") provides("mpi@:2.2", when="@1.7.3:1.7.4") @@ -803,24 +825,26 @@ def determine_variants(cls, exes, version): variants.append("~pmi") # fabrics - fabrics = get_options_from_variant(cls, "fabrics") used_fabrics = [] - for fabric in fabrics: + for fabric in cls.FABRICS: match = re.search(r"\bMCA (?:mtl|btl|pml): %s\b" % fabric, output) if match: used_fabrics.append(fabric) if used_fabrics: variants.append("fabrics=" + ",".join(used_fabrics)) + else: + variants.append("fabrics=none") # schedulers - schedulers = get_options_from_variant(cls, "schedulers") used_schedulers = [] - for scheduler in schedulers: + for scheduler in cls.SCHEDULERS: match = re.search(r"\bMCA (?:prrte|ras): %s\b" % scheduler, output) if match: used_schedulers.append(scheduler) if used_schedulers: variants.append("schedulers=" + ",".join(used_schedulers)) + else: + variants.append("schedulers=none") # Get the appropriate compiler match = re.search(r"\bC compiler absolute: (\S+)", output) @@ -991,11 +1015,15 @@ def die_without_fortran(self): def autoreconf(self, spec, prefix): perl = which("perl") perl("autogen.pl") + if spec.satisfies("+two_level_namespace platform=darwin"): + filter_file(r"-flat_namespace", "-commons,use_dylibs", "configure") @when("@5.0.0:5.0.1") def autoreconf(self, spec, prefix): perl = which("perl") perl("autogen.pl", "--force") + if spec.satisfies("+two_level_namespace platform=darwin"): + filter_file(r"-flat_namespace", "-commons,use_dylibs", "configure") def configure_args(self): spec = self.spec @@ -1409,12 +1437,3 @@ def is_enabled(text): if text in set(["t", "true", "enabled", "yes", "1"]): return True return False - - -# This code gets all the fabric names from the variants list -# Idea taken from the AutotoolsPackage source. -def get_options_from_variant(self, name): - values = self.variants[name][0].values - if getattr(values, "feature_values", None): - values = values.feature_values - return values diff --git a/var/spack/repos/builtin/packages/openssh/package.py b/var/spack/repos/builtin/packages/openssh/package.py index 07ea7c9599b192..a31bbf46fb9585 100755 --- a/var/spack/repos/builtin/packages/openssh/package.py +++ b/var/spack/repos/builtin/packages/openssh/package.py @@ -25,35 +25,38 @@ class Openssh(AutotoolsPackage): license("SSH-OpenSSH") + version("9.9p1", sha256="b343fbcdbff87f15b1986e6e15d6d4fc9a7d36066be6b7fb507087ba8f966c02") version("9.8p1", sha256="dd8bd002a379b5d499dfb050dd1fa9af8029e80461f4bb6c523c49973f5a39f3") version("9.7p1", sha256="490426f766d82a2763fcacd8d83ea3d70798750c7bd2aff2e57dc5660f773ffd") version("9.6p1", sha256="910211c07255a8c5ad654391b40ee59800710dd8119dd5362de09385aa7a777c") version("9.5p1", sha256="f026e7b79ba7fb540f75182af96dc8a8f1db395f922bbc9f6ca603672686086b") version("9.4p1", sha256="3608fd9088db2163ceb3e600c85ab79d0de3d221e59192ea1923e23263866a85") version("9.3p1", sha256="e9baba7701a76a51f3d85a62c383a3c9dcd97fa900b859bc7db114c1868af8a8") - version("9.2p1", sha256="3f66dbf1655fb45f50e1c56da62ab01218c228807b21338d634ebcdf9d71cf46") - version("9.1p1", sha256="19f85009c7e3e23787f0236fbb1578392ab4d4bf9f8ec5fe6bc1cd7e8bfdd288") - version("9.0p1", sha256="03974302161e9ecce32153cfa10012f1e65c8f3750f573a73ab1befd5972a28a") - version("8.9p1", sha256="fd497654b7ab1686dac672fb83dfb4ba4096e8b5ffcdaccd262380ae58bec5e7") - version("8.8p1", sha256="4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9") - version("8.7p1", sha256="7ca34b8bb24ae9e50f33792b7091b3841d7e1b440ff57bc9fabddf01e2ed1e24") - version("8.6p1", sha256="c3e6e4da1621762c850d03b47eed1e48dff4cc9608ddeb547202a234df8ed7ae") - version("8.5p1", sha256="f52f3f41d429aa9918e38cf200af225ccdd8e66f052da572870c89737646ec25") - version("8.4p1", sha256="5a01d22e407eb1c05ba8a8f7c654d388a13e9f226e4ed33bd38748dafa1d2b24") - version("8.3p1", sha256="f2befbe0472fe7eb75d23340eb17531cb6b3aac24075e2066b41f814e12387b2") - version("8.1p1", sha256="02f5dbef3835d0753556f973cd57b4c19b6b1f6cd24c03445e23ac77ca1b93ff") - version("7.9p1", sha256="6b4b3ba2253d84ed3771c8050728d597c91cfce898713beb7b64a305b6f11aad") - version("7.6p1", sha256="a323caeeddfe145baaa0db16e98d784b1fbc7dd436a6bf1f479dfd5cd1d21723") - version("7.5p1", sha256="9846e3c5fab9f0547400b4d2c017992f914222b3fd1f8eee6c7dc6bc5e59f9f0") - version("7.4p1", sha256="1b1fc4a14e2024293181924ed24872e6f2e06293f3e8926a376b8aec481f19d1") - version("7.3p1", sha256="3ffb989a6dcaa69594c3b550d4855a5a2e1718ccdde7f5e36387b424220fbecc") - version("7.2p2", sha256="a72781d1a043876a224ff1b0032daa4094d87565a68528759c1c2cab5482548c") - version("7.1p2", sha256="dd75f024dcf21e06a0d6421d582690bf987a1f6323e32ad6619392f3bfde6bbd") - version("7.0p1", sha256="fd5932493a19f4c81153d812ee4e042b49bbd3b759ab3d9344abecc2bc1485e5") - version("6.9p1", sha256="6e074df538f357d440be6cf93dc581a21f22d39e236f217fcd8eacbb6c896cfe") - version("6.8p1", sha256="3ff64ce73ee124480b5bf767b9830d7d3c03bbcb6abe716b78f0192c37ce160e") - version("6.7p1", sha256="b2f8394eae858dabbdef7dac10b99aec00c95462753e80342e530bbb6f725507") - version("6.6p1", sha256="48c1f0664b4534875038004cc4f3555b8329c2a81c1df48db5c517800de203bb") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-38408 + version("9.2p1", sha256="3f66dbf1655fb45f50e1c56da62ab01218c228807b21338d634ebcdf9d71cf46") + version("9.1p1", sha256="19f85009c7e3e23787f0236fbb1578392ab4d4bf9f8ec5fe6bc1cd7e8bfdd288") + version("9.0p1", sha256="03974302161e9ecce32153cfa10012f1e65c8f3750f573a73ab1befd5972a28a") + version("8.9p1", sha256="fd497654b7ab1686dac672fb83dfb4ba4096e8b5ffcdaccd262380ae58bec5e7") + version("8.8p1", sha256="4590890ea9bb9ace4f71ae331785a3a5823232435161960ed5fc86588f331fe9") + version("8.7p1", sha256="7ca34b8bb24ae9e50f33792b7091b3841d7e1b440ff57bc9fabddf01e2ed1e24") + version("8.6p1", sha256="c3e6e4da1621762c850d03b47eed1e48dff4cc9608ddeb547202a234df8ed7ae") + version("8.5p1", sha256="f52f3f41d429aa9918e38cf200af225ccdd8e66f052da572870c89737646ec25") + version("8.4p1", sha256="5a01d22e407eb1c05ba8a8f7c654d388a13e9f226e4ed33bd38748dafa1d2b24") + version("8.3p1", sha256="f2befbe0472fe7eb75d23340eb17531cb6b3aac24075e2066b41f814e12387b2") + version("8.1p1", sha256="02f5dbef3835d0753556f973cd57b4c19b6b1f6cd24c03445e23ac77ca1b93ff") + version("7.9p1", sha256="6b4b3ba2253d84ed3771c8050728d597c91cfce898713beb7b64a305b6f11aad") + version("7.6p1", sha256="a323caeeddfe145baaa0db16e98d784b1fbc7dd436a6bf1f479dfd5cd1d21723") + version("7.5p1", sha256="9846e3c5fab9f0547400b4d2c017992f914222b3fd1f8eee6c7dc6bc5e59f9f0") + version("7.4p1", sha256="1b1fc4a14e2024293181924ed24872e6f2e06293f3e8926a376b8aec481f19d1") + version("7.3p1", sha256="3ffb989a6dcaa69594c3b550d4855a5a2e1718ccdde7f5e36387b424220fbecc") + version("7.2p2", sha256="a72781d1a043876a224ff1b0032daa4094d87565a68528759c1c2cab5482548c") + version("7.1p2", sha256="dd75f024dcf21e06a0d6421d582690bf987a1f6323e32ad6619392f3bfde6bbd") + version("7.0p1", sha256="fd5932493a19f4c81153d812ee4e042b49bbd3b759ab3d9344abecc2bc1485e5") + version("6.9p1", sha256="6e074df538f357d440be6cf93dc581a21f22d39e236f217fcd8eacbb6c896cfe") + version("6.8p1", sha256="3ff64ce73ee124480b5bf767b9830d7d3c03bbcb6abe716b78f0192c37ce160e") + version("6.7p1", sha256="b2f8394eae858dabbdef7dac10b99aec00c95462753e80342e530bbb6f725507") + version("6.6p1", sha256="48c1f0664b4534875038004cc4f3555b8329c2a81c1df48db5c517800de203bb") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated diff --git a/var/spack/repos/builtin/packages/openssl/package.py b/var/spack/repos/builtin/packages/openssl/package.py index a974bc8c97fb90..cf0e5544fb1919 100644 --- a/var/spack/repos/builtin/packages/openssl/package.py +++ b/var/spack/repos/builtin/packages/openssl/package.py @@ -30,26 +30,47 @@ class Openssl(Package): # Uses Fake Autotools, should subclass Package license("Apache-2.0") - version("3.3.1", sha256="777cd596284c883375a2a7a11bf5d2786fc5413255efab20c50d6ffe6d020b7e") - version("3.2.2", sha256="197149c18d9e9f292c43f0400acaba12e5f52cacfe050f3d199277ea738ec2e7") - version("3.1.6", sha256="5d2be4036b478ef3cb0a854ca9b353072c3a0e26d8a56f8f0ab9fb6ed32d38d7") - version("3.0.14", sha256="eeca035d4dd4e84fc25846d952da6297484afa0650a6f84c682e39df3a4123ca") + 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.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", diff --git a/var/spack/repos/builtin/packages/optipng/for_aarch64.patch b/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.7.patch similarity index 100% rename from var/spack/repos/builtin/packages/optipng/for_aarch64.patch rename to var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.7.patch diff --git a/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.8.patch b/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.8.patch new file mode 100644 index 00000000000000..9fa2386b3c1e8b --- /dev/null +++ b/var/spack/repos/builtin/packages/optipng/for_aarch64_0.7.8.patch @@ -0,0 +1,11 @@ +--- spack-src/configure.bak 2017-12-27 20:57:00.000000000 +0900 ++++ spack-src/configure 2020-09-28 17:04:51.030223443 +0900 +@@ -193,7 +193,7 @@ + if test "$gccish" -ne 0 + then + CC="${CC-$cc}" +- CFLAGS="${CFLAGS--O2 -Wall -Wextra -Wundef}" ++ CFLAGS="${CFLAGS--O2 -Wall -Wextra -Wundef -DPNG_ARM_NEON_OPT=0}" + else + CC="${CC-cc}" + CFLAGS="${CFLAGS--O}" diff --git a/var/spack/repos/builtin/packages/optipng/package.py b/var/spack/repos/builtin/packages/optipng/package.py index ddbfb626bacf7d..9223cce45c1d22 100644 --- a/var/spack/repos/builtin/packages/optipng/package.py +++ b/var/spack/repos/builtin/packages/optipng/package.py @@ -19,9 +19,14 @@ class Optipng(AutotoolsPackage, SourceforgePackage): license("Zlib") - version("0.7.7", sha256="4f32f233cef870b3f95d3ad6428bfe4224ef34908f1b42b0badf858216654452") + version("0.7.8", sha256="25a3bd68481f21502ccaa0f4c13f84dcf6b20338e4c4e8c51f2cefbd8513398c") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-43907 + version("0.7.7", sha256="4f32f233cef870b3f95d3ad6428bfe4224ef34908f1b42b0badf858216654452") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated + # See https://github.com/imagemin/optipng-bin/issues/97 - patch("for_aarch64.patch", when="target=aarch64:") + patch("for_aarch64_0.7.7.patch", when="@0.7.7") + patch("for_aarch64_0.7.8.patch", when="@0.7.8:") diff --git a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py index bf2c2e505dc20c..204e4e97f74a4b 100644 --- a/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py +++ b/var/spack/repos/builtin/packages/osu-micro-benchmarks/package.py @@ -20,6 +20,7 @@ class OsuMicroBenchmarks(AutotoolsPackage, CudaPackage, ROCmPackage): maintainers("natshineman", "harisubramoni", "MatthewLieber") + version("7.5", sha256="1cf84ac5419456202757a757c5f9a4f5c6ecd05c65783c7976421cfd6020b3b3") version("7.4", sha256="1edd0c2efa61999409bfb28740a7f39689a5b42b1a1b4c66d1656e5637f7cefc") version("7.3", sha256="8fa25b8aaa34e4b07ab3a4f30b7690ab46b038b08d204a853a9b6aa7bdb02f2f") version("7.2", sha256="1a4e1f2aab0e65404b3414e23bd46616184b69b6231ce9313d9c630bd6e633c1") diff --git a/var/spack/repos/builtin/packages/otf-cpt/package.py b/var/spack/repos/builtin/packages/otf-cpt/package.py new file mode 100644 index 00000000000000..4ad43a6b2923fa --- /dev/null +++ b/var/spack/repos/builtin/packages/otf-cpt/package.py @@ -0,0 +1,37 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class OtfCpt(CMakePackage): + """Tool to collect and report model factors (aka. fundamental performance factors) + for hybrid MPI + OpenMP applications on-the-fly.""" + + # Add a proper url for your package's homepage here. + homepage = ( + "https://github.com/RWTH-HPC/OTF-CPT?tab=readme-ov-file#on-the-fly-critical-path-tool" + ) + git = "https://github.com/RWTH-HPC/OTF-CPT.git" + + maintainers("jgraciahlrs", "jprotze") + + license("Apache-2.0", checked_by="jgraciahlrs") + + version("0.9", tag="v0.9") + + depends_on("cxx", type="build") + depends_on("mpi") + conflicts( + "%gcc", + # Use a clang compiler with a matching libomp, e.g. 'sudo apt install libomp-14-dev': + msg="gcc currently does not support OMPT, please use a clang-like compiler with libomp", + ) + + patch( + "https://github.com/RWTH-HPC/OTF-CPT/commit/b58f83588a4c231b71ca48dcddd909e1ab318cc6.diff?full_index=1", + sha256="35fadc3e61e5b7aa3a68272f701af3a242e30a435f1ddd679577ba35c7496565", + when="@0.9", + ) diff --git a/var/spack/repos/builtin/packages/pango/package.py b/var/spack/repos/builtin/packages/pango/package.py index 5e4db93eba4551..ae032673aa65b7 100644 --- a/var/spack/repos/builtin/packages/pango/package.py +++ b/var/spack/repos/builtin/packages/pango/package.py @@ -22,6 +22,7 @@ class Pango(MesonPackage): # Do not upgrade to v1.90.x. It is a development release in preparation for # v2.0 that will break API and ABI compatibility. For more information see # https://download.gnome.org/sources/pango/1.90/pango-1.90.0.news + version("1.54.0", sha256="8a9eed75021ee734d7fc0fdf3a65c3bba51dfefe4ae51a9b414a60c70b2d1ed8") version("1.52.2", sha256="d0076afe01082814b853deec99f9349ece5f2ce83908b8e58ff736b41f78a96b") version("1.50.13", sha256="5cdcf6d761d26a3eb9412b6cb069b32bd1d9b07abf116321167d94c2189299fd") version("1.50.7", sha256="0477f369a3d4c695df7299a6989dc004756a7f4de27eecac405c6790b7e3ad33") @@ -30,14 +31,26 @@ class Pango(MesonPackage): version("1.47.0", sha256="730db8652fc43188e03218c3374db9d152351f51fc7011b9acae6d0a6c92c367") version("1.46.2", sha256="d89fab5f26767261b493279b65cfb9eb0955cd44c07c5628d36094609fc51841") version("1.45.5", sha256="f61dd911de2d3318b43bbc56bd271637a46f9118a1ee4378928c06df8a1c1705") - version("1.44.6", sha256="3e1e41ba838737e200611ff001e3b304c2ca4cdbba63d200a20db0b0ddc0f86c") - version("1.42.4", sha256="1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2019-1010238 + version( + "1.44.6", sha256="3e1e41ba838737e200611ff001e3b304c2ca4cdbba63d200a20db0b0ddc0f86c" + ) + version( + "1.42.4", sha256="1d2b74cd63e8bd41961f2f8d952355aa0f9be6002b52c8aa7699d9f5da597c9d" + ) depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated variant("X", default=False, description="Enable an X toolkit") + depends_on("meson@0.48:", type="build", when="@1.43:") + depends_on("meson@0.50:", type="build", when="@1.44.4:") + depends_on("meson@0.54:", type="build", when="@1.48.0:") + depends_on("meson@0.55.3:", type="build", when="@1.48.1:") + depends_on("meson@0.60:", type="build", when="@1.50.13:") + depends_on("meson@0.63:", type="build", when="@1.54:") depends_on("pkgconfig@0.9.0:", type="build") depends_on("harfbuzz") depends_on("harfbuzz+coretext", when="platform=darwin") @@ -89,7 +102,9 @@ def meson_args(self): args.append("-Dxft=disabled") # disable building of gtk-doc files following #9885 and #9771 - if spec.satisfies("@1.44:"): + if spec.satisfies("@1.54:"): + args.append("-Ddocumentation=false") + elif spec.satisfies("@1.44:"): args.append("-Dgtk_doc=false") else: args.append("-Denable_docs=false") diff --git a/var/spack/repos/builtin/packages/papi/package.py b/var/spack/repos/builtin/packages/papi/package.py index b1c869f7bada03..4ce382af5f1b2f 100644 --- a/var/spack/repos/builtin/packages/papi/package.py +++ b/var/spack/repos/builtin/packages/papi/package.py @@ -59,6 +59,12 @@ class Papi(AutotoolsPackage, ROCmPackage): variant("cuda", default=False, description="Enable CUDA support") variant("nvml", default=False, description="Enable NVML support") variant("rocm_smi", default=False, description="Enable ROCm SMI support") + variant( + "rdpmc", + default=True, + when="@6.0.0:", + description="Enable use of rdpmc for reading counters, when possible", + ) variant("shared", default=True, description="Build shared libraries") # PAPI requires building static libraries, so there is no "static" variant @@ -79,6 +85,8 @@ class Papi(AutotoolsPackage, ROCmPackage): conflicts("%gcc@8:", when="@5.3.0", msg="Requires GCC version less than 8.0") conflicts("+sde", when="@:5", msg="Software defined events (SDE) added in 6.0.0") conflicts("^cuda", when="@:5", msg="CUDA support for versions < 6.0.0 not implemented") + # https://github.com/icl-utk-edu/papi/pull/205 + conflicts("^cuda@12.4:", when="@:7.1") conflicts("%cce", when="@7.1:", msg="-ffree-form flag not recognized") conflicts("@=6.0.0", when="+static_tools", msg="Static tools cannot build on version 6.0.0") @@ -159,6 +167,9 @@ def configure_args(self): build_shared = "yes" if "+shared" in spec else "no" options.append("--with-shared-lib=" + build_shared) + build_rdpmc_support = "yes" if "+rdpmc" in spec else "no" + options.append("--enable-perfevent-rdpmc=" + build_rdpmc_support) + if "+static_tools" in spec: options.append("--with-static-tools") diff --git a/var/spack/repos/builtin/packages/paraview/package.py b/var/spack/repos/builtin/packages/paraview/package.py index 92cbdb89919f64..442bd2b12c2c0a 100644 --- a/var/spack/repos/builtin/packages/paraview/package.py +++ b/var/spack/repos/builtin/packages/paraview/package.py @@ -88,6 +88,7 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): variant("nvindex", default=False, description="Enable the pvNVIDIAIndeX plugin") variant("tbb", default=False, description="Enable multi-threaded parallelism with TBB") variant("adios2", default=False, description="Enable ADIOS2 support", when="@5.8:") + variant("fides", default=False, description="Enable Fides support", when="@5.9:") variant("visitbridge", default=False, description="Enable VisItBridge support") variant("raytracing", default=False, description="Enable Raytracing support") variant("cdi", default=False, description="Enable CDI support") @@ -130,6 +131,9 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): conflicts("~hdf5", when="+visitbridge") conflicts("+adios2", when="@:5.10 ~mpi") + conflicts("+fides", when="~adios2", msg="Fides needs ADIOS2") + conflicts("+fides", when="use_vtkm=off", msg="Fides needs VTK-m") + conflicts("+fides", when="use_vtkm=default", msg="Fides needs VTK-m") conflicts("+openpmd", when="~adios2 ~hdf5", msg="openPMD needs ADIOS2 and/or HDF5") conflicts("~shared", when="+cuda") conflicts("+cuda", when="@5.8:5.10") @@ -225,6 +229,7 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): depends_on("tbb", when="+tbb") depends_on("mpi", when="+mpi") + conflicts("mpi", when="~mpi") depends_on("qt@:4", when="@:5.2.0+qt") depends_on("qt+sql", when="+qt") @@ -304,6 +309,8 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): # and pre-5.9 is unable to handle that. depends_on("pugixml@:1.10", when="@:5.8") depends_on("pugixml", when="@5.9:") + # 5.13 uses 'remove_children': https://github.com/spack/spack/issues/47098 + depends_on("pugixml@1.11:", when="@5.13:") # ParaView depends on cli11 due to changes in MR # https://gitlab.kitware.com/paraview/paraview/-/merge_requests/4951 @@ -318,6 +325,9 @@ class Paraview(CMakePackage, CudaPackage, ROCmPackage): # https://gitlab.kitware.com/vtk/vtk/-/merge_requests/8474 depends_on("proj@8.1.0", when="@5.11:") + # Patches to vendored VTK-m are needed for forward compat with CUDA 12 (mr 2972 and 3259) + depends_on("cuda@:11", when="+cuda") + patch("stl-reader-pv440.patch", when="@4.4.0") # Broken gcc-detection - improved in 5.1.0, redundant later @@ -573,6 +583,9 @@ def use_x11(): if "+adios2" in spec: cmake_args.extend(["-DPARAVIEW_ENABLE_ADIOS2:BOOL=ON"]) + if "+fides" in spec: + cmake_args.append("-DPARAVIEW_ENABLE_FIDES:BOOL=ON") + # 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"): @@ -602,11 +615,9 @@ def use_x11(): else: cmake_args.append("-DPARAVIEW_ENABLE_PYTHON:BOOL=OFF") + cmake_args.append("-DPARAVIEW_USE_MPI:BOOL=%s" % variant_bool("+mpi")) if "+mpi" in spec: - mpi_args = [ - "-DPARAVIEW_USE_MPI:BOOL=ON", - "-DMPIEXEC:FILEPATH=%s/bin/mpiexec" % spec["mpi"].prefix, - ] + mpi_args = ["-DMPIEXEC:FILEPATH=%s/bin/mpiexec" % spec["mpi"].prefix] if not sys.platform == "win32": mpi_args.extend( [ diff --git a/var/spack/repos/builtin/packages/parsec/package.py b/var/spack/repos/builtin/packages/parsec/package.py index faba983eea22ae..e15068a15ea565 100644 --- a/var/spack/repos/builtin/packages/parsec/package.py +++ b/var/spack/repos/builtin/packages/parsec/package.py @@ -15,7 +15,7 @@ class Parsec(CMakePackage, CudaPackage): parallel execution of micro-tasks on distributed, heterogeneous systems. """ - homepage = "https://icl.utk.edu/dte" + homepage = "https://github.com/icldisco/parsec" git = "https://github.com/icldisco/parsec.git" url = "https://github.com/ICLDisco/parsec/archive/refs/tags/parsec-3.0.2012.tar.gz" list_url = "https://github.com/ICLDisco/parsec/tags" @@ -27,20 +27,12 @@ class Parsec(CMakePackage, CudaPackage): license("BSD-3-Clause-Open-MPI") version("master", branch="master") - version( - "3.0.2209", - sha256="67d383d076991484cb2a265f56420abdea7cc1f329c63ac65a3e96fbfb6cc295", - url="https://bitbucket.org/icldistcomp/parsec/get/parsec-3.0.2209.tar.bz2", - ) - version( - "3.0.2012", - sha256="f565bcfffe106be8237b6aea3e83a5770607b7236606414b6f270244fa6ec3bc", - url="https://bitbucket.org/icldistcomp/parsec/get/parsec-3.0.2012.tar.bz2", - ) + version("3.0.2209", sha256="67d383d076991484cb2a265f56420abdea7cc1f329c63ac65a3e96fbfb6cc295") + version("3.0.2012", sha256="7a8403ca67305738f3974cbc7a51b64c4ec353ae9170f2468262a9a52035eff6") version( "1.1.0", - sha256="d2928033c121000ae0a554f1e7f757c1f22274a8b74457ecd52744ae1f70b95a", - url="https://bitbucket.org/icldistcomp/parsec/get/v1.1.0.tar.bz2", + sha256="d1e038713f2c1cd7db6765c891408d85648c46ee23e780fbd5e941b53c9eef85", + url="https://github.com/ICLDisco/parsec/archive/refs/tags/v1.1.0.tar.gz", ) variant( diff --git a/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py b/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py index 20d234220fbb49..ccabf07271d92a 100644 --- a/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py +++ b/var/spack/repos/builtin/packages/perl-mozilla-publicsuffix/package.py @@ -24,8 +24,8 @@ class PerlMozillaPublicsuffix(PerlPackage): depends_on("perl-module-build", type="build") depends_on("perl@5.8:", type=("build", "run")) # AUTO-CPAN2Spack - depends_on("perl-uri", type="run") # AUTO-CPAN2Spack depends_on("perl-module-build@0.28:", type="build") # AUTO-CPAN2Spack + depends_on("perl-uri") def patch(self): """HTTP::Tiny has a bad interaction with Errno.pm for Perl <5.22""" diff --git a/var/spack/repos/builtin/packages/petsc/package.py b/var/spack/repos/builtin/packages/petsc/package.py index 876419cb85dcae..918b2e83679969 100644 --- a/var/spack/repos/builtin/packages/petsc/package.py +++ b/var/spack/repos/builtin/packages/petsc/package.py @@ -23,6 +23,7 @@ class Petsc(Package, CudaPackage, ROCmPackage): tags = ["e4s"] version("main", branch="main") + version("3.22.1", sha256="7117d3ae6827f681ed9737939d4e86896b4751e27cca941bb07e5703f19a0a7b") version("3.22.0", sha256="2c03f7c0f7ad2649240d4989355cf7fb7f211b75156cd7d424e1d9dd7dfb290b") version("3.21.6", sha256="cb2dc00742a89cf8acf9ff8aae189e6864e8b90f4997f087be6e54ff39c30d74") version("3.21.5", sha256="4eb1ec04c1a8988bd524f71f8d7d980dc1853d5be8791c0f19f3c09eef71fdd2") @@ -513,6 +514,9 @@ def configure_options(self): else: hdf5libs = ":hl" + if "+exodusii+fortran" in spec and "+fortran" in spec: + options.append("--with-exodusii-fortran-bindings") + # tuple format (spacklibname, petsclibname, useinc, uselib) # default: 'gmp', => ('gmp', 'gmp', True, True) # any other combination needs a full tuple @@ -552,7 +556,7 @@ def configure_options(self): ("parallel-netcdf", "pnetcdf", True, True), ("moab", "moab", False, False), ("random123", "random123", False, False), - "exodusii", + ("exodusii", "exodusii", False, False), "cgns", "memkind", "p4est", diff --git a/var/spack/repos/builtin/packages/ph5concat/package.py b/var/spack/repos/builtin/packages/ph5concat/package.py new file mode 100644 index 00000000000000..949d86d24b66d9 --- /dev/null +++ b/var/spack/repos/builtin/packages/ph5concat/package.py @@ -0,0 +1,35 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Ph5concat(AutotoolsPackage): + """Parallel Data Concatenation for High Energy Physics Data Analysis""" + + homepage = "https://github.com/NU-CUCIS/ph5concat" + url = "https://github.com/NU-CUCIS/ph5concat/archive/v1.1.0.tar.gz" + + maintainers("vhewes") + + version("1.1.0", sha256="cecc22325a56771cda1fc186e6bd1f9bde2957beca3fa9a387d55462efd5254f") + + depends_on("autoconf", type="build") + depends_on("automake", type="build") + depends_on("libtool", type="build") + + depends_on("zlib") + depends_on("hdf5+hl+mpi@1.10.4:1.12") + depends_on("mpich") + + variant("profiling", default=False, description="Enable profiling support") + + def setup_build_environment(self, env): + env.set("LIBS", "-ldl -lz") + + def configure_args(self): + args = [f"--with-{pkg}={self.spec[pkg].prefix}" for pkg in ("hdf5", "mpich")] + args.extend(self.enable_or_disable("profiling")) + return args diff --git a/var/spack/repos/builtin/packages/pika/package.py b/var/spack/repos/builtin/packages/pika/package.py index b67fc4c64cfde7..8a9b901a5c7fb8 100644 --- a/var/spack/repos/builtin/packages/pika/package.py +++ b/var/spack/repos/builtin/packages/pika/package.py @@ -19,6 +19,7 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): license("BSL-1.0") + version("0.30.0", sha256="1798bf7de2505bc707bf95716fda8de5630b2e2ae54a6c4ef59f9931394d31cc") version("0.29.0", sha256="2c61079f52f3e135a8d0845a993e6e4fb64031fbee9b5cef0ead57efb6175e3c") version("0.28.0", sha256="a64ebac04135c0c8d392ddcd8d683fe02e2c0782abfe130754244d58f27ae6cf") version("0.27.0", sha256="4a58dc4014edc2074399e4a6ecfa244537c89ce1319b3e14ff3dfe617fb9f9e8") @@ -117,6 +118,8 @@ class Pika(CMakePackage, CudaPackage, ROCmPackage): conflicts("%clang@:8", when="@0.2:") conflicts("+stdexec", when="cxxstd=17") conflicts("cxxstd=23", when="^cmake@:3.20.2") + conflicts("cxxstd=20", when="+cuda ^cmake@:3.25.1") + conflicts("cxxstd=23", when="+cuda") # nvcc version <= 11 does not support C++20 and newer for cxxstd in filter(lambda x: x != "17", cxxstds): requires("%nvhpc", when=f"cxxstd={cxxstd} ^cuda@:11") diff --git a/var/spack/repos/builtin/packages/pixman/package.py b/var/spack/repos/builtin/packages/pixman/package.py index a1abb45bba7744..e84ff0a48aaa1f 100644 --- a/var/spack/repos/builtin/packages/pixman/package.py +++ b/var/spack/repos/builtin/packages/pixman/package.py @@ -18,6 +18,7 @@ class Pixman(AutotoolsPackage): license("MIT") + version("0.44.0", sha256="89a4c1e1e45e0b23dffe708202cb2eaffde0fe3727d7692b2e1739fec78a7dac") version("0.42.2", sha256="ea1480efada2fd948bc75366f7c349e1c96d3297d09a3fe62626e38e234a625e") version("0.42.0", sha256="07f74c8d95e4a43eb2b08578b37f40b7937e6c5b48597b3a0bb2c13a53f46c13") version("0.40.0", sha256="6d200dec3740d9ec4ec8d1180e25779c00bc749f94278c8b9021f5534db223fc") @@ -26,11 +27,19 @@ class Pixman(AutotoolsPackage): version("0.34.0", sha256="21b6b249b51c6800dc9553b65106e1e37d0e25df942c90531d4c3997aa20a88e") version("0.32.6", sha256="3dfed13b8060eadabf0a4945c7045b7793cc7e3e910e748a8bb0f0dc3e794904") - depends_on("c", type="build") # generated + build_system( + conditional("autotools", when="@:0.42"), + conditional("meson", when="@0.38:"), + default="meson", + ) + depends_on("c", type="build") + with when("build_system=meson"): + depends_on("meson@0.52:", type="build") depends_on("pkgconfig", type="build") depends_on("flex", type="build") depends_on("bison@3:", type="build") + depends_on("libpng") variant("shared", default=True, description="Build shared library") @@ -68,6 +77,32 @@ def libs(self): "libpixman-1", self.prefix, shared=self.spec.satisfies("+shared"), recursive=True ) + +class MesonBuilder(spack.build_systems.meson.MesonBuilder): + def meson_args(self): + args = ["-Dlibpng=enabled", "-Dgtk=disabled", "-Db_staticpic=true"] + + if sys.platform == "darwin": + args += ["-Dmmx=disabled"] + + # From homebrew, see: + # https://gitlab.freedesktop.org/pixman/pixman/-/issues/59 + # https://gitlab.freedesktop.org/pixman/pixman/-/issues/69 + if self.spec.target.family == "aarch64": + args.append("-Da64-neon=disabled") + + # The Fujitsu compiler does not support assembler macros. + if self.spec.satisfies("%fj"): + args.append("-Da64-neon=disabled") + + args.append( + "-Ddefault_library=" + ("shared" if self.spec.satisfies("+shared") else "static") + ) + + return args + + +class AutotoolsBuilder(spack.build_systems.autotools.AutotoolsBuilder): def configure_args(self): args = ["--enable-libpng", "--disable-gtk", "--with-pic"] diff --git a/var/spack/repos/builtin/packages/prometheus-cpp/package.py b/var/spack/repos/builtin/packages/prometheus-cpp/package.py new file mode 100644 index 00000000000000..fc1a62b150d254 --- /dev/null +++ b/var/spack/repos/builtin/packages/prometheus-cpp/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PrometheusCpp(CMakePackage): + """Prometheus Client Library for Modern C++.""" + + homepage = "https://jupp0r.github.io/prometheus-cpp/" + url = "https://github.com/jupp0r/prometheus-cpp/releases/download/v1.2.4/prometheus-cpp-with-submodules.tar.gz" + git = "https://github.com/jupp0r/prometheus-cpp.git" + + license("MIT", checked_by="mdorier") + + version("master", branch="master", submodules=True) + version("1.2.4", sha256="0d6852291063c35853e88805c73b52f73c0c08b78c1e7bc4d588fcf72a7172eb") + + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("cmake@3.14.0:", type="build") + depends_on("zlib") + depends_on("curl") + + def cmake_args(self): + args = ["-DBUILD_SHARED_LIBS=ON", "-DENABLE_TESTING=OFF"] + return args diff --git a/var/spack/repos/builtin/packages/prometheus/package.py b/var/spack/repos/builtin/packages/prometheus/package.py index 3e6c8baab10b03..1a818f8a492cf2 100644 --- a/var/spack/repos/builtin/packages/prometheus/package.py +++ b/var/spack/repos/builtin/packages/prometheus/package.py @@ -15,6 +15,7 @@ class Prometheus(MakefilePackage): license("Apache-2.0") + version("2.55.1", sha256="f48251f5c89eea6d3b43814499d558bacc4829265419ee69be49c5af98f79573") version("2.19.2", sha256="d4e84cae2fed6761bb8a80fcc69b6e0e9f274d19dffc0f38fb5845f11da1bbc3") version("2.19.1", sha256="b72b9b6bdbae246dcc29ef354d429425eb3c0a6e1596fc8b29b502578a4ce045") version("2.18.2", sha256="a26c106c97d81506e3a20699145c11ea2cce936427a0e96eb2fd0dc7cd1945ba") @@ -26,6 +27,7 @@ class Prometheus(MakefilePackage): depends_on("go", type="build") depends_on("node-js@11.10.1:", type="build") depends_on("yarn", type="build") + depends_on("npm", type="build", when="@2.55.1:") def build(self, spec, prefix): make("build", parallel=False) @@ -34,5 +36,6 @@ def install(self, spec, prefix): mkdirp(prefix.bin) install("prometheus", prefix.bin) install("promtool", prefix.bin) - install("tsdb/tsdb", prefix.bin) + if spec.satisfies("@:2.19.2"): + install("tsdb/tsdb", prefix.bin) install_tree("documentation", prefix.documentation) diff --git a/var/spack/repos/builtin/packages/pumi/package.py b/var/spack/repos/builtin/packages/pumi/package.py index a2ce76b27ce621..76bb0a7618037b 100644 --- a/var/spack/repos/builtin/packages/pumi/package.py +++ b/var/spack/repos/builtin/packages/pumi/package.py @@ -30,6 +30,9 @@ class Pumi(CMakePackage): # scorec/core develop branch and we prefer not to expose spack users # to the added instability. version("master", submodules=True, branch="master") + version( + "2.2.9", submodules=True, commit="f87525cae7597322edfb2ccf1c7d4437402d9481" + ) # tag 2.2.9 version( "2.2.8", submodules=True, commit="736bb87ccd8db51fc499a1b91e53717a88841b1f" ) # tag 2.2.8 diff --git a/var/spack/repos/builtin/packages/py-alive-progress/package.py b/var/spack/repos/builtin/packages/py-alive-progress/package.py index 944dce0a95f557..0342326115af66 100644 --- a/var/spack/repos/builtin/packages/py-alive-progress/package.py +++ b/var/spack/repos/builtin/packages/py-alive-progress/package.py @@ -16,12 +16,15 @@ class PyAliveProgress(PythonPackage): license("MIT") + version("3.2.0", sha256="ede29d046ff454fe56b941f686f89dd9389430c4a5b7658e445cb0b80e0e4deb") version("2.4.1", sha256="089757c8197f27ad972ba27e1060f6db92368d83c736884e159034fd74865323") version("1.6.2", sha256="642e1ce98becf226c8c36bf24e10221085998c5465a357a66fb83b7dc618b43e") - depends_on("python@2.7:3.8", type=("build", "run")) + depends_on("python@2.7:3", type=("build", "run")) depends_on("python@3.6:3", type=("build", "run"), when="@2:") depends_on("python@3.7:3", type=("build", "run"), when="@2.2:") + depends_on("python@3.9:3", type=("build", "run"), when="@3.2:") depends_on("py-setuptools", type="build") - depends_on("py-about-time@3.1.1", type=("build", "run"), when="@2.4.1:") + depends_on("py-about-time@3.1.1", type=("build", "run"), when="@2.4.1") + depends_on("py-about-time@4.2.1", type=("build", "run"), when="@3:") depends_on("py-grapheme@0.6.0", type=("build", "run"), when="@2.4.1:") diff --git a/var/spack/repos/builtin/packages/py-arpeggio/package.py b/var/spack/repos/builtin/packages/py-arpeggio/package.py new file mode 100644 index 00000000000000..ade277aac21636 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-arpeggio/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyArpeggio(PythonPackage): + """Packrat parser interpreter.""" + + homepage = "https://github.com/textX/Arpeggio" + pypi = "Arpeggio/Arpeggio-2.0.2.tar.gz" + + license("MIT") + + version("2.0.2", sha256="c790b2b06e226d2dd468e4fbfb5b7f506cec66416031fde1441cf1de2a0ba700") + + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-asdf-standard/package.py b/var/spack/repos/builtin/packages/py-asdf-standard/package.py index e31384bddc81a3..d6dfe2a80cabae 100644 --- a/var/spack/repos/builtin/packages/py-asdf-standard/package.py +++ b/var/spack/repos/builtin/packages/py-asdf-standard/package.py @@ -16,11 +16,17 @@ class PyAsdfStandard(PythonPackage): license("BSD-3-Clause") + version("1.1.1", sha256="01535bc2b15bfc09ec8a62d4999f9cf32dc49dc71660c8425640228fd8776102") version("1.0.3", sha256="afd8ff9a70e7b17f6bcc64eb92a544867d5d4fe1f0076719142fdf62b96cfd44") + with when("@1.1.1:"): + depends_on("python@3.9:", type=("build", "run")) + + depends_on("py-setuptools@61:", type="build") + 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-importlib-resources@3:", type=("build", "run"), when="^python@:3.8") + depends_on("py-importlib-resources@3:", type=("build", "run"), when="@1.0.3 ^python@:3.8") diff --git a/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py b/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py index 7593dae246d10c..d714dbb40940a8 100644 --- a/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py +++ b/var/spack/repos/builtin/packages/py-asdf-transform-schemas/package.py @@ -9,7 +9,7 @@ class PyAsdfTransformSchemas(PythonPackage): """ASDF schemas for transforms""" - homepage = "asdf-transform-schemas.readthedocs.io" + homepage = "https://asdf-transform-schemas.readthedocs.io" pypi = "asdf_transform_schemas/asdf_transform_schemas-0.3.0.tar.gz" maintainers("lgarrison") diff --git a/var/spack/repos/builtin/packages/py-asdf/package.py b/var/spack/repos/builtin/packages/py-asdf/package.py index cd5ddf25638db8..236d0894a239d7 100644 --- a/var/spack/repos/builtin/packages/py-asdf/package.py +++ b/var/spack/repos/builtin/packages/py-asdf/package.py @@ -18,6 +18,7 @@ class PyAsdf(PythonPackage): license("BSD-3-Clause") + version("3.5.0", sha256="047ad7bdd8f40b04b8625abfd119a35d18b344301c60ea9ddf63964e7ce19669") version("2.15.0", sha256="686f1c91ebf987d41f915cfb6aa70940d7ad17f87ede0be70463147ad2314587") version("2.4.2", sha256="6ff3557190c6a33781dae3fd635a8edf0fa0c24c6aca27d8679af36408ea8ff2") @@ -25,7 +26,15 @@ class PyAsdf(PythonPackage): depends_on("py-lz4@0.10:", when="+lz4", type=("build", "run")) - with when("@2.15:"): + with when("@3.5.0:"): + depends_on("python@3.9:", type=("build", "run")) + + depends_on("py-asdf-standard@1.1.0:", type=("build", "run")) + depends_on("py-importlib-metadata@4.11.4:", type=("build", "run"), when="^python@:3.11") + depends_on("py-numpy@1.22:", type=("build", "run")) + depends_on("py-attrs@22.2.0:", type=("build", "run")) + + with when("@2.15.0:"): depends_on("python@3.8:", type=("build", "run")) depends_on("py-setuptools@60:", type="build") @@ -33,17 +42,19 @@ class PyAsdf(PythonPackage): depends_on("py-asdf-standard@1.0.1:", type=("build", "run")) depends_on("py-asdf-transform-schemas@0.3:", type=("build", "run")) - depends_on("py-asdf-unit-schemas@0.1:", type=("build", "run")) - depends_on("py-importlib-metadata@4.11.4:", type=("build", "run")) - depends_on("py-importlib-resources@3:", type=("build", "run"), when="^python@:3.8") depends_on("py-jmespath@0.6.2:", type=("build", "run")) - depends_on("py-jsonschema@4.0.1:4.17", type=("build", "run")) depends_on("py-numpy@1.20:", type=("build", "run")) - depends_on("py-numpy@1.20:1.24", type=("build", "run"), when="^python@:3.8") depends_on("py-packaging@19:", type=("build", "run")) depends_on("py-pyyaml@5.4.1:", type=("build", "run")) depends_on("py-semantic-version@2.8:", type=("build", "run")) + with when("@2.15.0"): + depends_on("py-asdf-unit-schemas@0.1:", type=("build", "run")) + depends_on("py-importlib-metadata@4.11.4:", type=("build", "run")) + depends_on("py-importlib-resources@3:", type=("build", "run"), when="^python@:3.8") + depends_on("py-jsonschema@4.0.1:4.17", type=("build", "run")) + depends_on("py-numpy@1.20:1.24", type=("build", "run"), when="^python@:3.8") + with when("@2.4.2"): depends_on("python@3.3:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-asdfghjkl/package.py b/var/spack/repos/builtin/packages/py-asdfghjkl/package.py new file mode 100644 index 00000000000000..c9aab6fa6c8fac --- /dev/null +++ b/var/spack/repos/builtin/packages/py-asdfghjkl/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyAsdfghjkl(PythonPackage): + """ASDL: Automatic Second-order Differentiation (for Fisher, Gradient covariance, Hessian, + Jacobian, and Kernel) Library.""" + + homepage = "https://github.com/kazukiosawa/asdl" + pypi = "asdfghjkl/asdfghjkl-0.1a4.tar.gz" + + license("MIT") + + version("0.1a4", sha256="a934411a0ffdee6fcdccb19672196498ea6a8e55e3e67abbe67200c84b46ddee") + + depends_on("py-setuptools@42:") + + with default_args(type=("build", "run")): + depends_on("py-torch@1.13:") + depends_on("py-numpy") diff --git a/var/spack/repos/builtin/packages/py-ase/package.py b/var/spack/repos/builtin/packages/py-ase/package.py index e949990ea44d1c..fb091295e0d17e 100644 --- a/var/spack/repos/builtin/packages/py-ase/package.py +++ b/var/spack/repos/builtin/packages/py-ase/package.py @@ -16,6 +16,7 @@ class PyAse(PythonPackage): license("LGPL-2.1-or-later") + version("3.23.0", sha256="91a2aa31d89bd90b0efdfe4a7e84264f32828b2abfc9f38e65e041ad76fec8ae") version("3.21.1", sha256="78b01d88529d5f604e76bc64be102d48f058ca50faad72ac740d717545711c7b") version("3.21.0", sha256="2c561e9b767cf16fc8ce198ea9326d77c6b67d33a85f44b68455e23466a64608") version("3.20.1", sha256="72c81f21b6adb907595fce8d883c0231301cbd8e9f6e5ce8e98bab927054daca") @@ -32,8 +33,12 @@ class PyAse(PythonPackage): depends_on("python@2.6:", type=("build", "run"), when="@:3.15.0") depends_on("python@3.5:", type=("build", "run"), when="@3.18.0:") depends_on("python@3.6:", type=("build", "run"), when="@3.20.0:") + depends_on("python@3.8:", type=("build", "run"), when="@3.23.0:") depends_on("py-numpy@1.11.3:", type=("build", "run")) + depends_on("py-numpy@1.18.5:", type=("build", "run"), when="@3.23.0:") depends_on("py-matplotlib@2.0.0:", type=("build", "run")) + depends_on("py-matplotlib@3.3.4:", type=("build", "run"), when="@3.23.0:") depends_on("py-scipy@0.18.1:", type=("build", "run")) + depends_on("py-scipy@1.6.0:", type=("build", "run"), when="@3.23.0:") depends_on("py-flask", type=("build", "run"), when="@:3.18.0") depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-azure-nspkg/package.py b/var/spack/repos/builtin/packages/py-azure-nspkg/package.py index 7153b8b926373e..e7b85a8cee7851 100644 --- a/var/spack/repos/builtin/packages/py-azure-nspkg/package.py +++ b/var/spack/repos/builtin/packages/py-azure-nspkg/package.py @@ -10,7 +10,7 @@ class PyAzureNspkg(PythonPackage): """Microsoft Azure Namespace Package [Internal].""" - homepage = "hhttps://github.com/Azure/azure-sdk-for-python" + homepage = "https://github.com/Azure/azure-sdk-for-python" pypi = "azure-nspkg/azure-nspkg-3.0.2.zip" version("3.0.2", sha256="e7d3cea6af63e667d87ba1ca4f8cd7cb4dfca678e4c55fc1cedb320760e39dd0") diff --git a/var/spack/repos/builtin/packages/py-backpack-for-pytorch/package.py b/var/spack/repos/builtin/packages/py-backpack-for-pytorch/package.py new file mode 100644 index 00000000000000..c8579d87ac7e2a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-backpack-for-pytorch/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyBackpackForPytorch(PythonPackage): + """BackPACK: Packing more into backprop.""" + + homepage = "https://github.com/f-dangel/backpack" + pypi = "backpack-for-pytorch/backpack-for-pytorch-1.6.0.tar.gz" + + license("MIT") + + version("1.6.0", sha256="af6495b71bacf82a1c7cab01aa85bebabccfe74d87d89f108ea72a4a0d384de3") + + with default_args(type="build"): + depends_on("py-setuptools@38.3:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch@1.9:") + depends_on("py-torchvision@0.7:") + depends_on("py-einops@0.3:0") + depends_on("py-unfoldnd@0.2:0") diff --git a/var/spack/repos/builtin/packages/py-bakta/package.py b/var/spack/repos/builtin/packages/py-bakta/package.py index 57dcbc64bb398c..edec5d634fd1ac 100644 --- a/var/spack/repos/builtin/packages/py-bakta/package.py +++ b/var/spack/repos/builtin/packages/py-bakta/package.py @@ -18,21 +18,42 @@ class PyBakta(PythonPackage): license("GPL-3.0-only") + version("1.9.4", sha256="10330a10e459144dc78daa26f3a73674799706e2e1653e080366b1bbb9e5a5d9") version("1.5.1", sha256="36781612c4eaa99e6e24a00e8ab5b27dadf21c98ae6d16432f3e78c96a4adb5d") - depends_on("python@3.8:", type=("build", "run")) + variant("deepsig", default=True, description="builds with deepsig to predict signal peptides") + + depends_on("python@3.8:3.10", type=("build", "run")) depends_on("py-setuptools", type=("build", "run")) depends_on("py-biopython@1.78:", type=("build", "run")) - depends_on("py-xopen@1.1.0:", type=("build", "run")) + depends_on("py-xopen@1.5.0:", when="@1.8.2:", type=("build", "run")) + depends_on("py-xopen@1.1.0:", when="@:1.8.1", type=("build", "run")) depends_on("py-requests@2.25.1:", type=("build", "run")) - depends_on("py-alive-progress@1.6.2", type=("build", "run")) - depends_on("trnascan-se@2.0.8:", type=("build", "run")) - depends_on("aragorn@1.2.38:", type=("build", "run")) + depends_on("py-alive-progress@3.0.1:", when="@1.7.0:", type=("build", "run")) + depends_on("py-alive-progress@1.6.2", when="@:1.6.1", type=("build", "run")) + depends_on("py-pyyaml@6.0:", when="@1.6.0:", type=("build", "run")) + depends_on("trnascan-se@2.0.11:", when="@1.6.0:", type=("build", "run")) + depends_on("trnascan-se@2.0.8:", when="@:1.5.1", type=("build", "run")) + depends_on("aragorn@1.2.41:", when="@1.7.0:", type=("build", "run")) + depends_on("aragorn@1.2.38:", when="@:1.6.1", type=("build", "run")) depends_on("infernal@1.1.4:", type=("build", "run")) depends_on("pilercr@1.06:", type=("build", "run")) - depends_on("prodigal@2.6.3:", type=("build", "run")) - depends_on("hmmer@3.3.2:", type=("build", "run")) - depends_on("diamond@2.0.14:", type=("build", "run")) - depends_on("blast-plus@2.12.0:", type=("build", "run")) - depends_on("amrfinder@3.10.23:", type=("build", "run")) - depends_on("py-deepsig-biocomp@1.2.5:", type=("build", "run")) + depends_on("py-pyrodigal@3.1.0:", when="@1.9.0:", type=("build", "run")) + depends_on("py-pyrodigal@2.1.0:", when="@1.7.0:1.8.2", type=("build", "run")) + depends_on("py-pyrodigal@2.0.2:", when="@1.6.0:1.6.1", type=("build", "run")) + depends_on("prodigal@2.6.3:", when="@:1.5.1", type=("build", "run")) + depends_on("hmmer@3.3.2:", when="@:1.8.1", type=("build", "run")) + depends_on("py-pyhmmer@0.10.4:", when="@1.9.4:", type=("build", "run")) + depends_on("py-pyhmmer@0.10.0:", when="@1.8.2:1.9.3", type=("build", "run")) + # known bug with diamond v2.1.9 + # see https://github.com/oschwengers/bakta/issues/290 + depends_on("diamond@2.1.8,2.1.10:", when="@1.9.0:", type=("build", "run")) + depends_on("diamond@2.0.14:", when="@:1.8.2", type=("build", "run")) + depends_on("blast-plus@2.14.0:", when="@1.9.0:", type=("build", "run")) + depends_on("blast-plus@2.12.0:", when="@:1.8.2", type=("build", "run")) + depends_on("amrfinder@3.11.26:", when="@1.9.0:", type=("build", "run")) + depends_on("amrfinder@3.10.23:", when="@1.5.1", type=("build", "run")) + depends_on("circos@0.69.8:", when="@1.6.0:", type=("build", "run")) + depends_on("py-deepsig-biocomp@1.2.5:", when="+deepsig", type=("build", "run")) + + conflicts("platform=darwin", when="+deepsig") diff --git a/var/spack/repos/builtin/packages/py-braceexpand/package.py b/var/spack/repos/builtin/packages/py-braceexpand/package.py new file mode 100644 index 00000000000000..6da0bfbfc7ccb2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-braceexpand/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class PyBraceexpand(PythonPackage): + """Bash-style brace expansion""" + + homepage = "https://github.com/trendels/braceexpand" + url = "https://github.com/trendels/braceexpand/archive/refs/tags/v0.1.7.tar.gz" + + license("MIT") + + version("0.1.7", sha256="72eb91b62b2fa2dd7f6044b7a4b46a3761ac61fe5945a2a86a4538447ab47e05") + + # Requires py-typing with python@:3.4 but Spack's minimum python is higher + depends_on("py-setuptools") + + @run_after("install") + def copy_test_files(self): + cache_extra_test_sources(self, "test_braceexpand.py") + + def test_unittests(self): + """run the unit tests""" + with working_dir(self.test_suite.current_test_cache_dir): + python("test_braceexpand.py") diff --git a/var/spack/repos/builtin/packages/py-caliper-reader/package.py b/var/spack/repos/builtin/packages/py-caliper-reader/package.py new file mode 100644 index 00000000000000..018736812a30d4 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-caliper-reader/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyCaliperReader(PythonPackage): + """A Python library for reading Caliper .cali files.""" + + homepage = "https://github.com/LLNL/Caliper" + pypi = "caliper-reader/caliper-reader-0.4.0.tar.gz" + + license("BSD-3-Clause") + + version("0.4.0", sha256="00c2c0165a0665dbae58579a1477cb785b3f11350f060e95a6e5ce42f02d5c37") + + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-cfgrib/package.py b/var/spack/repos/builtin/packages/py-cfgrib/package.py index e0f3ed0269e600..c091dc3c0a6dff 100644 --- a/var/spack/repos/builtin/packages/py-cfgrib/package.py +++ b/var/spack/repos/builtin/packages/py-cfgrib/package.py @@ -15,6 +15,7 @@ class PyCfgrib(PythonPackage): license("Apache-2.0") + version("0.9.14.1", sha256="a6e66e8a3d8f9823d3eef0c2c6ebca602d5bcc324f0baf4f3d13f68b0b40501e") version("0.9.10.4", sha256="b490078192aa13ec89c77296110355521442325866b16a996f4b3cf421542909") version("0.9.9.0", sha256="6ff0227df9c5ee34aa7d6ab1f7af3fbe6838523a8a9891c74040b419b03ad289") version("0.9.8.5", sha256="07c224d7ac823a1df5738b96b9d3621515538f51f67e55044f9cc8ec1668e1bd") @@ -29,8 +30,11 @@ class PyCfgrib(PythonPackage): depends_on("py-eccodes", type=("build", "run")) depends_on("py-numpy", type=("build", "run")) - depends_on("py-xarray@0.15:", when="@0.9.10:+xarray", type=("build", "run")) - depends_on("py-xarray@0.12:", when="+xarray", type=("build", "run")) + # 0.9.14.1 enables support for xarray @2024.09.0: + # https://github.com/ecmwf/cfgrib/commit/46a79025146b3847e81629748fc3fe16e56097cf + depends_on("py-xarray@0.15:", when="@0.9.14.1:+xarray", type=("build", "run")) + depends_on("py-xarray@0.15:2024.08.0", when="@0.9.10:0.9.14.0+xarray", type=("build", "run")) + depends_on("py-xarray@0.12:2024.08.0", when="@:0.9.14.0+xarray", type=("build", "run")) # Historical dependencies depends_on("py-pytest-runner", when="@0.9.8.5", type="build") diff --git a/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py b/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py new file mode 100644 index 00000000000000..2734f053d39ee2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-chainforgecodegen/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyChainforgecodegen(PythonPackage): + """A code generator that fuses subsequent batched matrix multiplications (GEMMs) + into a single GPU kernel, holding intermediate results in shared memory as long as necessary. + """ + + git = "https://github.com/SeisSol/chainforge.git" + + maintainers("davschneller", "Thomas-Ulrich") + license("BSD-3-Clause") + + version("master", branch="master") + depends_on("py-numpy") + depends_on("py-graphviz", type=("build", "run")) + depends_on("py-jinja2", type=("build", "run")) + depends_on("py-lark", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-setuptools", type="build") + + def setup_run_environment(self, env): + env.prepend_path("PATH", self.spec.prefix) + env.prepend_path("PYTHONPATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/py-clip-anytorch/package.py b/var/spack/repos/builtin/packages/py-clip-anytorch/package.py new file mode 100644 index 00000000000000..283adbfeea71c2 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-clip-anytorch/package.py @@ -0,0 +1,33 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyClipAnytorch(PythonPackage): + """CLIP (Contrastive Language-Image Pre-Training) is a neural network + trained on a variety of (image, text) pairs. It can be instructed in + natural language to predict the most relevant text snippet, given an image, + without directly optimizing for the task, similarly to the zero-shot + capabilities of GPT-2 and 3. We found CLIP matches the performance of the + original ResNet50 on ImageNet "zero-shot" without using any of the original + 1.28M labeled examples, overcoming several major challenges in computer + vision.""" + + homepage = "https://github.com/rom1504/CLIP" + # PyPI source is missing requirements.txt + url = "https://github.com/rom1504/CLIP/archive/refs/tags/2.6.0.tar.gz" + + license("MIT", checked_by="qwertos") + + version("2.6.0", sha256="1ac1f6ca47dfb5d4e55be8f45cc2f3bdf6415b91973a04b4529e812a8ae29bea") + + depends_on("py-setuptools", type="build") + depends_on("py-ftfy", type=("build", "run")) + depends_on("py-regex", type=("build", "run")) + depends_on("py-tqdm", type=("build", "run")) + depends_on("py-torch", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-coca-pytorch/package.py b/var/spack/repos/builtin/packages/py-coca-pytorch/package.py new file mode 100644 index 00000000000000..e759919fd6add8 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-coca-pytorch/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyCocaPytorch(PythonPackage): + """CoCa, Contrastive Captioners are Image-Text Foundation Models - + Pytorch""" + + homepage = "https://github.com/lucidrains/CoCa-pytorch" + pypi = "CoCa-pytorch/CoCa-pytorch-0.1.0.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.1.0", sha256="119c83812d140ad197cf4e992db8c373d908af0bffd0a87015546b6a1cf0a316") + + depends_on("py-setuptools", type="build") + depends_on("py-einops@0.4:", type=("build", "run")) + depends_on("py-torch@1.6:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-configspace/package.py b/var/spack/repos/builtin/packages/py-configspace/package.py index 6a392b6276fea6..78d56f17adfb99 100644 --- a/var/spack/repos/builtin/packages/py-configspace/package.py +++ b/var/spack/repos/builtin/packages/py-configspace/package.py @@ -12,7 +12,7 @@ class PyConfigspace(PythonPackage): maintainers("Kerilk", "mdorier") - homepage = "https://automl.github.io/ConfigSpace/master/" + homepage = "https://automl.github.io/ConfigSpace/latest/" pypi = "configspace/configspace-1.0.0.tar.gz" license("BSD-3-Clause") diff --git a/var/spack/repos/builtin/packages/py-constantly/package.py b/var/spack/repos/builtin/packages/py-constantly/package.py index b569b524348d90..4e6216ee5a2fbf 100644 --- a/var/spack/repos/builtin/packages/py-constantly/package.py +++ b/var/spack/repos/builtin/packages/py-constantly/package.py @@ -14,6 +14,8 @@ class PyConstantly(PythonPackage): license("MIT") + version("23.10.4", sha256="aa92b70a33e2ac0bb33cd745eb61776594dc48764b06c35e0efd050b7f1c7cbd") version("15.1.0", sha256="586372eb92059873e29eba4f9dec8381541b4d3834660707faf8ba59146dfc35") depends_on("py-setuptools", type="build") + depends_on("py-versioneer+toml@0.29", type="build", when="@23.10.4:") diff --git a/var/spack/repos/builtin/packages/py-cryptography/package.py b/var/spack/repos/builtin/packages/py-cryptography/package.py index a883c11e04ae4d..214deae9b1d7ed 100644 --- a/var/spack/repos/builtin/packages/py-cryptography/package.py +++ b/var/spack/repos/builtin/packages/py-cryptography/package.py @@ -15,6 +15,7 @@ class PyCryptography(PythonPackage): license("Apache-2.0") + version("43.0.3", sha256="315b9001266a492a6ff443b61238f956b214dbec9910a081ba5b6646a055a805") version("42.0.8", sha256="8d09d05439ce7baa8e9e95b07ec5b6c886f548deb7e0f69ef25f64b3bce842f2") version("41.0.7", sha256="13f93ce9bea8016c253b34afc6bd6a75993e5c40672ed5405a9c832f0d4a00bc") version("41.0.3", sha256="6d192741113ef5e30d89dcb5b956ef4e1578f304708701b8b73d38e3e1461f34") @@ -41,9 +42,16 @@ class PyCryptography(PythonPackage): depends_on("py-setuptools@40.6:", when="@2.7:36", type="build") depends_on("py-setuptools@18.5:", when="@2.2:2.6", type="build") depends_on("py-setuptools@11.3:", when="@:2.1", type="build") - depends_on("py-setuptools-rust@1.7.0:", when="@42:", type=("build", "run")) - depends_on("py-setuptools-rust@0.11.4:", when="@3.4.2:", type="build") - depends_on("py-setuptools-rust@0.11.4:", when="@3.4:3.4.1", type=("build", "run")) + with when("@43:"): + depends_on("py-maturin@1", type="build") + conflicts( + "^py-setuptools@74.0.0,74.1.0,74.1.1,74.1.2,74.1.3,75.0.0,75.1.0,75.2.0", + msg="some setuptools version are incompatible", + ) + with when("@:42"): + depends_on("py-setuptools-rust@1.7.0:", when="@42", type=("build", "run")) + depends_on("py-setuptools-rust@0.11.4:", when="@3.4.2:", type="build") + depends_on("py-setuptools-rust@0.11.4:", when="@3.4:3.4.1", type=("build", "run")) depends_on("rust@1.56:", when="@41:", type="build") depends_on("rust@1.48:", when="@38:", type="build") depends_on("rust@1.41:", when="@3.4.5:", type="build") diff --git a/var/spack/repos/builtin/packages/py-curvlinops-for-pytorch/package.py b/var/spack/repos/builtin/packages/py-curvlinops-for-pytorch/package.py new file mode 100644 index 00000000000000..8197e8291e8936 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-curvlinops-for-pytorch/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyCurvlinopsForPytorch(PythonPackage): + """scipy Linear operators for curvature matrices in PyTorch.""" + + homepage = "https://github.com/f-dangel/curvlinops" + pypi = "curvlinops_for_pytorch/curvlinops_for_pytorch-2.0.0.tar.gz" + + license("MIT") + + version("2.0.0", sha256="01f9925db9454fc9b0a31c7b83fc8ec2534c2eb12b7de7825a5298fc14e460e7") + + with default_args(type="build"): + depends_on("py-setuptools@61:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-backpack-for-pytorch@1.6:1") + depends_on("py-torch@2:") + depends_on("py-scipy@1.7.1:1") + depends_on("py-tqdm@4.61:4") + depends_on("py-einops") + depends_on("py-einconv") diff --git a/var/spack/repos/builtin/packages/py-damask/package.py b/var/spack/repos/builtin/packages/py-damask/package.py index 18534b1a937e53..a51e98a7ca5c3d 100644 --- a/var/spack/repos/builtin/packages/py-damask/package.py +++ b/var/spack/repos/builtin/packages/py-damask/package.py @@ -10,13 +10,14 @@ class PyDamask(PythonPackage): """Pre- and post-processing tools for DAMASK""" - homepage = "https://damask.mpie.de" - url = "https://damask.mpie.de/download/damask-3.0.0.tar.xz" + homepage = "https://damask-multiphysics.org" + url = "https://damask-multiphysics.org/download/damask-3.0.0.tar.xz" maintainers("MarDiehl") license("AGPL-3.0-or-later") + version("3.0.1", sha256="3db1231f6763356e71b3bb91f66f1abb4fdae2721ce85754fc468446f3d74882") version("3.0.0", sha256="aaebc65b3b10e6c313132ee97cfed427c115079b7e438cc0727c5207e159019f") version( "3.0.0-beta2", sha256="513567b4643f39e27ae32b9f75463fc6f388c1548d42f0393cc87ba02d075f6a" diff --git a/var/spack/repos/builtin/packages/py-darshan/package.py b/var/spack/repos/builtin/packages/py-darshan/package.py index b6124eb9cb5412..9740c1022033c0 100644 --- a/var/spack/repos/builtin/packages/py-darshan/package.py +++ b/var/spack/repos/builtin/packages/py-darshan/package.py @@ -14,6 +14,9 @@ class PyDarshan(PythonPackage): maintainers("jeanbez", "shanedsnyder") + # NOTE: don't forget to update the version array further down that sets the appropriate + # darshan-util dependency + version("3.4.6.0", sha256="a105ec5c9bcd4a20469470ca51db8016336ede34a1c33f4488d1ba263a73c378") version("3.4.5.0", sha256="1419e246b2383d3e71da14942d6579a86fb298bf6dbbc3f507accefa614c6e50") version("3.4.4.0", sha256="2d218a1b2a450934698a78148c6603e453c246ec852679432bf217981668e56b") version("3.4.3.0", sha256="e0708fc5445f2d491ebd381a253cd67534cef13b963f1d749dd605a10f5c0f8f") @@ -45,7 +48,7 @@ class PyDarshan(PythonPackage): # py-darshan depends on specific darshan-util versions corresponding # to the first 3 parts of the py-darshan version string # (i.e., py-darshan@3.4.3.0 requires darshan-util@3.4.3, etc.) - for v in ["3.4.0", "3.4.1", "3.4.2", "3.4.3"]: + for v in ["3.4.0", "3.4.1", "3.4.2", "3.4.3", "3.4.4", "3.4.5", "3.4.6"]: depends_on(f"darshan-util@{v}", when=f"@{v}", type=("build", "run")) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-datrie/package.py b/var/spack/repos/builtin/packages/py-datrie/package.py index 559ad594d8dbc3..e7a77f128b2562 100644 --- a/var/spack/repos/builtin/packages/py-datrie/package.py +++ b/var/spack/repos/builtin/packages/py-datrie/package.py @@ -22,3 +22,8 @@ class PyDatrie(PythonPackage): depends_on("py-setuptools@40.8:", type=("build")) depends_on("py-cython@0.28:", type="build") depends_on("py-pytest-runner", type="build") + + @when("@:0.8.2") + def patch(self): + # fix failure to compile on gcc-14, https://github.com/pytries/datrie/pull/99 + filter_file(r"(\s*)(struct AlphaMap:)", r"\1ctypedef \2", "src/cdatrie.pxd") diff --git a/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py b/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py index 01b527251fc52f..8c1abc2e8ff378 100644 --- a/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py +++ b/var/spack/repos/builtin/packages/py-deepsig-biocomp/package.py @@ -19,11 +19,11 @@ class PyDeepsigBiocomp(PythonPackage): version("1.2.5", sha256="e954b815d63c221c564c7d3fe27123d7cd2c39b191d6107369ab095d506496e0") - depends_on("python@3.8", type=("build", "run")) + depends_on("python@3.8:", type=("build", "run")) depends_on("py-setuptools", type="build") depends_on("py-biopython@1.78:", type=("build", "run")) - depends_on("py-keras@2.4.3", type=("build", "run")) - depends_on("py-tensorflow@2.2.0", type=("build", "run")) + depends_on("py-keras@2.4.3:", type=("build", "run")) + depends_on("py-tensorflow@2.2.0:", type=("build", "run")) depends_on("py-tensorboard", type=("build", "run")) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-dgl/package.py b/var/spack/repos/builtin/packages/py-dgl/package.py index f16980179eba06..814041b93b90ef 100644 --- a/var/spack/repos/builtin/packages/py-dgl/package.py +++ b/var/spack/repos/builtin/packages/py-dgl/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -132,8 +133,7 @@ def cmake_args(self): def install(self, spec, prefix): with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") # Older versions do not install correctly if self.spec.satisfies("@:0.4.3"): diff --git a/var/spack/repos/builtin/packages/py-einconv/package.py b/var/spack/repos/builtin/packages/py-einconv/package.py new file mode 100644 index 00000000000000..6a6c23dacd366d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-einconv/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyEinconv(PythonPackage): + """Convolutions as tensor contractions (einsums) for PyTorch.""" + + homepage = "https://github.com/f-dangel/einconv" + pypi = "einconv/einconv-0.1.0.tar.gz" + + license("MIT") + + version("0.1.0", sha256="6b103881b1268e43d581f285da4fa72b073c95f31b92575133bafed9929b6d98") + + with default_args(type="build"): + depends_on("py-setuptools@38.3:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch") + depends_on("py-einops") diff --git a/var/spack/repos/builtin/packages/py-ema-pytorch/package.py b/var/spack/repos/builtin/packages/py-ema-pytorch/package.py new file mode 100644 index 00000000000000..dadf3aaecf5bcd --- /dev/null +++ b/var/spack/repos/builtin/packages/py-ema-pytorch/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyEmaPytorch(PythonPackage): + """Easy way to keep track of exponential moving average version of your + pytorch module""" + + homepage = "https://github.com/lucidrains/ema-pytorch" + pypi = "ema_pytorch/ema_pytorch-0.5.1.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.7.3", sha256="de640f1d1a054c79607aebfcfd4b8dfff1fba1110bf0c8f7d37517637450938a") + version("0.5.1", sha256="e825212a44e8faae5d2cf2a1349961c4416cba0496ffa64d37718d8b06f206b2") + + depends_on("py-setuptools", type="build") + depends_on("py-torch@2:", when="@0.7:", type=("build", "run")) + depends_on("py-torch@1.6:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-embedding-reader/package.py b/var/spack/repos/builtin/packages/py-embedding-reader/package.py new file mode 100644 index 00000000000000..5468cebc1114ae --- /dev/null +++ b/var/spack/repos/builtin/packages/py-embedding-reader/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyEmbeddingReader(PythonPackage): + """Embedding reader is a module to make it easy to read efficiently a large + collection of embeddings stored in any file system.""" + + homepage = "https://github.com/rom1504/embedding-reader" + # PyPI source is missing requirements.txt + url = "https://github.com/rom1504/embedding-reader/archive/refs/tags/1.7.0.tar.gz" + + license("MIT", checked_by="alex391") + + version("1.7.0", sha256="3bae324a06d795ea025317fdcfeb6ef1632e37786bf171973e83543700bbef73") + + depends_on("py-setuptools", type="build") + depends_on("py-tqdm@4.62.3:4", type=("build", "run")) + depends_on("py-fsspec@2022.1.0:", type=("build", "run")) + depends_on("py-numpy@1.19.5:1", type=("build", "run")) + depends_on("py-pandas@1.1.5:2", type=("build", "run")) + depends_on("py-pyarrow@6.0.1:15", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-eventlet/package.py b/var/spack/repos/builtin/packages/py-eventlet/package.py index 03e440844d37a2..e5bf12d6f8ca6c 100644 --- a/var/spack/repos/builtin/packages/py-eventlet/package.py +++ b/var/spack/repos/builtin/packages/py-eventlet/package.py @@ -10,11 +10,11 @@ class PyEventlet(PythonPackage): """Concurrent networking library for Python""" homepage = "https://github.com/eventlet/eventlet" - url = "https://github.com/eventlet/eventlet/releases/download/v0.22.0/eventlet-0.22.0.tar.gz" + url = "https://github.com/eventlet/eventlet/archive/refs/tags/v0.22.0.tar.gz" license("MIT") - version("0.22.0", sha256="6d22464f448fdf144a9d566c157299d686bbe324554dd7729df9ccd05ca66439") + version("0.22.0", sha256="c4cc92268b82eb94d5e0de0592159157d68122d394f480e3f9a9d6ddb695655e") depends_on("py-setuptools", type="build") depends_on("py-greenlet@0.3:") diff --git a/var/spack/repos/builtin/packages/py-flask-compress/package.py b/var/spack/repos/builtin/packages/py-flask-compress/package.py index 2b037a3da45857..fa5395f9a36ba4 100644 --- a/var/spack/repos/builtin/packages/py-flask-compress/package.py +++ b/var/spack/repos/builtin/packages/py-flask-compress/package.py @@ -15,7 +15,11 @@ class PyFlaskCompress(PythonPackage): license("MIT") + version("1.14", sha256="e46528f37b91857012be38e24e65db1a248662c3dc32ee7808b5986bf1d123ee") version("1.4.0", sha256="468693f4ddd11ac6a41bca4eb5f94b071b763256d54136f77957cfee635badb3") depends_on("py-setuptools", type="build") + depends_on("py-setuptools@0.42:", type="build", when="@1.10:") + depends_on("py-setuptools-scm@3.4: +toml", type="build", when="@1.10:") depends_on("py-flask@0.9:", type=("build", "run")) + depends_on("py-brotli", type="run", when="@1.5:") diff --git a/var/spack/repos/builtin/packages/py-flask-cors/package.py b/var/spack/repos/builtin/packages/py-flask-cors/package.py index 6eac377c7b8dbf..4f708db2764b0b 100644 --- a/var/spack/repos/builtin/packages/py-flask-cors/package.py +++ b/var/spack/repos/builtin/packages/py-flask-cors/package.py @@ -16,6 +16,7 @@ class PyFlaskCors(PythonPackage): license("MIT") + version("4.0.0", sha256="f268522fcb2f73e2ecdde1ef45e2fd5c71cc48fe03cffb4b441c6d1b40684eb0") version("3.0.10", sha256="b60839393f3b84a0f3746f6cdca56c1ad7426aa738b70d6c61375857823181de") depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-frozendict/package.py b/var/spack/repos/builtin/packages/py-frozendict/package.py index 0083d1b9b64b25..c3f5de6d0144c4 100644 --- a/var/spack/repos/builtin/packages/py-frozendict/package.py +++ b/var/spack/repos/builtin/packages/py-frozendict/package.py @@ -9,7 +9,7 @@ class PyFrozendict(PythonPackage): """An immutable dictionary""" - homepage = "An immutable dictionary" + homepage = "https://github.com/Marco-Sulla/python-frozendict" pypi = "frozendict/frozendict-1.2.tar.gz" license("LGPL-3.0-only") diff --git a/var/spack/repos/builtin/packages/py-fsspec-xrootd/package.py b/var/spack/repos/builtin/packages/py-fsspec-xrootd/package.py new file mode 100644 index 00000000000000..b14291a6b51742 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-fsspec-xrootd/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyFsspecXrootd(PythonPackage): + """An XRootD implementation for fsspec.""" + + homepage = "https://coffeateam.github.io/fsspec-xrootd/" + pypi = "fsspec_xrootd/fsspec_xrootd-0.4.0.tar.gz" + + maintainers("wdconinc") + + license("BSD-3-Clause", checked_by="wdconinc") + + version("0.4.0", sha256="d7f124430d26ab9139d33bc50fa8abfde3624db5dcaa5c18f56af9bf17f16f13") + + 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-fsspec", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-gemmforge/package.py b/var/spack/repos/builtin/packages/py-gemmforge/package.py new file mode 100644 index 00000000000000..d368ca717b2980 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-gemmforge/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyGemmforge(PythonPackage): + """GPU-GEMM generator for the Discontinuous Galerkin method""" + + homepage = "https://github.com/SeisSol/gemmforge/blob/master/README.md" + git = "https://github.com/SeisSol/gemmforge.git" + + maintainers("davschneller", "Thomas-Ulrich") + license("BSD-3-Clause") + + version("master", branch="master") + depends_on("py-numpy") + depends_on("py-jinja2", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-setuptools", type="build") + + def setup_run_environment(self, env): + env.prepend_path("PATH", self.spec.prefix) + env.prepend_path("PYTHONPATH", self.spec.prefix) diff --git a/var/spack/repos/builtin/packages/py-geocube/package.py b/var/spack/repos/builtin/packages/py-geocube/package.py index 6f691751c6f2a1..ea34cf9ddccbb8 100644 --- a/var/spack/repos/builtin/packages/py-geocube/package.py +++ b/var/spack/repos/builtin/packages/py-geocube/package.py @@ -12,25 +12,28 @@ class PyGeocube(PythonPackage): homepage = "https://github.com/corteva/geocube" pypi = "geocube/geocube-0.0.17.tar.gz" - maintainers("adamjstewart") - license("BSD-3-Clause") + maintainers("adamjstewart") + version("0.7.0", sha256="986ff46e78d7dede09a1c93bff1642c24aaa5590acdc774049436f86f0989ca4") version("0.3.2", sha256="71ff0228f1ef44e3a649d29a045ff7e2a2094a5cfca30fadab8f88f4ec23a41d") version("0.3.1", sha256="5c97131010cd8d556a5fad2a3824452120640ac33a6a45b6ca9ee3c28f2e266f") version("0.0.17", sha256="bf8da0fa96d772ebaea0b98bafa0ba5b8639669d5feb07465d4255af177bddc0") - depends_on("python@3.7:", type=("build", "run")) - depends_on("python@3.8:", when="@0.1.1:", type=("build", "run")) + depends_on("python@3.10:", when="@0.4.3:", type=("build", "run")) depends_on("py-setuptools", type="build") depends_on("py-appdirs", type=("build", "run")) depends_on("py-click@6.0:", type=("build", "run")) - depends_on("py-datacube", when="@:0.1", type=("build", "run")) + depends_on("py-geopandas@1:", when="@0.6:", type=("build", "run")) depends_on("py-geopandas@0.7:", type=("build", "run")) depends_on("py-odc-geo", when="@0.2:", type=("build", "run")) + depends_on("py-rasterio@1.3:", when="@0.4.3:", type=("build", "run")) depends_on("py-rasterio", type=("build", "run")) depends_on("py-rioxarray@0.4:", type=("build", "run")) depends_on("py-scipy", when="@0.0.18:", type=("build", "run")) depends_on("py-xarray@0.17:", type=("build", "run")) depends_on("py-pyproj@2:", type=("build", "run")) depends_on("py-numpy@1.20:", when="@0.3:", type=("build", "run")) + + # Historical dependencies + depends_on("py-datacube", when="@:0.1", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-gevent/package.py b/var/spack/repos/builtin/packages/py-gevent/package.py index f4a9d275ffb780..9aaab6a93f2554 100644 --- a/var/spack/repos/builtin/packages/py-gevent/package.py +++ b/var/spack/repos/builtin/packages/py-gevent/package.py @@ -61,6 +61,6 @@ def flag_handler(self, name, flags): if name == "cflags": if self.spec.satisfies("%oneapi@2023:"): flags.append("-Wno-error=incompatible-function-pointer-types") - if self.spec.compiler.name in ["intel", "oneapi"]: + if self.spec.satisfies("%oneapi") or self.spec.satisfies("%intel"): flags.append("-we147") return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/py-gosam/package.py b/var/spack/repos/builtin/packages/py-gosam/package.py index fc6eff141da774..c5f5433383e915 100644 --- a/var/spack/repos/builtin/packages/py-gosam/package.py +++ b/var/spack/repos/builtin/packages/py-gosam/package.py @@ -20,6 +20,11 @@ class PyGosam(Package): license("GPL-3.0-only") + version( + "2.1.2", + url="https://github.com/gudrunhe/gosam/releases/download/2.1.2/gosam-2.1.2+c307997.tar.gz", + sha256="53601ab203c3d572764439018f976baff9c83b87abe1fcbbe15c07caf174680c", + ) version( "2.1.1", url="https://github.com/gudrunhe/gosam/releases/download/2.1.1/gosam-2.1.1-4b98559.tar.gz", diff --git a/var/spack/repos/builtin/packages/py-gpytorch/package.py b/var/spack/repos/builtin/packages/py-gpytorch/package.py index c4a98153f60582..a8bdb28538737c 100644 --- a/var/spack/repos/builtin/packages/py-gpytorch/package.py +++ b/var/spack/repos/builtin/packages/py-gpytorch/package.py @@ -19,6 +19,7 @@ class PyGpytorch(PythonPackage): license("MIT") + version("1.13", sha256="f4a488633a2a7a4ab37d12553d1d1dd39690043dbceef14ca428b7d5f89f73ba") version("1.10", sha256="6dc978ab9fbf220a845a4f1ea13104180fc50e6934081f421b37f6120afb7f18") version("1.9.1", sha256="0bdbba6f6d5957a0f43ef6dc7fec39c47e8a55f632ca33760c6189f259b3ccc3") version("1.9.0", sha256="a0608184c18a1f518d6a102473427abf00f5351421e12a934530953f6887b34b") @@ -30,21 +31,28 @@ class PyGpytorch(PythonPackage): version("1.2.0", sha256="fcb216e0c1f128a41c91065766508e91e487d6ffadf212a51677d8014aefca84") version("1.1.1", sha256="76bd455db2f17af5425f73acfaa6d61b8adb1f07ad4881c0fa22673f84fb571a") - depends_on("python@3.8:", when="@1.9:", type=("build", "run")) - depends_on("python@3.7:", when="@1.7:", type=("build", "run")) - depends_on("python@3.6:", type=("build", "run")) - depends_on("py-setuptools", type="build") - depends_on("py-setuptools-scm", when="@1.9:", type="build") - depends_on("py-torch@1.11:", when="@1.9:", type=("build", "run")) - depends_on("py-torch@1.10:", when="@1.7:", type=("build", "run")) - depends_on("py-torch@1.9:", when="@1.6:", type=("build", "run")) - depends_on("py-torch@1.8.1:", when="@1.5:", type=("build", "run")) - depends_on("py-torch@1.7:", when="@1.3:", type=("build", "run")) - depends_on("py-torch@1.6:", when="@1.2:", type=("build", "run")) - depends_on("py-torch@1.5:", type=("build", "run")) - depends_on("py-scikit-learn", when="@1.2:", type=("build", "run")) - depends_on("py-linear-operator@0.1.1:", when="@1.9:", type=("build", "run")) - depends_on("py-linear-operator@0.2.0:", when="@1.9.1:", type=("build", "run")) - depends_on("py-linear-operator@0.4.0:", when="@1.10:", type=("build", "run")) - depends_on("py-numpy", when="@1.7:1.8", type=("build", "run")) - depends_on("py-scipy", when="@1.2:1.8", type=("build", "run")) + with default_args(type="build"): + depends_on("py-setuptools") + depends_on("py-setuptools-scm", when="@1.9:") + + with default_args(type=("build", "run")): + depends_on("py-torch@2:", when="@1.13:") + depends_on("py-torch@1.11:", when="@1.9:") + depends_on("py-torch@1.10:", when="@1.7:") + depends_on("py-torch@1.9:", when="@1.6:") + depends_on("py-torch@1.8.1:", when="@1.5:") + depends_on("py-torch@1.7:", when="@1.3:") + depends_on("py-torch@1.6:", when="@1.2:") + depends_on("py-torch@1.5:") + depends_on("py-jaxtyping@0.2.19", when="@1.13:") + depends_on("py-mpmath@0.19:1.3", when="@1.12:") + depends_on("py-scikit-learn", when="@1.2:") + depends_on("py-scipy@1.6:", when="@1.13:") + depends_on("py-scipy", when="@1.2:1.8") + depends_on("py-linear-operator@0.5.3:", when="@1.13:") + depends_on("py-linear-operator@0.1.1:", when="@1.9:") + depends_on("py-linear-operator@0.2.0:", when="@1.9.1:") + depends_on("py-linear-operator@0.4.0:", when="@1.10:") + + # Historical dependencies + depends_on("py-numpy", when="@1.7:1.8") diff --git a/var/spack/repos/builtin/packages/py-grayskull/package.py b/var/spack/repos/builtin/packages/py-grayskull/package.py index 50ad9904bedcb5..cd0534daf79d99 100644 --- a/var/spack/repos/builtin/packages/py-grayskull/package.py +++ b/var/spack/repos/builtin/packages/py-grayskull/package.py @@ -14,6 +14,7 @@ class PyGrayskull(PythonPackage): license("Apache-2.0") + version("2.7.3", sha256="9396245439584b92d656fdefb03d6911b5987f91a5ae714772ddcb338768cbb9") version("2.5.0", sha256="b021138655be550fd1b93b8db08b9c66169fac9cba6bcdad1411263e12fc703f") depends_on("python@3.8:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-h5py/package.py b/var/spack/repos/builtin/packages/py-h5py/package.py index 43220375073ff9..16d5506f8d0c5d 100644 --- a/var/spack/repos/builtin/packages/py-h5py/package.py +++ b/var/spack/repos/builtin/packages/py-h5py/package.py @@ -18,6 +18,8 @@ class PyH5py(PythonPackage): license("BSD-3-Clause") version("master", branch="master") + version("3.12.1", sha256="326d70b53d31baa61f00b8aa5f95c2fcb9621a3ee8365d770c551a13dbbcbfdf") + version("3.12.0", sha256="00955a079e9f86c5ae2cd08accb54396c69cda87152312ddd1528e3f90acc866") version("3.11.0", sha256="7b7e8f78072a2edec87c9836f25f34203fd492a4475709a18b417a33cfb21fa9") version("3.10.0", sha256="d93adc48ceeb33347eb24a634fb787efc7ae4644e6ea4ba733d099605045c049") version("3.9.0", sha256="e604db6521c1e367c6bd7fad239c847f53cc46646f2d2651372d05ae5e95f817") @@ -40,11 +42,12 @@ class PyH5py(PythonPackage): version("2.5.0", sha256="9833df8a679e108b561670b245bcf9f3a827b10ccb3a5fa1341523852cfac2f6") version("2.4.0", sha256="faaeadf4b8ca14c054b7568842e0d12690de7d5d68af4ecce5d7b8fc104d8e60") - depends_on("c", type="build") # generated + depends_on("c", type="build") variant("mpi", default=True, description="Build with MPI support") # Python versions + depends_on("python@3.9:", type=("build", "run"), when="@3.12:") depends_on("python@:3.9", type=("build", "run"), when="@:2.8") # Build dependencies @@ -60,9 +63,9 @@ class PyH5py(PythonPackage): depends_on("py-setuptools", type="build") # Build and runtime dependencies - depends_on("py-numpy@1.17.3:", type=("build", "run"), when="@3.9:") - depends_on("py-numpy@1.19.3:", type=("build", "run"), when="@3:3.5 ^python@3.9.0:") + depends_on("py-numpy@1.19.3:", type=("build", "run"), when="@3:3.5,3.12: ^python@3.9.0:") depends_on("py-numpy@1.17.5:", type=("build", "run"), when="@3:3.5 ^python@3.8.0:3.8") + depends_on("py-numpy@1.17.3:", type=("build", "run"), when="@3.9:3.11") depends_on("py-numpy@1.14.5:", type=("build", "run"), when="@3:") depends_on("py-numpy@1.7:", type=("build", "run"), when="@:2") # https://github.com/h5py/h5py/issues/2353 @@ -70,7 +73,8 @@ class PyH5py(PythonPackage): # Link dependencies (py-h5py v2 cannot build against HDF5 1.12 regardless # of API setting) - depends_on("hdf5@1.10.4:1.14 +hl", when="@3.10:") + depends_on("hdf5@1.10.6:1.14 +hl", when="@3.12:") + depends_on("hdf5@1.10.4:1.14 +hl", when="@3.10:3.11") depends_on("hdf5@1.8.4:1.14 +hl", when="@3.8:3.9") depends_on("hdf5@1.8.4:1.12 +hl", when="@3:3.7") depends_on("hdf5@1.8.4:1.11 +hl", when="@:2") diff --git a/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py b/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py index 0bd62053a1aa52..47d97c4d18809c 100644 --- a/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py +++ b/var/spack/repos/builtin/packages/py-hatch-jupyter-builder/package.py @@ -16,5 +16,7 @@ class PyHatchJupyterBuilder(PythonPackage): version("0.8.3", sha256="0dbd14a8aef6636764f88a8fd1fcc9a91921e5c50356e6aab251782f264ae960") + depends_on("npm", type="run") + depends_on("python@3.8:", type=("build", "run")) depends_on("py-hatchling@1.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py b/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py index 5648c0c24792ee..09f2be42831132 100644 --- a/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py +++ b/var/spack/repos/builtin/packages/py-hatch-nodejs-version/package.py @@ -14,6 +14,7 @@ class PyHatchNodejsVersion(PythonPackage): license("MIT") + version("0.3.2", sha256="8a7828d817b71e50bbbbb01c9bfc0b329657b7900c56846489b9c958de15b54c") version("0.3.1", sha256="0e55fd713d92c5c1ccfee778efecaa780fd8bcd276d4ca7aff9f6791f6f76d9c") depends_on("python@3.7:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-hatchet/package.py b/var/spack/repos/builtin/packages/py-hatchet/package.py index d9ce43e8068fcf..3360a7b439bc88 100644 --- a/var/spack/repos/builtin/packages/py-hatchet/package.py +++ b/var/spack/repos/builtin/packages/py-hatchet/package.py @@ -18,6 +18,7 @@ class PyHatchet(PythonPackage): license("MIT") + version("1.4.0", sha256="9f934f128666703d30818e9a091493df1bf1819bf7445ffb35a0f46871501b55") version("1.3.0", sha256="d77d071fc37863fdc9abc3fd9ea1088904cd98c6980a014a31e44595d2deac5e") version("1.2.0", sha256="1d5f80abfa69d1a379dff7263908c5c915023f18f26d50b639556e2f43ac755e") version("1.1.0", sha256="71bfa2881ef295294e5b4493acb8cce98d14c354e9ae59b42fb56a76d8ec7056") @@ -30,9 +31,14 @@ class PyHatchet(PythonPackage): depends_on("python@2.7:3.8", when="@:1.3.0", type=("build", "run")) depends_on("python@2.7:", when="@1.3.1:", type=("build", "run")) + depends_on("py-cython", when="@1.4:", type="build") depends_on("py-setuptools", type="build") + depends_on("py-pydot", type=("build", "run")) + depends_on("py-pyyaml", type=("build", "run")) depends_on("py-matplotlib", type=("build", "run")) depends_on("py-numpy", type=("build", "run")) depends_on("py-pandas", type=("build", "run")) - depends_on("py-pydot", type=("build", "run")) - depends_on("py-pyyaml", type=("build", "run")) + depends_on("py-textx", when="@1.4:", type=("build", "run")) + depends_on("py-multiprocess", when="@1.4:", type=("build", "run")) + depends_on("py-caliper-reader", when="@1.4:", type=("build", "run")) + depends_on("py-pycubexr", when="@1.4:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-ipympl/package.py b/var/spack/repos/builtin/packages/py-ipympl/package.py index c83d6392b0c12c..a45799610def1b 100644 --- a/var/spack/repos/builtin/packages/py-ipympl/package.py +++ b/var/spack/repos/builtin/packages/py-ipympl/package.py @@ -15,16 +15,37 @@ class PyIpympl(PythonPackage): license("BSD-3-Clause") - version("0.8.8", sha256="5bf5d780b07fafe7924922ac6b2f3abd22721f341e5e196b3b82737dfbd0e1c9") - - depends_on("py-setuptools@40.8:", type="build") - depends_on("py-ipython@:8", type=("build", "run")) - depends_on("py-numpy", type=("build", "run")) - depends_on("py-ipython-genutils", type=("build", "run")) - depends_on("pil", type=("build", "run")) - depends_on("py-traitlets@:5", type=("build", "run")) - depends_on("py-ipywidgets@7.6:7", type=("build", "run")) - depends_on("py-matplotlib@2:3", type=("build", "run")) - depends_on("py-jupyter-packaging@0.7", type="build") - depends_on("py-jupyterlab@3", type="build") - depends_on("yarn", type="build") + version("0.9.4", sha256="cfb53c5b4fcbcee6d18f095eecfc6c6c474303d5b744e72cc66e7a2804708907") + # Build failures + version( + "0.8.8", + sha256="5bf5d780b07fafe7924922ac6b2f3abd22721f341e5e196b3b82737dfbd0e1c9", + deprecated=True, + ) + + with default_args(type="build"): + with when("@0.9:"): + depends_on("py-hatchling") + depends_on("py-jupyterlab@4") + depends_on("py-hatch-nodejs-version@0.3.2:") + + # Historical dependencies + with when("@:0.8"): + depends_on("py-jupyter-packaging@0.7") + depends_on("py-jupyterlab@3") + depends_on("py-setuptools@40.8:") + depends_on("yarn") + + with default_args(type=("build", "run")): + depends_on("py-ipython@:8") + depends_on("py-ipython-genutils") + depends_on("py-ipywidgets@7.6:8", when="@0.9:") + depends_on("py-ipywidgets@7.6:7", when="@:0.8") + depends_on("py-matplotlib@3.4:3", when="@0.9:") + depends_on("py-matplotlib@2:3", when="@:0.8") + depends_on("py-numpy") + depends_on("pil") + depends_on("py-traitlets@:5") + + # Necessary for jupyter extension env vars + depends_on("py-jupyter-core") diff --git a/var/spack/repos/builtin/packages/py-jaxlib/jaxxlatsl.patch b/var/spack/repos/builtin/packages/py-jaxlib/jaxxlatsl.patch new file mode 100644 index 00000000000000..e96cc32e263969 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-jaxlib/jaxxlatsl.patch @@ -0,0 +1,100 @@ +From 8fce7378ed8ce994107568449806cd99274ab22b Mon Sep 17 00:00:00 2001 +From: Andrew Elble +Date: Mon, 21 Oct 2024 19:42:31 -0400 +Subject: [PATCH] patchit + +--- + ...ch-for-Abseil-to-fix-build-on-Jetson.patch | 68 +++++++++++++++++++ + third_party/xla/workspace.bzl | 1 + + 2 files changed, 69 insertions(+) + create mode 100644 third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch + +diff --git a/third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch b/third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch +new file mode 100644 +index 000000000000..5138a045082b +--- /dev/null ++++ b/third_party/xla/0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch +@@ -0,0 +1,68 @@ ++From 40da87a0476436ca1da2eafe08935787a05e9a61 Mon Sep 17 00:00:00 2001 ++From: David Dunleavy ++Date: Mon, 5 Aug 2024 11:42:53 -0700 ++Subject: [PATCH] Add patch for Abseil to fix build on Jetson ++ ++Patches in https://github.com/abseil/abseil-cpp/commit/372124e6af36a540e74a2ec31d79d7297a831f98 ++ ++PiperOrigin-RevId: 659627531 ++--- ++ .../tsl/third_party/absl/nvidia_jetson.patch | 35 +++++++++++++++++++ ++ .../tsl/third_party/absl/workspace.bzl | 1 + ++ 2 files changed, 36 insertions(+) ++ create mode 100644 third_party/tsl/third_party/absl/nvidia_jetson.patch ++ ++diff --git a/third_party/tsl/third_party/absl/nvidia_jetson.patch b/third_party/tsl/third_party/absl/nvidia_jetson.patch ++new file mode 100644 ++index 000000000000..5328c3a0d605 ++--- /dev/null +++++ b/third_party/tsl/third_party/absl/nvidia_jetson.patch ++@@ -0,0 +1,35 @@ +++From 372124e6af36a540e74a2ec31d79d7297a831f98 Mon Sep 17 00:00:00 2001 +++From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Bastien?= +++Date: Thu, 1 Aug 2024 12:38:52 -0700 +++Subject: [PATCH] PR #1732: Fix build on NVIDIA Jetson board. Fix #1665 +++ +++Imported from GitHub PR https://github.com/abseil/abseil-cpp/pull/1732 +++ +++Fix build on NVIDIA Jetson board. Fix #1665 +++ +++This patch is already used by the spark project. +++I'm fixing this as this break the build of Tensorflow and JAX on Jetson board. +++Merge 7db2d2ab9fbed1f0fabad10a6ec73533ba71bfff into 6b8ebb35c0414ef5a2b6fd4a0f59057e41beaff9 +++ +++Merging this change closes #1732 +++ +++COPYBARA_INTEGRATE_REVIEW=https://github.com/abseil/abseil-cpp/pull/1732 from nouiz:fix_neon_on_jetson 7db2d2ab9fbed1f0fabad10a6ec73533ba71bfff +++PiperOrigin-RevId: 658501520 +++Change-Id: If502ede4efc8c877fb3fed227eca6dc7622dd181 +++--- +++ absl/base/config.h | 2 +- +++ 1 file changed, 1 insertion(+), 1 deletion(-) +++ +++diff --git a/absl/base/config.h b/absl/base/config.h +++index 97c9a22a109..ab1e9860a91 100644 +++--- a/absl/base/config.h ++++++ b/absl/base/config.h +++@@ -926,7 +926,7 @@ static_assert(ABSL_INTERNAL_INLINE_NAMESPACE_STR[0] != 'h' || +++ // https://llvm.org/docs/CompileCudaWithLLVM.html#detecting-clang-vs-nvcc-from-code +++ #ifdef ABSL_INTERNAL_HAVE_ARM_NEON +++ #error ABSL_INTERNAL_HAVE_ARM_NEON cannot be directly set +++-#elif defined(__ARM_NEON) && !defined(__CUDA_ARCH__) ++++#elif defined(__ARM_NEON) && !(defined(__NVCC__) && defined(__CUDACC__)) +++ #define ABSL_INTERNAL_HAVE_ARM_NEON 1 +++ #endif +++ ++diff --git a/third_party/tsl/third_party/absl/workspace.bzl b/third_party/tsl/third_party/absl/workspace.bzl ++index 06f75166ce4b..9565a82c3319 100644 ++--- a/third_party/tsl/third_party/absl/workspace.bzl +++++ b/third_party/tsl/third_party/absl/workspace.bzl ++@@ -44,4 +44,5 @@ def repo(): ++ system_link_files = SYS_LINKS, ++ strip_prefix = "abseil-cpp-{commit}".format(commit = ABSL_COMMIT), ++ urls = tf_mirror_urls("https://github.com/abseil/abseil-cpp/archive/{commit}.tar.gz".format(commit = ABSL_COMMIT)), +++ patch_file = ["//third_party/absl:nvidia_jetson.patch"], ++ ) ++-- ++2.31.1 ++ +diff --git a/third_party/xla/workspace.bzl b/third_party/xla/workspace.bzl +index af52e7671507..70481bc970a5 100644 +--- a/third_party/xla/workspace.bzl ++++ b/third_party/xla/workspace.bzl +@@ -29,6 +29,7 @@ def repo(): + name = "xla", + sha256 = XLA_SHA256, + strip_prefix = "xla-{commit}".format(commit = XLA_COMMIT), ++ patch_file = ["//third_party/xla:0001-Add-patch-for-Abseil-to-fix-build-on-Jetson.patch"], + urls = tf_mirror_urls("https://github.com/openxla/xla/archive/{commit}.tar.gz".format(commit = XLA_COMMIT)), + ) + +-- +2.31.1 + diff --git a/var/spack/repos/builtin/packages/py-jaxlib/package.py b/var/spack/repos/builtin/packages/py-jaxlib/package.py index 09eb522c56aa5e..3ba330388e2a02 100644 --- a/var/spack/repos/builtin/packages/py-jaxlib/package.py +++ b/var/spack/repos/builtin/packages/py-jaxlib/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * rocm_dependencies = [ @@ -128,6 +129,10 @@ class PyJaxlib(PythonPackage, CudaPackage, ROCmPackage): when="@:0.4.25", ) + # Might be able to be applied to earlier versions + # backports https://github.com/abseil/abseil-cpp/pull/1732 + patch("jaxxlatsl.patch", when="@0.4.28:0.4.32 target=aarch64:") + conflicts( "cuda_arch=none", when="+cuda", @@ -190,7 +195,6 @@ def install(self, spec, prefix): python(*args) with working_dir(self.wrapped_package_object.tmp_path): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.wrapped_package_object.tmp_path) remove_linked_tree(self.wrapped_package_object.buildtmp) diff --git a/var/spack/repos/builtin/packages/py-jaxtyping/package.py b/var/spack/repos/builtin/packages/py-jaxtyping/package.py index fb703a3eaa0315..a64a87d158e18f 100644 --- a/var/spack/repos/builtin/packages/py-jaxtyping/package.py +++ b/var/spack/repos/builtin/packages/py-jaxtyping/package.py @@ -15,7 +15,16 @@ class PyJaxtyping(PythonPackage): license("Apache-2.0") version("0.2.33", sha256="9a9cfccae4fe05114b9fb27a5ea5440be4971a5a075bbd0526f6dd7d2730f83e") + version("0.2.19", sha256="21ff4c3caec6781cadfe980b019dde856c1011e17d11dfe8589298040056325a") - depends_on("python@3.9:", type=("build", "run")) depends_on("py-hatchling", type="build") - depends_on("py-typeguard@2.13.3", type=("build", "run")) + + with default_args(type=("build", "run")): + depends_on("python@3.9:3", when="@0.2.33:") + depends_on("python@3.8:3", when="@0.2.19") + depends_on("py-typeguard@2.13.3", when="@0.2.33:") + depends_on("py-typeguard@2.13.3:", when="@0.2.19") + + # Historical dependencies + depends_on("py-numpy@1.12:", when="@0.2.19") + depends_on("py-typing-extensions@3.7.4.1:", when="@0.2.19") diff --git a/var/spack/repos/builtin/packages/py-jupyter-core/package.py b/var/spack/repos/builtin/packages/py-jupyter-core/package.py index 8303cadb9a94c9..c41bbd45d83076 100644 --- a/var/spack/repos/builtin/packages/py-jupyter-core/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter-core/package.py @@ -3,6 +3,8 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +import os + from spack.package import * @@ -45,3 +47,10 @@ class PyJupyterCore(PythonPackage): # Historical dependencies depends_on("py-setuptools", when="@:4.9.2", type=("build", "run")) + + def setup_dependent_run_environment(self, env, dependent_spec): + # https://docs.jupyter.org/en/stable/use/jupyter-directories.html + if os.path.exists(dependent_spec.prefix.etc.jupyter): + env.prepend_path("JUPYTER_CONFIG_PATH", dependent_spec.prefix.etc.jupyter) + if os.path.exists(dependent_spec.prefix.share.jupyter): + env.prepend_path("JUPYTER_PATH", dependent_spec.prefix.share.jupyter) diff --git a/var/spack/repos/builtin/packages/py-jupyter/package.py b/var/spack/repos/builtin/packages/py-jupyter/package.py index 9569b16c0314c8..d71d6bd1a9dd39 100644 --- a/var/spack/repos/builtin/packages/py-jupyter/package.py +++ b/var/spack/repos/builtin/packages/py-jupyter/package.py @@ -14,13 +14,20 @@ class PyJupyter(PythonPackage): license("BSD-3-Clause") - version("1.0.0", sha256="d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f") + version("1.1.1", sha256="d55467bceabdea49d7e3624af7e33d59c37fff53ed3a350e1ac957bed731de7a") + version( + "1.0.0", + sha256="d9dc4b3318f310e34c82951ea5d6683f67bed7def4b259fafbfe4f1beb1d8e5f", + deprecated=True, + ) - # pip silently replaces distutils with setuptools depends_on("py-setuptools", type="build") - depends_on("py-notebook", type=("build", "run")) - depends_on("py-qtconsole", type=("build", "run")) - depends_on("py-jupyter-console", type=("build", "run")) - depends_on("py-nbconvert", type=("build", "run")) - depends_on("py-ipykernel", type=("build", "run")) - depends_on("py-ipywidgets", type=("build", "run")) + + with default_args(type=("build", "run")): + depends_on("py-notebook") + depends_on("py-qtconsole", when="@:1.0") + depends_on("py-jupyter-console") + depends_on("py-nbconvert") + depends_on("py-ipykernel") + depends_on("py-ipywidgets") + depends_on("py-jupyterlab", when="@1.1:") diff --git a/var/spack/repos/builtin/packages/py-jupyterlab/package.py b/var/spack/repos/builtin/packages/py-jupyterlab/package.py index 08c57c99a9eda4..195ee27e292eca 100644 --- a/var/spack/repos/builtin/packages/py-jupyterlab/package.py +++ b/var/spack/repos/builtin/packages/py-jupyterlab/package.py @@ -29,6 +29,10 @@ class PyJupyterlab(PythonPackage): version("2.2.7", sha256="a72ffd0d919cba03a5ef8422bc92c3332a957ff97b0490494209c83ad93826da") version("2.1.0", sha256="8c239aababf5baa0b3d36e375fddeb9fd96f3a9a24a8cda098d6a414f5bbdc81") + # Optional dependencies needed to install jupyterlab extensions + depends_on("node-js", type="run") + depends_on("npm", type="run") + depends_on("python@3.8:", when="@4:", type=("build", "run")) depends_on("py-hatchling@1.5:", when="@4:", type=("build", "run")) # under [tool.hatch.build.hooks.jupyter-builder] in pyproject.toml diff --git a/var/spack/repos/builtin/packages/py-keras/package.py b/var/spack/repos/builtin/packages/py-keras/package.py index 0864c36993a842..c4c5aa558574f3 100644 --- a/var/spack/repos/builtin/packages/py-keras/package.py +++ b/var/spack/repos/builtin/packages/py-keras/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -199,6 +200,5 @@ def install(self, spec, prefix): build_pip_package("--src", buildpath) with working_dir(buildpath): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.tmp_path) diff --git a/var/spack/repos/builtin/packages/py-kornia/package.py b/var/spack/repos/builtin/packages/py-kornia/package.py index 4789984a2ecd78..06a0c262988946 100644 --- a/var/spack/repos/builtin/packages/py-kornia/package.py +++ b/var/spack/repos/builtin/packages/py-kornia/package.py @@ -23,6 +23,7 @@ class PyKornia(PythonPackage): "adamjstewart", ) + version("0.7.4", sha256="1f8dd6268ca5a2f2ec04b13c48da4dfb90ba2cfae7e31e0cc80d37f6520fa3f1") version("0.7.3", sha256="0eb861ea5d7e6c3891ae699a8b7103a5783af0a7c41888ca482420dd3d055306") version("0.7.2", sha256="f834ccd51188d071ed286a6727471c94344ea2a718903cc6f0e56a92f9c66ac5") version("0.7.1", sha256="65b54a50f70c1f88240b557fda3fdcc1ab866982a5d062e52213130f5a48465c") diff --git a/var/spack/repos/builtin/packages/py-laplace-torch/package.py b/var/spack/repos/builtin/packages/py-laplace-torch/package.py new file mode 100644 index 00000000000000..82a95a462c68f0 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-laplace-torch/package.py @@ -0,0 +1,31 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyLaplaceTorch(PythonPackage): + """laplace - Laplace approximations for deep learning.""" + + homepage = "https://github.com/aleximmer/Laplace" + pypi = "laplace_torch/laplace_torch-0.2.1.tar.gz" + + license("MIT") + + version("0.2.1", sha256="641823a6d3e1dcb8297202b896ae2969334bf96df9a4a6f8cf688896d67d96f2") + + with default_args(type="build"): + depends_on("py-setuptools@42:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch@2:") + depends_on("py-torchvision") + depends_on("py-torchaudio") + depends_on("py-backpack-for-pytorch") + depends_on("py-asdfghjkl@0.1a4") + depends_on("py-torchmetrics") + depends_on("py-opt-einsum") + depends_on("py-curvlinops-for-pytorch@2:") diff --git a/var/spack/repos/builtin/packages/py-lightning-uq-box/package.py b/var/spack/repos/builtin/packages/py-lightning-uq-box/package.py new file mode 100644 index 00000000000000..ec4eab6acccafc --- /dev/null +++ b/var/spack/repos/builtin/packages/py-lightning-uq-box/package.py @@ -0,0 +1,47 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyLightningUqBox(PythonPackage): + """Lighning-UQ-Box: A toolbox for uncertainty quantification in deep learning.""" + + homepage = "https://github.com/lightning-uq-box/lightning-uq-box" + pypi = "lightning-uq-box/lightning-uq-box-0.1.0.tar.gz" + git = "https://github.com/lightning-uq-box/lightning-uq-box.git" + + license("Apache-2.0") + maintainers("nilsleh", "adamjstewart") + + version("main", branch="main") + version("0.1.0", sha256="ce44860db75b4fbe487a009bee91c886be2e1835edee93479a6a8633ef2152b1") + + depends_on("py-setuptools@61:", type="build") + + with default_args(type=("build", "run")): + depends_on("python@3.10:", when="@0.2:") + depends_on("python@3.9:") + depends_on("py-einops@0.3:") + depends_on("py-lightning@2.4:", when="@0.2:") + depends_on("py-lightning@2.1.1:") + depends_on("py-matplotlib@3.5:", when="@0.2:") + depends_on("py-matplotlib@3.3.3:") + depends_on("py-numpy@1.21.1:", when="@0.2:") + depends_on("py-numpy@1.19.3:") + depends_on("py-pandas@1.1.3:") + depends_on("py-torch@2:") + depends_on("py-torchmetrics@1.2:") + depends_on("py-torchvision@0.16.1:") + depends_on("py-scikit-learn@1.3:") + depends_on("py-gpytorch@1.11:") + depends_on("py-laplace-torch@0.2.1:", when="@0.2:") + depends_on("py-laplace-torch@0.1:") + depends_on("py-uncertainty-toolbox@0.1.1:") + depends_on("py-kornia@0.6.9:") + depends_on("py-timm@0.9.2:") + depends_on("py-torchseg@0.0.1:") + depends_on("py-h5py@3.12.1:", when="@0.2:") + depends_on("py-ema-pytorch@0.7:", when="@0.2:") diff --git a/var/spack/repos/builtin/packages/py-linear-operator/package.py b/var/spack/repos/builtin/packages/py-linear-operator/package.py index 00c78994137622..89034f15c7bdbb 100644 --- a/var/spack/repos/builtin/packages/py-linear-operator/package.py +++ b/var/spack/repos/builtin/packages/py-linear-operator/package.py @@ -17,6 +17,7 @@ class PyLinearOperator(PythonPackage): license("MIT") + version("0.5.3", sha256="16122661cd8b8a89ea965c845f650affe0f688f315893bb8dfa1182f148a1a41") version("0.4.0", sha256="7c57c9f8f258c9785c0db4dd7625f4dd03a340313d7314cba0b633644909f5c6") version("0.3.0", sha256="84bf572631a7e1576de6920d81600ca0fedcf6bda2f29dbaf440d6e72ce6abab") version("0.1.1", sha256="81adc1aea9e98f3c4f07f5608eb77b689bc61793e9beebfea82155e9237bf1be") @@ -26,3 +27,5 @@ class PyLinearOperator(PythonPackage): depends_on("py-setuptools-scm", type="build") depends_on("py-torch@1.11:", type=("build", "run")) depends_on("py-scipy", type=("build", "run")) + depends_on("py-jaxtyping@0.2.19", when="@0.5.3:", type=("build", "run")) + depends_on("py-mpmath@0.19:1.3", when="@0.5.3:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-meldmd/package.py b/var/spack/repos/builtin/packages/py-meldmd/package.py index 2f8538154795af..4160aad0b46a19 100644 --- a/var/spack/repos/builtin/packages/py-meldmd/package.py +++ b/var/spack/repos/builtin/packages/py-meldmd/package.py @@ -5,6 +5,7 @@ import os +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -52,11 +53,10 @@ def cmake_args(self): @run_after("install") def install_python(self): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") with working_dir(join_path(self.build_directory, "python")): make("MeldPluginPatch") - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") for _, _, files in os.walk(self.spec["openmm"].prefix.lib.plugins): for f in files: os.symlink( diff --git a/var/spack/repos/builtin/packages/py-mgmetis/package.py b/var/spack/repos/builtin/packages/py-mgmetis/package.py index 1f38fddeca9c64..2d673853116506 100644 --- a/var/spack/repos/builtin/packages/py-mgmetis/package.py +++ b/var/spack/repos/builtin/packages/py-mgmetis/package.py @@ -21,6 +21,6 @@ class PyMgmetis(PythonPackage): depends_on("py-setuptools", type="build") depends_on("py-numpy@1.20.0:1.26.4", type=("build", "run")) depends_on("py-cython", type=("build")) - depends_on("py-mpi4py@3.0.3:", type=("build", "run")) + depends_on("py-mpi4py@3.0.3:3", type=("build", "run")) depends_on("py-pytest") depends_on("metis+shared", type="all") diff --git a/var/spack/repos/builtin/packages/py-mpi4py/package.py b/var/spack/repos/builtin/packages/py-mpi4py/package.py index 9bb50ac679f7a5..c447e700a142de 100644 --- a/var/spack/repos/builtin/packages/py-mpi4py/package.py +++ b/var/spack/repos/builtin/packages/py-mpi4py/package.py @@ -20,6 +20,7 @@ class PyMpi4py(PythonPackage): license("BSD-2-Clause", when="@:3") version("master", branch="master") + version("4.0.1", sha256="f3174b245775d556f4fddb32519a2066ef0592edc810c5b5a59238f9a0a40c89") version("4.0.0", sha256="820d31ae184d69c17d9b5d55b1d524d56be47d2e6cb318ea4f3e7007feff2ccc") version("3.1.6", sha256="c8fa625e0f92b082ef955bfb52f19fa6691d29273d7d71135d295aa143dee6cb") version("3.1.5", sha256="a706e76db9255135c2fb5d1ef54cb4f7b0e4ad9e33cbada7de27626205f2a153") diff --git a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py index dd5ae0d222dacb..e72f207275e523 100644 --- a/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py +++ b/var/spack/repos/builtin/packages/py-non-regression-test-tools/package.py @@ -18,8 +18,9 @@ class PyNonRegressionTestTools(PythonPackage): version("develop", branch="develop") version("main", branch="main") - version("1.0.2", tag="v1.0.2", preferred=True) + version("1.1.4", tag="v1.1.4") + version("1.1.2", tag="v1.1.2") depends_on("py-numpy", type="run") - depends_on("python@3.7:", type="run") - depends_on("py-setuptools", type="build") + depends_on("python@3.10:", type="run") + depends_on("py-setuptools@69.2.0:", type="build") diff --git a/var/spack/repos/builtin/packages/py-nugraph/package.py b/var/spack/repos/builtin/packages/py-nugraph/package.py new file mode 100644 index 00000000000000..83b14447a26412 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-nugraph/package.py @@ -0,0 +1,34 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyNugraph(PythonPackage): + """Graph Neural Network for neutrino physics event reconstruction""" + + pypi = "nugraph/nugraph-24.7.1.tar.gz" + + maintainers("vhewes") + + license("MIT", checked_by="vhewes") + + version("24.7.1", sha256="e1449e4a37049cc774ad026d4f2db339eb60bb59109a11920bb65a4061915de8") + version("24.7.0", sha256="b95d93a1cbcd280a3529ce4782ef778b982d9d4edcc19f522442c38144895f65") + version("24.4.0", sha256="5f888d065819b1ec7c33e7f829ad65eb963db2cf109a5d31b4caef49c004f86f") + version("24.2.0", sha256="4765ea73b384e95a38a598499e77d805541e415049da9f6f46193f8bc281208a") + version("23.11.1", sha256="b160996fca9615b2c7e6ed02fb780af5edaa97f6cdafd45abdf65ea0c7a6f2ca") + version("23.11.0", sha256="a1e01a8c3143fc8db2cf8a3584d192a738d89eb865b1d52cd2994b24bd4175ec") + version("23.10.0", sha256="8a0219318c6bd6d0d240e419ef88cdedd7e944276f0cce430d9ece423e06f1b8") + + depends_on("py-flit-core", type="build") + + depends_on("py-matplotlib") + depends_on("py-numl") + depends_on("py-pynvml") + depends_on("py-seaborn") + depends_on("py-pytorch-lightning") + + extends("python") diff --git a/var/spack/repos/builtin/packages/py-numl/package.py b/var/spack/repos/builtin/packages/py-numl/package.py new file mode 100644 index 00000000000000..1c61a9d53eb0b1 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-numl/package.py @@ -0,0 +1,40 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyNuml(PythonPackage): + """Standardised ML input processing for particle physics""" + + pypi = "pynuml/pynuml-24.7.1.tar.gz" + + maintainers("vhewes") + + license("MIT", checked_by="vhewes") + + version("24.7.1", sha256="20d2f1a07887473e67c79ecc3804b8012e22b78883199fdb0d07bb1b725b6ab0") + version("24.7.0", sha256="d47f71ead6861278595b79d04c554da4998d5c4c50587e4c90231f50db0f2e81") + version("24.6.0", sha256="357d2b0e0b9ca179514d177278620e5ac57bed37bfb6d145c172150126432613") + version("23.11.0", sha256="1a7e61864cfeb0b27c6a93646c33e3f457bbc384eb86aee4df76b5e02898d02f") + version("23.9.0", sha256="77ea8c9df541351adeb249594cce27d742973ee82a0d7f2ad8cdcffa9d3fa6b1") + version("23.8.0", sha256="0896797f3f70b3a6d3d74f7a3e7fe5eaf59a2000a47ffc7ac08b73be0aa15706") + version("23.7.0", sha256="5449dd09a7e046d036e12c7971e61d2862cdb79c7932144b038288fc05ca50a8") + version("23.6.1", sha256="fdb23a9d4f1b83b06cc35b07608fe4c2e55f8307ac47851cccc21a20b69ab674") + version("23.6.0", sha256="fcc1546b9489584f2635f6418c5e1a43f6bdf02dd5c46b7afa09ea5f247524a2") + version("23.5.2", sha256="d83576c8e25e22cc9ba68a35b9690ea861f7a4c09db65ca134849c89fba9b330") + version("23.5.1", sha256="73ef1bea1022b9ebddec35ac7d66c1394003aa5e63a4ec99bfa14d4f833e04a4") + version("23.5.0", sha256="dccb774932813ddc788b1d27e52e251d9db6ea16b303596bfa0955ae51098674") + + depends_on("py-flit-core", type="build") + + depends_on("mpich") + depends_on("py-h5py +mpi") + depends_on("py-pandas") + depends_on("py-particle") + depends_on("py-plotly") + depends_on("py-torch-geometric") + + extends("python") diff --git a/var/spack/repos/builtin/packages/py-olcf-velocity/package.py b/var/spack/repos/builtin/packages/py-olcf-velocity/package.py new file mode 100644 index 00000000000000..6a36cb60498a94 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-olcf-velocity/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyOlcfVelocity(PythonPackage): + """A tool to help with the maintenance of container build scripts on multiple systems, + backends (e.g podman or apptainer) and distros.""" + + homepage = "https://olcf.github.io/velocity/index.html" + pypi = "olcf_velocity/olcf_velocity-0.1.3.tar.gz" + + maintainers("AcerP-py") + + license("UNKNOWN", checked_by="AcerP-py") + + version("0.1.3", sha256="08bd82d464e8cab6c61cab095d460b927a18e082cadb663bd5f935cf651b5c03") + + depends_on("python@3.10:", type=("build", "run")) + + depends_on("py-pyyaml", type="run") + depends_on("py-networkx", type="run") + depends_on("py-colorama", type="run") + depends_on("py-loguru", type="run") + depends_on("py-typing-extensions", type="run") + + depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-onnxruntime/package.py b/var/spack/repos/builtin/packages/py-onnxruntime/package.py index 7ea80f69d69406..a5d375f8169298 100644 --- a/var/spack/repos/builtin/packages/py-onnxruntime/package.py +++ b/var/spack/repos/builtin/packages/py-onnxruntime/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -211,6 +212,5 @@ def cmake_args(self): @run_after("install") def install_python(self): """Install everything from build directory.""" - args = std_pip_args + ["--prefix=" + prefix, "."] with working_dir(self.build_directory): - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/py-open-clip-torch/package.py b/var/spack/repos/builtin/packages/py-open-clip-torch/package.py new file mode 100644 index 00000000000000..45fa3a0ee79b77 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-open-clip-torch/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyOpenClipTorch(PythonPackage): + """Welcome to an open source implementation of OpenAI's CLIP (Contrastive + Language-Image Pre-training).""" + + homepage = "https://github.com/mlfoundations/open_clip" + url = "https://github.com/mlfoundations/open_clip/archive/refs/tags/v2.24.0.tar.gz" + + license("MIT", checked_by="alex391") + + version("2.24.0", sha256="83d78a78f756685e80fdb8baa2f2fb308c791fabdbfe1c0ddcd6fed7d22de7b6") + + depends_on("py-setuptools", type="build") + depends_on("py-torch@1.9.0:", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) + depends_on("py-regex", type=("build", "run")) + depends_on("py-ftfy", type=("build", "run")) + depends_on("py-tqdm", type=("build", "run")) + depends_on("py-huggingface-hub", type=("build", "run")) + depends_on("py-sentencepiece", type=("build", "run")) + depends_on("py-protobuf", type=("build", "run")) + depends_on("py-timm", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-or-tools/package.py b/var/spack/repos/builtin/packages/py-or-tools/package.py index 2e917b5a7cf2e8..8400f7ae217986 100644 --- a/var/spack/repos/builtin/packages/py-or-tools/package.py +++ b/var/spack/repos/builtin/packages/py-or-tools/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -57,5 +58,4 @@ def install(self, spec, prefix): with working_dir(self.build_directory): make("install") with working_dir(join_path(self.build_directory, "python")): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/py-oracledb/package.py b/var/spack/repos/builtin/packages/py-oracledb/package.py index 3e50ac8da0c8d6..2e690e36be70a4 100644 --- a/var/spack/repos/builtin/packages/py-oracledb/package.py +++ b/var/spack/repos/builtin/packages/py-oracledb/package.py @@ -12,17 +12,23 @@ class PyOracledb(PythonPackage): Python programs to access Oracle Database.""" homepage = "https://oracle.github.io/python-oracledb/" - pypi = "oracledb/oracledb-1.2.2.tar.gz" + pypi = "oracledb/oracledb-1.4.2.tar.gz" license("Apache-2.0") - version("1.2.2", sha256="dd9f63084e44642b484a46b2fcfb4fc921f39facf494a1bab00628fa6409f4fc") + version("2.4.1", sha256="bd5976bef0e466e0f9d1b9f6531fb5b8171dc8534717ccb04b26e680b6c7571d") + version("2.3.0", sha256="b9b0c4ec280b10063e6789bed23ddc2435ae98569ebe64e0b9a270780b9103d5") + version("1.4.2", sha256="e28ed9046f2735dc2dd5bbcdf3667f284e384e0ec7eed3eeb3798fa8a7d47e36") - depends_on("c", type="build") # generated + depends_on("python@3.8:3.13", when="@2.4:") + depends_on("python@3.8:3.12", when="@2.0:2.3") + depends_on("python@3.8:3.11", when="@:1.4") + + depends_on("c", type="build") depends_on("py-setuptools@40.6.0:", type="build") depends_on("py-cryptography@3.2.1:", type=("build", "run")) - depends_on("py-cython", type="build") + depends_on("py-cython@3:", type="build") depends_on("python@3.6:", type=("build", "run")) depends_on("oracle-instant-client", type="run", when="impl=thick") diff --git a/var/spack/repos/builtin/packages/py-parso/package.py b/var/spack/repos/builtin/packages/py-parso/package.py index aea20abad21a73..ec01736ad67697 100644 --- a/var/spack/repos/builtin/packages/py-parso/package.py +++ b/var/spack/repos/builtin/packages/py-parso/package.py @@ -16,6 +16,7 @@ class PyParso(PythonPackage): license("MIT") + version("0.8.4", sha256="eb3a7b58240fb99099a345571deecc0f9540ea5f4dd2fe14c2a99d6b281ab92d") version("0.8.3", sha256="8c07be290bb59f03588915921e29e8a50002acaf2cdc5fa0e0114f91709fafa0") version("0.8.2", sha256="12b83492c6239ce32ff5eed6d3639d6a536170723c6f3f1506869f1ace413398") version("0.8.1", sha256="8519430ad07087d4c997fda3a7918f7cfa27cb58972a8c89c2a0295a1c940e9e") @@ -23,7 +24,10 @@ class PyParso(PythonPackage): version("0.6.1", sha256="56b2105a80e9c4df49de85e125feb6be69f49920e121406f15e7acde6c9dfc57") version("0.4.0", sha256="2e9574cb12e7112a87253e14e2c380ce312060269d04bd018478a3c92ea9a376") - depends_on("python@3.6:", type=("build", "run"), when="@0.8.1:") - depends_on("python@2.7:2.8,3.4:", type=("build", "run"), when="@0.6.1:") - depends_on("python@2.6:2.8,3.3:", type=("build", "run"), when="@0.4.0:") + with default_args(type=("build", "run")): + depends_on("python@:3.13", when="@:0.8.4") + # https://github.com/davidhalter/parso/commit/f7bea28bcc3a1862075e5b61a08d703d72be94aa + depends_on("python@:3.12", when="@:0.8.3") + # https://github.com/davidhalter/parso/commit/285492f4ed25f145859630ee6c5625e60aff6e2e + depends_on("python@:3.11", when="@:0.8.2") depends_on("py-setuptools", type="build") diff --git a/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py b/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py index aee29c340b91eb..4513912e67336e 100644 --- a/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py +++ b/var/spack/repos/builtin/packages/py-pennylane-lightning-kokkos/package.py @@ -2,6 +2,7 @@ # Spack Project Developers. See the top-level COPYRIGHT file for details. # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -143,8 +144,7 @@ def build(self, pkg, spec, prefix): python("setup.py", "build_ext", *args) def install(self, pkg, spec, prefix): - pip_args = std_pip_args + [f"--prefix={prefix}", "."] - pip(*pip_args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") super().install(pkg, spec, prefix) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py b/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py index 030125cebd6eb4..383e03a2d2f34b 100644 --- a/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py +++ b/var/spack/repos/builtin/packages/py-pennylane-lightning/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -113,8 +114,7 @@ def build(self, pkg, spec, prefix): python("setup.py", "build_ext", *args) def install(self, pkg, spec, prefix): - pip_args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*pip_args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") super().install(pkg, spec, prefix) @run_after("install") diff --git a/var/spack/repos/builtin/packages/py-petsc4py/package.py b/var/spack/repos/builtin/packages/py-petsc4py/package.py index 38a79296de536c..df4522dabc399c 100644 --- a/var/spack/repos/builtin/packages/py-petsc4py/package.py +++ b/var/spack/repos/builtin/packages/py-petsc4py/package.py @@ -20,6 +20,7 @@ class PyPetsc4py(PythonPackage): license("BSD-2-Clause") version("main", branch="main") + version("3.22.1", sha256="a7fd321458b72356e46c4bc5bd93d173c9c2f91018cf21f614a631fe2aa6466a") version("3.22.0", sha256="b35fc833d41c7969be8a530494fcc81741d77e0dc33fba2f4050cdbd0ad881ae") version("3.21.6", sha256="d7a6d41e1463b04b9711b53b347d15f590f9354fae37aae14ad69100286129aa") version("3.21.5", sha256="70e6fa795e9abd8014faec0203cd0cc3efd79f4647c97cafc33776421c9ab1e8") diff --git a/var/spack/repos/builtin/packages/py-pillow/package.py b/var/spack/repos/builtin/packages/py-pillow/package.py index 1e0e5374200cfd..3bd7e9399e9c3d 100644 --- a/var/spack/repos/builtin/packages/py-pillow/package.py +++ b/var/spack/repos/builtin/packages/py-pillow/package.py @@ -74,6 +74,12 @@ class PyPillowBase(PythonPackage): depends_on("libimagequant", when="+imagequant") depends_on("libxcb", when="+xcb") + patch( + "https://github.com/python-pillow/Pillow/commit/1c11d4581c5705dfa21bc5a4f3b6980c556978bf.patch?full_index=1", + sha256="599f37e6a5a8d1adb9f4025ffc7cae5f5b61cad60a04e7c7a3015f9e350047bb", + when="@11.0.0", + ) + @when("@10:") def config_settings(self, spec, prefix): settings = {"parallel": make_jobs} diff --git a/var/spack/repos/builtin/packages/py-pip/package.py b/var/spack/repos/builtin/packages/py-pip/package.py index 8d7dd6561c5631..7f63c25837bd3e 100644 --- a/var/spack/repos/builtin/packages/py-pip/package.py +++ b/var/spack/repos/builtin/packages/py-pip/package.py @@ -5,6 +5,7 @@ import os import sys +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -76,15 +77,14 @@ def install(self, spec, prefix): # itself, see: # https://discuss.python.org/t/bootstrapping-a-specific-version-of-pip/12306 whl = self.stage.archive_file - args = std_pip_args + ["--prefix=" + prefix, whl] if sys.platform == "win32": # On Windows for newer versions of pip, you must bootstrap pip first. # In order to achieve this, use the pip.pyz zipapp version of pip to # bootstrap the pip wheel install. - args.insert(0, os.path.join(self.stage.source_path, "pip.pyz")) + script = os.path.join(self.stage.source_path, "pip.pyz") else: - args.insert(0, os.path.join(whl, "pip")) - python(*args) + script = os.path.join(whl, "pip") + python(script, *PythonPipBuilder.std_args(self), f"--prefix={prefix}", whl) def setup_dependent_package(self, module, dependent_spec: Spec): setattr(module, "pip", python.with_default_args("-m", "pip")) diff --git a/var/spack/repos/builtin/packages/py-prov/package.py b/var/spack/repos/builtin/packages/py-prov/package.py index fa68b56dae151f..8c62abeef1c210 100644 --- a/var/spack/repos/builtin/packages/py-prov/package.py +++ b/var/spack/repos/builtin/packages/py-prov/package.py @@ -13,7 +13,7 @@ class PyProv(PythonPackage): PROV-O (RDF) """ - homepage = "prov.readthedocs.io/" + homepage = "https://prov.readthedocs.io/" pypi = "prov/prov-2.0.0.tar.gz" license("MIT") diff --git a/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py b/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py index 8f04cae03bcc07..f4218428e14696 100644 --- a/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py +++ b/var/spack/repos/builtin/packages/py-pybind11-stubgen/package.py @@ -10,8 +10,9 @@ class PyPybind11Stubgen(PythonPackage): """Generates stubs for pybind11-wrapped python modules""" homepage = "https://github.com/sizmailov/pybind11-stubgen" - pypi = "pybind11-stubgen/pybind11-stubgen-0.3.0.tar.gz" + pypi = "pybind11-stubgen/pybind11-stubgen-2.5.1.tar.gz" + version("2.5.1", sha256="4427a67038a00c5ac1637ffa6c65728c67c5b1251ecc23c7704152be0b14cc0b") version("0.8.7", sha256="79e24009137cd51ef7201c5b9f4d0d072824b260cff751ec8200a8886e06adbf") version("0.3.0", sha256="fb9bc977df46d7f1aecd33258e34abbbd01f1f461862c8a2a85341b96e6e6bdf") diff --git a/var/spack/repos/builtin/packages/py-pycifrw/package.py b/var/spack/repos/builtin/packages/py-pycifrw/package.py index 37d6c4c37a3925..8262fca5bc3306 100644 --- a/var/spack/repos/builtin/packages/py-pycifrw/package.py +++ b/var/spack/repos/builtin/packages/py-pycifrw/package.py @@ -15,6 +15,7 @@ class PyPycifrw(PythonPackage): license("Python-2.0") + version("4.4.6", sha256="02bf5975e70ab71540bff62fbef3e8354ac707a0f0ab914a152047962891ef15") version("4.4.1", sha256="cef7662f475e0eb78a55c2d55774d474e888c96b0539e5f08550afa902cdc4e1") depends_on("c", type="build") # generated diff --git a/var/spack/repos/builtin/packages/py-pycubexr/package.py b/var/spack/repos/builtin/packages/py-pycubexr/package.py new file mode 100644 index 00000000000000..63edbb2a70bf5d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pycubexr/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyPycubexr(PythonPackage): + """pyCubexR is a Python package for reading the Cube4 file format.""" + + homepage = "https://github.com/extra-p/pycubexr" + pypi = "pycubexr/pycubexr-2.0.0.tar.gz" + + license("BSD-3-Clause") + + version("2.0.0", sha256="03504fbbc9cbd514943e8aeb57919ad49731fe264bdbab86711bf10851276924") + + depends_on("py-setuptools", type="build") + depends_on("py-numpy@1.18:1", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pyee/package.py b/var/spack/repos/builtin/packages/py-pyee/package.py new file mode 100644 index 00000000000000..34d26b7b57ab6d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyee/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyPyee(PythonPackage): + """A rough port of Node.js's EventEmitter to Python + with a few tricks of its own.""" + + homepage = "https://github.com/jfhbrook/pyee" + pypi = "pyee/pyee-12.0.0.tar.gz" + + license("MIT", checked_by="wdconinc") + + version("12.0.0", sha256="c480603f4aa2927d4766eb41fa82793fe60a82cbfdb8d688e0d08c55a534e145") + version("11.1.1", sha256="82e1eb1853f8497c4ff1a0c7fa26b9cd2f1253e2b6ffb93b4700fda907017302") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-setuptools", type="build") + depends_on("py-setuptools-scm", type="build") + depends_on("py-wheel", type="build") + depends_on("py-typing-extensions", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pyhmmer/package.py b/var/spack/repos/builtin/packages/py-pyhmmer/package.py new file mode 100644 index 00000000000000..b263e89389ea1d --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyhmmer/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyPyhmmer(PythonPackage): + """HMMER is a biological sequence analysis tool that uses profile hidden + Markov models to search for sequence homologs. HMMER3 is developed and + maintained by the Eddy/Rivas Laboratory at Harvard University. pyhmmer + is a Python package, implemented using the Cython language, that provides + bindings to HMMER3.""" + + homepage = "https://github.com/althonos/pyhmmer" + pypi = "pyhmmer/pyhmmer-0.10.14.tar.gz" + + license("MIT", checked_by="luke-dt") + + version("0.10.15", sha256="bf8e97ce8da6fb5850298f3074640f3e998d5a655877f865c1592eb057dc7921") + version("0.10.14", sha256="eb50bdfdf67a3b1fecfe877d7ca6d9bade9a9f3dea3ad60c959453bbb235573d") + + depends_on("python@3.6:", type=("build", "run")) + depends_on("py-setuptools@46.4:", type="build") + depends_on("py-cython@3.0", type="build") + depends_on("py-psutil@5.8:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pynucleus/package.py b/var/spack/repos/builtin/packages/py-pynucleus/package.py index 9664e7ce9f37bd..a70fb4dfd68a6b 100644 --- a/var/spack/repos/builtin/packages/py-pynucleus/package.py +++ b/var/spack/repos/builtin/packages/py-pynucleus/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -59,11 +60,9 @@ def setup_build_environment(self, env): @run_before("install") def install_python(self): - prefix = self.prefix for subpackage in ["packageTools", "base", "metisCy", "fem", "multilevelSolver", "nl"]: with working_dir(subpackage): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") @run_after("install") def install_additional_files(self): diff --git a/var/spack/repos/builtin/packages/py-pyppeteer/package.py b/var/spack/repos/builtin/packages/py-pyppeteer/package.py new file mode 100644 index 00000000000000..64a999c3e40a3c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyppeteer/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyPyppeteer(PythonPackage): + """Headless chrome/chromium automation library + (unofficial port of puppeteer).""" + + homepage = "https://github.com/pyppeteer/pyppeteer" + pypi = "pyppeteer/pyppeteer-2.0.0.tar.gz" + + license("MIT") + + version("2.0.0", sha256="4af63473ff36a746a53347b2336a49efda669bcd781e400bc1799b81838358d9") + + depends_on("py-poetry-core", type="build") + + depends_on("python@3.8:", type=("build", "run")) + depends_on("py-appdirs@1.4.3:1", type=("build", "run")) + depends_on("py-importlib-metadata@1.4:", type=("build", "run")) + depends_on("py-pyee@11", type=("build", "run")) + depends_on("py-tqdm@4.42.1:4", type=("build", "run")) + depends_on("py-urllib3@1.25.8:1", type=("build", "run")) + depends_on("py-websockets@10", type=("build", "run")) + depends_on("py-certifi@2023:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pyrodigal/package.py b/var/spack/repos/builtin/packages/py-pyrodigal/package.py new file mode 100644 index 00000000000000..6bd206f58b1c1a --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pyrodigal/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyPyrodigal(PythonPackage): + """Cython bindings and Python interface to Prodigal, an ORF finder for + genomes and metagenomes""" + + homepage = "https://github.com/althonos/pyrodigal" + pypi = "pyrodigal/pyrodigal-3.5.2.tar.gz" + + license("GPL-3.0", checked_by="luke-dt") + + version("3.5.2", sha256="2a40eb6113e720ada51c326958b295944cdc33ecee9f25d5bad4e9a8e6e6f7f5") + + depends_on("c", type="build") + + depends_on("python@3.6:", type=("build", "run")) + depends_on("py-setuptools@46.4:", type="build") + depends_on("py-archspec@0.2.0:", type="build") + depends_on("py-cython@3.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-pyscf/package.py b/var/spack/repos/builtin/packages/py-pyscf/package.py index 4a12b557265e14..c94a68252a953e 100644 --- a/var/spack/repos/builtin/packages/py-pyscf/package.py +++ b/var/spack/repos/builtin/packages/py-pyscf/package.py @@ -18,6 +18,7 @@ class PyPyscf(PythonPackage): license("Apache-2.0") + version("2.7.0", sha256="ca8efc2f28d72c3130f26a967e7fa8d0bbc4a6b47d16a7c4c732ec85a31b7eec") version("2.6.2", sha256="744c89a8e4d38c4b5562f75fa68f9d079faeb23602d255fba0eb6d1bac97bca2") version("2.6.1", sha256="faeaeeb0c07fec5018937655511709a9c2445e3d7c421c0fa1ae5d889e4ab455") version("2.6.0", sha256="08ff920fedd4b257273d235fb4492535147c1e3154de5ab02b5446de93e200d8") diff --git a/var/spack/repos/builtin/packages/py-python-ptrace/package.py b/var/spack/repos/builtin/packages/py-python-ptrace/package.py index 94273241f6570d..be67cc059b6792 100644 --- a/var/spack/repos/builtin/packages/py-python-ptrace/package.py +++ b/var/spack/repos/builtin/packages/py-python-ptrace/package.py @@ -14,8 +14,12 @@ class PyPythonPtrace(PythonPackage): license("GPL-2.0-only") + version("0.9.9", sha256="56bbfef44eaf3a77be48138cca5767cdf471e8278fe1499f9b72f151907f25cf") version("0.9.8", sha256="1e3bc6223f626aaacde8a7979732691c11b13012e702fee9ae16c87f71633eaa") - depends_on("c", type="build") # generated + depends_on("c", type="build") depends_on("py-setuptools", type="build") + + # uses imp + depends_on("python@:3.11", when="@:0.9.8") diff --git a/var/spack/repos/builtin/packages/py-pythonsollya/package.py b/var/spack/repos/builtin/packages/py-pythonsollya/package.py index c8f427f873de9c..1603ea1dce4727 100644 --- a/var/spack/repos/builtin/packages/py-pythonsollya/package.py +++ b/var/spack/repos/builtin/packages/py-pythonsollya/package.py @@ -9,7 +9,7 @@ class PyPythonsollya(PythonPackage): """Python wrapper for the Sollya library""" - homepage = "Python wrapper for the Sollya library" + homepage = "https://gitlab.com/metalibm-dev/pythonsollya" url = "https://gitlab.com/metalibm-dev/pythonsollya/-/archive/release-0.4.0-alpha0/pythonsollya-release-0.4.0-alpha0.tar.gz" license("CECILL-2.1") diff --git a/var/spack/repos/builtin/packages/py-pytorch-warmup/package.py b/var/spack/repos/builtin/packages/py-pytorch-warmup/package.py new file mode 100644 index 00000000000000..362e4f0b094702 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-pytorch-warmup/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyPytorchWarmup(PythonPackage): + """This library contains PyTorch implementations of the warmup schedules + described in On the adequacy of untuned warmup for adaptive + optimization.""" + + homepage = "https://github.com/Tony-Y/pytorch_warmup" + pypi = "pytorch-warmup/pytorch-warmup-0.1.1.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.1.1", sha256="c594760b29657a127aa6a8c3424dd0b5068140b3b7d4988118f4a9f3e99b1457") + + depends_on("py-setuptools", type="build") + depends_on("py-torch@1.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-rasterio/package.py b/var/spack/repos/builtin/packages/py-rasterio/package.py index 606b983401f950..222f6d5109e49f 100644 --- a/var/spack/repos/builtin/packages/py-rasterio/package.py +++ b/var/spack/repos/builtin/packages/py-rasterio/package.py @@ -22,6 +22,7 @@ class PyRasterio(PythonPackage): version("main", branch="main") version("master", branch="master", deprecated=True) + version("1.4.2", sha256="1be35ccb4d998a4c48fa51bbee9e37927ecd9b9e954a2b2581b8f3e9bb165332") version("1.4.1", sha256="d750362bb792d2311f94803ff309baec48486ecba75c9b905ea9b1f5eb06ef9f") version("1.4.0", sha256="e0d2ff540a4e06016cca2fb46691a10afe71343ea998c50ad8247bb125542133") version("1.3.11", sha256="47aa70b4718ebc80d825bb7db3127577d74e31c53048ce215145c0baf530ece9") @@ -83,3 +84,6 @@ class PyRasterio(PythonPackage): depends_on("gdal@2.4:3.3", when="@1.2.7:1.2") depends_on("gdal@2.3:3.2", when="@1.2.0:1.2.6") depends_on("gdal@1.11:3.2", when="@1.1.0:1.1") + + # https://github.com/rasterio/rasterio/pull/3212 + conflicts("^gdal@3.10:", when="@:1.4.1") diff --git a/var/spack/repos/builtin/packages/py-resize-right/package.py b/var/spack/repos/builtin/packages/py-resize-right/package.py new file mode 100644 index 00000000000000..4e737f2d83e3e5 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-resize-right/package.py @@ -0,0 +1,32 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyResizeRight(PythonPackage): + """This is a resizing packge for images or tensors, that supports both + Numpy and PyTorch (fully differentiable) seamlessly. The main motivation + for creating this is to address some crucial incorrectness issues (see item + 3 in the list below) that exist in all other resizing packages I am + aware of. As far as I know, it is the only one that performs correctly + in all cases. ResizeRight is specially made for machine learning, + image enhancement and restoration challenges.""" + + homepage = "https://github.com/assafshocher/ResizeRight" + pypi = "resize-right/resize-right-0.0.2.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.0.2", sha256="7dc35b72ce4012b77f7cc9049835163793ab98a58ab8893610fb119fe59af520") + + depends_on("py-setuptools", type="build") + # needs py-numpy, py-torch, or both. py-numpy is lighter to install, so + # always use py-numpy + depends_on("py-numpy", type=("build", "run")) + # and optionally use py-torch + variant("torch", default=True, description="Enable py-torch") + depends_on("py-torch", type=("build", "run"), when="+torch") diff --git a/var/spack/repos/builtin/packages/py-rotary-embedding-torch/package.py b/var/spack/repos/builtin/packages/py-rotary-embedding-torch/package.py new file mode 100644 index 00000000000000..c307b827bee74c --- /dev/null +++ b/var/spack/repos/builtin/packages/py-rotary-embedding-torch/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2023 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyRotaryEmbeddingTorch(PythonPackage): + """A standalone library for adding rotary embeddings to transformers in Pytorch, + following its success as relative positional encoding. Specifically it will make + rotating information into any axis of a tensor easy and efficient, whether they + be fixed positional or learned. This library will give you state of the art + results for positional embedding, at little costs.""" + + homepage = "https://github.com/lucidrains/rotary-embedding-torch" + pypi = "rotary-embedding-torch/rotary-embedding-torch-0.5.3.tar.gz" + + maintainers("meyersbs") + + version("0.5.3", sha256="45db29b19bd7025f09d202752c26bf6921b05d8b5a977cfcdc625ce96ddf2b5c") + + depends_on("py-setuptools", type="build") + depends_on("py-beartype", type=("build", "run")) + depends_on("py-einops@0.7:", type=("build", "run")) + depends_on("py-torch@2.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-setuptools/package.py b/var/spack/repos/builtin/packages/py-setuptools/package.py index bdfc00a9e15d8d..677c4c06d2cef4 100644 --- a/var/spack/repos/builtin/packages/py-setuptools/package.py +++ b/var/spack/repos/builtin/packages/py-setuptools/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -95,5 +96,4 @@ def install(self, spec, prefix): # # We work around this issue by installing setuptools from wheels whl = self.stage.archive_file - args = ["-m", "pip"] + std_pip_args + ["--prefix=" + prefix, whl] - python(*args) + python("-m", "pip", *PythonPipBuilder.std_args(self), f"--prefix={prefix}", whl) diff --git a/var/spack/repos/builtin/packages/py-slepc4py/package.py b/var/spack/repos/builtin/packages/py-slepc4py/package.py index f02707046b5aed..41d65e294e4504 100644 --- a/var/spack/repos/builtin/packages/py-slepc4py/package.py +++ b/var/spack/repos/builtin/packages/py-slepc4py/package.py @@ -18,6 +18,7 @@ class PySlepc4py(PythonPackage): license("BSD-2-Clause") version("main", branch="main") + version("3.22.1", sha256="056d98bf09f5202d25842d5a4a4f553445103e1e26155da52f007c508f3140f8") version("3.22.0", sha256="53db52a72e126787768732790ca73dbc6ff6e49d4d1152e9c3641ba71b97738e") version("3.21.2", sha256="f611ff74e4749f21445b2369dbd0edf404cdf639eecafd54187d0a2865d521a0") version("3.21.1", sha256="bc8e0e270643eef9b63b249080b8fe4433be0b697d55032d9f768ef310bd7b07") diff --git a/var/spack/repos/builtin/packages/py-sphinxcontrib-spelling/package.py b/var/spack/repos/builtin/packages/py-sphinxcontrib-spelling/package.py new file mode 100644 index 00000000000000..19e0de61b66264 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-sphinxcontrib-spelling/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PySphinxcontribSpelling(PythonPackage): + """A spelling checker for Sphinx-based documentation""" + + homepage = "https://sphinxcontrib-spelling.readthedocs.io" + pypi = "sphinxcontrib-spelling/sphinxcontrib-spelling-8.0.0.tar.gz" + + maintainers("rbberger") + + license("BSD-2-Clause") + + version("8.0.0", sha256="199d0a16902ad80c387c2966dc9eb10f565b1fb15ccce17210402db7c2443e5c") + + depends_on("python@3.7:") + depends_on("py-sphinx@3:") + depends_on("py-pyenchant@3.1.1:") diff --git a/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py b/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py index e778ecf5e13f9e..5a2b3043c20ca7 100644 --- a/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py +++ b/var/spack/repos/builtin/packages/py-tensorboard-data-server/package.py @@ -5,6 +5,7 @@ import glob +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -60,5 +61,4 @@ def install(self, spec, prefix): ) wheel = glob.glob("*.whl")[0] - args = std_pip_args + ["--prefix=" + prefix, wheel] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", wheel) diff --git a/var/spack/repos/builtin/packages/py-tensorboard/package.py b/var/spack/repos/builtin/packages/py-tensorboard/package.py index 83f3f1a464c6ed..a7d85ca17fe8e1 100644 --- a/var/spack/repos/builtin/packages/py-tensorboard/package.py +++ b/var/spack/repos/builtin/packages/py-tensorboard/package.py @@ -17,10 +17,11 @@ class PyTensorboard(PythonPackage): # Requires tensorflow skip_modules = ["tensorboard.summary._tf"] - maintainers("aweits") - license("Apache-2.0") + maintainers("aweits") + version("2.18.0", sha256="107ca4821745f73e2aefa02c50ff70a9b694f39f790b11e6f682f7d326745eab") + version("2.17.1", sha256="253701a224000eeca01eee6f7e978aea7b408f60b91eb0babdb04e78947b773e") version("2.17.0", sha256="859a499a9b1fb68a058858964486627100b71fcb21646861c61d31846a6478fb") version("2.16.2", sha256="9f2b4e7dad86667615c0e5cd072f1ea8403fc032a299f0072d6f74855775cc45") version("2.16.1", sha256="928b62567911a8eeb2ebeb7482a9e4599b35f6713a6f2c56655259c18a139569") @@ -59,19 +60,20 @@ class PyTensorboard(PythonPackage): depends_on("py-grpcio@1.24.3:", when="@2.3:") depends_on("py-grpcio@1.23.3:", when="@2.2") depends_on("py-markdown@2.6.8:") - depends_on("py-numpy@1.12.0:") + depends_on("py-numpy@1.12:") # https://github.com/tensorflow/tensorboard/pull/6871 - depends_on("py-numpy@:1") + depends_on("py-numpy@:1", when="@:2.17") # https://github.com/tensorflow/tensorboard/pull/5138 depends_on("py-numpy@:1.23", when="@:2.5") - depends_on("py-protobuf@3.19.6:4", when="@2.17:") - depends_on("py-protobuf@3.19.6:", when="@2.15.2:2.16") + depends_on("py-packaging", when="@2.18:") + depends_on("py-protobuf@3.19.6:", when="@2.15.2:2.16,2.18:") + depends_on("py-protobuf@3.19.6:4", when="@2.17") depends_on("py-protobuf@3.19.6:4.23", when="@2.12:2.15.1") depends_on("py-protobuf@3.9.2:3", when="@2.11") depends_on("py-protobuf@3.9.2:3.19", when="@2.9:2.10") depends_on("py-protobuf@3.6.0:3.19", when="@:2.8") - depends_on("py-setuptools@41.0.0:") - depends_on("py-six@1.10.0:", when="@:2.4,2.14:") + depends_on("py-setuptools@41:") + depends_on("py-six@1.10:", when="@:2.4,2.14:") depends_on("py-tensorboard-data-server@0.7", when="@2.12:") depends_on("py-tensorboard-data-server@0.6", when="@2.5:2.11") depends_on("py-werkzeug@1.0.1:", when="@2.9:") diff --git a/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py b/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py index 02ed47516997f3..d3308b15b3abf0 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-estimator/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -97,6 +98,5 @@ def install(self, spec, prefix): buildpath = join_path(self.stage.source_path, "spack-build") build_pip_package("--src", buildpath) with working_dir(buildpath): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.tmp_path) diff --git a/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py b/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py index 58916a38d03dda..b126d8a455ed25 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-hub/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -78,8 +79,7 @@ def install(self, spec, prefix): ) with working_dir(insttmp_path): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(tmp_path) remove_linked_tree(insttmp_path) diff --git a/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py b/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py index 9f8360d432dcc6..4c73617d39c3ee 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow-probability/package.py @@ -5,6 +5,7 @@ import tempfile +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -118,7 +119,6 @@ def install(self, spec, prefix): bazel(*args) with working_dir(join_path("bazel-bin", "pip_pkg.runfiles", "tensorflow_probability")): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(self.tmp_path) diff --git a/var/spack/repos/builtin/packages/py-tensorflow/package.py b/var/spack/repos/builtin/packages/py-tensorflow/package.py index 726f68b1c6cd09..72cb7092d5249b 100644 --- a/var/spack/repos/builtin/packages/py-tensorflow/package.py +++ b/var/spack/repos/builtin/packages/py-tensorflow/package.py @@ -9,6 +9,7 @@ import tempfile from spack.build_environment import optimization_flags +from spack.build_systems.python import PythonPipBuilder from spack.package import * rocm_dependencies = [ @@ -41,12 +42,13 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): homepage = "https://www.tensorflow.org" url = "https://github.com/tensorflow/tensorflow/archive/v2.3.1.tar.gz" git = "https://github.com/tensorflow/tensorflow.git" - - maintainers("adamjstewart", "aweits") import_modules = ["tensorflow"] license("Apache-2.0") + maintainers("adamjstewart", "aweits") + version("2.18.0", sha256="d7876f4bb0235cac60eb6316392a7c48676729860da1ab659fb440379ad5186d") + version("2.17.1", sha256="2d3cfb48510f92f3a52fb05b820481c6f066a342a9f5296fe26d72c4ea757700") version("2.17.0", sha256="9cc4d5773b8ee910079baaecb4086d0c28939f024dd74b33fc5e64779b6533dc") version("2.16.2", sha256="023849bf253080cb1e4f09386f5eb900492da2288274086ed6cfecd6d99da9eb") version("2.16.1", sha256="c729e56efc945c6df08efe5c9f5b8b89329c7c91b8f40ad2bb3e13900bd4876d") @@ -122,14 +124,18 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): version("2.2.1", sha256="e6a28e64236d729e598dbeaa02152219e67d0ac94d6ed22438606026a02e0f88") version("2.2.0", sha256="69cd836f87b8c53506c4f706f655d423270f5a563b76dc1cfa60fbc3184185a3") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") variant("mkl", default=False, description="Build with MKL support") variant("jemalloc", default=False, description="Build with jemalloc as malloc support") variant("gcp", default=False, description="Build with Google Cloud Platform support") - variant("hdfs", default=False, description="Build with Hadoop File System support") - variant("aws", default=False, description="Build with Amazon AWS Platform support") + variant( + "hdfs", default=False, when="@:2.17", description="Build with Hadoop File System support" + ) + variant( + "aws", default=False, when="@:2.17", description="Build with Amazon AWS Platform support" + ) variant("xla", default=sys.platform != "darwin", description="Build with XLA JIT support") variant("gdr", default=False, description="Build with GDR support") variant("verbs", default=False, description="Build with libverbs support") @@ -224,36 +230,13 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): depends_on("py-google-pasta@0.2:0", when="@2.4:2.6") depends_on("py-google-pasta@0.1.8:", when="@2.2:2.3") depends_on("py-google-pasta@0.1.6:", when="@:2.1") - depends_on("py-h5py@3.10:", when="@2.16:") - depends_on("py-h5py@2.9:", when="@2.7:2.15") - depends_on("py-h5py@3.1", when="@2.5:2.6") - depends_on("py-h5py@2.10", when="@2.2:2.4") - depends_on("py-h5py@:2.10.0", when="@2.1.3:2.1") - # propagate the mpi variant setting for h5py/hdf5 to avoid unexpected crashes - depends_on("py-h5py+mpi", when="@2.1.3:+mpi") - depends_on("py-h5py~mpi", when="@2.1.3:~mpi") - depends_on("hdf5+mpi", when="@2.1.3:+mpi") - depends_on("hdf5~mpi", when="@2.1.3:~mpi") depends_on("py-libclang@13:", when="@2.9:") depends_on("py-libclang@9.0.1:", when="@2.7:2.8") - depends_on("py-ml-dtypes@0.3.1:0.4", when="@2.17:") - depends_on("py-ml-dtypes@0.3.1:0.3", when="@2.15.1:2.16") - depends_on("py-ml-dtypes@0.2", when="@2.15.0") - depends_on("py-ml-dtypes@0.2.0", when="@2.14") - depends_on("py-numpy@1.23.5:", when="@2.14:") - depends_on("py-numpy@1.22:1.24.3", when="@2.13:") - depends_on("py-numpy@1.22:1.23", when="@2.12") - depends_on("py-numpy@1.20:", when="@2.8:2.11") - depends_on("py-numpy@1.14.5:", when="@2.7") - depends_on("py-numpy@1.19.2:1.19", when="@2.4:2.6") - # https://github.com/tensorflow/tensorflow/issues/40688 - depends_on("py-numpy@1.16.0:1.18", when="@:2.3") - # https://github.com/tensorflow/tensorflow/issues/67291 - depends_on("py-numpy@:1") depends_on("py-opt-einsum@2.3.2:", when="@:2.3,2.7:") depends_on("py-opt-einsum@3.3", when="@2.4:2.6") depends_on("py-packaging", when="@2.9:") - depends_on("py-protobuf@3.20.3:4.20,4.21.6:4", when="@2.12:") + depends_on("py-protobuf@3.20.3:4.20,4.21.6:5", when="@2.18:") + depends_on("py-protobuf@3.20.3:4.20,4.21.6:4", when="@2.12:2.17") depends_on("py-protobuf@3.9.2:", when="@2.3:2.11") depends_on("py-protobuf@3.8.0:", when="@:2.2") # https://github.com/protocolbuffers/protobuf/issues/10051 @@ -286,13 +269,40 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): depends_on("py-grpcio@1.32", when="@2.4") depends_on("py-grpcio@1.8.6:", when="@:2.3") - for minor_ver in range(2, 18): + for minor_ver in range(2, 19): depends_on("py-tensorboard@2.{}".format(minor_ver), when="@2.{}".format(minor_ver)) # TODO: support circular run-time dependencies - # depends_on('py-tensorflow-estimator') # depends_on('py-keras') + depends_on("py-numpy@1.26:2.0", when="@2.18:") + depends_on("py-numpy@1.23.5:", when="@2.14:2.17") + depends_on("py-numpy@1.22:1.24.3", when="@2.13") + depends_on("py-numpy@1.22:1.23", when="@2.12") + depends_on("py-numpy@1.20:", when="@2.8:2.11") + depends_on("py-numpy@1.14.5:", when="@2.7") + depends_on("py-numpy@1.19.2:1.19", when="@2.4:2.6") + # https://github.com/tensorflow/tensorflow/issues/40688 + depends_on("py-numpy@1.16.0:1.18", when="@:2.3") + # https://github.com/tensorflow/tensorflow/issues/67291 + depends_on("py-numpy@:1", when="@:2.17") + depends_on("py-h5py@3.11:", when="@2.18:") + depends_on("py-h5py@3.10:", when="@2.16:") + depends_on("py-h5py@2.9:", when="@2.7:2.15") + depends_on("py-h5py@3.1", when="@2.5:2.6") + depends_on("py-h5py@2.10", when="@2.2:2.4") + depends_on("py-h5py@:2.10.0", when="@2.1.3:2.1") + # propagate the mpi variant setting for h5py/hdf5 to avoid unexpected crashes + depends_on("py-h5py+mpi", when="@2.1.3:+mpi") + depends_on("py-h5py~mpi", when="@2.1.3:~mpi") + depends_on("hdf5+mpi", when="@2.1.3:+mpi") + depends_on("hdf5~mpi", when="@2.1.3:~mpi") + depends_on("py-ml-dtypes@0.4", when="@2.18:") + depends_on("py-ml-dtypes@0.3.1:0.4", when="@2.17") + depends_on("py-ml-dtypes@0.3.1:0.3", when="@2.15.1:2.16") + depends_on("py-ml-dtypes@0.2", when="@2.15.0") + depends_on("py-ml-dtypes@0.2.0", when="@2.14") + # Historical dependencies depends_on("py-jax@0.3.15:", when="@2.12") depends_on("py-keras-preprocessing@1.1.1:", when="@2.7:2.10") @@ -433,7 +443,7 @@ class PyTensorflow(Package, CudaPackage, ROCmPackage, PythonExtension): # see https://github.com/tensorflow/tensorflow/issues/62490 # and https://github.com/abseil/abseil-cpp/issues/1665 - patch("absl_neon.patch", when="@2.16.1: target=aarch64:") + patch("absl_neon.patch", when="@2.16.1:2.17 target=aarch64:") # reverting change otherwise the c467913 commit patch won't apply patch( @@ -481,7 +491,7 @@ def flag_handler(self, name, flags): name == "ldflags" and spec.target.family == "aarch64" and "ubuntu" in spec.os - and spec.compiler.name == "gcc" + and spec.satisfies("%gcc") and "cortex_a53" not in spec.target.name ): flags.append("-mno-fix-cortex-a53-843419") @@ -609,6 +619,7 @@ def setup_build_environment(self, env): # Do you wish to build TensorFlow with CUDA support? if "+cuda" in spec: env.set("TF_NEED_CUDA", "1") + env.set("CUDA_NVCC", "1") # Do you want to use clang as CUDA compiler? env.set("TF_CUDA_CLANG", "0") @@ -670,6 +681,7 @@ def setup_build_environment(self, env): # only supports compute capabilities >= 3.5 capabilities = CudaPackage.compute_capabilities(spec.variants["cuda_arch"].value) env.set("TF_CUDA_COMPUTE_CAPABILITIES", ",".join(capabilities)) + env.set("HERMETIC_CUDA_COMPUTE_CAPABILITIES", ",".join(capabilities)) else: env.set("TF_NEED_CUDA", "0") @@ -863,6 +875,8 @@ def build(self, spec, prefix): if "+cuda" in spec: args.append("--config=cuda") + if spec.satisfies("@2.18:"): + args.append("--config=cuda_wheel") if "+rocm" in spec: args.append("--config=rocm") @@ -911,12 +925,10 @@ def install(self, spec, prefix): ) with working_dir(buildpath): wheel = glob.glob("*.whl")[0] - args = std_pip_args + ["--prefix=" + prefix, wheel] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", wheel) else: buildpath = join_path(self.stage.source_path, "spack-build") with working_dir(buildpath): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") remove_linked_tree(tmp_path) diff --git a/var/spack/repos/builtin/packages/py-textx/package.py b/var/spack/repos/builtin/packages/py-textx/package.py new file mode 100644 index 00000000000000..03911b530ea9d6 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-textx/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyTextx(PythonPackage): + """Meta-language for DSL implementation inspired by Xtext.""" + + homepage = "https://textx.github.io/textX/" + pypi = "textx/textx-4.0.1.tar.gz" + + license("MIT") + + version("4.0.1", sha256="84aff5c95fd2c947402fcbe83eeeddc23aabcfed3464ab84184ef193c52d831a") + + depends_on("c", type="build") + depends_on("py-flit-core@3.8:3", type="build") + depends_on("python@3.8:3.12", type=("build", "run")) + depends_on("py-arpeggio@2:", type=("build", "run")) + depends_on("py-importlib-metadata", when="^python@:3.9", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-tfdlpack/package.py b/var/spack/repos/builtin/packages/py-tfdlpack/package.py index f3c79f69a8860e..d910096cfdbe93 100644 --- a/var/spack/repos/builtin/packages/py-tfdlpack/package.py +++ b/var/spack/repos/builtin/packages/py-tfdlpack/package.py @@ -4,6 +4,7 @@ # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -40,8 +41,7 @@ def cmake_args(self): def install(self, spec, prefix): with working_dir("python"): - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") def setup_run_environment(self, env): # Prevent TensorFlow from taking over the whole GPU diff --git a/var/spack/repos/builtin/packages/py-timm/package.py b/var/spack/repos/builtin/packages/py-timm/package.py index 7a993364b6cd74..dbf659b68c89c1 100644 --- a/var/spack/repos/builtin/packages/py-timm/package.py +++ b/var/spack/repos/builtin/packages/py-timm/package.py @@ -12,10 +12,10 @@ class PyTimm(PythonPackage): homepage = "https://github.com/rwightman/pytorch-image-models" pypi = "timm/timm-0.4.12.tar.gz" - maintainers("adamjstewart") - license("Apache-2.0") + maintainers("adamjstewart") + version("1.0.11", sha256="a005f72b87e67ed30cdbf405a9ffd4e723360c780a43b1cefe266af8ecc9d151") version("0.9.7", sha256="2bfb1029e90b72e65eb9c75556169815f2e82257eaa1f6ebd623a4b4a52867a2") version("0.9.5", sha256="669835f0030cfb2412c464b7b563bb240d4d41a141226afbbf1b457e4f18cff1") version("0.9.2", sha256="d0977cc5e02c69bda979fca8b52aa315a5f2cb64ebf8ad2c4631b1e452762c14") @@ -26,20 +26,22 @@ class PyTimm(PythonPackage): version("0.5.4", sha256="5d7b92e66a76c432009aba90d515ea7a882aae573415a7c5269e3617df901c1f") version("0.4.12", sha256="b14be70dbd4528b5ca8657cf5bc2672c7918c3d9ebfbffe80f4785b54e884b1e") - # https://github.com/huggingface/pytorch-image-models/commit/f744bda994ec305a823483bf52a20c1440205032 - depends_on("python@3.8:", when="@0.9.0", type=("build", "run")) - # https://github.com/huggingface/pytorch-image-models/issues/1530 - # https://github.com/huggingface/pytorch-image-models/pull/1649 - depends_on("python@:3.10", when="@:0.6.12", type=("build", "run")) - - depends_on("py-setuptools", type="build") - depends_on("py-torch@1.7:", when="@0.6:", type=("build", "run")) - depends_on("py-torch@1.4:", type=("build", "run")) - depends_on("py-torchvision", type=("build", "run")) - depends_on("py-pyyaml", when="@0.6:", type=("build", "run")) - depends_on("py-huggingface-hub", when="@0.6:", type=("build", "run")) - depends_on("py-safetensors", when="@0.9:", type=("build", "run")) - - # https://github.com/rwightman/pytorch-image-models/pull/1256 - depends_on("pil@:9", when="@:0.5", type=("build", "run")) - depends_on("py-numpy", when="@:0.5", type=("build", "run")) + with default_args(type="build"): + depends_on("py-pdm-backend", when="@1:") + depends_on("py-setuptools", when="@:0") + + with default_args(type=("build", "run")): + # https://github.com/huggingface/pytorch-image-models/issues/1530 + # https://github.com/huggingface/pytorch-image-models/pull/1649 + depends_on("python@:3.10", when="@:0.6.12", type=("build", "run")) + + depends_on("py-torch@1.7:", when="@0.6:", type=("build", "run")) + depends_on("py-torch@1.4:", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) + depends_on("py-pyyaml", when="@0.6:", type=("build", "run")) + depends_on("py-huggingface-hub", when="@0.6:", type=("build", "run")) + depends_on("py-safetensors", when="@0.9:", type=("build", "run")) + + # https://github.com/rwightman/pytorch-image-models/pull/1256 + depends_on("pil@:9", when="@:0.5", type=("build", "run")) + depends_on("py-numpy", when="@:0.5", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/py-torch/package.py b/var/spack/repos/builtin/packages/py-torch/package.py index f487eff524b528..7533eb6b8c93e1 100644 --- a/var/spack/repos/builtin/packages/py-torch/package.py +++ b/var/spack/repos/builtin/packages/py-torch/package.py @@ -17,15 +17,16 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): git = "https://github.com/pytorch/pytorch.git" submodules = True - maintainers("adamjstewart") - # Exact set of modules is version- and variant-specific, just attempt to import the # core libraries to ensure that the package was successfully installed. import_modules = ["torch", "torch.autograd", "torch.nn", "torch.utils"] license("BSD-3-Clause") + maintainers("adamjstewart") version("main", branch="main") + version("2.5.1", tag="v2.5.1", commit="a8d6afb511a69687bbb2b7e88a3cf67917e1697e") + version("2.5.0", tag="v2.5.0", commit="32f585d9346e316e554c8d9bf7548af9f62141fc") version("2.4.1", tag="v2.4.1", commit="ee1b6804381c57161c477caa380a840a84167676") version("2.4.0", tag="v2.4.0", commit="d990dada86a8ad94882b5c23e859b88c0c255bda") version("2.3.1", tag="v2.3.1", commit="63d5e9221bedd1546b7d364b5ce4171547db12a9") @@ -137,7 +138,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): # Required dependencies # Based on PyPI wheel availability with default_args(type=("build", "link", "run")): - depends_on("python@3.8:3.12", when="@2.2:") + depends_on("python@3.9:3.13", when="@2.5:") + depends_on("python@3.8:3.12", when="@2.2:2.4") depends_on("python@3.8:3.11", when="@2.0:2.1") depends_on("python@:3.10", when="@1.11:1") depends_on("python@:3.9", when="@1.7.1:1.10") @@ -186,7 +188,9 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): # depends_on("xnnpack@2021-02-22", when="@1.8:1.9+xnnpack") # depends_on("xnnpack@2020-03-23", when="@1.6:1.7+xnnpack") depends_on("benchmark", when="@1.6:+test") - depends_on("cpuinfo@2023-11-04", when="@2.3:") + depends_on("cpuinfo@2024-09-06", when="@2.5.1:") + depends_on("cpuinfo@2024-08-30", when="@2.5.0") + depends_on("cpuinfo@2023-11-04", when="@2.3:2.4") depends_on("cpuinfo@2023-01-13", when="@2.1:2.2") depends_on("cpuinfo@2022-08-19", when="@1.13:2.0") depends_on("cpuinfo@2020-12-17", when="@1.8:1.12") @@ -230,7 +234,8 @@ class PyTorch(PythonPackage, CudaPackage, ROCmPackage): depends_on("pthreadpool@2020-10-05", when="@1.8") depends_on("pthreadpool@2020-06-15", when="@1.6:1.7") with default_args(type=("build", "link", "run")): - depends_on("py-pybind11@2.12.0:", when="@2.3:") + depends_on("py-pybind11@2.13.5:", when="@2.5:") + depends_on("py-pybind11@2.12.0:", when="@2.3:2.4") depends_on("py-pybind11@2.11.0:", when="@2.1:2.2") depends_on("py-pybind11@2.10.1:", when="@2.0") depends_on("py-pybind11@2.10.0:", when="@1.13:1") diff --git a/var/spack/repos/builtin/packages/py-torchaudio/package.py b/var/spack/repos/builtin/packages/py-torchaudio/package.py index 372cbca9367dea..59a7e2825b223c 100644 --- a/var/spack/repos/builtin/packages/py-torchaudio/package.py +++ b/var/spack/repos/builtin/packages/py-torchaudio/package.py @@ -18,6 +18,8 @@ class PyTorchaudio(PythonPackage): maintainers("adamjstewart") version("main", branch="main") + version("2.5.1", tag="v2.5.1", commit="1661daf10599ca8889f092ec37814fabbe202bb0") + version("2.5.0", tag="v2.5.0", commit="56bc006d56a0d4960de6a1e0b6340cba4eda05cd") version("2.4.1", tag="v2.4.1", commit="e8cbe17769796ce963fbc71b8990f1474774e6d2") version("2.4.0", tag="v2.4.0", commit="69d40773dc4ed86643820c21a8a880e4d074a46e") version("2.3.1", tag="v2.3.1", commit="3edcf69e78a3c9a3077a11159861422440ec7d4a") @@ -55,13 +57,16 @@ class PyTorchaudio(PythonPackage): with default_args(type=("build", "link", "run")): # Based on PyPI wheel availability - depends_on("python@3.8:3.12", when="@2.2:") + depends_on("python@3.9:3.12", when="@2.5:") + depends_on("python@3.8:3.12", when="@2.2:2.4") depends_on("python@3.8:3.11", when="@2.0:2.1") depends_on("python@:3.10", when="@0.12:0") depends_on("python@:3.9", when="@0.7.2:0.11") depends_on("python@:3.8", when="@:0.7.0") depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.1", when="@2.5.1") + depends_on("py-torch@2.5.0", when="@2.5.0") depends_on("py-torch@2.4.1", when="@2.4.1") depends_on("py-torch@2.4.0", when="@2.4.0") depends_on("py-torch@2.3.1", when="@2.3.1") @@ -99,6 +104,9 @@ class PyTorchaudio(PythonPackage): depends_on("cmake@3.5:", when="@0.8:", type="build") depends_on("ninja", when="@0.8:", type="build") + # prior to 2.1 ffmpeg was vendored + depends_on("ffmpeg@:6", when="@2.1:") + # setup.py depends_on("py-setuptools", type="build") depends_on("py-pybind11", when="@0.12:", type=("build", "link")) @@ -113,10 +121,39 @@ class PyTorchaudio(PythonPackage): ) conflicts("^cuda@12.5:", when="@:2.1") + def patch(self): + # Add missing rpaths, which requires patching due to hardcoded cmake_args + if self.spec.satisfies("@0.8:"): + rpaths = [f"{python_platlib}/torchaudio/lib", f"{python_platlib}/torio/lib"] + cmake_args = [ + f"-DCMAKE_INSTALL_RPATH={';'.join(rpaths)}", + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON", + ] + cmake_str = ", ".join(f"'{arg}'" for arg in cmake_args) + filter_file( + "cmake_args = [", + f"cmake_args = [{cmake_str},", + "tools/setup_helpers/extension.py", + string=True, + ) + + def flag_handler(self, name, flags): + # https://github.com/pytorch/vision/issues/8653 + if name == "ldflags": + if self.spec.satisfies("%apple-clang@15:"): + flags.append("-Wl,-ld_classic") + return (flags, None, None) + def setup_build_environment(self, env): # tools/setup_helpers/extension.py env.set("BUILD_SOX", 0) + if self.spec.satisfies("@2.1:"): + env.set("FFMPEG_ROOT", self.spec["ffmpeg"].prefix) + else: + # a specific ffmpeg is built but not installed, so just disable + env.set("USE_FFMPEG", "0") + if "+cuda" in self.spec["py-torch"]: env.set("USE_CUDA", 1) else: diff --git a/var/spack/repos/builtin/packages/py-torchdata/package.py b/var/spack/repos/builtin/packages/py-torchdata/package.py index db1b37305e718c..63ee044740097e 100644 --- a/var/spack/repos/builtin/packages/py-torchdata/package.py +++ b/var/spack/repos/builtin/packages/py-torchdata/package.py @@ -18,6 +18,7 @@ class PyTorchdata(PythonPackage): license("BSD-3-Clause") version("main", branch="main") + version("0.9.0", sha256="b547bbe848ad813cc5365fe0bb02051150bec6c7c4ee7bffd6b6d3d7bdeddd75") version("0.8.0", sha256="d5d27b264e79d7d00ad4998f14d097b770332d979672dceb6d038caf204f1208") version("0.7.1", sha256="ef9bbdcee759b53c3c9d99e76eb0a66da33d36bfb7f859a25a9b5e737a51fa23") version("0.7.0", sha256="0b444719c3abc67201ed0fea92ea9c4100e7f36551ba0d19a09446cc11154eb3") @@ -31,35 +32,38 @@ class PyTorchdata(PythonPackage): depends_on("cxx", type="build") - # https://github.com/pytorch/data#version-compatibility - depends_on("python@3.8:3.12", when="@0.8:", type=("build", "run")) - depends_on("python@3.8:3.11", when="@0.6:0.7", type=("build", "run")) - depends_on("python@3.7:3.10", when="@:0.5", type=("build", "run")) + with default_args(type="build"): + # pyproject.toml + depends_on("py-setuptools") - # pyproject.toml - depends_on("py-setuptools", type="build") + # CMakeLists.txt + depends_on("cmake@3.13:", when="@0.4:") + depends_on("ninja", when="@0.4:") - # CMakeLists.txt - depends_on("cmake@3.13:", when="@0.4:", type="build") - depends_on("ninja", when="@0.4:", type="build") + with default_args(type=("build", "run")): + # https://github.com/pytorch/data#version-compatibility + depends_on("python@3.9:3.12", when="@0.9:") + depends_on("python@3.8:3.12", when="@0.8") + depends_on("python@3.8:3.11", when="@0.6:0.7") + depends_on("python@3.7:3.10", when="@:0.5") - # https://github.com/pytorch/data#version-compatibility - depends_on("py-torch@main", when="@main", type=("build", "run")) - depends_on("py-torch@2.4.0", when="@0.8.0", type=("build", "run")) - depends_on("py-torch@2.1.1", when="@0.7.1", type=("build", "run")) - depends_on("py-torch@2.1.0", when="@0.7.0", type=("build", "run")) - depends_on("py-torch@2.0.1", when="@0.6.1", type=("build", "run")) - depends_on("py-torch@2.0.0", when="@0.6.0", type=("build", "run")) - depends_on("py-torch@1.13.1", when="@0.5.1", type=("build", "run")) - depends_on("py-torch@1.13.0", when="@0.5.0", type=("build", "run")) - depends_on("py-torch@1.12.1", when="@0.4.1", type=("build", "run")) - depends_on("py-torch@1.12.0", when="@0.4.0", type=("build", "run")) - depends_on("py-torch@1.11.0", when="@0.3.0", type=("build", "run")) + depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.0", when="@0.9.0") + depends_on("py-torch@2.4.0", when="@0.8.0") + depends_on("py-torch@2.1.1", when="@0.7.1") + depends_on("py-torch@2.1.0", when="@0.7.0") + depends_on("py-torch@2.0.1", when="@0.6.1") + depends_on("py-torch@2.0.0", when="@0.6.0") + depends_on("py-torch@1.13.1", when="@0.5.1") + depends_on("py-torch@1.13.0", when="@0.5.0") + depends_on("py-torch@1.12.1", when="@0.4.1") + depends_on("py-torch@1.12.0", when="@0.4.0") + depends_on("py-torch@1.11.0", when="@0.3.0") - # requirements.txt - depends_on("py-urllib3@1.25:", type=("build", "run")) - depends_on("py-requests", type=("build", "run")) - depends_on("py-portalocker@2:", when="@0.4:0.5", type=("build", "run")) + # requirements.txt + depends_on("py-urllib3@1.25:") + depends_on("py-requests") + depends_on("py-portalocker@2:", when="@0.4:0.5") # third_party/CMakeLists.txt depends_on("py-pybind11", when="@0.4:") diff --git a/var/spack/repos/builtin/packages/py-torchmetrics/package.py b/var/spack/repos/builtin/packages/py-torchmetrics/package.py index 70bc52fafa24bd..f3cf233cbfa769 100644 --- a/var/spack/repos/builtin/packages/py-torchmetrics/package.py +++ b/var/spack/repos/builtin/packages/py-torchmetrics/package.py @@ -15,6 +15,9 @@ class PyTorchmetrics(PythonPackage): license("Apache-2.0") maintainers("adamjstewart") + version("1.5.2", sha256="2d0e4957af0ea76438d2779fe1a626d8cba6cda8607eadb54267598153e7ea63") + version("1.5.1", sha256="9701632cf811bc460abf07bd7b971b79c1ae9c8231e03d495b53a0975e43fe07") + version("1.5.0", sha256="c18e68bab4104ad7d2285af601ddc6dc04f9f3b7cafaa8ad13fa1dcc539e33b6") version("1.4.3", sha256="5554a19167e91f543afe82ff58a01059c8eec854359ad22896449c2c8fb0ad89") version("1.4.2", sha256="7a40cbec85e5645090812b87601696b4adf158294ec8c407ae58a71710938b87") version("1.4.0", sha256="0b1e5acdcc9beb05bfe369d3d56cfa5b143f060ebfd6079d19ccc59ba46465b3") @@ -71,8 +74,9 @@ class PyTorchmetrics(PythonPackage): depends_on("py-scipy@1.0.1:", when="+image") depends_on("py-torchvision@0.8:", when="+image") depends_on("py-torch-fidelity", when="+image") - depends_on("py-lpips", when="@:1.2.0+image") # Historical dependencies depends_on("py-pretty-errors@1.2.25", when="@1.4.0") depends_on("py-pydeprecate@0.3", when="@0.7:0.8") + + depends_on("py-lpips", when="@:1.2.0+image") diff --git a/var/spack/repos/builtin/packages/py-torchseg/package.py b/var/spack/repos/builtin/packages/py-torchseg/package.py new file mode 100644 index 00000000000000..e8f7a2cebce369 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-torchseg/package.py @@ -0,0 +1,26 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyTorchseg(PythonPackage): + """TorchSeg: Semantic Segmentation models for PyTorch.""" + + homepage = "https://github.com/isaaccorley/torchseg" + pypi = "torchseg/torchseg-0.0.1a4.tar.gz" + + maintainers("isaaccorley", "adamjstewart") + + license("MIT") + + version("0.0.1a4", sha256="4742551753599af92f9f85e5ca6b149b474ffd458bad1aad6b3aad246a3bf4ea") + + depends_on("py-setuptools@61:") + + with default_args(type=("build", "run")): + depends_on("py-einops@0.7:") + depends_on("py-timm@0.9.12:") + depends_on("py-torch@1.13:") diff --git a/var/spack/repos/builtin/packages/py-torchtext/package.py b/var/spack/repos/builtin/packages/py-torchtext/package.py index 95fde8068ac14e..de5c66f20ee8d6 100644 --- a/var/spack/repos/builtin/packages/py-torchtext/package.py +++ b/var/spack/repos/builtin/packages/py-torchtext/package.py @@ -93,3 +93,18 @@ class PyTorchtext(PythonPackage): depends_on("py-pybind11", when="@0.8:", type=("build", "link")) depends_on("py-six", when="@:0.6", type=("build", "run")) depends_on("py-sentencepiece", when="@:0.7", type=("build", "run")) + + def patch(self): + # Add missing rpaths, which requires patching due to hardcoded cmake_args + if self.spec.satisfies("@0.13:"): + cmake_args = [ + f"-DCMAKE_INSTALL_RPATH={python_platlib}/torchtext/lib", + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON", + ] + cmake_str = ", ".join(f"'{arg}'" for arg in cmake_args) + filter_file( + "cmake_args = [", + f"cmake_args = [{cmake_str},", + "tools/setup_helpers/extension.py", + string=True, + ) diff --git a/var/spack/repos/builtin/packages/py-torchvision/package.py b/var/spack/repos/builtin/packages/py-torchvision/package.py index 1f17b6529d3052..4fe32d63cce910 100644 --- a/var/spack/repos/builtin/packages/py-torchvision/package.py +++ b/var/spack/repos/builtin/packages/py-torchvision/package.py @@ -19,6 +19,8 @@ class PyTorchvision(PythonPackage): license("BSD-3-Clause") version("main", branch="main") + version("0.20.1", sha256="7e08c7f56e2c89859310e53d898f72bccc4987cd83e08cfd6303513da15a9e71") + version("0.20.0", sha256="b59d9896c5c957c6db0018754bbd17d079c5102b82b9be0b438553b40a7b6029") version("0.19.1", sha256="083e75c467285595ec3eb3c7aa8493c19e53d7eb42f13046fb56a07c8897e5a8") version("0.19.0", sha256="4c499d0a412b5a21d55ac3c0a37e80ecd7e1f002f2a7b6b3b38a2de2544acbb6") version("0.18.1", sha256="347d472a9ceecc44e0bee1eda140d63cfaffc74a54ec07d4b98da7698ce75516") @@ -58,16 +60,21 @@ class PyTorchvision(PythonPackage): desc = "Enable support for native encoding/decoding of {} formats in torchvision.io" variant("png", default=True, description=desc.format("PNG")) variant("jpeg", default=True, description=desc.format("JPEG")) + variant("webp", default=False, description=desc.format("WEBP"), when="@0.20:") + variant("heic", default=False, description=desc.format("HEIC"), when="@0.20:") + variant("avif", default=False, description=desc.format("AVIF"), when="@0.20:") variant("nvjpeg", default=False, description=desc.format("NVJPEG")) - variant("ffmpeg", default=False, description=desc.format("FFMPEG")) variant("video_codec", default=False, description=desc.format("video_codec")) + variant("ffmpeg", default=False, description=desc.format("FFMPEG")) + # torchvision does not yet support disabling giflib: # https://github.com/pytorch/vision/pull/8406#discussion_r1590926939 # variant("gif", default=False, description=desc.format("GIF"), when="@0.19:") with default_args(type=("build", "link", "run")): # Based on PyPI wheel availability - depends_on("python@3.8:3.12", when="@0.17:") + depends_on("python@3.9:3.12", when="@0.20:") + depends_on("python@3.8:3.12", when="@0.17:0.19") depends_on("python@3.8:3.11", when="@0.15:0.16") depends_on("python@:3.10", when="@0.12:0.14") depends_on("python@:3.9", when="@0.8.2:0.11") @@ -75,6 +82,8 @@ class PyTorchvision(PythonPackage): # https://github.com/pytorch/vision#installation depends_on("py-torch@main", when="@main") + depends_on("py-torch@2.5.1", when="@0.20.1") + depends_on("py-torch@2.5.0", when="@0.20.0") depends_on("py-torch@2.4.1", when="@0.19.1") depends_on("py-torch@2.4.0", when="@0.19.0") depends_on("py-torch@2.3.1", when="@0.18.1") @@ -122,9 +131,13 @@ class PyTorchvision(PythonPackage): # Extensions depends_on("libpng@1.6:", when="+png") depends_on("jpeg", when="+jpeg") + depends_on("libwebp", when="+webp") + depends_on("libheif", when="+heic") + depends_on("libavif", when="+avif") depends_on("cuda", when="+nvjpeg") - depends_on("ffmpeg@3.1:", when="+ffmpeg") depends_on("cuda", when="+video_codec") + depends_on("ffmpeg@3.1:", when="+ffmpeg") + # torchvision does not yet support externally-installed giflib: # https://github.com/pytorch/vision/pull/8406#discussion_r1590926939 # depends_on("giflib", when="+gif") @@ -177,7 +190,8 @@ def setup_build_environment(self, env): for gpu in ["cuda", "mps"]: env.set(f"FORCE_{gpu.upper()}", int(f"+{gpu}" in self.spec["py-torch"])) - for extension in ["png", "jpeg", "nvjpeg", "ffmpeg", "video_codec"]: + extensions = ["png", "jpeg", "webp", "heic", "avif", "nvjpeg", "video_codec", "ffmpeg"] + for extension in extensions: env.set(f"TORCHVISION_USE_{extension.upper()}", int(f"+{extension}" in self.spec)) include = [] diff --git a/var/spack/repos/builtin/packages/py-uncertainty-toolbox/package.py b/var/spack/repos/builtin/packages/py-uncertainty-toolbox/package.py new file mode 100644 index 00000000000000..c6b0aadbb0738e --- /dev/null +++ b/var/spack/repos/builtin/packages/py-uncertainty-toolbox/package.py @@ -0,0 +1,29 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyUncertaintyToolbox(PythonPackage): + """Uncertainty Toolbox: a python toolbox for predictive uncertainty quantification, + calibration, metrics, and visualization.""" + + homepage = "https://uncertainty-toolbox.github.io/" + pypi = "uncertainty-toolbox/uncertainty-toolbox-0.1.1.tar.gz" + + license("MIT") + + version("0.1.1", sha256="d9389112bd431edc8b6e44c5b12405dea8f86063ff9b79f0bb178e5ac76bcfa5") + + with default_args(type="build"): + depends_on("py-flit-core@3.2:3") + depends_on("py-setuptools") + + with default_args(type=("build", "run")): + depends_on("py-numpy@1.19:") + depends_on("py-scipy@1.5:") + depends_on("py-matplotlib@3.2.2:") + depends_on("py-scikit-learn@0.23.1:") + depends_on("py-tqdm@4.54:") diff --git a/var/spack/repos/builtin/packages/py-unfoldnd/package.py b/var/spack/repos/builtin/packages/py-unfoldnd/package.py new file mode 100644 index 00000000000000..e3f1fec1713922 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-unfoldnd/package.py @@ -0,0 +1,25 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class PyUnfoldnd(PythonPackage): + """N-dimensional unfold (im2col) and fold (col2im) in PyTorch.""" + + homepage = "https://github.com/f-dangel/unfoldNd" + pypi = "unfoldnd/unfoldnd-0.2.2.tar.gz" + + license("MIT") + + version("0.2.2", sha256="e8fdffeb68bc1b393ddc1b1c87056e0e4616db992e95c7dbc3dc90d564599397") + + with default_args(type="build"): + depends_on("py-setuptools@38.3:") + depends_on("py-setuptools-scm") + + with default_args(type=("build", "run")): + depends_on("py-torch") + depends_on("py-numpy") diff --git a/var/spack/repos/builtin/packages/py-uv/package.py b/var/spack/repos/builtin/packages/py-uv/package.py index 83d38a0f4771b5..c872d974c83789 100644 --- a/var/spack/repos/builtin/packages/py-uv/package.py +++ b/var/spack/repos/builtin/packages/py-uv/package.py @@ -14,12 +14,17 @@ class PyUv(PythonPackage): license("APACHE 2.0 or MIT") + version("0.4.27", sha256="c13eea45257362ecfa2a2b31de9b62fbd0542e211a573562d98ab7c8fc50d8fc") version("0.4.17", sha256="01564bd760eff885ad61f44173647a569732934d1a4a558839c8088fbf75e53f") version("0.4.16", sha256="2144995a87b161d063bd4ef8294b1e948677bd90d01f8394d0e3fca037bb847f") version("0.4.15", sha256="8e36b8e07595fc6216d01e729c81a0b4ff029a93cc2ef987a73d3b650d6d559c") - depends_on("rust@1.81:", type=("build", "run")) + depends_on("rust", type=("build", "run")) depends_on("python@3.8:", type=("build", "run")) - depends_on("py-maturin@1:1", type=("build")) + depends_on("py-maturin@1:1", type="build") + depends_on("cmake", type="build") + + def setup_build_environment(self, env): + env.set("CMAKE", self.spec["cmake"].prefix.bin.cmake) executables = ["^uv$"] diff --git a/var/spack/repos/builtin/packages/py-webdataset/package.py b/var/spack/repos/builtin/packages/py-webdataset/package.py new file mode 100644 index 00000000000000..7f4af5a9e88782 --- /dev/null +++ b/var/spack/repos/builtin/packages/py-webdataset/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.package import * + + +class PyWebdataset(PythonPackage): + """Python-based I/O for deep learning problems.""" + + homepage = "https://github.com/webdataset/webdataset" + pypi = "webdataset/webdataset-0.1.62.tar.gz" + + license("BSD-3-Clause") + + version("0.1.62", sha256="78b6c7810116d6875fa1ed8eb2dea29a54b86fde014cc2069f4c08fc3530ceb5") + + with default_args(type=("build", "link", "run")): + depends_on("python@3.6:") + + # setup.py and requires.txt + depends_on("py-braceexpand") + depends_on("py-numpy") diff --git a/var/spack/repos/builtin/packages/py-wheel/package.py b/var/spack/repos/builtin/packages/py-wheel/package.py index 38e4c3062d690a..582918513d73f4 100644 --- a/var/spack/repos/builtin/packages/py-wheel/package.py +++ b/var/spack/repos/builtin/packages/py-wheel/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -43,5 +44,4 @@ def install(self, spec, prefix): # To build wheel from source, you need setuptools and wheel already installed. # We get around this by using a pre-built wheel, see: # https://discuss.python.org/t/bootstrapping-a-specific-version-of-pip/12306 - args = std_pip_args + ["--prefix=" + prefix, self.stage.archive_file] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", self.stage.archive_file) diff --git a/var/spack/repos/builtin/packages/py-x-clip/package.py b/var/spack/repos/builtin/packages/py-x-clip/package.py new file mode 100644 index 00000000000000..9dfcfda16ca37f --- /dev/null +++ b/var/spack/repos/builtin/packages/py-x-clip/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class PyXClip(PythonPackage): + """A concise but complete implementation of CLIP with various experimental + improvements from recent papers""" + + homepage = "https://github.com/lucidrains/x-clip" + pypi = "x-clip/x-clip-0.14.4.tar.gz" + + license("MIT", checked_by="alex391") + + version("0.14.4", sha256="e2539953f1c81a2ab892843c2bc02c218f4ac410cf10ce37495830f6a0e259c6") + + depends_on("py-setuptools", type="build") + depends_on("py-beartype", type=("build", "run")) + depends_on("py-einops@0.6:", type=("build", "run")) + depends_on("py-ftfy", type=("build", "run")) + depends_on("py-regex", type=("build", "run")) + depends_on("py-torch@1.6:", type=("build", "run")) + depends_on("py-torchvision", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/pystring/package.py b/var/spack/repos/builtin/packages/pystring/package.py new file mode 100644 index 00000000000000..9d69f87adb5a2d --- /dev/null +++ b/var/spack/repos/builtin/packages/pystring/package.py @@ -0,0 +1,21 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Pystring(CMakePackage): + """Pystring is a collection of C++ functions which match the interface and behavior + of python's string class methods using std::string.""" + + git = "https://github.com/imageworks/pystring" + url = "https://github.com/imageworks/pystring/archive/refs/tags/v1.1.4.tar.gz" + + license("Apache-2.0") + + version("1.1.4", sha256="49da0fe2a049340d3c45cce530df63a2278af936003642330287b68cefd788fb") + + # Core dependencies + depends_on("cmake@3.27.9:", type="build") diff --git a/var/spack/repos/builtin/packages/pythia8/package.py b/var/spack/repos/builtin/packages/pythia8/package.py index 00145d163e6d08..9da588a4266213 100644 --- a/var/spack/repos/builtin/packages/pythia8/package.py +++ b/var/spack/repos/builtin/packages/pythia8/package.py @@ -12,7 +12,7 @@ class Pythia8(AutotoolsPackage): the evolution from a few-body hard process to a complex multiparticle final state.""" - homepage = "http://home.thep.lu.se/Pythia/" + homepage = "https://pythia.org/" url = "https://pythia.org/download/pythia83/pythia8306.tgz" list_url = "https://pythia.org/releases/" @@ -22,6 +22,7 @@ class Pythia8(AutotoolsPackage): license("GPL-2.0-only") + version("8.312", sha256="bad98e2967b687046c4568c9091d630a0c31b628745c021a994aba4d1d50f8ea") version("8.311", sha256="2782d5e429c1543c67375afe547fd4c4ca0720309deb008f7db78626dc7d1464") version("8.310", sha256="90c811abe7a3d2ffdbf9b4aeab51cf6e0a5a8befb4e3efa806f3d5b9c311e227") version("8.309", sha256="5bdafd9f2c4a1c47fd8a4e82fb9f0d8fcfba4de1003b8e14be4e0347436d6c33") @@ -131,17 +132,20 @@ class Pythia8(AutotoolsPackage): filter_compiler_wrappers("Makefile.inc", relative_root="share/Pythia8/examples") @run_before("configure") - def setup_cxxstd(self): + def setup_configure(self): filter_file( r"-std=c\+\+[0-9][0-9]", f"-std=c++{self.spec.variants['cxxstd'].value}", "configure" ) - # Fix for https://gitlab.com/Pythia8/releases/-/issues/428 - @when("@:8.311") - def patch(self): - filter_file( - r"[/]examples[/]Makefile[.]inc\|;n' \\", "/examples/Makefile.inc|' \\", "configure" - ) + # Fix for https://gitlab.com/Pythia8/releases/-/issues/428 + with when("@:8.311"): + filter_file( + r"[/]examples[/]Makefile[.]inc\|;n' \\", "/examples/Makefile.inc|' \\", "configure" + ) + + # Fix for https://gitlab.com/Pythia8/releases/-/issues/523 + with when("@8.307:8.312 cxxstd=20"): + patch("pythia8-cpp20-fjcore-forward-decl.patch") def configure_args(self): args = [] diff --git a/var/spack/repos/builtin/packages/pythia8/pythia8-cpp20-fjcore-forward-decl.patch b/var/spack/repos/builtin/packages/pythia8/pythia8-cpp20-fjcore-forward-decl.patch new file mode 100644 index 00000000000000..447e73cba582fb --- /dev/null +++ b/var/spack/repos/builtin/packages/pythia8/pythia8-cpp20-fjcore-forward-decl.patch @@ -0,0 +1,37 @@ +diff --git a/src/FJcore.cc b/src/FJcore.cc +index c60108e2..afd32eee 100644 +--- a/src/FJcore.cc ++++ b/src/FJcore.cc +@@ -730,14 +730,10 @@ FJCORE_BEGIN_NAMESPACE // defined in fastjet/internal/base.hh + class ClosestPair2D : public ClosestPair2DBase { + public: + ClosestPair2D(const std::vector & positions, +- const Coord2D & left_corner, const Coord2D & right_corner) { +- _initialize(positions, left_corner, right_corner, positions.size()); +- }; ++ const Coord2D & left_corner, const Coord2D & right_corner); + ClosestPair2D(const std::vector & positions, + const Coord2D & left_corner, const Coord2D & right_corner, +- const unsigned int max_size) { +- _initialize(positions, left_corner, right_corner, max_size); +- }; ++ const unsigned int max_size); + void closest_pair(unsigned int & ID1, unsigned int & ID2, + double & distance2) const; + void remove(unsigned int ID); +@@ -808,6 +804,15 @@ public: + return coord.distance2(other.coord); + }; + }; ++inline ClosestPair2D::ClosestPair2D(const std::vector & positions, ++ const Coord2D & left_corner, const Coord2D & right_corner) { ++ _initialize(positions, left_corner, right_corner, positions.size()); ++}; ++inline ClosestPair2D::ClosestPair2D(const std::vector & positions, ++ const Coord2D & left_corner, const Coord2D & right_corner, ++ const unsigned int max_size) { ++ _initialize(positions, left_corner, right_corner, max_size); ++}; + inline bool floor_ln2_less(unsigned x, unsigned y) { + if (x>y) return false; + return (x < (x^y)); // beware of operator precedence... diff --git a/var/spack/repos/builtin/packages/qemu/package.py b/var/spack/repos/builtin/packages/qemu/package.py index c095b9a6a6bd98..8ac1e92bf78b3e 100644 --- a/var/spack/repos/builtin/packages/qemu/package.py +++ b/var/spack/repos/builtin/packages/qemu/package.py @@ -139,7 +139,7 @@ class Qemu(AutotoolsPackage): @when("@9:") def configure_args(self): - return [ + args = [ "--disable-bsd-user", "--disable-guest-agent", "--disable-sdl", @@ -155,3 +155,11 @@ def configure_args(self): "--enable-zstd", "--disable-docs", ] + extra_cflags = "-Wno-unknown-warning-option" + if self.spec.satisfies("%apple-clang platform=darwin"): + # qemu 9: uses pthread_jit_write_protect_np which requires OSX 11.0 or newer + extra_cflags += " -mmacosx-version-min=11.0" + args.append(f"--extra-cflags={extra_cflags}") + args.append(f"--extra-cxxflags={extra_cflags}") + + return args diff --git a/var/spack/repos/builtin/packages/quantum-espresso/package.py b/var/spack/repos/builtin/packages/quantum-espresso/package.py index af1d61855195d3..ea8715a64dbbdc 100644 --- a/var/spack/repos/builtin/packages/quantum-espresso/package.py +++ b/var/spack/repos/builtin/packages/quantum-espresso/package.py @@ -25,6 +25,7 @@ class QuantumEspresso(CMakePackage, Package): license("GPL-2.0-only") version("develop", branch="develop") + version("7.4", sha256="b15dcfe25f4fbf15ccd34c1194021e90996393478226e601d876f7dea481d104") version("7.3.1", sha256="2c58b8fadfe4177de5a8b69eba447db5e623420b070dea6fd26c1533b081d844") version("7.3", sha256="edc2a0f3315c69966df4f82ec86ab9f682187bc9430ef6d2bacad5f27f08972c") version("7.2", sha256="b348a4a7348b66a73545d9ca317a2645755c98d343c1cfe8def475ad030808c0") diff --git a/var/spack/repos/builtin/packages/quicksilver/package.py b/var/spack/repos/builtin/packages/quicksilver/package.py index 61357eed447601..061619b2b75648 100644 --- a/var/spack/repos/builtin/packages/quicksilver/package.py +++ b/var/spack/repos/builtin/packages/quicksilver/package.py @@ -13,7 +13,7 @@ class Quicksilver(MakefilePackage): tags = ["proxy-app"] - homepage = "https://codesign.llnl.gov/quicksilver.php" + homepage = "https://asc.llnl.gov/codes/proxy-apps/quicksilver" url = "https://github.com/LLNL/Quicksilver/tarball/V1.0" git = "https://github.com/LLNL/Quicksilver.git" diff --git a/var/spack/repos/builtin/packages/r-acepack/package.py b/var/spack/repos/builtin/packages/r-acepack/package.py index 28353cb981e31a..32eda730e5b710 100644 --- a/var/spack/repos/builtin/packages/r-acepack/package.py +++ b/var/spack/repos/builtin/packages/r-acepack/package.py @@ -29,4 +29,5 @@ class RAcepack(RPackage): license("MIT") + version("1.4.2", sha256="5bffcd12b783f372bb6c50e35317744ac31597c91b6433442a7b0dce2f66ac91") version("1.4.1", sha256="82750507926f02a696f6cc03693e8d4a5ee7e92500c8c15a16a9c12addcd28b9") diff --git a/var/spack/repos/builtin/packages/r-adabag/package.py b/var/spack/repos/builtin/packages/r-adabag/package.py index 343b8c468d85a3..1f489a0c5bd9b8 100644 --- a/var/spack/repos/builtin/packages/r-adabag/package.py +++ b/var/spack/repos/builtin/packages/r-adabag/package.py @@ -34,12 +34,17 @@ class RAdabag(RPackage): license("GPL-2.0-or-later") + version("5.0", sha256="ec58756fda2e64753d21e28d9e27ed34f28020045b199a58dcea06a3e2c3d60e") version("4.2", sha256="47019eb8cefc8372996fbb2642f64d4a91d7cedc192690a8d8be6e7e03cd3c81") version("4.1", sha256="ff938c36122cdf58a71a59a6bf79a3c7816966ee7cc4907c4a0a3c0732e3d028") + depends_on("r@4.0.0:", type=("build", "run"), when="@5.0:") depends_on("r-rpart", type=("build", "run")) depends_on("r-caret", type=("build", "run")) - depends_on("r-foreach", type=("build", "run")) + depends_on("r-consrank@2.1.3:", type=("build", "run"), when="@5.0:") depends_on("r-doparallel", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run"), when="@5.0:") + depends_on("r-foreach", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run"), when="@5.0:") depends_on("r-mlbench", type=("build", "run"), when="@:4.1") diff --git a/var/spack/repos/builtin/packages/r-adegraphics/package.py b/var/spack/repos/builtin/packages/r-adegraphics/package.py index 1048a74d065fdc..a83b2cce4d9bcc 100644 --- a/var/spack/repos/builtin/packages/r-adegraphics/package.py +++ b/var/spack/repos/builtin/packages/r-adegraphics/package.py @@ -17,6 +17,7 @@ class RAdegraphics(RPackage): license("GPL-2.0-or-later") + version("1.0-21", sha256="e02a92b3a03220fd1f905f9541f506e43ad75b385a7febf74c80690364faeba8") version("1.0-18", sha256="8fe07fc0f73e9917e098de2ee8e6fdb3e07775446683b6222692a3298e4d563c") version("1.0-16", sha256="7ba59ce9aeefe1c25b4b118d08ef458ffd34115412c147cc428629e72a82ec3a") version("1.0-15", sha256="87bbcd072e9a898955f5ede4315e82365086a50a2887bf5bd2e94bbb4d3f678a") diff --git a/var/spack/repos/builtin/packages/r-adephylo/package.py b/var/spack/repos/builtin/packages/r-adephylo/package.py index 225b8bc1cfdce0..f113150a303429 100644 --- a/var/spack/repos/builtin/packages/r-adephylo/package.py +++ b/var/spack/repos/builtin/packages/r-adephylo/package.py @@ -16,6 +16,7 @@ class RAdephylo(RPackage): license("GPL-2.0-or-later") + version("1.1-16", sha256="b5ce5de26bbe6e40ca0650650acac3f613e5170d0b14dc5d6e6bbe83c416ce58") version("1.1-13", sha256="2aa132fee9d0a14ac09b0a96af40ac332cb4e13c892908803c335aa7319ca76d") version("1.1-11", sha256="154bf2645eac4493b85877933b9445442524ca4891aefe4e80c294c398cff61a") diff --git a/var/spack/repos/builtin/packages/r-adespatial/package.py b/var/spack/repos/builtin/packages/r-adespatial/package.py index 7fe07cbf9ecb7a..dbd61e3dc83305 100644 --- a/var/spack/repos/builtin/packages/r-adespatial/package.py +++ b/var/spack/repos/builtin/packages/r-adespatial/package.py @@ -19,6 +19,7 @@ class RAdespatial(RPackage): license("GPL-2.0-or-later") + version("0.3-23", sha256="70e0878b13212f9c450bf1e2bd1c5be87a1e24fed942941855a8dd2dd0c05f33") version("0.3-21", sha256="4ff65f9bc05892a2d37d34ab2b77dbd24f980adc891f5f94f8e56aec771ea79f") version("0.3-20", sha256="f88e009563087c52af5be490bd111cc38b0b70437bbfa189e846080a069b64eb") version("0.3-19", sha256="db50f1c42961e40bcef6d714a89a09b1345dab2dd013cea8e2122fdf99d5d223") diff --git a/var/spack/repos/builtin/packages/r-aer/package.py b/var/spack/repos/builtin/packages/r-aer/package.py index 8e4e5b57027973..013efef3cbe7ef 100644 --- a/var/spack/repos/builtin/packages/r-aer/package.py +++ b/var/spack/repos/builtin/packages/r-aer/package.py @@ -15,6 +15,7 @@ class RAer(RPackage): cran = "AER" + version("1.2-12", sha256="55c7b0f17ecd0dc6e1c54ab09b40e89676f44658eaad444c818133fae8d1ea86") version("1.2-10", sha256="650a5fb54a8addf8c86f1e0f88f4fac5349731bc5bf34762a991022140eedbdc") version("1.2-9", sha256="3b79390b14766419fc1e8912689bc462d4beb01aff9dad26d628aed69d04540d") version("1.2-7", sha256="3aee5c606313710c2dca6c1e9b2c20a145aa33f2a3ecc5cfcec66c8e91838a93") diff --git a/var/spack/repos/builtin/packages/r-afex/package.py b/var/spack/repos/builtin/packages/r-afex/package.py index 8d837804708020..1cf3e17b72d987 100644 --- a/var/spack/repos/builtin/packages/r-afex/package.py +++ b/var/spack/repos/builtin/packages/r-afex/package.py @@ -26,6 +26,7 @@ class RAfex(RPackage): license("GPL-2.0-or-later") + version("1.3-1", sha256="4a64fb7e86e3d081e576c0d744d1613f391656082962c5799cf3fc5e2ca631a8") version("1.3-0", sha256="f8e276a1070288c54b83db1d1214fd88fe8d8b8698cf0c2743ef2a45f61e1933") version("1.2-1", sha256="e3a8cecd46db9521039275a5bf27937afb3ec4021644cc4fac94096cc585aacb") version("1.2-0", sha256="8b57ffb8ba2f6354185fc79c8b0cab2703d753b89a100f4325bb2e4c7a3531c2") diff --git a/var/spack/repos/builtin/packages/r-amelia/package.py b/var/spack/repos/builtin/packages/r-amelia/package.py index ac363443653c3e..d2a70da851ad7b 100644 --- a/var/spack/repos/builtin/packages/r-amelia/package.py +++ b/var/spack/repos/builtin/packages/r-amelia/package.py @@ -27,6 +27,7 @@ class RAmelia(RPackage): cran = "Amelia" + version("1.8.2", sha256="4fb24a247ca20ba942e854f21e366fbbaf8fbcabc99efbb537511a10a732fc3e") version("1.8.1", sha256="120ce62a2acfc845dbeb155ce3f33b41ebad324bc73693a918a95194a9fc47e4") version("1.8.0", sha256="3ec1d5a68dac601b354227916aa8ec72fa1216b603dd887aae2b24cb69b5995e") version("1.7.6", sha256="63c08d374aaf78af46c34dc78da719b3085e58d9fabdc76c6460d5193a621bea") diff --git a/var/spack/repos/builtin/packages/r-aod/package.py b/var/spack/repos/builtin/packages/r-aod/package.py index bb1c02ed208009..230890b99d68f4 100644 --- a/var/spack/repos/builtin/packages/r-aod/package.py +++ b/var/spack/repos/builtin/packages/r-aod/package.py @@ -19,6 +19,7 @@ class RAod(RPackage): license("GPL-2.0-or-later") + version("1.3.3", sha256="b7245e8abf7d78cdfa7f74f6d90f79a418b883058aa3edd5977a60bdbed4087e") version("1.3.2", sha256="9b85be7b12b31ac076f2456853a5b18d8a79ce2b86d00055264529a0cd28515c") version("1.3.1", sha256="052d8802500fcfdb3b37a8e3e6f3fbd5c3a54e48c3f68122402d2ea3a15403bc") diff --git a/var/spack/repos/builtin/packages/r-ape/package.py b/var/spack/repos/builtin/packages/r-ape/package.py index 79c01e29ef56da..7ab951511fa02a 100644 --- a/var/spack/repos/builtin/packages/r-ape/package.py +++ b/var/spack/repos/builtin/packages/r-ape/package.py @@ -29,6 +29,7 @@ class RApe(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("5.8", sha256="24ce729979e1bcc60317e71e5100ce54156ceb7484917b0d64260f733ae84d24") version("5.7-1", sha256="8b09c71218d8aa629e43bc807b433a4e30a61847d91b2810e31c366f0fe5057a") version("5.6-2", sha256="9b62450a0390a1f07df007d348ad4cedcd814d42cb11c5a300ed33550fd41257") version("5.6-1", sha256="25401e036576eed1200e15bf68879ccd85611303a3508b989e15164cd4c0f7f7") diff --git a/var/spack/repos/builtin/packages/r-aplot/package.py b/var/spack/repos/builtin/packages/r-aplot/package.py index a13354904ec241..537d9efc7550a6 100644 --- a/var/spack/repos/builtin/packages/r-aplot/package.py +++ b/var/spack/repos/builtin/packages/r-aplot/package.py @@ -20,6 +20,7 @@ class RAplot(RPackage): license("Artistic-2.0") + version("0.2.3", sha256="1fb062050199933f724164118cc3e5d85b60a3a4d4a466016bed2928b0310d6a") version("0.1.10", sha256="d937768241f887628b88bb3b49dd6cbe9b7dae39ae7054e7380a9836721a67d1") version("0.1.8", sha256="d931d7769dc7ce4bc938e8c068973721e89da0aa5f40a04f8a9119621b33459c") version("0.1.7", sha256="f6250f5f6d1addc8d5717be80a92c569bfd83d35bce2e3dbeb251c9ae1be8616") @@ -27,9 +28,11 @@ class RAplot(RPackage): version("0.1.4", sha256="cde9dfc1c6b38e370c1f7338651c37727efa57d52b646fec6b021855809492ac") version("0.1.2", sha256="899c4d101ddcedb1eba9803d78cf02288b63de25e2879add8add1165167509f0") + depends_on("r@4.1.0:", type=("build", "run"), when="@0.2.0:") depends_on("r-ggfun@0.0.4:", type=("build", "run"), when="@0.1.2:") depends_on("r-ggfun@0.0.6:", type=("build", "run"), when="@0.1.4:") depends_on("r-ggfun@0.0.9:", type=("build", "run"), when="@0.1.10:") + depends_on("r-ggfun@0.1.3:", type=("build", "run"), when="@0.2.1:") depends_on("r-ggplot2", type=("build", "run")) depends_on("r-ggplotify", type=("build", "run")) depends_on("r-patchwork", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-argparse/package.py b/var/spack/repos/builtin/packages/r-argparse/package.py index fbacffb18313e8..758c817412887a 100644 --- a/var/spack/repos/builtin/packages/r-argparse/package.py +++ b/var/spack/repos/builtin/packages/r-argparse/package.py @@ -17,6 +17,7 @@ class RArgparse(RPackage): license("GPL-2.0-or-later") + version("2.2.3", sha256="a50cc4e1221f063e472a8cfe7e881a1d4abed5ef93cf40d5f65a2528cdfd2674") version("2.2.2", sha256="b62c9bf5e6ca35fb7a2e614a916815c04cbf6c6db3f89f99b4df76470a4a856d") version("2.1.6", sha256="2ad7faad795878b88969ac5d91ba38f4e96deb85dfea7148c3510f0eaa3de592") version("2.1.5", sha256="83e112beb47733849980b286d93ac930f0cbe6ac78fcb94fc9f6b0eea882658d") diff --git a/var/spack/repos/builtin/packages/r-arm/package.py b/var/spack/repos/builtin/packages/r-arm/package.py new file mode 100644 index 00000000000000..c451ac36e19d21 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-arm/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RArm(RPackage): + """Functions to accompany A. Gelman and J. Hill, Data Analysis Using + Regression and Multilevel/Hierarchical Models, Cambridge University + Press, 2007.""" + + homepage = "https://github.com/suyusung/arm" + cran = "arm" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("1.14-4", sha256="425bcb0afea2efb668d15ed8daa430bb356c62587eba806fd91e37afac1807bd") + + depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r-mass", type=("build", "run")) + depends_on("r-matrix@1.0:", type=("build", "run")) + depends_on("r-lme4@1.0:", type=("build", "run")) + depends_on("r-abind", type=("build", "run")) + depends_on("r-coda", type=("build", "run")) + depends_on("r-nlme", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-askpass/package.py b/var/spack/repos/builtin/packages/r-askpass/package.py index 8c7d5a5d3ee88b..76563eb0efe205 100644 --- a/var/spack/repos/builtin/packages/r-askpass/package.py +++ b/var/spack/repos/builtin/packages/r-askpass/package.py @@ -22,6 +22,7 @@ class RAskpass(RPackage): license("MIT") + version("1.2.0", sha256="b922369781934d0ffc8d0c0177e8ace56796c2e6a726f65e460c16f792592cef") version("1.1", sha256="db40827d1bdbb90c0aa2846a2961d3bf9d76ad1b392302f9dd84cc2fd18c001f") depends_on("r-sys@2.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-assertive-code/package.py b/var/spack/repos/builtin/packages/r-assertive-code/package.py index 81b3036035ef93..cfab4f28a21d34 100644 --- a/var/spack/repos/builtin/packages/r-assertive-code/package.py +++ b/var/spack/repos/builtin/packages/r-assertive-code/package.py @@ -16,6 +16,7 @@ class RAssertiveCode(RPackage): cran = "assertive.code" + version("0.0-4", sha256="2f820474ed20e06f65b284962c87cd1e85220a11cc7fcde09716f0eee5821387") version("0.0-3", sha256="ef80e8d1d683d776a7618e78ddccffca7f72ab4a0fcead90c670bb8f8cb90be2") depends_on("r@3.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-backports/package.py b/var/spack/repos/builtin/packages/r-backports/package.py index 45f7f2edd6a58b..9fa8a9c63d7d64 100644 --- a/var/spack/repos/builtin/packages/r-backports/package.py +++ b/var/spack/repos/builtin/packages/r-backports/package.py @@ -20,6 +20,7 @@ class RBackports(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.5.0", sha256="0d3ed9db8f1505e88967f48d669b2a257e0c6b7e6320ea64b946c1bd40897ca2") version("1.4.1", sha256="845c3c59fbb05e5a892c4231b955a0afdd331d82b7cc815bcff0672023242474") version("1.4.0", sha256="e7611565d24a852ad8b08579a7c67ad9121c1bda148bade98c7bec686e8dabbf") version("1.2.1", sha256="a2834bbd57e305e5d8010322f1906ea1789b3b5ba5eca77c5ff4248aceb7c2d5") diff --git a/var/spack/repos/builtin/packages/r-bayesm/package.py b/var/spack/repos/builtin/packages/r-bayesm/package.py index faebd2b48d6b2d..6af5198de1b65c 100644 --- a/var/spack/repos/builtin/packages/r-bayesm/package.py +++ b/var/spack/repos/builtin/packages/r-bayesm/package.py @@ -33,6 +33,7 @@ class RBayesm(RPackage): license("GPL-2.0-or-later") + version("3.1-6", sha256="17d72b9cdc090845f98e7a04640380d0baef8bc23d1487c8f64dc192fdb93cb5") version("3.1-5", sha256="f223074ca41ede293b48350eac77a565e034f0f8cf3dd72d0e1d126cc58047a2") version("3.1-4", sha256="061b216c62bc72eab8d646ad4075f2f78823f9913344a781fa53ea7cf4a48f94") version("3.1-3", sha256="51e4827eca8cd4cf3626f3c2282543df7c392b3ffb843f4bfb386fe104642a10") diff --git a/var/spack/repos/builtin/packages/r-bayesplot/package.py b/var/spack/repos/builtin/packages/r-bayesplot/package.py index adec1f7bebb528..3910a5bca320be 100644 --- a/var/spack/repos/builtin/packages/r-bayesplot/package.py +++ b/var/spack/repos/builtin/packages/r-bayesplot/package.py @@ -22,6 +22,7 @@ class RBayesplot(RPackage): license("GPL-3.0-or-later") + version("1.11.1", sha256="4f71e67391e0135acd3e890989b87025f3f8160242f532a8e1a0ed74ed0f3830") version("1.10.0", sha256="bb4cb92b1ae4cf8ae5f4b5cb092aba34af3d820d137e1f2265cca8f3e85113ff") version("1.9.0", sha256="0a81a4b99cf781334e57cfc3c469fad8b932a68204016a3bbca33cab4e2a1e43") version("1.8.1", sha256="d8d74201ea91fa5438714686ca22a947ec9375b6c12b0cfef010c57104b1aa2a") @@ -30,7 +31,9 @@ class RBayesplot(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-dplyr@0.8.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run")) + depends_on("r-ggplot2@3.4.0:", type=("build", "run"), when="@1.11.0:") depends_on("r-ggridges", type=("build", "run")) + depends_on("r-ggridges@0.5.5:", type=("build", "run"), when="@1.11.1:") depends_on("r-glue", type=("build", "run")) depends_on("r-posterior", type=("build", "run"), when="@1.9.0:") depends_on("r-reshape2", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-bglr/package.py b/var/spack/repos/builtin/packages/r-bglr/package.py index 98a96e20b9e8e5..0a9e961c88b077 100644 --- a/var/spack/repos/builtin/packages/r-bglr/package.py +++ b/var/spack/repos/builtin/packages/r-bglr/package.py @@ -13,6 +13,7 @@ class RBglr(RPackage): license("GPL-3.0-only") + version("1.1.2", sha256="39476f3739bd86905a379e2d5de86ef1f8b0e10c311e350d95ce7aadb7b28224") version("1.1.0", sha256="97c5bb8a461eb408e907693811b2d917efc993000da06591a83a3f5529451ea7") version("1.0.9", sha256="440a96f9f502e0d6ecc8c00720d1ccdbab5ee8223e1def6c930edaa9a9de9099") version("1.0.8", sha256="5e969590d80b2f272c02a43b487ab1ffa13af386e0342993e6ac484fc82c9b95") diff --git a/var/spack/repos/builtin/packages/r-bh/package.py b/var/spack/repos/builtin/packages/r-bh/package.py index ec028b901db5d5..5745307b54dc54 100644 --- a/var/spack/repos/builtin/packages/r-bh/package.py +++ b/var/spack/repos/builtin/packages/r-bh/package.py @@ -26,6 +26,7 @@ class RBh(RPackage): cran = "BH" + version("1.84.0-0", sha256="6fb660755f572cd975073d7052075654acf8db12d208954ca223b8e4f77ef1ac") version("1.81.0-1", sha256="f51c8badd6f181e06353314e1d15a6ec1495cc498ee74b6fa4ea8aba6e97ff64") version("1.78.0-0", sha256="3b9e9d07682013e0c06a396dda176b405eab99a7273eca6c40d1b4c4110e8cb3") version("1.75.0-0", sha256="ae4c10992607dd697663f60675a46a5770851da159330bb63c4a68890bdd6f5a") diff --git a/var/spack/repos/builtin/packages/r-biasedurn/package.py b/var/spack/repos/builtin/packages/r-biasedurn/package.py index 9b626313ab0e13..4efc158c227c7a 100644 --- a/var/spack/repos/builtin/packages/r-biasedurn/package.py +++ b/var/spack/repos/builtin/packages/r-biasedurn/package.py @@ -18,6 +18,7 @@ class RBiasedurn(RPackage): cran = "BiasedUrn" + version("2.0.12", sha256="29b3b596431c5364e3be9aae2068adb44a205de31c66ec3fa1ef06a4ab8c5792") version("2.0.9", sha256="bac62bbbc3e2417772f8784996a6c2d0857adb42e86e46b1a9703b187a406b09") version("2.0.8", sha256="205e7f8da8fba76fbf4bd9d12a027599b685dedecc818aad39de5c51dc47b856") version("1.07", sha256="2377c2e59d68e758a566452d7e07e88663ae61a182b9ee455d8b4269dda3228e") diff --git a/var/spack/repos/builtin/packages/r-bigalgebra/package.py b/var/spack/repos/builtin/packages/r-bigalgebra/package.py index 741c9a4ca2443b..229d37cdbb44cc 100644 --- a/var/spack/repos/builtin/packages/r-bigalgebra/package.py +++ b/var/spack/repos/builtin/packages/r-bigalgebra/package.py @@ -22,6 +22,7 @@ class RBigalgebra(RPackage): license("LGPL-3.0-only OR Apache-2.0") + version("1.1.1", sha256="fc6a48b940cca86caf8372648a1b1e4066f2f6d618a77303a1c8766c5b7bbf1f") version("1.1.0", sha256="e51530287a64826a3dfb55f41594bc8123b7b4c9b2074f6c8de218fa8b525734") version("1.0.1", sha256="ff7e261d0aa0e0f498e926d923ac62fc5cb783fa1f74bb2ff76a09167388a9d2") version("1.0.0", sha256="f186b603bd660be0cc5b7a52c943e23e92fef264f0bc96a8858e38df6cfc4085") diff --git a/var/spack/repos/builtin/packages/r-biglm/package.py b/var/spack/repos/builtin/packages/r-biglm/package.py new file mode 100644 index 00000000000000..9fd2391596f2fa --- /dev/null +++ b/var/spack/repos/builtin/packages/r-biglm/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RBiglm(RPackage): + """Regression for data too large to fit in memory.""" + + homepage = "https://cran.r-project.org/web/packages/biglm/index.html" + cran = "biglm" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("0.9-3", sha256="805d483dc58c041f1616267abeb39cecaaf7271a34e90668a5439383bf9a0d58") + + depends_on("r-dbi", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py b/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py index 80deb2b010e4ce..780050cf95248f 100644 --- a/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py +++ b/var/spack/repos/builtin/packages/r-bigmemory-sri/package.py @@ -14,5 +14,6 @@ class RBigmemorySri(RPackage): cran = "bigmemory.sri" + version("0.1.8", sha256="029a4ed24aa17636a20b83857d55fe6a9283acb8b647cbc75280dea8ec987771") version("0.1.6", sha256="3bfa6ac966ce0ea93283f5856a853d0ee5ff85aedd7a7d1ca8a93d0aa642860c") version("0.1.3", sha256="55403252d8bae9627476d1f553236ea5dc7aa6e54da6980526a6cdc66924e155") diff --git a/var/spack/repos/builtin/packages/r-bigmemory/package.py b/var/spack/repos/builtin/packages/r-bigmemory/package.py index caeca61193a357..24f9e0ec3bad7b 100644 --- a/var/spack/repos/builtin/packages/r-bigmemory/package.py +++ b/var/spack/repos/builtin/packages/r-bigmemory/package.py @@ -18,6 +18,7 @@ class RBigmemory(RPackage): license("LGPL-3.0-only OR Apache-2.0") + version("4.6.4", sha256="fe3f576c0d87fd2820c0f436a202261dff353e50e5b86dd9c80fdea7ad60002d") version("4.6.1", sha256="b56e157c87ed6c4fc69d4cb9c697ae9a2001726e776e41aa7c48b35327b65141") version("4.5.36", sha256="18c67fbe6344b2f8223456c4f19ceebcf6c1166255eab81311001fd67a45ef0e") diff --git a/var/spack/repos/builtin/packages/r-bindrcpp/package.py b/var/spack/repos/builtin/packages/r-bindrcpp/package.py index 8bb8749e9957a2..dc804e6f7b7cfe 100644 --- a/var/spack/repos/builtin/packages/r-bindrcpp/package.py +++ b/var/spack/repos/builtin/packages/r-bindrcpp/package.py @@ -16,6 +16,7 @@ class RBindrcpp(RPackage): license("MIT") + version("0.2.3", sha256="662dae785aee715855415f4e743281ccbf0832e426084dc2f0ca9c9c908ec9fa") version("0.2.2", sha256="48130709eba9d133679a0e959e49a7b14acbce4f47c1e15c4ab46bd9e48ae467") version("0.2", sha256="d0efa1313cb8148880f7902a4267de1dcedae916f28d9a0ef5911f44bf103450") diff --git a/var/spack/repos/builtin/packages/r-biocmanager/package.py b/var/spack/repos/builtin/packages/r-biocmanager/package.py index 8bf3a70367d48d..40c1b0dc44710f 100644 --- a/var/spack/repos/builtin/packages/r-biocmanager/package.py +++ b/var/spack/repos/builtin/packages/r-biocmanager/package.py @@ -13,6 +13,7 @@ class RBiocmanager(RPackage): cran = "BiocManager" + version("1.30.24", sha256="645c423bb144dbd476cb308678bd36e06c1a3494115f157166dd3f59955ec7d1") version("1.30.20", sha256="b9e72d7687abbd785a69fecb530ec86ad92257a6be95b8e15953b193a516d5ea") version("1.30.19", sha256="6897ab1c58ab2fa3108e22d70bc4150c683bb4ac29355ba7886b88acc30c18e2") version("1.30.18", sha256="f763126b45614e1b83260da5311923eac50db24002f3c22fa5f667434a5b5c35") diff --git a/var/spack/repos/builtin/packages/r-biomartr/package.py b/var/spack/repos/builtin/packages/r-biomartr/package.py index cef67089bb4cdf..cc61ee3ef53e41 100644 --- a/var/spack/repos/builtin/packages/r-biomartr/package.py +++ b/var/spack/repos/builtin/packages/r-biomartr/package.py @@ -25,6 +25,7 @@ class RBiomartr(RPackage): license("GPL-2.0-only") + version("1.0.7", sha256="9d1d5c51b61ee67ce7ca18afdb0a136ef5709d92d077d80163f9d52ee6c28645") version("1.0.2", sha256="7fd6cccd915aa39e593fb7591107ab9792d98a119dd42f3f666e5184f4e42743") version("0.9.2", sha256="d88085696e9c5614828602254c33f2cdd3bbfeebc2f21a705eee3cb961097c89") diff --git a/var/spack/repos/builtin/packages/r-bitops/package.py b/var/spack/repos/builtin/packages/r-bitops/package.py index 2816e2f8001961..7cfcdeb49bb03b 100644 --- a/var/spack/repos/builtin/packages/r-bitops/package.py +++ b/var/spack/repos/builtin/packages/r-bitops/package.py @@ -16,6 +16,7 @@ class RBitops(RPackage): license("GPL-2.0-or-later") + version("1.0-8", sha256="78a14b9f69645dc65e1973e1f1a9968c53d5c5edc6aa1ac85661e1112f212738") version("1.0-7", sha256="e9b5fc92c39f94a10cd0e13f3d6e2a9c17b75ea01467077a51d47a5f708517c4") version("1.0-6", sha256="9b731397b7166dd54941fb0d2eac6df60c7a483b2e790f7eb15b4d7b79c9d69c") diff --git a/var/spack/repos/builtin/packages/r-blavaan/package.py b/var/spack/repos/builtin/packages/r-blavaan/package.py index 5858afc3246bf0..c6e8ec7059fbc3 100644 --- a/var/spack/repos/builtin/packages/r-blavaan/package.py +++ b/var/spack/repos/builtin/packages/r-blavaan/package.py @@ -18,6 +18,7 @@ class RBlavaan(RPackage): license("GPL-3.0-or-later") + version("0.5-5", sha256="a8d3bc5e9d15a2e8496950e87ed3c6bc6d769e761ec068e1f063f2d255330b6d") version("0.4-7", sha256="43577264a1faff3cf98fce2c03b729816b40a82d36846458b8026b62da3008c3") version("0.4-3", sha256="a9f9f7b32aab7e7f179340c9f0f9d154b5fac51352c4fd590d317c201fe81b74") version("0.4-1", sha256="afb077d72f84ef0b6f45ef2ccb8335358042943c32a3472a9ca239ebca1c4aa4") @@ -29,6 +30,7 @@ class RBlavaan(RPackage): depends_on("r-lavaan@0.6-7:", type=("build", "run"), when="@0.3-18:") depends_on("r-lavaan@0.6-10:", type=("build", "run"), when="@0.4-1:") depends_on("r-lavaan@0.6-14:", type=("build", "run"), when="@0.4-7:") + depends_on("r-lavaan@0.6-17:", type=("build", "run"), when="@0.5-3:") depends_on("r-rcpp@0.12.15:", type=("build", "run")) depends_on("r-coda", type=("build", "run")) depends_on("r-mnormt", type=("build", "run")) @@ -36,6 +38,7 @@ class RBlavaan(RPackage): depends_on("r-loo@2.0:", type=("build", "run")) depends_on("r-rstan@2.19.2:", type=("build", "run")) depends_on("r-rstan@2.21.2:", type=("build", "run"), when="@0.3-18:") + depends_on("r-rstan@2.26.0:", type=("build", "run"), when="@0.5-2:") depends_on("r-rstantools@1.5.0:", type=("build", "run")) depends_on("r-rcppparallel@5.0.1:", type=("build", "run")) depends_on("r-bayesplot", type=("build", "run")) @@ -43,6 +46,7 @@ class RBlavaan(RPackage): depends_on("r-future-apply", type=("build", "run")) depends_on("r-tmvnsim", type=("build", "run"), when="@0.3-18:") depends_on("r-stanheaders@2.18.1:", type=("build", "run")) + depends_on("r-stanheaders@2.26.0:", type=("build", "run"), when="@0.5-2:") depends_on("r-bh@1.69.0:", type=("build", "run")) depends_on("r-rcppeigen@0.3.3.4.0:", type=("build", "run")) depends_on("gmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-blockmodeling/package.py b/var/spack/repos/builtin/packages/r-blockmodeling/package.py index bc330e7b024276..a8fc9d5846caa1 100644 --- a/var/spack/repos/builtin/packages/r-blockmodeling/package.py +++ b/var/spack/repos/builtin/packages/r-blockmodeling/package.py @@ -16,6 +16,7 @@ class RBlockmodeling(RPackage): license("GPL-2.0-or-later") + version("1.1.5", sha256="3b6f910078c29b801651e3a686112e41e456c517e1b99fcda11bb12681bb1503") version("1.1.4", sha256="69ce17ed96ca754a6308edb62188e0040e357568b975ce8986f68ecb2fead2b8") version("1.1.3", sha256="5f705f92c9b96dcbdd6f109c6a99f88d70c576485369700b82391b6a75afbda6") version("1.0.5", sha256="18c227bb52f28aff4dae8929563474e3e006e238438c823b67dc6baa897f88ed") diff --git a/var/spack/repos/builtin/packages/r-bookdown/package.py b/var/spack/repos/builtin/packages/r-bookdown/package.py index b798a80533ab1a..2346bd0d8644cc 100644 --- a/var/spack/repos/builtin/packages/r-bookdown/package.py +++ b/var/spack/repos/builtin/packages/r-bookdown/package.py @@ -16,6 +16,7 @@ class RBookdown(RPackage): license("GPL-3.0-only") + version("0.40", sha256="58df4a044704b6c42a397f4e430a7fc8f6171bad1447872119aceafd158eac39") version("0.33", sha256="2288e1d0c383e6ab49202a18db6cc1a04c3adc1b25da646cc46167bc6c2892c3") version("0.29", sha256="5b4e3dc44a5c6574e3d9e19ebe7897d3ddcf6eaffe8214e1d272b545929ff723") version("0.26", sha256="c6207288cb72ea7c555cbad449c61278e94b742cac1f610879fb3f2d60b2b185") @@ -41,6 +42,7 @@ class RBookdown(RPackage): depends_on("r-xfun@0.13:", type=("build", "run"), when="@0.21:") depends_on("r-xfun@0.22:", type=("build", "run"), when="@0.24:") depends_on("r-xfun@0.29:", type=("build", "run"), when="@0.26:") + depends_on("r-xfun@0.39:", type=("build", "run"), when="@0.34:") depends_on("r-tinytex@0.12:", type=("build", "run"), when="@0.12:") depends_on("r-yaml@2.1.14:", type=("build", "run")) depends_on("r-yaml@2.1.19:", type=("build", "run"), when="@0.21:") diff --git a/var/spack/repos/builtin/packages/r-boot/package.py b/var/spack/repos/builtin/packages/r-boot/package.py index ae81554a166608..1d7b2442cba173 100644 --- a/var/spack/repos/builtin/packages/r-boot/package.py +++ b/var/spack/repos/builtin/packages/r-boot/package.py @@ -17,6 +17,7 @@ class RBoot(RPackage): license("custom") + version("1.3-30", sha256="5509d62bd6e6c21b6ef352ab7846d89027bddbfb727fd0cf55da59558bd3fe97") version("1.3-28.1", sha256="d4cde76fcc8ccc7ffa329de69147b66a6a93a10188e89342fd18207b1d02ff53") version("1.3-28", sha256="9f7158fd2714659f590c3955651893dc24bd8f39196bc5a4cc35b0b031744a32") version("1.3-25", sha256="464835fcb453072346ce49e4ae318e04c9dba682349be49db616623b6088fbbe") diff --git a/var/spack/repos/builtin/packages/r-brew/package.py b/var/spack/repos/builtin/packages/r-brew/package.py index 1e2398a8ea0e41..df202638bc1f7b 100644 --- a/var/spack/repos/builtin/packages/r-brew/package.py +++ b/var/spack/repos/builtin/packages/r-brew/package.py @@ -17,6 +17,7 @@ class RBrew(RPackage): license("GPL-2.0-only") + version("1.0-10", sha256="4181f7334e032ae0775c5dec49d6137eb25d5430ca3792d321793307b3dda38f") version("1.0-8", sha256="11652d5a7042d645cc5be5f9f97ff4d46083cea7d3ad2dd6ad1570b52c097826") version("1.0-7", sha256="38b859c1dca63479f6937c593da8f806f2b3279585bb6e20ecff1b898469e76e") version("1.0-6", sha256="d70d1a9a01cf4a923b4f11e4374ffd887ad3ff964f35c6f9dc0f29c8d657f0ed") diff --git a/var/spack/repos/builtin/packages/r-brio/package.py b/var/spack/repos/builtin/packages/r-brio/package.py index c4feef388bd3a2..310d3f655b639c 100644 --- a/var/spack/repos/builtin/packages/r-brio/package.py +++ b/var/spack/repos/builtin/packages/r-brio/package.py @@ -17,5 +17,8 @@ class RBrio(RPackage): license("MIT") + version("1.1.5", sha256="a9f22335ea39039de25bb27bccd5ff1ffb2b743579b31d150b6b91c9ea81d0b8") version("1.1.3", sha256="eaa89041856189bee545bf1c42c7920a0bb0f1f70bb477487c467ee3e8fedcc6") version("1.1.0", sha256="6bb3a3b47bea13f1a1e3dcdc8b9f688502643e4b40a481a34aa04a261aabea38") + + depends_on("r@3.6:", when="@1.1.4:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-brms/package.py b/var/spack/repos/builtin/packages/r-brms/package.py index e1ce9accb9fbff..45567c81d85fff 100644 --- a/var/spack/repos/builtin/packages/r-brms/package.py +++ b/var/spack/repos/builtin/packages/r-brms/package.py @@ -29,6 +29,7 @@ class RBrms(RPackage): license("GPL-2.0-only") + version("2.21.0", sha256="7289ff33c2a4b83584b7fece0a6aa53fd14b5881a467d417fbca5dbf62ec5d58") version("2.19.0", sha256="0e146842c7acfcc6b8273df536eabb5279fb3bf2ae27ce1696f7d838d94fe5c1") version("2.18.0", sha256="63914be03cd1c4e6333317d22d7827ba2dc0414cb0dc88337cf74763ba07e111") version("2.17.0", sha256="24e5a3a40b81bea558e8f660d0de7fd1a4c2080c7553baac98f34dd2682ece71") @@ -37,20 +38,22 @@ class RBrms(RPackage): version("2.15.0", sha256="c11701d1d8758590b74bb845b568b736e4455a81b114c7dfde0b27b7bd1bcc2f") depends_on("r@3.5.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@2.20.1:") depends_on("r-rcpp@0.12.0:", type=("build", "run")) depends_on("r-rstan@2.19.2:", type=("build", "run")) + depends_on("r-rstan@2.29.0:", type=("build", "run"), when="@2.21.0:") depends_on("r-ggplot2@2.0.0:", type=("build", "run")) depends_on("r-loo@2.3.1:", type=("build", "run")) depends_on("r-posterior@1.0.0:", type=("build", "run"), when="@2.16:") - depends_on("r-matrix@1.1.1:", type=("build", "run")) + depends_on("r-matrix@1.1-1:", type=("build", "run")) depends_on("r-mgcv@1.8-13:", type=("build", "run")) depends_on("r-rstantools@2.1.1:", type=("build", "run")) depends_on("r-bayesplot@1.5.0:", type=("build", "run")) - depends_on("r-shinystan@2.4.0:", type=("build", "run")) depends_on("r-bridgesampling@0.3-0:", type=("build", "run")) depends_on("r-glue@1.3.0:", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@2.19.0:") depends_on("r-future@1.19.0:", type=("build", "run")) + depends_on("r-future-apply@1.0.0:", type=("build", "run"), when="@2.21.0:") depends_on("r-matrixstats", type=("build", "run")) depends_on("r-nleqslv", type=("build", "run")) depends_on("r-nlme", type=("build", "run")) @@ -58,4 +61,5 @@ class RBrms(RPackage): depends_on("r-abind", type=("build", "run")) depends_on("r-backports", type=("build", "run")) + depends_on("r-shinystan@2.4.0:", type=("build", "run"), when="@:2.20.4") depends_on("r-projpred@2.0.0:", type=("build", "run"), when="@:2.16.1") diff --git a/var/spack/repos/builtin/packages/r-broom-helpers/package.py b/var/spack/repos/builtin/packages/r-broom-helpers/package.py new file mode 100644 index 00000000000000..ac7b5314beae70 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-broom-helpers/package.py @@ -0,0 +1,32 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RBroomHelpers(RPackage): + """Provides suite of functions to work with regression model 'broom::tidy()' + tibbles. The suite includes functions to group regression model terms by + variable, insert reference and header rows for categorical variables, add + variable labels, and more.""" + + homepage = "https://larmarange.github.io/broom.helpers/" + cran = "broom.helpers" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("1.16.0", sha256="9a7bac8678cdcc9a7e0f3b6d287d375fd5f1e880c916ac4d661f02c2c84e2715") + + depends_on("r@4.2:", type=("build", "run"), when="@1.16.0:") + depends_on("r-broom@0.8:", type=("build", "run")) + depends_on("r-cli", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run")) + depends_on("r-labelled", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run")) + depends_on("r-purrr", type=("build", "run")) + depends_on("r-rlang@1.0.1:", type=("build", "run")) + depends_on("r-stringr", type=("build", "run")) + depends_on("r-tibble", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-broom/package.py b/var/spack/repos/builtin/packages/r-broom/package.py index 0f48847a4c438b..f755b886c9eb82 100644 --- a/var/spack/repos/builtin/packages/r-broom/package.py +++ b/var/spack/repos/builtin/packages/r-broom/package.py @@ -22,6 +22,7 @@ class RBroom(RPackage): license("MIT") + version("1.0.6", sha256="24cf36248dffbde38d3d81befa679e362bfd0526b9843bc536a85452a19fbccf") version("1.0.4", sha256="1d5f11b509786a8a45ffdd137243e24d6445f2944947cbd62a0734a06add0ad6") version("1.0.1", sha256="4b5e5aa485f0e23ed993088fc84159e31a00087e3a12327071dda25193382892") version("0.8.0", sha256="66a1095d4430450dc810a5cea61cd7e7bee0e23739dcf5ddc5b57c9894fcf999") @@ -39,7 +40,6 @@ class RBroom(RPackage): depends_on("r-backports", type=("build", "run"), when="@0.5.0:") depends_on("r-dplyr", type=("build", "run")) depends_on("r-dplyr@1.0.0:", type=("build", "run"), when="@0.7.3:") - depends_on("r-ellipsis", type=("build", "run"), when="@0.7.3:") depends_on("r-generics@0.0.2:", type=("build", "run"), when="@0.5.1:") depends_on("r-glue", type=("build", "run"), when="@0.7.3:") depends_on("r-lifecycle", type=("build", "run"), when="@1.0.4:") @@ -51,6 +51,7 @@ class RBroom(RPackage): depends_on("r-tidyr", type=("build", "run")) depends_on("r-tidyr@1.0.0:", type=("build", "run"), when="@0.7.3:") + depends_on("r-ellipsis", type=("build", "run"), when="@0.7.3:1.0.5") depends_on("r-plyr", type=("build", "run"), when="@:0.4.2") depends_on("r-psych", type=("build", "run"), when="@:0.4.2") depends_on("r-reshape2", type=("build", "run"), when="@:0.5.2") diff --git a/var/spack/repos/builtin/packages/r-bslib/package.py b/var/spack/repos/builtin/packages/r-bslib/package.py index f664c309595d6e..d277073d6ab0ed 100644 --- a/var/spack/repos/builtin/packages/r-bslib/package.py +++ b/var/spack/repos/builtin/packages/r-bslib/package.py @@ -18,20 +18,27 @@ class RBslib(RPackage): license("MIT") + version("0.8.0", sha256="fd182ddb1b128691d2b0c12882361732a23d451dbf4052ba70b11257e8d44b03") version("0.4.2", sha256="9a40b7a1bbe409af273e1e940d921ab198ea576548f06f055f552f70ff822f19") version("0.4.1", sha256="4ebd1fc84cd19b414e8f8c13fb95270fc28ede125b6e58b08c574ca8c9e0e62f") version("0.4.0", sha256="fbea4ecec726f23618e825624f1d9c03939f765ca5a490b171ebf95b815475c2") version("0.3.1", sha256="5f5cb56e5cab9039a24cd9d70d73b69c2cab5b2f5f37afc15f71dae0339d9849") depends_on("r@2.10:", type=("build", "run")) + depends_on("r-fastmap@1.1.1:", type=("build", "run"), when="@0.7.0:") depends_on("r-htmltools@0.5.2:", type=("build", "run")) depends_on("r-htmltools@0.5.4:", type=("build", "run"), when="@0.4.2:") + depends_on("r-htmltools@0.5.7:", type=("build", "run"), when="@0.6.0:") + depends_on("r-htmltools@0.5.8:", type=("build", "run"), when="@0.7.0:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-sass@0.4.0:", type=("build", "run")) depends_on("r-jquerylib@0.1.3:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@0.6.0:") depends_on("r-rlang", type=("build", "run")) depends_on("r-memoise", type=("build", "run"), when="@0.4.0:") depends_on("r-memoise@2.0.1:", type=("build", "run"), when="@0.4.1:") depends_on("r-mime", type=("build", "run"), when="@0.4.2:") + depends_on("r-sass@0.4.0:", type=("build", "run"), when="@0.5.0:") + depends_on("r-sass@0.4.9:", type=("build", "run"), when="@0.6.2:") depends_on("r-base64enc", type=("build", "run"), when="@0.4.2:") depends_on("r-cachem", type=("build", "run"), when="@0.4.0:") diff --git a/var/spack/repos/builtin/packages/r-bwstest/package.py b/var/spack/repos/builtin/packages/r-bwstest/package.py index 85a8808096db96..159401ee9c577b 100644 --- a/var/spack/repos/builtin/packages/r-bwstest/package.py +++ b/var/spack/repos/builtin/packages/r-bwstest/package.py @@ -17,6 +17,7 @@ class RBwstest(RPackage): cran = "BWStest" + version("0.2.3", sha256="4bc4cc27fcf0aa60c6497048b74528923aae852c98480900204835a8ebd714b2") version("0.2.2", sha256="faff1dd698f1673a6befacb94d14281077d4c19be035a0a3bf85d77c1dfd5509") depends_on("r-memoise", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-cachem/package.py b/var/spack/repos/builtin/packages/r-cachem/package.py index b12ed8ef58ff60..7e5d9cc36ea52c 100644 --- a/var/spack/repos/builtin/packages/r-cachem/package.py +++ b/var/spack/repos/builtin/packages/r-cachem/package.py @@ -17,8 +17,10 @@ class RCachem(RPackage): license("MIT") + version("1.1.0", sha256="550839fc2ae5d865db475ba2c1714144f07fa0c052c72135b0e4a70287492e21") version("1.0.7", sha256="234fad2a947d1e1fb87d3fa92abf9197877772e31bc81ae5991ae69689b6320a") version("1.0.6", sha256="9a9452f7bcf3f79436c418b3c3290449fb8fd338714d9b992153754d112f1864") depends_on("r-rlang", type=("build", "run")) depends_on("r-fastmap", type=("build", "run")) + depends_on("r-fastmap@1.2.0:", when="@1.1.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-cairo/package.py b/var/spack/repos/builtin/packages/r-cairo/package.py index 8f025f25711620..f852fcb5fb764f 100644 --- a/var/spack/repos/builtin/packages/r-cairo/package.py +++ b/var/spack/repos/builtin/packages/r-cairo/package.py @@ -25,6 +25,7 @@ class RCairo(RPackage): cran = "Cairo" + version("1.6-2", sha256="6b6f4c6f93178a1295860a9dc6dc45e60fec70f684d5c8d0b59baf5b8dd44d62") version("1.6-0", sha256="c762ac1d8daa4af527342360c256ed742de4e3031d997e9e59c9a369fcafb7d3") version("1.5-15", sha256="bb3ab1ff6431c15eb01a66ddf90695cd9a2af3d5a384753f5180cd0401d2e89d") version("1.5-14", sha256="067751face3b5771e72f9fb49bfeefb3a7bbecc060b672ab4393cb5935204c7b") @@ -34,5 +35,14 @@ class RCairo(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@2.4.0:", type=("build", "run")) - depends_on("cairo@1.2:") + # "The Cairo package requires cairo library 1.2.0 or higher with PNG support enabled" + # See https://www.rforge.net/Cairo/ + depends_on("cairo@1.2: +png") + # Disabled PDF support results in compilation failures in 1.6-1:1.6-2 + # See https://github.com/s-u/Cairo/pull/48 + depends_on("cairo +pdf", type=("build", "run"), when="@1.6-1:1.6-2") + # When cairo +ft, must also have +fc, for cairo_ft_font_face_create_for_pattern test + conflicts( + "^cairo ~fc", when="^cairo +ft", msg="For cairo freetype support, also need fontconfig." + ) depends_on("libxt") diff --git a/var/spack/repos/builtin/packages/r-callr/package.py b/var/spack/repos/builtin/packages/r-callr/package.py index 33abeee94dda7b..6e0b3731df7045 100644 --- a/var/spack/repos/builtin/packages/r-callr/package.py +++ b/var/spack/repos/builtin/packages/r-callr/package.py @@ -17,6 +17,7 @@ class RCallr(RPackage): license("MIT") + version("3.7.6", sha256="e4bce367e869e42eaeea05566d2033d8cee2103179b11cd9a401440b58a351f8") version("3.7.3", sha256="567bfedf073a1d4c5785f0553341608a214938110567b9a6495ff20ebb2fd04e") version("3.7.2", sha256="12da8a212679e450d8d43c3c6e61ed09b82047f376f316f6f6392f1638580307") version("3.7.0", sha256="d67255148595c6d0ba4c4d241bc9f6b5e00cafe25fdc13e38c10acc38653360a") diff --git a/var/spack/repos/builtin/packages/r-caracas/package.py b/var/spack/repos/builtin/packages/r-caracas/package.py index fea4048e4ef3cd..ab1edfe599ffd9 100644 --- a/var/spack/repos/builtin/packages/r-caracas/package.py +++ b/var/spack/repos/builtin/packages/r-caracas/package.py @@ -17,6 +17,7 @@ class RCaracas(RPackage): license("GPL-2.0-or-later") + version("2.1.1", sha256="3b31b5b1c2fa038e5a6df12cfe62390f9af0461873a38921d6c26468363c2661") version("2.0.0", sha256="9271239bf7457787371cbd44be74cb9909d67ab7c975b1744d8cf60d8b044b95") version("1.1.2", sha256="9c726c77508617e74d1a11ac6e276973df42e1ad81145db455cc6e420526c757") version("1.1.1", sha256="e14487c9492417cf5c7d7373c37dbb4fea4d91180a1a03154e51eaa7878b2769") diff --git a/var/spack/repos/builtin/packages/r-cardata/package.py b/var/spack/repos/builtin/packages/r-cardata/package.py index 400ff9f35c8e94..6966be3fb0b7df 100644 --- a/var/spack/repos/builtin/packages/r-cardata/package.py +++ b/var/spack/repos/builtin/packages/r-cardata/package.py @@ -19,4 +19,4 @@ class RCardata(RPackage): version("3.0-2", sha256="3b5c4eff1cc1e456a5331084774503eaa06cf61fb7acf6b9e8a6bfabd5735494") depends_on("r@3.0:", type=("build", "run")) - depends_on("r@3.5:", type=("build", "run"), when="@3.0-4:") + depends_on("r@3.5.0:", type=("build", "run"), when="@3.0-4:") diff --git a/var/spack/repos/builtin/packages/r-caretensemble/package.py b/var/spack/repos/builtin/packages/r-caretensemble/package.py index a3114fbd68ace9..8423e8ff99ac32 100644 --- a/var/spack/repos/builtin/packages/r-caretensemble/package.py +++ b/var/spack/repos/builtin/packages/r-caretensemble/package.py @@ -20,15 +20,20 @@ class RCaretensemble(RPackage): license("MIT") + version("4.0.0", sha256="9177ad477fd2872e944231764227bcf5e2eabc9916dabce91f1a2a2decc98f43") version("2.0.2", sha256="d8fcf3742beddc723b68677682708408cc11dcb8b36a0f70f03e7c4763e04f4d") version("2.0.1", sha256="7e595e604ce2d9d32afbc5404e6fcbcd7f80e687316e9ca3303aca3e44c3ef88") depends_on("r@3.2.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@4.0.0:") depends_on("r-pbapply", type=("build", "run")) depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-digest", type=("build", "run")) - depends_on("r-plyr", type=("build", "run")) + depends_on("r-patchwork", type=("build", "run"), when="@4.0.0:") + depends_on("r-rlang", type=("build", "run"), when="@4.0.0:") depends_on("r-lattice", type=("build", "run")) - depends_on("r-gridextra", type=("build", "run")) depends_on("r-data-table", type=("build", "run")) depends_on("r-caret", type=("build", "run")) + + depends_on("r-digest", type=("build", "run"), when="@:2.0.3") + depends_on("r-gridextra", type=("build", "run"), when="@:2.0.3") + depends_on("r-plyr", type=("build", "run"), when="@:2.0.3") diff --git a/var/spack/repos/builtin/packages/r-caroline/package.py b/var/spack/repos/builtin/packages/r-caroline/package.py index a4db03a3608980..ec7b9872f210f8 100644 --- a/var/spack/repos/builtin/packages/r-caroline/package.py +++ b/var/spack/repos/builtin/packages/r-caroline/package.py @@ -24,6 +24,7 @@ class RCaroline(RPackage): license("Artistic-2.0") + version("0.9.2", sha256="04dfc574b5f763b8c09e57b68657b8ae7e6aae36083dd71819c96f971d660297") version("0.9.0", sha256="7231daacf2f0e89d9363ea919071f8352ae487011f56e84a4054de11a9243ac8") version("0.8.0", sha256="58f464711f7279ca2aa173e6ce29d3308e01db37dccefbbf14cd7720c0231976") version("0.7.6", sha256="e7ba948f7d87f091b498dd0eec2ca4fdad7af4e2bbb67e0945c2f0d3f2eadda9") diff --git a/var/spack/repos/builtin/packages/r-cca/package.py b/var/spack/repos/builtin/packages/r-cca/package.py index c33b4e205c0b17..d6929127836ff9 100644 --- a/var/spack/repos/builtin/packages/r-cca/package.py +++ b/var/spack/repos/builtin/packages/r-cca/package.py @@ -17,6 +17,7 @@ class RCca(RPackage): cran = "CCA" + version("1.2.2", sha256="f3b347f15dadd887f31206906e845c4893ec0cd7dc0c7e97c11001434c3d2e64") version("1.2.1", sha256="28febfce7c46039240346410e70f9d8795b536fc4e7e0d48d5370bd23cba9bd0") depends_on("r@2.10:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-checkmate/package.py b/var/spack/repos/builtin/packages/r-checkmate/package.py index ac294085f09e84..92cbecec4f401f 100644 --- a/var/spack/repos/builtin/packages/r-checkmate/package.py +++ b/var/spack/repos/builtin/packages/r-checkmate/package.py @@ -17,6 +17,7 @@ class RCheckmate(RPackage): license("BSD-3-Clause") + version("2.3.2", sha256="7255732d6c2da51204128a910e8c0d05246324a0402fca4d0d99433af40a88e3") version("2.1.0", sha256="b784dd5163a0350d084ef34882d9781373839dedeaa9a8b8e6187d773d0d21c6") version("2.0.0", sha256="0dc25b0e20c04836359df1885d099c6e4ad8ae0e585a9e4107f7ea945d9c6fa4") version("1.9.4", sha256="faa25754b757fe483b876f5d07b73f76f69a1baa971420892fadec4af4bbad21") diff --git a/var/spack/repos/builtin/packages/r-chemometrics/package.py b/var/spack/repos/builtin/packages/r-chemometrics/package.py index fac0b96c3e44e6..be933d41dffa02 100644 --- a/var/spack/repos/builtin/packages/r-chemometrics/package.py +++ b/var/spack/repos/builtin/packages/r-chemometrics/package.py @@ -16,6 +16,7 @@ class RChemometrics(RPackage): license("GPL-3.0-or-later") + version("1.4.4", sha256="fd0edb1ebe321ff7677d0a668d7dfc79a7cd55f408a53d1f13db4cf6347aa881") version("1.4.2", sha256="b705832fa167dc24b52b642f571ed1efd24c5f53ba60d02c7797986481b6186a") version("1.4.1", sha256="7646da0077657d672356204aa2094be68e10ec13617f92ae97ff53a389053905") version("1.3.9", sha256="553eda53789b6a4d0f77842c175f98be5b9a04bccc9d2ba0ecde1bb5c8a53f21") diff --git a/var/spack/repos/builtin/packages/r-chron/package.py b/var/spack/repos/builtin/packages/r-chron/package.py index fbce82e224f0a4..eb9105173b6998 100644 --- a/var/spack/repos/builtin/packages/r-chron/package.py +++ b/var/spack/repos/builtin/packages/r-chron/package.py @@ -15,6 +15,7 @@ class RChron(RPackage): license("GPL-2.0-only") + version("2.3-61", sha256="a096957625a0438075b3486322ee07c753c7c4ba3efcd04a3ac92476d6c43b9b") version("2.3-60", sha256="0e0675cec55b6cea87fc5776846215e0445442554684120079e66013067491ee") version("2.3-58", sha256="057fc628cde330c22b9d20365316d3632c2d217f4f2f97d39b1d1a2c93f766d0") version("2.3-57", sha256="9645d86a84d1afc12a0accf4f826fdd40e6d050a313424ad70f8085e8f19c232") diff --git a/var/spack/repos/builtin/packages/r-circlize/package.py b/var/spack/repos/builtin/packages/r-circlize/package.py index 2409a909fa5ac3..e480f4d031c79d 100644 --- a/var/spack/repos/builtin/packages/r-circlize/package.py +++ b/var/spack/repos/builtin/packages/r-circlize/package.py @@ -25,6 +25,7 @@ class RCirclize(RPackage): license("MIT") + version("0.4.16", sha256="16dc32c7704906d13a9e5281bb396e92fb89a6b17fa5e201953240726b650b67") version("0.4.15", sha256="d602d55313fe7c675109153d6ed3b99bdba5292e1deefed71d5a21e0db595cc7") version("0.4.13", sha256="6cbadbf8e8b1abbd71a79080677d2b95f2bdd18f2e4d707c32d5c2ff26c5369b") version("0.4.12", sha256="b3b60caa5292cf980cf474c85f59582f6862925631a4da86a78eac05903252f4") @@ -33,6 +34,7 @@ class RCirclize(RPackage): version("0.4.0", sha256="abdc1bbe264be42c1d7b65869979da7cd131032fd6fd3f11f9744dae54e83f5c") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.4.16:") depends_on("r-globaloptions@0.1.0:", type=("build", "run")) depends_on("r-globaloptions@0.1.2:", type=("build", "run"), when="@0.4.12:") depends_on("r-shape", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-clarabel/package.py b/var/spack/repos/builtin/packages/r-clarabel/package.py new file mode 100644 index 00000000000000..8c78cdb0e87d5f --- /dev/null +++ b/var/spack/repos/builtin/packages/r-clarabel/package.py @@ -0,0 +1,28 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RClarabel(RPackage): + """A versatile interior point solver that solves linear programs (LPs), + quadratic programs (QPs), second-order cone programs (SOCPs), semidefinite + programs (SDPs), and problems with exponential and power cone constraints + (). For quadratic objectives, unlike interior + point solvers based on the standard homogeneous self-dual embedding (HSDE) + model, 'Clarabel' handles quadratic objective without requiring any + epigraphical reformulation of its objective function. It can therefore + be significantly faster than other HSDE-based solvers for problems with + quadratic objective functions. Infeasible problems are detected using using + a homogeneous embedding technique.""" + + homepage = "https://oxfordcontrol.github.io/clarabel-r/" + cran = "clarabel" + + license("Apache-2.0", checked_by="wdconinc") + + version("0.9.0", sha256="50963022f8e5dc9d956193acf7b87194548dc4b3555bd844aa1f9f4d34f2c6bc") + + depends_on("rust", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-class/package.py b/var/spack/repos/builtin/packages/r-class/package.py index 8516aabd74339f..a55127d71da348 100644 --- a/var/spack/repos/builtin/packages/r-class/package.py +++ b/var/spack/repos/builtin/packages/r-class/package.py @@ -16,6 +16,7 @@ class RClass(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("7.3-22", sha256="b6994164e93843fcc7e08dfdc8c8b4af6a5a10ef7153d2e72a6855342508d15c") version("7.3-21", sha256="0c19404aa4d2da61a62495e788b07c8e429c4c5ee64486ea5e6dd347bcaecddf") version("7.3-20", sha256="e65b046bc72b312ff0c5dc7feba4fa3e9bc63387274d44911493782b85f65483") version("7.3-19", sha256="7820ae94b22009561a69ed1f8b2ca2a3814be6a656e9884738206997caecbe37") diff --git a/var/spack/repos/builtin/packages/r-classint/package.py b/var/spack/repos/builtin/packages/r-classint/package.py index 5eec1170fb0079..ebc37fb90d13bf 100644 --- a/var/spack/repos/builtin/packages/r-classint/package.py +++ b/var/spack/repos/builtin/packages/r-classint/package.py @@ -14,6 +14,7 @@ class RClassint(RPackage): cran = "classInt" + version("0.4-10", sha256="c3561eafbc493ac02840191d4f1e4d2ef437ca8eb20f41fc5eca28f00ee42b8b") version("0.4-9", sha256="5b11af7d08f8793c7b47ee7c68b8e371cb23027165d30abddbd8b2abcc20e1c3") version("0.4-8", sha256="6ae9617f5b71bbecfa204a4f36b5972808bafd060d87a4a5bac17f3ad2ca59b3") version("0.4-3", sha256="9ede7a2a7a6b6c114919a3315a884fb592e33b037a50a4fe45cbd4fe2fc434ac") diff --git a/var/spack/repos/builtin/packages/r-cli/package.py b/var/spack/repos/builtin/packages/r-cli/package.py index ff4540746592ae..95dd64f635eea6 100644 --- a/var/spack/repos/builtin/packages/r-cli/package.py +++ b/var/spack/repos/builtin/packages/r-cli/package.py @@ -20,6 +20,7 @@ class RCli(RPackage): license("MIT") + version("3.6.3", sha256="4295085f11221c54b1dd2b1d39a675a85dfd9f900294297567e1d36f65ac4841") version("3.6.1", sha256="be3006cec7e67f9ae25e21b4658c4bec680038c2ef7467df5f14da3311a05e36") version("3.4.1", sha256="1c585efbfd8b8685c66fac34bcb60f28c351691bb4b9931df214e6e47fd9744e") version("3.3.0", sha256="c3a9ebbcb9017fb9aeda4f7df5ca981e42b169cbd7ce13e592cda2cd74250d63") @@ -34,7 +35,7 @@ class RCli(RPackage): version("1.0.0", sha256="8fa3dbfc954ca61b8510f767ede9e8a365dac2ef95fe87c715a0f37d721b5a1d") depends_on("r@2.10:", type=("build", "run")) - depends_on("r@3,4:", type=("build", "run"), when="@3.3.0:") + depends_on("r@3.4:", type=("build", "run"), when="@3.3.0:") depends_on("r-assertthat", type=("build", "run"), when="@:2.3") depends_on("r-crayon@1.3.4:", type=("build", "run"), when="@:2.2") diff --git a/var/spack/repos/builtin/packages/r-clock/package.py b/var/spack/repos/builtin/packages/r-clock/package.py index 89ddd6dd78c8f9..628d6fd076636d 100644 --- a/var/spack/repos/builtin/packages/r-clock/package.py +++ b/var/spack/repos/builtin/packages/r-clock/package.py @@ -20,10 +20,18 @@ class RClock(RPackage): license("MIT") + version("0.7.1", sha256="432d2fc39d3f20e348f09a9b6136a02a588db585bab428d184da71bf6aa1f0d8") version("0.6.1", sha256="f80c385fd8229538968ffb71d7de53ddc82bfcec6641f8e76f299546c43c1702") depends_on("r@3.4:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@0.7.1:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@0.7.0:") + depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@0.7.0:") depends_on("r-rlang@1.0.4:", type=("build", "run")) + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@0.7.0:") depends_on("r-tzdb@0.3.0:", type=("build", "run")) + depends_on("r-tzdb@0.4.0:", type=("build", "run"), when="@0.7.0:") depends_on("r-vctrs@0.4.1:", type=("build", "run")) + depends_on("r-vctrs@0.6.1:", type=("build", "run"), when="@0.7.0:") depends_on("r-cpp11@0.4.2:", type=("build", "run")) + depends_on("r-cpp11@0.4.3:", type=("build", "run"), when="@0.7.0:") diff --git a/var/spack/repos/builtin/packages/r-clue/package.py b/var/spack/repos/builtin/packages/r-clue/package.py index ded46e1b06dce7..a7dd171c0947b7 100644 --- a/var/spack/repos/builtin/packages/r-clue/package.py +++ b/var/spack/repos/builtin/packages/r-clue/package.py @@ -13,6 +13,7 @@ class RClue(RPackage): license("GPL-2.0-only") + version("0.3-65", sha256="bdf8fdd35fb2b1c65d09766da79d930fa664a00aa497f03b636400eecb623ef8") version("0.3-64", sha256="f45cb7a84c87ddca2b9f7c2ea9505016d002e6fda23322e6d57466c7a4de28af") version("0.3-62", sha256="575a3fa2c4aa1ae5c7e35f4462f2f331d291d87916aa12f0d11f61988d5e1ed2") version("0.3-61", sha256="71311b16ce380fd9a8834be95b55b3d1b47e4ee2b8acb35b8d481138c314dc31") diff --git a/var/spack/repos/builtin/packages/r-cluster/package.py b/var/spack/repos/builtin/packages/r-cluster/package.py index 096fb45278e77f..f1e39c92bf6c65 100644 --- a/var/spack/repos/builtin/packages/r-cluster/package.py +++ b/var/spack/repos/builtin/packages/r-cluster/package.py @@ -17,6 +17,7 @@ class RCluster(RPackage): license("GPL-2.0-or-later") + version("2.1.6", sha256="d1c50efafd35a55387cc5b36086b97d5591e0b33c48dc718005d2f5907113164") version("2.1.4", sha256="c6f10ceca29a176ba833f24ebf71fd451629052c2338398ba286df5689d6f5b6") version("2.1.3", sha256="a3ad7a9455d634c4e0c6ccf8ea7a3a392a0ecf9c2bdb368d127ffa68a93164a9") version("2.1.2", sha256="5c8aa760fb6dda4fcfe6196e561ffcd2dc12b1a6c7659cb90be2cde747311499") diff --git a/var/spack/repos/builtin/packages/r-clustergeneration/package.py b/var/spack/repos/builtin/packages/r-clustergeneration/package.py index 603effe4592e1f..7a15cdce707579 100644 --- a/var/spack/repos/builtin/packages/r-clustergeneration/package.py +++ b/var/spack/repos/builtin/packages/r-clustergeneration/package.py @@ -20,6 +20,7 @@ class RClustergeneration(RPackage): cran = "clusterGeneration" + version("1.3.8", sha256="0f842256582ab41bcd00ee08ea6d7e231ff362fe0156a53347873e9636f73a70") version("1.3.7", sha256="534f29d8f7ed11e6e9a496f15845b588ec7133f3da5e6def8140b88500e52d5c") version("1.3.4", sha256="7c591ad95a8a9d7fb0e4d5d80dfd78f7d6a63cf7d11eb53dd3c98fdfb5b868aa") diff --git a/var/spack/repos/builtin/packages/r-coda/package.py b/var/spack/repos/builtin/packages/r-coda/package.py index 4824988bbbc910..28d673c5b7bbcd 100644 --- a/var/spack/repos/builtin/packages/r-coda/package.py +++ b/var/spack/repos/builtin/packages/r-coda/package.py @@ -17,10 +17,11 @@ class RCoda(RPackage): license("GPL-2.0-or-later") + version("0.19-4.1", sha256="f4b451d86fbb56ff9ade043ddd6b0944368c37d0dad12d02837750ecdc708ad6") version("0.19-4", sha256="422d3cfd34797a3631e9c4812431940599c0ca4bb9937797bed07b7b1d6fe58f") version("0.19-3", sha256="d3df1fc848bcf1af8fae13d61eeab60e99a3d4b4db384bec4326f909f502c5d6") version("0.19-2", sha256="678a7e6a87a2723089daeb780ea37ac3d4319b37eabe26928ea3fa9c9b1eda0d") version("0.19-1", sha256="d41ff5731da6805170769dba75dd011ab33f916d15b2336001f279e21a524491") - depends_on("r@2.14:", type=("build", "run")) + depends_on("r@2.14.0:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-codetools/package.py b/var/spack/repos/builtin/packages/r-codetools/package.py index a4c600538894b7..03c20803e6b947 100644 --- a/var/spack/repos/builtin/packages/r-codetools/package.py +++ b/var/spack/repos/builtin/packages/r-codetools/package.py @@ -13,6 +13,7 @@ class RCodetools(RPackage): license("GPL-2.0-or-later") + version("0.2-20", sha256="3be6f375ec178723ddfd559d1e8e85bfeee04a5fbaf9f53f2f844e1669fea863") version("0.2-19", sha256="c4b7e567c87f33dad85de92f79641e5e5b5deede6d19a9dfa47133d191782dab") version("0.2-18", sha256="1a9ea6b9792dbd1688078455929385acc3a5e4bef945c77bec1261fa4a084c28") version("0.2-16", sha256="c276757c3adabaf700f2ea25835892b09bc1bd438ebd17c805ea9073ed8a74b6") diff --git a/var/spack/repos/builtin/packages/r-coin/package.py b/var/spack/repos/builtin/packages/r-coin/package.py index 0ea41175c6c825..857799c03dd7a2 100644 --- a/var/spack/repos/builtin/packages/r-coin/package.py +++ b/var/spack/repos/builtin/packages/r-coin/package.py @@ -17,6 +17,7 @@ class RCoin(RPackage): license("GPL-2.0-only") + version("1.4-3", sha256="8a6302dbf3ef570cd9f69ce7b6cd3d3b928dc776f840bbd767af132e0080b974") version("1.4-2", sha256="7546d1f27a82d98b4b3e43e4659eba0f74a67d5919ce85d2fb360282ba3cfbb2") version("1.3-1", sha256="5de2519a6e2b059bba9d74c58085cccaff1aaaa0454586ed164a108ebd1b2062") version("1.3-0", sha256="adcebb37e0a7dfddbf8ec1e09c12a809bd76d90b5b8ff2b1048a75252ba11ef8") diff --git a/var/spack/repos/builtin/packages/r-colorspace/package.py b/var/spack/repos/builtin/packages/r-colorspace/package.py index b5d6797bda4ef3..f0c3b42f1c85f1 100644 --- a/var/spack/repos/builtin/packages/r-colorspace/package.py +++ b/var/spack/repos/builtin/packages/r-colorspace/package.py @@ -29,6 +29,7 @@ class RColorspace(RPackage): license("BSD-3-Clause") + version("2.1-1", sha256="e721cee5f4d6e4b0fc8eb18265e316b4f856fd3be02f0775a26032663758cd0b") version("2.1-0", sha256="04078abb6b54119c90dc7085d62916bf292ccb163e213f9ea70567d1be82614c") version("2.0-3", sha256="e75681cc4dd6e4b70303fd96a6d4597065dc6bffcaa4ae4244b73ff19016857f") version("2.0-2", sha256="b891cd2ec129ed5f116429345947bcaadc33969758a108521eb0cf36bd12183a") diff --git a/var/spack/repos/builtin/packages/r-commonmark/package.py b/var/spack/repos/builtin/packages/r-commonmark/package.py index e06c44e2ace496..63ca1a3691e1ee 100644 --- a/var/spack/repos/builtin/packages/r-commonmark/package.py +++ b/var/spack/repos/builtin/packages/r-commonmark/package.py @@ -20,6 +20,7 @@ class RCommonmark(RPackage): license("BSD-2-Clause") + version("1.9.1", sha256="9517a13f4ce4a99bb157493453b04419b222cb65a9471cd3b11e5045ac0db53b") version("1.9.0", sha256="6dd01a5a26c8d436486abf69c2f6ad0f8dd1c811f575c31983aeb4dbd376548f") version("1.8.1", sha256="96adcb093de3d2e48811af402da70e7222a313b97f1e979e0cbe84dd59bd5cbe") version("1.8.0", sha256="7d07e72937b1cf158e69f183722bf79dbb91b8967a9dd29f4fa145500c2be668") diff --git a/var/spack/repos/builtin/packages/r-compositions/package.py b/var/spack/repos/builtin/packages/r-compositions/package.py index 03906a4d14925f..435acef76ce519 100644 --- a/var/spack/repos/builtin/packages/r-compositions/package.py +++ b/var/spack/repos/builtin/packages/r-compositions/package.py @@ -17,6 +17,7 @@ class RCompositions(RPackage): license("GPL-2.0-or-later") + version("2.0-8", sha256="c5063488f456992b5821458b3237322addffd3451ae91f9474707886971ef290") version("2.0-6", sha256="45d374ebfdcc2c9f6cc738d196caf83a2297ed2aefe2cc99007fcbeb78a61c34") version("2.0-4", sha256="7b9c7a3bf654fb02d9eb1b4a7566469b2f5232f3b2c1b324c02239fd31060faf") version("2.0-1", sha256="84a291308faf858e5a9d9570135c2da5e57b0887f407903485fa85d09da61a0f") @@ -28,6 +29,6 @@ class RCompositions(RPackage): depends_on("r-tensora", type=("build", "run")) depends_on("r-robustbase", type=("build", "run")) depends_on("r-bayesm", type=("build", "run")) - depends_on("r-mass", type=("build", "run"), when="@2.0-1:") + depends_on("r-mass", type=("build", "run"), when="@2.0-0:") - depends_on("r-energy", type=("build", "run"), when="@:1.40-2") + depends_on("r-energy", type=("build", "run"), when="@:1.40-5") diff --git a/var/spack/repos/builtin/packages/r-consrank/package.py b/var/spack/repos/builtin/packages/r-consrank/package.py new file mode 100644 index 00000000000000..239fde3bd397ce --- /dev/null +++ b/var/spack/repos/builtin/packages/r-consrank/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RConsrank(RPackage): + """Compute the median ranking according to the Kemeny's axiomatic approach.""" + + homepage = "https://www.r-project.org/" + cran = "ConsRank" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("2.1.4", sha256="c213c6008fcb617a2144d75b41b25520ffadcf38686cc5050e10ce1363ac3000") + + depends_on("r-rgl", type=("build", "run")) + depends_on("r-rlist@0.4.2:", type=("build", "run")) + depends_on("r-proxy", type=("build", "run")) + depends_on("r-gtools", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-construct/package.py b/var/spack/repos/builtin/packages/r-construct/package.py index 14f97e5aeaac70..3b81c3cdc7b86b 100644 --- a/var/spack/repos/builtin/packages/r-construct/package.py +++ b/var/spack/repos/builtin/packages/r-construct/package.py @@ -18,6 +18,7 @@ class RConstruct(RPackage): cran = "conStruct" + version("1.0.6", sha256="110982ed8036ccefb6bf662909779521e1b9095e9e0b5b99973df23171a5b502") version("1.0.5", sha256="4d953073bd1f374a91655b4889ab1b65d92a1c89ea39eb3dac5cd852a42b8a7c") version("1.0.4", sha256="4e585b718a361061bc1432cea46fc65f802fb0ef58e4516d33e1af99bbfe90ce") version("1.0.3", sha256="b449c133a944ad05a28f84f312ed4ccbc1574c4659aa09c678618d2ae9008310") @@ -26,12 +27,14 @@ class RConstruct(RPackage): depends_on("r@3.4.0:", type=("build", "run")) depends_on("r-rcpp@0.12.0:", type=("build", "run")) depends_on("r-rstan@2.18.1:", type=("build", "run")) + depends_on("r-rstan@2.26.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-rstantools@1.5.0:", type=("build", "run")) depends_on("r-caroline", type=("build", "run")) depends_on("r-gtools", type=("build", "run")) depends_on("r-foreach", type=("build", "run")) depends_on("r-doparallel", type=("build", "run")) depends_on("r-stanheaders@2.18.0:", type=("build", "run")) + depends_on("r-stanheaders@2.26.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-bh@1.66.0:", type=("build", "run")) depends_on("r-rcppeigen@0.3.3.3.0:", type=("build", "run")) depends_on("r-rcppparallel@5.0.1:", type=("build", "run"), when="@1.0.5:") diff --git a/var/spack/repos/builtin/packages/r-convevol/package.py b/var/spack/repos/builtin/packages/r-convevol/package.py index 6dbcbc60cf8bb3..4f660abb02c5f2 100644 --- a/var/spack/repos/builtin/packages/r-convevol/package.py +++ b/var/spack/repos/builtin/packages/r-convevol/package.py @@ -18,6 +18,7 @@ class RConvevol(RPackage): license("GPL-2.0-only") + version("2.2.1", sha256="9b197d8735e61f78825ec2d81380b0f4352a3783c2c51254f4eb415ab45a9b48") version("2.0.0", sha256="690664b93c1f144a409e80b2ebfc20dc34f0eb9405607d15e066e8db573e84de") version("1.3", sha256="d6b24b9796a559f5280e277746189d141151ade4b14cc6b4c2d9d496d7f314ac") @@ -25,5 +26,7 @@ class RConvevol(RPackage): depends_on("r-ape", type=("build", "run")) depends_on("r-cluster", type=("build", "run")) depends_on("r-geiger", type=("build", "run")) - depends_on("r-mass", type=("build", "run")) + depends_on("r-magick", type=("build", "run"), when="@2.2.0:") depends_on("r-phytools", type=("build", "run")) + + depends_on("r-mass", type=("build", "run"), when="@:2.1") diff --git a/var/spack/repos/builtin/packages/r-copula/package.py b/var/spack/repos/builtin/packages/r-copula/package.py index 79f7bee3610390..c4ca7bbfcd9f71 100644 --- a/var/spack/repos/builtin/packages/r-copula/package.py +++ b/var/spack/repos/builtin/packages/r-copula/package.py @@ -26,6 +26,7 @@ class RCopula(RPackage): license("GPL-3.0-or-later OR custom") + version("1.1-4", sha256="f4d78b7f4860797620dfe15c62cbeeb319b2dbbacab75062652d467c4ef6504f") version("1.1-2", sha256="88f9454d25e4dcdf53d8ca5156daf48e664769f5e13b1e835ed64f37251587d3") version("1.1-0", sha256="9ab76e6256534db2a18d3880143b8c67e385767010de861bbde25212aa75d924") version("1.0-1", sha256="d09b2ccffc7379e48b00952aa6b282baf502feebaf55cc44e93f881d7b909742") diff --git a/var/spack/repos/builtin/packages/r-corrplot/package.py b/var/spack/repos/builtin/packages/r-corrplot/package.py index dd132968c1ab4d..8313ed99b37ff4 100644 --- a/var/spack/repos/builtin/packages/r-corrplot/package.py +++ b/var/spack/repos/builtin/packages/r-corrplot/package.py @@ -17,6 +17,7 @@ class RCorrplot(RPackage): license("MIT") + version("0.94", sha256="8e855daf7392dfec8dab7da2845b6d01e24030837a66ce7d8d4673eb0a7e55f4") version("0.92", sha256="e8c09f963f9c4837036c439ebfe00fa3a6e462ccbb786d2cf90850ddcd9428bd") version("0.84", sha256="0dce5e628ead9045580a191f60c58fd7c75b4bbfaaa3307678fc9ed550c303cc") version("0.77", sha256="54b66ff995eaf2eee3f3002509c6f27bb5bd970b0abde41893ed9387e93828d3") diff --git a/var/spack/repos/builtin/packages/r-countrycode/package.py b/var/spack/repos/builtin/packages/r-countrycode/package.py index f0a9746bc72f6d..e6fe87390dc26e 100644 --- a/var/spack/repos/builtin/packages/r-countrycode/package.py +++ b/var/spack/repos/builtin/packages/r-countrycode/package.py @@ -16,6 +16,7 @@ class RCountrycode(RPackage): license("GPL-3.0-only") + version("1.6.0", sha256="f9db110e32c0bcc90eed85303277660de37a777681bb78e8898b6fc5f2253db6") version("1.4.0", sha256="99dfe7652c1e631b9e0f8fac0b0163e7a3fdde8476498555d553e0d1c5fdccc4") version("1.3.0", sha256="34361416e771ece1d56dc56f79416c8b7f9591885773becae270684d095bc70f") version("1.2.0", sha256="32c65702dcc33d512ff99f14c12f4e0c48fe7ed7c8aa2f0a64194576d129dd40") diff --git a/var/spack/repos/builtin/packages/r-covr/package.py b/var/spack/repos/builtin/packages/r-covr/package.py index 70d3c8adc89a3c..b989c17a9f81b8 100644 --- a/var/spack/repos/builtin/packages/r-covr/package.py +++ b/var/spack/repos/builtin/packages/r-covr/package.py @@ -21,6 +21,7 @@ class RCovr(RPackage): license("MIT") + version("3.6.4", sha256="2b6204036510c629d0b1d58daaee34d4e38baf54164f8d4c9afd6d6b1fb1862a") version("3.6.2", sha256="ace68ce7516147b4d77f591a498cbd7b2803062c1b47252e7a35081af0ea485b") version("3.6.1", sha256="ffbe15438c1a4f274c14cacfb944480e284f1ab60808d5e840c015cc57c51157") version("3.5.1", sha256="a54cfc3623ea56084158ac5d7fe33f216f45191f6dcddab9c9ed4ec1d9d8ac6c") diff --git a/var/spack/repos/builtin/packages/r-cowplot/package.py b/var/spack/repos/builtin/packages/r-cowplot/package.py index a70068b2f3d8c6..3666e21891ece6 100644 --- a/var/spack/repos/builtin/packages/r-cowplot/package.py +++ b/var/spack/repos/builtin/packages/r-cowplot/package.py @@ -21,6 +21,7 @@ class RCowplot(RPackage): license("GPL-2.0-only") + version("1.1.3", sha256="8756971af5c50381cf00ec7ed622fd5cf3d70f534bdfa3ebadd157b5aef5b273") version("1.1.1", sha256="c7dce625b456dffc59ba100c816e16226048d12fdd29a7335dc1f6f6e12eed48") version("1.0.0", sha256="70f9a7c46d10f409d1599f1afc9fd3c947051cf2b430f01d903c64ef1e6c98a5") version("0.9.3", sha256="3e10475fd7506ea9297ed72eb1a3acf858c6fa99d26e46fc39654eba000c3dcb") @@ -33,6 +34,7 @@ class RCowplot(RPackage): depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-ggplot2@2.1.1:", type=("build", "run")) depends_on("r-ggplot2@2.2.1:", type=("build", "run"), when="@1.1.1:") + depends_on("r-ggplot2@3.4.0:", type=("build", "run"), when="@1.1.2:") depends_on("r-gtable", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@1.0.0:") depends_on("r-scales", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-cpp11/package.py b/var/spack/repos/builtin/packages/r-cpp11/package.py index 4a36d4ce113448..5bbad8485e760f 100644 --- a/var/spack/repos/builtin/packages/r-cpp11/package.py +++ b/var/spack/repos/builtin/packages/r-cpp11/package.py @@ -18,7 +18,10 @@ class RCpp11(RPackage): license("MIT") + version("0.4.7", sha256="801d1266824c3972642bce2db2a5fd0528a65ec845c58eb5a886edf082264344") version("0.4.3", sha256="f1a60e4971a86dbbcf6a16bbd739b59bb66d9c45d93cfd8dedc2a87e302598f1") version("0.4.2", sha256="403ce0bf82358d237176053b0fb1e958cb6bfa4d0fb3555bf5801db6a6939b99") version("0.4.0", sha256="1768fd07dc30dfbbf8f3fb1a1183947cb7e1dfd909165c4d612a63c163a41e87") version("0.2.5", sha256="6fef9306c0c3043252c987e77c99ef679b2ea46dffafae318dbeb38ad21a2e20") + + depends_on("r@3.5.0:", when="@0.4.6:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-crayon/package.py b/var/spack/repos/builtin/packages/r-crayon/package.py index 23db2f98c1a514..087de49d926ef8 100644 --- a/var/spack/repos/builtin/packages/r-crayon/package.py +++ b/var/spack/repos/builtin/packages/r-crayon/package.py @@ -19,6 +19,7 @@ class RCrayon(RPackage): license("MIT") + version("1.5.3", sha256="3e74a0685541efb5ea763b92cfd5c859df71c46b0605967a0b5dbb7326e9da69") version("1.5.2", sha256="70a9a505b5b3c0ee6682ad8b965e28b7e24d9f942160d0a2bad18eec22b45a7a") version("1.5.1", sha256="c025c73b78a8e88e8e4363c8e1a941da5089a7baea39e59ea5342ab9ebe45df9") version("1.4.2", sha256="ee34397f643e76e30588068d4c93bd3c9afd2193deacccacb3bffcadf141b857") diff --git a/var/spack/repos/builtin/packages/r-credentials/package.py b/var/spack/repos/builtin/packages/r-credentials/package.py index 8ac8114ba6a88c..42f4e0ea427aa2 100644 --- a/var/spack/repos/builtin/packages/r-credentials/package.py +++ b/var/spack/repos/builtin/packages/r-credentials/package.py @@ -21,6 +21,7 @@ class RCredentials(RPackage): license("MIT") + version("2.0.1", sha256="2c7cfc45bd4afa9a2c2b85d43e907b212da3468781e1b617737bd095253c358b") version("1.3.2", sha256="2ffa7c11bedbfa034adf553d0a2f2e4f6a496b858af753a09a89219cff9028b8") version("1.3.0", sha256="c119ec26fd97b977c3b0cd1eb8fad3c59b84df6262c3adbf5ee9f3d6c9903ff1") diff --git a/var/spack/repos/builtin/packages/r-crosstalk/package.py b/var/spack/repos/builtin/packages/r-crosstalk/package.py index 1009261d8ce7d9..352064eb784a87 100644 --- a/var/spack/repos/builtin/packages/r-crosstalk/package.py +++ b/var/spack/repos/builtin/packages/r-crosstalk/package.py @@ -17,6 +17,7 @@ class RCrosstalk(RPackage): license("MIT") + version("1.2.1", sha256="680cf08416d6d5a1194dd85ee5695c268af9d4d01b201448e1d486c6e06014f1") version("1.2.0", sha256="4237baab35cd246a8a98fb9cf4ce53b6ddbc31d00742ded4edea0479613d1ea0") version("1.1.0.1", sha256="36a70b10bc11826e314c05f9579fd791b9ac3b3a2cfed4d4ca74ce1ad991300e") version("1.0.0", sha256="b31eada24cac26f24c9763d9a8cbe0adfd87b264cf57f8725027fe0c7742ca51") diff --git a/var/spack/repos/builtin/packages/r-crul/package.py b/var/spack/repos/builtin/packages/r-crul/package.py index c7e94bb9af06da..ac399ca1e4713e 100644 --- a/var/spack/repos/builtin/packages/r-crul/package.py +++ b/var/spack/repos/builtin/packages/r-crul/package.py @@ -20,6 +20,7 @@ class RCrul(RPackage): license("MIT") + version("1.5.0", sha256="db733778d2815f9d974b00e8df7c821cd638e069e08d73adfa606add201ebd9d") version("1.3", sha256="8058617d8b3724acb5b89d0e6e63f381df5c56565128b250a65eceb2b8081e2d") version("1.2.0", sha256="be1a149b21cf219ef55adfb56a6a5eb9892a9acf0d5f5421a22e52f2a7066f8c") version("1.0.0", sha256="2ade500f6cf89b2d0ca8496b8d4df9937d6f802a35c9ad10d9fab8632cdb1027") diff --git a/var/spack/repos/builtin/packages/r-cubature/package.py b/var/spack/repos/builtin/packages/r-cubature/package.py index 23a01172eb0065..d00dfb9d66a437 100644 --- a/var/spack/repos/builtin/packages/r-cubature/package.py +++ b/var/spack/repos/builtin/packages/r-cubature/package.py @@ -20,6 +20,7 @@ class RCubature(RPackage): license("GPL-3.0-only") + version("2.1.1", sha256="b37220e733f4e610e089e69896f66dc5bc461478a040321c19600ec5d07ea684") version("2.0.4.6", sha256="330c9dc2be9bf6815473fd40efa8c2de47c1ed286cb097d0ff846b56c9e9f95a") version("2.0.4.5", sha256="a81f118e5b7950a4a29e5509f8a40d7b87544fb25783917242000561379c9023") version("2.0.4.4", sha256="087b3b2c4f25d873fa95e9d38766a17a7201d03a6f4960f1e080a8db8b67d569") diff --git a/var/spack/repos/builtin/packages/r-cubist/package.py b/var/spack/repos/builtin/packages/r-cubist/package.py index 1a753e92853b01..5467bc8701a8e1 100644 --- a/var/spack/repos/builtin/packages/r-cubist/package.py +++ b/var/spack/repos/builtin/packages/r-cubist/package.py @@ -13,6 +13,7 @@ class RCubist(RPackage): cran = "Cubist" + version("0.4.4", sha256="51d5fff104b69de75e08a3e14eaf67ff13ffda5be4b60f79236793475c241590") version("0.4.2.1", sha256="f07afed59019a3febc04acc3e58728e42b42910940a1d529f9fc482931d09157") version("0.4.0", sha256="3a1f74d44300e3a38a10e3693fc019cfcca221d62d7c416abebb20811e965578") version("0.3.0", sha256="88a76e7f858a8e978a73a97ce6a3504201d889517b39ce862cef734dcf9eb263") diff --git a/var/spack/repos/builtin/packages/r-curl/package.py b/var/spack/repos/builtin/packages/r-curl/package.py index 20b768c144e07b..c9a7978dd28100 100644 --- a/var/spack/repos/builtin/packages/r-curl/package.py +++ b/var/spack/repos/builtin/packages/r-curl/package.py @@ -23,6 +23,7 @@ class RCurl(RPackage): license("MIT") + version("5.2.1", sha256="4a7a4d8c08aa1bca2fcd9c58ade7b4b0ea2ed9076d0521071be29baac8adfa90") version("5.0.0", sha256="d7f3cac9b513914ffa8f6f64e6fa5dd96c8273378ace6b0c16b71bc6ba59c9b2") version("4.3.3", sha256="3567b6acad40dad68acfe07511c853824839d451a50219a96dd6d125ed617c9e") version("4.3.2", sha256="90b1facb4be8b6315bb3d272ba2dd90b88973f6ea1ab7f439550230f8500a568") diff --git a/var/spack/repos/builtin/packages/r-cvxr/package.py b/var/spack/repos/builtin/packages/r-cvxr/package.py index 20ace982f7755c..d12dc088cf45ed 100644 --- a/var/spack/repos/builtin/packages/r-cvxr/package.py +++ b/var/spack/repos/builtin/packages/r-cvxr/package.py @@ -22,13 +22,15 @@ class RCvxr(RPackage): license("Apache-2.0") + version("1.0-14", sha256="4d027cc2b933720ded4edcc098fde1259992673825abdb109fd84fee4af57cdb") version("1.0-11", sha256="e92a9638f35f4909e2a29c3b7106081e3dae7ff88b14bb6466b87fbdc80b972a") depends_on("r@3.4.0:", type=("build", "run")) depends_on("r-r6", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) - depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rcpp@0.12.12:", type=("build", "run")) depends_on("r-bit64", type=("build", "run")) + depends_on("r-clarabel@0.9.0:", type=("build", "run"), when="@1.0-14:") depends_on("r-gmp", type=("build", "run")) depends_on("r-rmpfr", type=("build", "run")) depends_on("r-ecosolver@0.5.4:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-data-table/package.py b/var/spack/repos/builtin/packages/r-data-table/package.py index 425c739112781e..c80fffb70863d6 100644 --- a/var/spack/repos/builtin/packages/r-data-table/package.py +++ b/var/spack/repos/builtin/packages/r-data-table/package.py @@ -18,6 +18,7 @@ class RDataTable(RPackage): license("MPL-2.0-no-copyleft-exception") + version("1.15.4", sha256="ab8065ff946d59ecaaf5eaf91a975495c07c30caad97a71205c72e41a740cb53") version("1.14.8", sha256="14b2ce5367df9c9bb58f373555066f5dcb629c156149b5565de36d69557139fd") version("1.14.4", sha256="4862a7c26e8309108fd1f5296616407b9ff9e4e1be5cdedcb717f114c2e348f0") version("1.14.2", sha256="f741b951e5937440139514aedbae78dbd6862d825066848bdb006aa02c2f3d2b") diff --git a/var/spack/repos/builtin/packages/r-dbi/package.py b/var/spack/repos/builtin/packages/r-dbi/package.py index bab7446c766bc7..1eafed4f136ba7 100644 --- a/var/spack/repos/builtin/packages/r-dbi/package.py +++ b/var/spack/repos/builtin/packages/r-dbi/package.py @@ -15,6 +15,7 @@ class RDbi(RPackage): cran = "DBI" + version("1.2.3", sha256="cf6708a7566a80929f06575aa345fae354714159ed5fab5db14306fc5d0d2dbe") version("1.1.3", sha256="38bb33753da5bddb78893a5228a5d269dae3bf16f21dc5d9853ac9c24d31428d") version("1.1.2", sha256="56ec377d471c76ac234ddfd313bd01a050c99fb6fa5f704f5333b34a5d714f58") version("1.1.1", sha256="572ab3b8a6421d0ac3e7665c4c842826f1723af98fca25d4f43edb419e771344") diff --git a/var/spack/repos/builtin/packages/r-dbplyr/package.py b/var/spack/repos/builtin/packages/r-dbplyr/package.py index 5841bc5e46143a..566669b469d76d 100644 --- a/var/spack/repos/builtin/packages/r-dbplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dbplyr/package.py @@ -18,6 +18,7 @@ class RDbplyr(RPackage): license("MIT") + version("2.5.0", sha256="bb475bdbe89487b189ecc257b5c92007a7458803c81aa77bfc4ed46f5f24bcff") version("2.3.2", sha256="0ddc00595ec6b21962d0bb6f470f5f7c9d61c74a4f92681a37e94e1295707fac") version("2.2.1", sha256="a6f3f644c068fe1a3b3e99a3a10de55a150d43ef20b5130e6724d142afcb0df7") version("2.1.1", sha256="aba4cf47b85ab240fd3ec4cd8d512f6e1958201e151577c1a2ebc3d6ebc5bc08") @@ -30,34 +31,45 @@ class RDbplyr(RPackage): version("1.1.0", sha256="7b1e456a2d1056fa6284582cd82d2df66d06b3eea92e9995f5a91a45f246f69d") depends_on("r@3.1:", type=("build", "run")) + depends_on("r@3.6:", type=("build", "run"), when="@2.4.0:") depends_on("r-blob@1.2.0:", type=("build", "run"), when="@2.0.0:") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@2.2.1:") depends_on("r-cli@3.4.1:", type=("build", "run"), when="@2.3.2:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-dbi@1.0.0:", type=("build", "run")) + depends_on("r-dbi@1.1.3:", type=("build", "run"), when="@2.4.0:") depends_on("r-dplyr@0.8.0:", type=("build", "run")) depends_on("r-dplyr@1.0.3:", type=("build", "run"), when="@2.1.0") depends_on("r-dplyr@1.0.4:", type=("build", "run"), when="@2.1.1:") depends_on("r-dplyr@1.0.9:", type=("build", "run"), when="@2.2.1:") depends_on("r-dplyr@1.1.0:", type=("build", "run"), when="@2.3.2:") + depends_on("r-dplyr@1.1.2:", type=("build", "run"), when="@2.4.0:") depends_on("r-glue@1.2.0:", type=("build", "run")) + depends_on("r-glue@1.6.2:", type=("build", "run"), when="@2.4.0:") depends_on("r-lifecycle", type=("build", "run"), when="@2.0.0:") depends_on("r-lifecycle@1.0.0:", type=("build", "run"), when="@2.1.1:") depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@2.3.2:") depends_on("r-magrittr", type=("build", "run"), when="@2.0.0:") depends_on("r-pillar@1.5.0:", type=("build", "run"), when="@2.2.1:") + depends_on("r-pillar@1.9.0:", type=("build", "run"), when="@2.4.0:") depends_on("r-purrr@0.2.5:", type=("build", "run")) depends_on("r-purrr@1.0.1:", type=("build", "run"), when="@2.3.2:") depends_on("r-r6@2.2.2:", type=("build", "run")) depends_on("r-rlang@0.2.0:", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@2.2.1:") depends_on("r-rlang@1.0.6:", type=("build", "run"), when="@2.3.2:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-tibble@1.4.2:", type=("build", "run")) + depends_on("r-tibble@3.2.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-tidyr@1.3.0:", type=("build", "run"), when="@2.3.2:") depends_on("r-tidyselect@0.2.4:", type=("build", "run")) depends_on("r-tidyselect@1.2.0:", type=("build", "run"), when="@2.3.2:") + depends_on("r-tidyselect@1.2.1:", type=("build", "run"), when="@2.4.0:") depends_on("r-vctrs", type=("build", "run"), when="@2.1:") depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@2.2.1:") depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@2.3.2:") + depends_on("r-vctrs@0.6.3:", type=("build", "run"), when="@2.4.0:") depends_on("r-withr", type=("build", "run"), when="@2.0.0:") + depends_on("r-withr@2.5.0:", type=("build", "run"), when="@2.4.0:") depends_on("r-ellipsis", type=("build", "run"), when="@2.1.1") depends_on("r-assertthat", type=("build", "run"), when="@:2.2.1") diff --git a/var/spack/repos/builtin/packages/r-debugme/package.py b/var/spack/repos/builtin/packages/r-debugme/package.py index d17b8edc7477a6..f74474f44401b3 100644 --- a/var/spack/repos/builtin/packages/r-debugme/package.py +++ b/var/spack/repos/builtin/packages/r-debugme/package.py @@ -16,6 +16,8 @@ class RDebugme(RPackage): license("MIT") + version("1.2.0", sha256="b22605ad3b20d460308d8c9c18116e56c4d6ff10577608eaf58802998171f099") version("1.1.0", sha256="4dae0e2450d6689a6eab560e36f8a7c63853abbab64994028220b8fd4b793ab1") + depends_on("r@3.6:", type=("build", "run"), when="@1.2.0:") depends_on("r-crayon", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-deldir/package.py b/var/spack/repos/builtin/packages/r-deldir/package.py index 4bc422d960cefa..32d433d942d9b0 100644 --- a/var/spack/repos/builtin/packages/r-deldir/package.py +++ b/var/spack/repos/builtin/packages/r-deldir/package.py @@ -19,6 +19,7 @@ class RDeldir(RPackage): license("GPL-2.0-or-later") + version("2.0-4", sha256="d418acb28ec3707b6d64c7466d0cefbb49b098537f37558d8f7a5befd34a4653") version("1.0-6", sha256="6df6d8325c607e0b7d63cbc53c29e774eff95ad4acf9c7ec8f70693b0505f8c5") version("0.2-3", sha256="2d24800f5ec6ad9dc57b9b265365b29c07717f4562d8f3e6344336d3340c364e") version("0.1-23", sha256="e0112bce9fc94daf73596a0fff9b3958b80872e3bbb487be73e157b13a6f201d") diff --git a/var/spack/repos/builtin/packages/r-deoptimr/package.py b/var/spack/repos/builtin/packages/r-deoptimr/package.py index d2de5443815614..8fcfa4dfa7a701 100644 --- a/var/spack/repos/builtin/packages/r-deoptimr/package.py +++ b/var/spack/repos/builtin/packages/r-deoptimr/package.py @@ -19,6 +19,7 @@ class RDeoptimr(RPackage): cran = "DEoptimR" + version("1.1-3", sha256="8dd8a61b07b02022493d7021dc62ef2c4dc2d596cff897846713c5f8dd784694") version("1.0-12", sha256="6136f98031bceaa691c5725222eca2d0f750a7b7fb60216480633635a9613d79") version("1.0-11", sha256="1874b30f4b75f9bfa891986598f1ebe1fce27fdced14f8f417d3535cac08165b") version("1.0-10", sha256="774f7ba0ac9c73aaab4567024b98afdb58098905726e72bceeeb9e380e782ad5") diff --git a/var/spack/repos/builtin/packages/r-desc/package.py b/var/spack/repos/builtin/packages/r-desc/package.py index 2fb79bce33298f..c56459871e19b8 100644 --- a/var/spack/repos/builtin/packages/r-desc/package.py +++ b/var/spack/repos/builtin/packages/r-desc/package.py @@ -16,6 +16,7 @@ class RDesc(RPackage): license("MIT") + version("1.4.3", sha256="54468da73dd78fc9e7c565c41cfe3331802c2134b2e61a9ad197215317092f26") version("1.4.2", sha256="758acf14be478c09ba7e84ade3a7ce512becf35d44e5e6a997b932065f2a227c") version("1.4.1", sha256="8f9ebb51eccf925b2e76bc65ecf495e8f3882b8c0053023f396622f0402d6f54") version("1.4.0", sha256="8220e4c706449b8121b822e70b1414f391ef419aed574836a234c63b83e5d649") @@ -25,7 +26,7 @@ class RDesc(RPackage): depends_on("r@3.4:", type=("build", "run"), when="@1.4.1:") depends_on("r-cli", type=("build", "run"), when="@1.4.1:") depends_on("r-r6", type=("build", "run")) - depends_on("r-rprojroot", type=("build", "run")) + depends_on("r-rprojroot", type=("build", "run"), when="@:1.4.2") depends_on("r-assertthat", type=("build", "run"), when="@:1.2") depends_on("r-crayon", type=("build", "run"), when="@:1.4.0") diff --git a/var/spack/repos/builtin/packages/r-desolve/package.py b/var/spack/repos/builtin/packages/r-desolve/package.py index 45407eb75ae902..2b64e6e85b1f13 100644 --- a/var/spack/repos/builtin/packages/r-desolve/package.py +++ b/var/spack/repos/builtin/packages/r-desolve/package.py @@ -23,6 +23,7 @@ class RDesolve(RPackage): cran = "deSolve" + version("1.40", sha256="8c09ae6bb6875b569b9844eede30b790f39fc227f5c9d045fa63ce1b22f500ef") version("1.35", sha256="96f17f497713754f84ff56c3538c6d05b9f5229f9a2a32aafec7d7cdc721d488") version("1.34", sha256="2254305f44dde22ac685fef4c60e29a0608af0197c803107365d1d80b75c9f21") version("1.33", sha256="71de979e05ce7e472308ac5218e97efe976051364ba579b10940dc1fe4c8b684") diff --git a/var/spack/repos/builtin/packages/r-diagrammer/package.py b/var/spack/repos/builtin/packages/r-diagrammer/package.py index 4e71673b051285..76de9e965df287 100644 --- a/var/spack/repos/builtin/packages/r-diagrammer/package.py +++ b/var/spack/repos/builtin/packages/r-diagrammer/package.py @@ -18,6 +18,7 @@ class RDiagrammer(RPackage): cran = "DiagrammeR" + version("1.0.11", sha256="e873e3d6e198232408161661001ddcb04c9a56065bb4703c925e538462f4c4df") version("1.0.9", sha256="64a426fe27110dddd8b0c1223ae4c397a2e553ae5e81ddd4ff67c026cfc40abf") version("1.0.8", sha256="b9157b26215edda4fe0a1b9330a597d5b01a5d7e660a9832f593b87c584dd233") version("1.0.7", sha256="6af291a7136657b9f7c67b96cd7f3afe99662cf5a477ebbb213a6c53df623050") @@ -28,10 +29,10 @@ class RDiagrammer(RPackage): depends_on("r@3.2.0:", type=("build", "run"), when="@0.9.2:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.7") + depends_on("r-cli", type=("build", "run"), when="@1.0.11:") depends_on("r-dplyr@0.7.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-dplyr@0.7.6:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-dplyr@1.0.7:", type=("build", "run"), when="@1.0.7:") - depends_on("r-downloader@0.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-glue@1.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-glue@1.3.0:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-glue@1.5.0:", type=("build", "run"), when="@1.0.7:") @@ -43,8 +44,7 @@ class RDiagrammer(RPackage): depends_on("r-igraph@1.1.2:", type=("build", "run")) depends_on("r-igraph@1.2.2:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-igraph@1.2.11:", type=("build", "run"), when="@1.0.7:") - depends_on("r-influencer@0.1.0:", type=("build", "run")) - depends_on("r-influencer@0.1.0.1:", type=("build", "run"), when="@1.0.7:") + depends_on("r-igraph@1.4.0:", type=("build", "run"), when="@1.0.11:") depends_on("r-magrittr@1.5:", type=("build", "run"), when="@1.0.0:") depends_on("r-purrr@0.2.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-purrr@0.2.5:", type=("build", "run"), when="@1.0.6.1:") @@ -55,6 +55,7 @@ class RDiagrammer(RPackage): depends_on("r-rlang@0.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-rlang@0.2.2:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-rlang@0.4:", type=("build", "run"), when="@1.0.7:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.11:") depends_on("r-rstudioapi@0.7:", type=("build", "run")) depends_on("r-scales@0.5.0:", type=("build", "run")) depends_on("r-scales@1.0.0:", type=("build", "run"), when="@1.0.6.1:") @@ -67,11 +68,15 @@ class RDiagrammer(RPackage): depends_on("r-tidyr@0.8.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-tidyr@0.8.1:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-tidyr@1.1:", type=("build", "run"), when="@1.0.7:") - depends_on("r-viridis@0.5.0:", type=("build", "run"), when="@1.0.0:") - depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@1.0.6.1:") - depends_on("r-viridis@0.6.2:", type=("build", "run"), when="@1.0.7:") + depends_on("r-viridislite@0.4.2:", type=("build", "run"), when="@1.0.11:") depends_on("r-visnetwork@2.0.3:", type=("build", "run")) depends_on("r-visnetwork@2.0.4:", type=("build", "run"), when="@1.0.6.1:") depends_on("r-visnetwork@2.1.0:", type=("build", "run"), when="@1.0.7:") + depends_on("r-downloader@0.4:", type=("build", "run"), when="@1.0.0:1.0.10") + depends_on("r-influencer@0.1.0:", type=("build", "run"), when="@:1.0.9") + depends_on("r-influencer@0.1.0.1:", type=("build", "run"), when="@1.0.7:1.0.9") + depends_on("r-viridis@0.5.0:", type=("build", "run"), when="@1.0.0:1.0.10") + depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@1.0.6.1:1.0.10") + depends_on("r-viridis@0.6.2:", type=("build", "run"), when="@1.0.7:1.0.10") depends_on("r-rgexf@0.15.3:", type=("build", "run"), when="@1.0.0:1.0.1") diff --git a/var/spack/repos/builtin/packages/r-digest/package.py b/var/spack/repos/builtin/packages/r-digest/package.py index 48150288b8933d..e41ec4e9dfd3d0 100644 --- a/var/spack/repos/builtin/packages/r-digest/package.py +++ b/var/spack/repos/builtin/packages/r-digest/package.py @@ -30,6 +30,7 @@ class RDigest(RPackage): license("GPL-2.0-or-later") + version("0.6.37", sha256="82c4d149994b8a4a9af930f5a8e47420829935abed41f3f9030e94b6a48f0321") version("0.6.31", sha256="5a284f490eaca6750f695f00a584cfca3f180ca1046ac1107202141149d431b9") version("0.6.30", sha256="7b8059943be7dba6053268dfcc229de1bb0b55db497b2943541a6abace076aa7") version("0.6.29", sha256="792c1f14a4c8047745152f5e45ce7351978af8d770c29d2ea39c7acd5d619cd9") diff --git a/var/spack/repos/builtin/packages/r-diptest/package.py b/var/spack/repos/builtin/packages/r-diptest/package.py index c862c0b74dbd63..30f2f17795fbeb 100644 --- a/var/spack/repos/builtin/packages/r-diptest/package.py +++ b/var/spack/repos/builtin/packages/r-diptest/package.py @@ -17,5 +17,6 @@ class RDiptest(RPackage): license("GPL-2.0-or-later") + version("0.77-1", sha256="224eae00f483ce0fb131719065667227417cc98ad2beda55bfd5efe2bb612813") version("0.76-0", sha256="508a5ebb161519cd0fcd156dc047b51becb216d545d62c6522496463f94ec280") version("0.75-7", sha256="462900100ca598ef21dbe566bf1ab2ce7c49cdeab6b7a600a50489b05f61b61b") diff --git a/var/spack/repos/builtin/packages/r-dismo/package.py b/var/spack/repos/builtin/packages/r-dismo/package.py index 93aedbad8f5705..0e2778904d45d0 100644 --- a/var/spack/repos/builtin/packages/r-dismo/package.py +++ b/var/spack/repos/builtin/packages/r-dismo/package.py @@ -17,6 +17,7 @@ class RDismo(RPackage): license("GPL-3.0-or-later") + version("1.3-14", sha256="67a0f2e95562dd2aa612d52dfffab86985b52591a5ed7891b58b26667b394cd7") version("1.3-9", sha256="3924521db67716b004a4c870985c65d037edfe926b14222740fd6c2b2093beee") version("1.3-5", sha256="812e1932d42c0f40acf2ab5c5b2d068f93128caf648626e1d11baf1a09340ee7") version("1.3-3", sha256="fd65331ac18a4287ba0856b90508ddd0e2738c653eecc5f3eb2b14e1d06949ca") diff --git a/var/spack/repos/builtin/packages/r-distributional/package.py b/var/spack/repos/builtin/packages/r-distributional/package.py index 524f21bd63874b..7daba35a5cbb47 100644 --- a/var/spack/repos/builtin/packages/r-distributional/package.py +++ b/var/spack/repos/builtin/packages/r-distributional/package.py @@ -21,6 +21,7 @@ class RDistributional(RPackage): license("GPL-3.0-only") + version("0.4.0", sha256="09b5f3279bed4c79575f75d5f7f5e3e593c7838434a78c89f0b7184e8f20e602") version("0.3.2", sha256="c883d633398233aee5a8ca6b587687f765bdfe0732a84e4961e7f71ac0d008f8") version("0.3.1", sha256="727e56cbcf0c8a8adacca8030214ddbd14f68ee28d0aad716467bd68b027235f") version("0.3.0", sha256="fab36c7346617d8f2ca4b3cd0e3c9da93cb2f95fb7f102a3ae88670e694751d6") @@ -30,9 +31,10 @@ class RDistributional(RPackage): depends_on("r-rlang@0.4.5:", type=("build", "run")) depends_on("r-generics", type=("build", "run")) depends_on("r-numderiv", type=("build", "run")) - depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-scales", type=("build", "run")) - depends_on("r-farver", type=("build", "run")) - depends_on("r-digest", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run")) + + depends_on("r-ggplot2", type=("build", "run"), when="@:0.3.2") + depends_on("r-scales", type=("build", "run"), when="@:0.3.2") + depends_on("r-farver", type=("build", "run"), when="@:0.3.2") + depends_on("r-digest", type=("build", "run"), when="@:0.3.2") depends_on("r-ellipsis", type=("build", "run"), when="@:0.3.0") diff --git a/var/spack/repos/builtin/packages/r-diversitree/package.py b/var/spack/repos/builtin/packages/r-diversitree/package.py index 4b3d646833192c..9960ba3b24c41f 100644 --- a/var/spack/repos/builtin/packages/r-diversitree/package.py +++ b/var/spack/repos/builtin/packages/r-diversitree/package.py @@ -21,6 +21,7 @@ class RDiversitree(RPackage): license("GPL-2.0-or-later") + version("0.10-0", sha256="c13627e04bc55b61de218a6bf6fa44680970604f82eed88417d1de5717d782f6") version("0.9-16", sha256="4c236970b58e56b922352f3f5d97010c74d8ec5783b375c311fe11abfb99f967") version("0.9-15", sha256="c739ef3d4fcc24fd6855b1d297d31e0f89fbaff1efe8a2d149044458ecd363ea") version("0.9-11", sha256="4caa6a468f93de9f1c8c30e4457f34bb8346e1acdaf74f684005bfa86a950ecb") diff --git a/var/spack/repos/builtin/packages/r-doby/package.py b/var/spack/repos/builtin/packages/r-doby/package.py index 8c7015b84464a4..9f989aca41cd1f 100644 --- a/var/spack/repos/builtin/packages/r-doby/package.py +++ b/var/spack/repos/builtin/packages/r-doby/package.py @@ -16,16 +16,25 @@ class RDoby(RPackage): cran = "doBy" + version("4.6.22", sha256="2aa7e236de98af73de54a46214ceac50fdf69d90b12bb37f2779a501f40b0b0d") version("4.6.16", sha256="d5937eb57d293b0bc2e581ff2e1e628671cb4eacddc0b9574dc28a5316ecbbe7") depends_on("r@3.6.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@4.6.18:") + depends_on("r@4.2.0:", type=("build", "run"), when="@4.6.21:") + depends_on("r-boot", type=("build", "run"), when="@4.6.21:") depends_on("r-broom", type=("build", "run")) + depends_on("r-cowplot", type=("build", "run"), when="@4.6.21:") depends_on("r-deriv", type=("build", "run")) depends_on("r-dplyr", type=("build", "run")) depends_on("r-ggplot2", type=("build", "run")) depends_on("r-mass", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) depends_on("r-microbenchmark", type=("build", "run")) - depends_on("r-pbkrtest@0.4-8.1:", type=("build", "run")) + depends_on("r-modelr", type=("build", "run"), when="@4.6.21:") + depends_on("r-rlang", type=("build", "run"), when="@4.6.21:") depends_on("r-tibble", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run"), when="@4.6.21:") + + depends_on("r-magrittr", type=("build", "run"), when="@:4.6.20") + depends_on("r-pbkrtest@0.4-8.1:", type=("build", "run"), when="@:4.6.21") diff --git a/var/spack/repos/builtin/packages/r-dotcall64/package.py b/var/spack/repos/builtin/packages/r-dotcall64/package.py index 5c78fcd8358243..7a7a3864f9f14f 100644 --- a/var/spack/repos/builtin/packages/r-dotcall64/package.py +++ b/var/spack/repos/builtin/packages/r-dotcall64/package.py @@ -18,6 +18,7 @@ class RDotcall64(RPackage): cran = "dotCall64" + version("1.1-1", sha256="21b8d7d747c07aaf8a82d61ec98fe0539afcaa5a565d9c2fc55be65b6af2c91b") version("1.0-2", sha256="e0c7728aebbea5ebf06dfeefae4fc0a240e6dde7c2bf13f2ed041b91d337a4ac") version("1.0-1", sha256="f10b28fcffb9453b1d8888a72c8fd2112038b5ac33e02a481492c7bd249aa5c6") version("1.0-0", sha256="69318dc6b8aecc54d4f789c8105e672198363b395f1a764ebaeb54c0473d17ad") diff --git a/var/spack/repos/builtin/packages/r-downlit/package.py b/var/spack/repos/builtin/packages/r-downlit/package.py index 5a2e92028e3ebc..a6930c886134dd 100644 --- a/var/spack/repos/builtin/packages/r-downlit/package.py +++ b/var/spack/repos/builtin/packages/r-downlit/package.py @@ -18,9 +18,11 @@ class RDownlit(RPackage): license("MIT") + version("0.4.4", sha256="55c377dcee4adc48c1060e14079f3d1832453d066a2cf070530caa210c48f828") version("0.4.2", sha256="33dff66909104d1a5ba8e57b1288986e82b61fd5e91dce0cd358d53724b37e3c") depends_on("r@3.4.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.4.4:") depends_on("r-brio", type=("build", "run")) depends_on("r-desc", type=("build", "run")) depends_on("r-digest", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-dplyr/package.py b/var/spack/repos/builtin/packages/r-dplyr/package.py index edd2e01091e8c2..85d7aff1f78b78 100644 --- a/var/spack/repos/builtin/packages/r-dplyr/package.py +++ b/var/spack/repos/builtin/packages/r-dplyr/package.py @@ -16,6 +16,7 @@ class RDplyr(RPackage): license("MIT") + version("1.1.4", sha256="cf730414d5d4ab387b4e9890a4b1df9d17a3903488e8da8df1cf2e11e44558cb") version("1.1.2", sha256="c220c38a3a44977c43eeae3d9aef90e8bb297150cad0993ea8d3cc13150096e3") version("1.0.10", sha256="3ab639f627b4e439052df18f193f0ccab223225a4ae2ff8c18aba4f9807e0f2b") version("1.0.9", sha256="e2e1f7312618b4e32ada9a1da79cef32eaec12acd408c973a6b069c6be4fb46b") @@ -63,6 +64,7 @@ class RDplyr(RPackage): depends_on("r-vctrs@0.3.5:", type=("build", "run"), when="@1.0.3:") depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@1.0.9:") depends_on("r-vctrs@0.6.0:", type=("build", "run"), when="@1.1.2:") + depends_on("r-vctrs@0.6.4:", type=("build", "run"), when="@1.1.4:") depends_on("r-pillar@1.5.1:", type=("build", "run"), when="@1.0.6:") depends_on("r-pillar@1.9.0:", type=("build", "run"), when="@1.1.2:") diff --git a/var/spack/repos/builtin/packages/r-dqrng/package.py b/var/spack/repos/builtin/packages/r-dqrng/package.py index 51a7793a1b342a..f85215b4c79aa9 100644 --- a/var/spack/repos/builtin/packages/r-dqrng/package.py +++ b/var/spack/repos/builtin/packages/r-dqrng/package.py @@ -26,10 +26,12 @@ class RDqrng(RPackage): license("AGPL-3.0-only OR custom") + version("0.4.1", sha256="3d9df935020c3c2538bc712456079925c4b379d67407c83fbc008340e353288f") version("0.3.0", sha256="4beeabfe245ce7196b07369f2a7d277cb08869ad8b45a22c6354c4cc70a39abb") version("0.2.1", sha256="e149c105b1db31e7f46b1aebf31d911a109e380923f3696fc56a53197fc1e866") depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@0.3.1:") depends_on("r-rcpp@0.12.16:", type=("build", "run")) depends_on("r-bh@1.64.0-1:", type=("build", "run")) depends_on("r-sitmo@2.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-dt/package.py b/var/spack/repos/builtin/packages/r-dt/package.py index 3fd34dff09e433..db589f34335ce1 100644 --- a/var/spack/repos/builtin/packages/r-dt/package.py +++ b/var/spack/repos/builtin/packages/r-dt/package.py @@ -18,6 +18,7 @@ class RDt(RPackage): license("Apache-2.0") + version("0.33", sha256="e145dadb1ce3db7c837f4313a8b5615b5b8ae63063ec2df93e528529717b27b8") version("0.27", sha256="e32fdccd2be430933cff88a9ce79045bfdbe3e08e0cd8d15037445808613289a") version("0.26", sha256="c412932be126d44f415559258e1d65adc0e84c3dfb9a70ce3196a2f877f7030c") version("0.25", sha256="0dfc8713062e1fe4e0428936367f35a0a41616c27b6d9b002bdfda58091c442b") @@ -35,6 +36,7 @@ class RDt(RPackage): depends_on("r-htmltools@0.3.6:", type=("build", "run")) depends_on("r-htmlwidgets@1.3:", type=("build", "run")) + depends_on("r-httpuv", type=("build", "run"), when="@0.29:") depends_on("r-jsonlite@0.9.16:", type=("build", "run"), when="@0.8:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-crosstalk", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-e1071/package.py b/var/spack/repos/builtin/packages/r-e1071/package.py index b2e66ec2aebcf4..dfeed53f3b378e 100644 --- a/var/spack/repos/builtin/packages/r-e1071/package.py +++ b/var/spack/repos/builtin/packages/r-e1071/package.py @@ -18,6 +18,7 @@ class RE1071(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.7-14", sha256="754d97ab073acc07b909a190f87f021e31e07269c8632c53166a6c2843e65195") version("1.7-13", sha256="da94e191af6e69aa0f9e3250d4b823674cc869339d914f761ebf2824177b6b2f") version("1.7-12", sha256="91e052d0a521db74a66df90adb28db601f2a2cca38b03dcad030ac2fdc5c5dcf") version("1.7-11", sha256="48c18e10e7cabc742d37b563672e2eddb6061f2378b69e5563be79ab9948d92f") diff --git a/var/spack/repos/builtin/packages/r-earth/package.py b/var/spack/repos/builtin/packages/r-earth/package.py index 92e3c072bb9b80..3fae5b8896208a 100644 --- a/var/spack/repos/builtin/packages/r-earth/package.py +++ b/var/spack/repos/builtin/packages/r-earth/package.py @@ -17,6 +17,7 @@ class REarth(RPackage): license("GPL-3.0-only") + version("5.3.3", sha256="786a0fcabb3db13e0e0a4ba61ecccb7e171030b39bc97926f8e7159485d2f572") version("5.3.2", sha256="c844d75edf9a2706a911bb05ed4287aad9acf6f3fed357e037763a300eac0bea") version("5.3.1", sha256="0bbe06ba974ceb8ec5de1d59cb53f9487d1828d7130fe2503c48b6cb449c4b03") version("5.3.0", sha256="05ace806271a74b3ddf8718a93237fe2a8550a8659ebd87f8079c0bda5e02437") @@ -26,4 +27,6 @@ class REarth(RPackage): depends_on("r-formula@1.2-3:", type=("build", "run")) depends_on("r-plotmo@3.5.4:", type=("build", "run")) depends_on("r-plotmo@3.6.0:", type=("build", "run"), when="@5.3.0") - depends_on("r-teachingdemos@2.10:", type=("build", "run")) + depends_on("r-plotmo@3.6.0:", type=("build", "run"), when="@5.3.3:") + + depends_on("r-teachingdemos@2.10:", type=("build", "run"), when="@:5.3.2") diff --git a/var/spack/repos/builtin/packages/r-ecosolver/package.py b/var/spack/repos/builtin/packages/r-ecosolver/package.py index d61d3979d157fa..bb57f5be6aba83 100644 --- a/var/spack/repos/builtin/packages/r-ecosolver/package.py +++ b/var/spack/repos/builtin/packages/r-ecosolver/package.py @@ -17,6 +17,7 @@ class REcosolver(RPackage): cran = "ECOSolveR" + version("0.5.5", sha256="2594ed1602b2fe159cc9aff3475e9cba7c1927b496c3daeabc1c0d227943ecc7") version("0.5.4", sha256="5d7489e8176c1df3f3f1290732243429280efca4f837916e6b6faa6dc8a8e324") depends_on("gmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-ecp/package.py b/var/spack/repos/builtin/packages/r-ecp/package.py index ed1b5341819a84..7aec827a94f122 100644 --- a/var/spack/repos/builtin/packages/r-ecp/package.py +++ b/var/spack/repos/builtin/packages/r-ecp/package.py @@ -21,6 +21,7 @@ class REcp(RPackage): license("GPL-2.0-or-later") + version("3.1.5", sha256="9e2389632447a80a5e9937f15a98c092c33f5460e6ceb904971fcff3eda8a29e") version("3.1.4", sha256="1b98bf25a7659517dc98d1b950fe2a5fed9ef8f750893b3a9e06e9c6d59cc04d") version("3.1.3", sha256="a80ab10bafe30cc96287b9220e44c4b4eda40f5dd0546e4d2a2e1baab514c058") version("3.1.1", sha256="d2ab194e22e6ab0168222fbccfcf2e25c6cd51a73edc959086b0c6e0a7410268") diff --git a/var/spack/repos/builtin/packages/r-ellipse/package.py b/var/spack/repos/builtin/packages/r-ellipse/package.py index 7c791bf1b5db54..e798ce3b2b66b6 100644 --- a/var/spack/repos/builtin/packages/r-ellipse/package.py +++ b/var/spack/repos/builtin/packages/r-ellipse/package.py @@ -20,6 +20,7 @@ class REllipse(RPackage): license("GPL-2.0-or-later") + version("0.5.0", sha256="cde8553973ce2cc04324318b3df13890d585987171fedfe2efbf1430f82cc2f3") version("0.4.5", sha256="39c475851380deeb9361464f8f32fa2ee250f24604791c00680a54aaaaba8936") version("0.4.3", sha256="02ef2b11c3462a8b800332e522183f4c7c40c7d2d66c5174d5f3f6d8cc68a946") version("0.4.2", sha256="1719ce9a00b9ac4d56dbf961803085b892d3359726fda3567bb989ddfed9a5f2") diff --git a/var/spack/repos/builtin/packages/r-emmeans/package.py b/var/spack/repos/builtin/packages/r-emmeans/package.py index bf2a67120a07ba..150e26a6496be0 100644 --- a/var/spack/repos/builtin/packages/r-emmeans/package.py +++ b/var/spack/repos/builtin/packages/r-emmeans/package.py @@ -21,6 +21,7 @@ class REmmeans(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.10.4", sha256="66653623c5984f99ba481a8611d6cf3b829e577f07bbe4043f279a3f8fbadcc3") version("1.8.5", sha256="5c88b415b5a42d8c1aa63af090c4987326530ea6d0e60bab9b5fb7e99a982415") version("1.8.2", sha256="785973457d8a6547df489f87b62987d44a68c4b9018661d38ca11ee34e49d209") version("1.8.1-1", sha256="79fc5e44255427b038d0dbe2c9887d84984baacb11bb9a9078cd8d0dca2e6577") diff --git a/var/spack/repos/builtin/packages/r-envstats/package.py b/var/spack/repos/builtin/packages/r-envstats/package.py index 6a03accb0d17c2..58fae609b76cca 100644 --- a/var/spack/repos/builtin/packages/r-envstats/package.py +++ b/var/spack/repos/builtin/packages/r-envstats/package.py @@ -23,6 +23,7 @@ class REnvstats(RPackage): cran = "EnvStats" + version("2.8.1", sha256="12952b9eaa64b7bdbaaa5c6b7acb3aa1028ddfa4e5de7ddfea54f900c452d6a6") version("2.7.0", sha256="09a6f0d5b60856c7298371e4a8a085a1db7abf0e71ccb9a2dc9ca24248fb5d81") version("2.5.0", sha256="4f77aa66c9dbbe411370a6dd5b9e514823d5506bbcdad9dc09a9e4268d65a7f7") version("2.4.0", sha256="49459e76412037b3d8021bd83ee93d140bc3e715a2a2282a347ef60061900514") diff --git a/var/spack/repos/builtin/packages/r-ergm/package.py b/var/spack/repos/builtin/packages/r-ergm/package.py index b5434cfa37b655..f30fe867777458 100644 --- a/var/spack/repos/builtin/packages/r-ergm/package.py +++ b/var/spack/repos/builtin/packages/r-ergm/package.py @@ -19,6 +19,7 @@ class RErgm(RPackage): license("GPL-3.0-only") + version("4.6.0", sha256="b471a60c39eb5b478e06dd0caf1d085f4b0927f1c260de699f1c8d4fe831a7f7") version("4.4.0", sha256="2db152cc7fdd71d6f0065603405f30bf5e206591da39b8f542178ec6d6126173") version("4.3.1", sha256="3ff63c81ea4061ac0c79247fcd2e614494624f7f1df57a4634927e7e90800ed3") version("4.2.3", sha256="35d15373d4a8445872eb3713c81c6c6ac34b72096e0cdb04292a468e65ae9288") @@ -44,7 +45,7 @@ class RErgm(RPackage): depends_on("r-trust@0.1.7:", type=("build", "run")) depends_on("r-trust@0.1.8:", type=("build", "run"), when="@4.1.2:") depends_on("r-matrix@1.2-17:", type=("build", "run")) - depends_on("r-matrix@1.3.2:", type=("build", "run"), when="@4.1.2:") + depends_on("r-matrix@1.3-2:", type=("build", "run"), when="@4.1.2:") depends_on("r-lpsolveapi@5.5.2.0.17.7:", type=("build", "run"), when="@4.1.2:") depends_on("r-mass@7.3-51.4:", type=("build", "run")) depends_on("r-mass@7.3.53.1:", type=("build", "run"), when="@4.1.2:") @@ -54,6 +55,7 @@ class RErgm(RPackage): depends_on("r-statnet-common@4.6.0:", type=("build", "run"), when="@4.2.1:") depends_on("r-statnet-common@4.7.0:", type=("build", "run"), when="@4.3.1:") depends_on("r-statnet-common@4.8.0:", type=("build", "run"), when="@4.4.0:") + depends_on("r-statnet-common@4.9.0:", type=("build", "run"), when="@4.5.0:") depends_on("r-rle", type=("build", "run"), when="@3.11.0:") depends_on("r-rle@0.9.2:", type=("build", "run"), when="@4.1.2:") depends_on("r-purrr@0.3.2:", type=("build", "run"), when="@3.10.0:") diff --git a/var/spack/repos/builtin/packages/r-estimability/package.py b/var/spack/repos/builtin/packages/r-estimability/package.py index 545001ea96da06..9a246b6ec6a3a9 100644 --- a/var/spack/repos/builtin/packages/r-estimability/package.py +++ b/var/spack/repos/builtin/packages/r-estimability/package.py @@ -19,5 +19,9 @@ class REstimability(RPackage): license("GPL-3.0-or-later") + version("1.5.1", sha256="3ca6b96a39fd8877e8636f94d20f34308b7296c1376c646703d27df8591644e9") version("1.4.1", sha256="c65aaf1e452f3947013d3ce05ae674d48492081f615a942592dc91db780f1124") version("1.3", sha256="a33179c5fbd6a1a623d90cb6f1743148f92c09429fac466867f3ea70946a2e32") + + depends_on("r@4.1.0:", when="@1.5.1:", type=("build", "run")) + depends_on("r@4.3.0:", when="@1.5:1.5.0", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-europepmc/package.py b/var/spack/repos/builtin/packages/r-europepmc/package.py index 64a9c094626f88..082450f3c9e538 100644 --- a/var/spack/repos/builtin/packages/r-europepmc/package.py +++ b/var/spack/repos/builtin/packages/r-europepmc/package.py @@ -25,6 +25,7 @@ class REuropepmc(RPackage): license("GPL-3.0-only") + version("0.4.3", sha256="25945534527bd89a6dcd9e371e3c2a68f3fe2046587daf1563be16eac9dd1998") version("0.4.1", sha256="c1ba91a2a99432cabe18e86fea33ac9d20dbb3ac0b58f430d464b4d8ecba4a9a") version("0.4", sha256="d55f62963d0ee84830654bbc78f4ad8285e376b04be137cbeaf8ad2a98b7969c") version("0.3", sha256="5044a253d223e2bb8502063cd03c0fe4db856467e497d650da7ccd8f75d0f8d9") diff --git a/var/spack/repos/builtin/packages/r-evaluate/package.py b/var/spack/repos/builtin/packages/r-evaluate/package.py index 86aeb872a928c8..bb16d16b85b129 100644 --- a/var/spack/repos/builtin/packages/r-evaluate/package.py +++ b/var/spack/repos/builtin/packages/r-evaluate/package.py @@ -16,6 +16,7 @@ class REvaluate(RPackage): license("MIT") + version("0.24.0", sha256="e23d764a58e7525257d57da4ccfee9d6f63b5b3c18bf01c76818ec8c9c587fd6") version("0.20", sha256="35f5d9e85603600b58960923d591c5ca1115153febba7c612867d8b5598afff0") version("0.18", sha256="7f4eecdc97ac286d5c7a39c454fe6798da38ef634bf9305c595faa8facb2bf36") version("0.17", sha256="49c743c94cb967911af0e5555861a3762cd840b98578882671b583cff86ba963") @@ -26,5 +27,6 @@ class REvaluate(RPackage): version("0.9", sha256="e8118c9d6ec479c0e712913848404431b6b6c0282f3c131acaf9a677ab5fc6ae") depends_on("r@3.0.2:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.24.0:") depends_on("r-stringr@0.6.2:", type=("build", "run"), when="@:0.11") diff --git a/var/spack/repos/builtin/packages/r-evd/package.py b/var/spack/repos/builtin/packages/r-evd/package.py index 09a3a103566d78..5737dac4e00dac 100644 --- a/var/spack/repos/builtin/packages/r-evd/package.py +++ b/var/spack/repos/builtin/packages/r-evd/package.py @@ -19,6 +19,7 @@ class REvd(RPackage): license("GPL-3.0-only") + version("2.3-7", sha256="4a899df15d39be4a8d544de4f5e4690b4673790a46da6a6c9c2a70fef3b55648") version("2.3-6.1", sha256="662c592d3f5c5693dbf1c673d1137c4a60a347e330b71be1f3933f201d2c8971") version("2.3-6", sha256="8edb8bc4f06d246c4343fd923bb5d5df99724d6db8821bfd996220343a834cb6") version("2.3-3", sha256="2fc5ef2e0c3a2a9392425ddd45914445497433d90fb80b8c363877baee4559b4") diff --git a/var/spack/repos/builtin/packages/r-exactextractr/package.py b/var/spack/repos/builtin/packages/r-exactextractr/package.py index 28eb6fe05f63c0..a9a6e5b05899d3 100644 --- a/var/spack/repos/builtin/packages/r-exactextractr/package.py +++ b/var/spack/repos/builtin/packages/r-exactextractr/package.py @@ -16,6 +16,7 @@ class RExactextractr(RPackage): license("Apache-2.0") + version("0.10.0", sha256="9b7fc3c6f0e9e89596a1992240ecbb8e2893f4addffaecbd852403c10a0943de") version("0.9.1", sha256="f0cf367c25a45b09eda1d435c8c818590ff4de86162f675e3172821d1853f4a1") version("0.9.0", sha256="705a355534f427dc832af2a294aaf928c10c72d6335d38aed86da64d814eb18d") version("0.8.2", sha256="cc32ab3af8d881a7e7836c296ea42f3fdabf3373ec1de0b154dbfe9870ee8a74") diff --git a/var/spack/repos/builtin/packages/r-expm/package.py b/var/spack/repos/builtin/packages/r-expm/package.py index 944d12211ff647..c1ece1ae786473 100644 --- a/var/spack/repos/builtin/packages/r-expm/package.py +++ b/var/spack/repos/builtin/packages/r-expm/package.py @@ -16,6 +16,7 @@ class RExpm(RPackage): license("GPL-2.0-or-later") + version("1.0-0", sha256="02c536f8f6af55b132210a50b1e9694a3549806bf97c49e0fe03595945aab254") version("0.999-7", sha256="28f249b914b8dd33eee16663fc793e57afd0e301e16067bf9f27fa8e591ba0f1") version("0.999-6", sha256="2c79912fd2e03fcf89c29f09555880934402fcb2359af8b4579d79b4f955addc") version("0.999-4", sha256="58d06427a08c9442462b00a5531e2575800be13ed450c5a1546261251e536096") diff --git a/var/spack/repos/builtin/packages/r-factominer/package.py b/var/spack/repos/builtin/packages/r-factominer/package.py index 39b8379a45a501..d1dab128f04a46 100644 --- a/var/spack/repos/builtin/packages/r-factominer/package.py +++ b/var/spack/repos/builtin/packages/r-factominer/package.py @@ -20,6 +20,7 @@ class RFactominer(RPackage): cran = "FactoMineR" + version("2.11", sha256="32c26b42cb4dd8d7a8c845f1e8562fa0e3ebded19d3c1284c3504df09974f063") version("2.8", sha256="c09086f7ae4c4855ed6f1e8303b497e250ab6cf101feb3db6c8a93510e5ff851") version("2.6", sha256="81261608c097b863e004a0c6cdc4bdfd6e7bf49c6ec20e211233eda2e5268f75") version("2.4", sha256="b9e3adce9a66b4daccc85fa67cb0769d6be230beeb126921b386ccde5db2e851") diff --git a/var/spack/repos/builtin/packages/r-fansi/package.py b/var/spack/repos/builtin/packages/r-fansi/package.py index 11d4708e17ef0a..74f31d835c3a2a 100644 --- a/var/spack/repos/builtin/packages/r-fansi/package.py +++ b/var/spack/repos/builtin/packages/r-fansi/package.py @@ -16,6 +16,7 @@ class RFansi(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.0.6", sha256="ea9dc690dfe50a7fad7c5eb863c157d70385512173574c56f4253b6dfe431863") version("1.0.4", sha256="3163214e6c40922bbb495229259ed8ce1bebd98b77098a6936d234e43da9c49f") version("1.0.3", sha256="86a7b83d8c9d28baebbde310cd0b459d0950a9c7ff1a6276ce5858f6a89bc06a") version("1.0.2", sha256="d1e2cf2e10613abe19071e3dab7c564ebcf85ad13cbee25fa1999267af01b557") diff --git a/var/spack/repos/builtin/packages/r-farver/package.py b/var/spack/repos/builtin/packages/r-farver/package.py index e7d36ca104c4c7..980cb7118eb652 100644 --- a/var/spack/repos/builtin/packages/r-farver/package.py +++ b/var/spack/repos/builtin/packages/r-farver/package.py @@ -21,6 +21,7 @@ class RFarver(RPackage): license("MIT") + version("2.1.2", sha256="528823b95daab4566137711f1c842027a952bea1b2ae6ff098e2ca512b17fe25") version("2.1.1", sha256="0dcfda6ca743f465372790bcff1bcbc6a7145fdac1c682b021f654e8c6c996ce") version("2.1.0", sha256="e5c8630607049f682fb3002b99ca4f5e7c6b94f8b2a4342df594e7853b77cef4") version("2.0.3", sha256="0e1590df79ec6078f10426411b96216b70568a4eaf3ffd84ca723add0ed8e5cc") diff --git a/var/spack/repos/builtin/packages/r-fastcluster/package.py b/var/spack/repos/builtin/packages/r-fastcluster/package.py index bdc1f96110fb45..685ab3f3993557 100644 --- a/var/spack/repos/builtin/packages/r-fastcluster/package.py +++ b/var/spack/repos/builtin/packages/r-fastcluster/package.py @@ -24,6 +24,7 @@ class RFastcluster(RPackage): license("BSD-2-Clause OR GPL-2.0-only OR custom") + version("1.2.6", sha256="852a05458fb0b64497e9cf8f0182b599d1c2b1e9af03ec45f7c0c9280c1f8d19") version("1.2.3", sha256="1f229129e1cddc78c7bb5ecc90c4d28ed810ee68cf210004c7cdfa12cfaf2a01") version("1.1.25", sha256="f3661def975802f3dd3cec5b2a1379f3707eacff945cf448e33aec0da1ed4205") diff --git a/var/spack/repos/builtin/packages/r-fastdigest/package.py b/var/spack/repos/builtin/packages/r-fastdigest/package.py index aa1aea798887eb..b6fe0390d79008 100644 --- a/var/spack/repos/builtin/packages/r-fastdigest/package.py +++ b/var/spack/repos/builtin/packages/r-fastdigest/package.py @@ -23,4 +23,5 @@ class RFastdigest(RPackage): license("Artistic-2.0") + version("0.6-4", sha256="b2b6a550d90446bed911c9ad7642efd2a869257ecc5b9eb57e66b2cd4ef109a0") version("0.6-3", sha256="62a04aa39f751cf9bb7ff43cadb3c1a8d2270d7f3e8550a2d6ca9e1d8ca09a09") diff --git a/var/spack/repos/builtin/packages/r-fastdummies/package.py b/var/spack/repos/builtin/packages/r-fastdummies/package.py new file mode 100644 index 00000000000000..44ff1bb9982993 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-fastdummies/package.py @@ -0,0 +1,24 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RFastdummies(RPackage): + """Fast Creation of Dummy (Binary) Columns and Rows from Categorical + Variables.""" + + homepage = "https://jacobkap.github.io/fastDummies/" + cran = "fastDummies" + + license("MIT", checked_by="wdconinc") + + version("1.7.4", sha256="95904d4b67efc3faafa47cae9473c9d75653bc3fb6ad0083869ebf9f7960dd08") + + depends_on("r@2.1:", type=("build", "run")) + depends_on("r@2.10:", type=("build", "run"), when="@1.0.0:") + depends_on("r-data-table", type=("build", "run")) + depends_on("r-tibble", type=("build", "run")) + depends_on("r-stringr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-fastica/package.py b/var/spack/repos/builtin/packages/r-fastica/package.py index 9c64c3130cfe5d..a22516c3b12f62 100644 --- a/var/spack/repos/builtin/packages/r-fastica/package.py +++ b/var/spack/repos/builtin/packages/r-fastica/package.py @@ -14,6 +14,7 @@ class RFastica(RPackage): cran = "fastICA" + version("1.2-5.1", sha256="65916ee9a44598a5d50c43d96de5fb11730e0a5a5938e5859f1a928d31f3d985") version("1.2-3", sha256="e9ef82644cb64bb49ae3b7b6e0885f4fb2dc08ae030f8c76fe8dd8507b658950") version("1.2-2", sha256="32223593374102bf54c8fdca7b57231e4f4d0dd0be02d9f3500ad41b1996f1fe") diff --git a/var/spack/repos/builtin/packages/r-fastmap/package.py b/var/spack/repos/builtin/packages/r-fastmap/package.py index a97657a321fe86..3d50ab69ba3b09 100644 --- a/var/spack/repos/builtin/packages/r-fastmap/package.py +++ b/var/spack/repos/builtin/packages/r-fastmap/package.py @@ -20,6 +20,7 @@ class RFastmap(RPackage): license("MIT") + version("1.2.0", sha256="b1da04a2915d1d057f3c2525e295ef15016a64e6667eac83a14641bbd83b9246") version("1.1.1", sha256="3623809dd016ae8abd235200ba7834effc4b916915a059deb76044137c5c7173") version("1.1.0", sha256="9113e526b4c096302cfeae660a06de2c4c82ae4e2d3d6ef53af6de812d4c822b") version("1.0.1", sha256="4778b05dfebd356f8df980dfeff3b973a72bca14898f870e5c40c1d84db9faec") diff --git a/var/spack/repos/builtin/packages/r-fastmatch/package.py b/var/spack/repos/builtin/packages/r-fastmatch/package.py index e95677e309d607..3d5773182b04bf 100644 --- a/var/spack/repos/builtin/packages/r-fastmatch/package.py +++ b/var/spack/repos/builtin/packages/r-fastmatch/package.py @@ -18,6 +18,7 @@ class RFastmatch(RPackage): license("GPL-2.0-only") + version("1.1-4", sha256="9a914cac9c1ea2984bd44eebe421e1636504907a8064ae26347fe3ec2b9bd56b") version("1.1-3", sha256="1defa0b08bc3f48e4c3e4ba8df4f1b9e8299932fd8c747c67d32de44f90b9861") version("1.1-0", sha256="20b51aa4838dbe829e11e951444a9c77257dcaf85130807508f6d7e76797007d") diff --git a/var/spack/repos/builtin/packages/r-fastmatrix/package.py b/var/spack/repos/builtin/packages/r-fastmatrix/package.py index c086bcc21e1cb0..27102cdc092b2a 100644 --- a/var/spack/repos/builtin/packages/r-fastmatrix/package.py +++ b/var/spack/repos/builtin/packages/r-fastmatrix/package.py @@ -30,6 +30,7 @@ class RFastmatrix(RPackage): license("GPL-3.0-only") + version("0.5-772", sha256="72601bae9a59f467c5da9ccf08788f0233cdbb2420b6b2aa43a42a2632ff9c55") version("0.5", sha256="fb5f251a98425161e9dbbbb7edf95226725255b1474aad03ab046c7c6c6c3f12") version("0.4-1245", sha256="ee2e12b5dcda4585cca21f2c0ac144706f6fd26024586e91d622c6cd66d1d873") version("0.4-1", sha256="494a1aad38dcec28956eba8d095c964b20c5388dfb6dc2a23848ae37ea61cde5") diff --git a/var/spack/repos/builtin/packages/r-fda/package.py b/var/spack/repos/builtin/packages/r-fda/package.py index 0f5aa30a7f3f83..93a4d3a3d05bdd 100644 --- a/var/spack/repos/builtin/packages/r-fda/package.py +++ b/var/spack/repos/builtin/packages/r-fda/package.py @@ -19,6 +19,7 @@ class RFda(RPackage): license("GPL-2.0-or-later") + version("6.1.8", sha256="ef8d858a2879491aa2c441d171ba14462bf27852d16e8420fa49aab83f42c407") version("6.0.5", sha256="14445776fc65284cd6cae98e5b4dd14c2626d96db5f78c0fcc6aabce5419b8f1") version("6.0.3", sha256="205814b9812664e8201221f99e0e8391aa49dba2ae287dc404c57c0c492477d3") version("5.5.1", sha256="dcaa2f6ae226d35855bc79c6967f60d45404b984c0afaec215b139c4b8dea23a") diff --git a/var/spack/repos/builtin/packages/r-ff/package.py b/var/spack/repos/builtin/packages/r-ff/package.py index 04017a2835a3ce..ad2bec47239335 100644 --- a/var/spack/repos/builtin/packages/r-ff/package.py +++ b/var/spack/repos/builtin/packages/r-ff/package.py @@ -56,6 +56,7 @@ class RFf(RPackage): license("GPL-2.0-only OR GPL-3.0-only OR custom") + version("4.0.12", sha256="08af355a9a10fe29d48d085abc7cf1f975e1a4a670668a4f8d9632d087fb41bf") version("4.0.9", sha256="722053271987a0c9673c3ff9e7968bbab47979d529a2fe6bb1a3179408ee3c4f") version("4.0.7", sha256="0a47333d31c7afc3f95387166e21a3e4c763cbef47d9b5927753aef4ff8d83fa") version("4.0.5", sha256="9aba9e271144ec224063ddba0d791e2fcdb9c912d48fdc49e204fce628355037") diff --git a/var/spack/repos/builtin/packages/r-fields/package.py b/var/spack/repos/builtin/packages/r-fields/package.py index 27cb884cc0d33f..9cb19fc61483cf 100644 --- a/var/spack/repos/builtin/packages/r-fields/package.py +++ b/var/spack/repos/builtin/packages/r-fields/package.py @@ -38,6 +38,7 @@ class RFields(RPackage): license("GPL-2.0-or-later") + version("16.2", sha256="3910950cd5476e7e3d17d00dabfa37a6491019426c74b6955a2fbe5648a3b3e4") version("14.1", sha256="57c4c5592443d2ee869014b3199989b5edd1aff52e24f1cd313b8f9b34a95434") version("13.3", sha256="c652838b1ae7eb368831522824bfbc1d1db7b9d1db5e9bb52b194098549944c3") version("11.6", sha256="8600d1d992c40668cc2ab01b3c17d0e1bd44a001ec7ba9f468bc0e9ef87c59db") @@ -46,5 +47,6 @@ class RFields(RPackage): depends_on("r@3.0:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@14.1:") depends_on("r-spam", type=("build", "run")) - depends_on("r-viridis", type=("build", "run"), when="@13.3:") + depends_on("r-viridis", type=("build", "run"), when="@13.3:14.2") + depends_on("r-viridislite", type=("build", "run"), when="@14.3:") depends_on("r-maps", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-filehash/package.py b/var/spack/repos/builtin/packages/r-filehash/package.py index 3c931a8239a848..a4cc9c8297b388 100644 --- a/var/spack/repos/builtin/packages/r-filehash/package.py +++ b/var/spack/repos/builtin/packages/r-filehash/package.py @@ -23,6 +23,7 @@ class RFilehash(RPackage): license("GPL-2.0-or-later") + version("2.4-6", sha256="558b446ba354c6fa88f694e8d6d068f999d1e7b626164eb2aeacccbb0dee81b1") version("2.4-5", sha256="3b1ee2794dd61e525ee44db16611c65957691d77bb26ae481eba988bb55da22c") version("2.4-3", sha256="f394e2c93233e8ad1c104562ea9349855dc8e303131f559cd59834f9aa3e41bd") version("2.4-2", sha256="b6d056f75d45e315943a4618f5f62802612cd8931ba3f9f474b595140a3cfb93") diff --git a/var/spack/repos/builtin/packages/r-filelock/package.py b/var/spack/repos/builtin/packages/r-filelock/package.py index 3aba76da0895bd..18bd42a6d440a9 100644 --- a/var/spack/repos/builtin/packages/r-filelock/package.py +++ b/var/spack/repos/builtin/packages/r-filelock/package.py @@ -16,8 +16,7 @@ class RFilelock(RPackage): license("MIT") + version("1.0.3", sha256="2dcd0ec453f5ec4d96f69b0c472569d57d3c5f9956a82a48492ee02f12071137") version("1.0.2", sha256="ac2915950789b16c43a625a2b8dab6ba423588db4a7d0daa75b74518b82b1403") - depends_on("r-callr@2.0.0:", type=("build", "run")) - depends_on("r-covr", type=("build", "run")) - depends_on("r-testthat", type=("build", "run")) + depends_on("r@3.4:", type=("build", "run"), when="@1.0.3:") diff --git a/var/spack/repos/builtin/packages/r-fitdistrplus/package.py b/var/spack/repos/builtin/packages/r-fitdistrplus/package.py index 5602ed82aa10b0..9dcf4e3b4c9b4e 100644 --- a/var/spack/repos/builtin/packages/r-fitdistrplus/package.py +++ b/var/spack/repos/builtin/packages/r-fitdistrplus/package.py @@ -24,6 +24,7 @@ class RFitdistrplus(RPackage): license("GPL-2.0-or-later") + version("1.2-1", sha256="68b4215a9dfff65880a3ba6f7febe4929b197611344932b79af05d91dc584558") version("1.1-11", sha256="26274f2b710b2417a8bca314d400abf320d4ccf0387ad082743056699501b53d") version("1.1-8", sha256="f3c72310f40773b3839a9506c3cb781d044e09b94f2f38d332bb24e5f9960f5a") version("1.1-6", sha256="17c2990041a3bb7479f3c3a6d13d96c989db8eaddab17eff7e1fbe172a5b96be") @@ -34,5 +35,6 @@ class RFitdistrplus(RPackage): depends_on("r@3.5.0:", type=("build", "run"), when="@1.1-6:") depends_on("r-mass", type=("build", "run")) depends_on("r-survival", type=("build", "run")) + depends_on("r-rlang", type=("build", "run"), when="@1.2-1:") depends_on("r-npsurv", type=("build", "run"), when="@:1.0-14") diff --git a/var/spack/repos/builtin/packages/r-flexclust/package.py b/var/spack/repos/builtin/packages/r-flexclust/package.py index bbc9fff7000e54..5566dbaf222ce6 100644 --- a/var/spack/repos/builtin/packages/r-flexclust/package.py +++ b/var/spack/repos/builtin/packages/r-flexclust/package.py @@ -21,6 +21,7 @@ class RFlexclust(RPackage): license("GPL-2.0-only") + version("1.4-2", sha256="0c4720d691e36091cedafa26ee1f0ddc7af931168096df00b9bf6d64fdd35a55") version("1.4-1", sha256="d67977df059e622832358069509f8968d506074320a45d34bfd21c65f898538d") version("1.4-0", sha256="82fe445075a795c724644864c7ee803c5dd332a89ea9e6ccf7cd1ae2d1ecfc74") version("1.3-5", sha256="dbf49969c93a7b314d9dc3299a0764ed9a804ba7dcbdc08a1235f244f4b85059") diff --git a/var/spack/repos/builtin/packages/r-fnn/package.py b/var/spack/repos/builtin/packages/r-fnn/package.py index c9e235eb4dcf0a..96565f2e33a4b6 100644 --- a/var/spack/repos/builtin/packages/r-fnn/package.py +++ b/var/spack/repos/builtin/packages/r-fnn/package.py @@ -15,6 +15,7 @@ class RFnn(RPackage): cran = "FNN" + version("1.1.4", sha256="db4db5a348c6051fe547193c282b6e5cc839f68f51e0afccf4939f35e9a2fc27") version("1.1.3.2", sha256="d701a13487979ebb07a071f4cc83fcf4daea5832d1f3923bce1e0d671dfe0e87") version("1.1.3.1", sha256="52b0e20611481a95bced40be4126f44b002fd3a9c4c9674bb34db4e1e3b5be5a") version("1.1.3", sha256="de763a25c9cfbd19d144586b9ed158135ec49cf7b812938954be54eb2dc59432") @@ -26,3 +27,4 @@ class RFnn(RPackage): version("0.6-2", sha256="f1fc410c341175bdb11a75b063c8c987e15b632378b56148d3566b91fca53a31") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@1.1.4:") diff --git a/var/spack/repos/builtin/packages/r-fontawesome/package.py b/var/spack/repos/builtin/packages/r-fontawesome/package.py index 90a63abb63170b..8709192c266922 100644 --- a/var/spack/repos/builtin/packages/r-fontawesome/package.py +++ b/var/spack/repos/builtin/packages/r-fontawesome/package.py @@ -19,6 +19,7 @@ class RFontawesome(RPackage): license("MIT") + version("0.5.2", sha256="da3de2a9717084d1400d48edd783f06c66b8c910ce9c8d753d1b7d99be1c5cc9") version("0.5.1", sha256="f4ebbbe2ee8d2e2c0342b72095cfe668bd9800ea6c4bf7180300544bde7e566c") version("0.4.0", sha256="760a0bc5b50ddbce1160b123f3b3d76342167519d75641dc2c5b952fa8d4242f") version("0.3.0", sha256="4deefcf4d4580d84213f863351c2a23c39adbd2f8762d7477ec2faa8235a1a31") diff --git a/var/spack/repos/builtin/packages/r-forecast/package.py b/var/spack/repos/builtin/packages/r-forecast/package.py index 713c688d18cd1c..0a502898804931 100644 --- a/var/spack/repos/builtin/packages/r-forecast/package.py +++ b/var/spack/repos/builtin/packages/r-forecast/package.py @@ -17,6 +17,7 @@ class RForecast(RPackage): license("GPL-3.0-only") + version("8.23.0", sha256="ffc3d41138f498fb286f0ebfeb72d15f9f7a8e953abf3c351ebf95fc188a1880") version("8.21", sha256="fdd131795a9d3fb399d76a9aa66a0c276637caaa9ec0c75fbe386189d005c6c2") version("8.18", sha256="5920baa8d9d81988000d0e2edcea61c05126b5cb923cb5921a6fcd7bc312d8dd") version("8.16", sha256="9f01eb895a883a7e1e23725b167b46edc1b0b152fd4120278aaa5f7b2621767f") @@ -39,5 +40,6 @@ class RForecast(RPackage): depends_on("r-timedate", type=("build", "run")) depends_on("r-tseries", type=("build", "run")) depends_on("r-urca", type=("build", "run"), when="@8.6:") + depends_on("r-withr", type=("build", "run"), when="@8.23.0:") depends_on("r-zoo", type=("build", "run")) depends_on("r-rcpparmadillo@0.2.35:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-foreign/package.py b/var/spack/repos/builtin/packages/r-foreign/package.py index 18e6d6ac46ac42..65ef468cb2d7ab 100644 --- a/var/spack/repos/builtin/packages/r-foreign/package.py +++ b/var/spack/repos/builtin/packages/r-foreign/package.py @@ -18,6 +18,7 @@ class RForeign(RPackage): license("GPL-2.0-or-later") + version("0.8-87", sha256="1a24acf4c8e87acc740599e950388b88e5beab7e54f699a015366fbd86db2856") version("0.8-84", sha256="17edf302c7568a122dc496a61a4a886ef7c02224a235d945b473611c79c98549") version("0.8-83", sha256="87eae73f780b6bbcf0a45b3e21d1c87be0404aa2d5b455df92ab45516030721b") version("0.8-82", sha256="f8ed0684d59bec7f3a39cde1aa5ec7b3e6e36aaecacb28120c9c54f7b13f80fb") diff --git a/var/spack/repos/builtin/packages/r-fpc/package.py b/var/spack/repos/builtin/packages/r-fpc/package.py index 7b29d95d0fb7a3..9ef1e36324eb2d 100644 --- a/var/spack/repos/builtin/packages/r-fpc/package.py +++ b/var/spack/repos/builtin/packages/r-fpc/package.py @@ -30,6 +30,7 @@ class RFpc(RPackage): license("GPL-2.0-or-later") + version("2.2-12", sha256="555996b4c7e78a28067df25ac657b5065ec79b6b2cd76080382c2d5b43104787") version("2.2-10", sha256="99b4548f2eca1a092a31bc2fa4e4bd1d6b50fdfacf3218588c879ceec99147d2") version("2.2-9", sha256="29b0006e96c8645645d215d3378551bd6525aaf45abde2d9f12933cf6e75fa38") version("2.2-3", sha256="8100a74e6ff96b1cd65fd22494f2d200e54ea5ea533cfca321fa494914bdc3b7") diff --git a/var/spack/repos/builtin/packages/r-fracdiff/package.py b/var/spack/repos/builtin/packages/r-fracdiff/package.py index ac7209584ba049..fe3009ec5e6448 100644 --- a/var/spack/repos/builtin/packages/r-fracdiff/package.py +++ b/var/spack/repos/builtin/packages/r-fracdiff/package.py @@ -18,6 +18,7 @@ class RFracdiff(RPackage): license("GPL-2.0-or-later") + version("1.5-3", sha256="0f90946b4092feff93fad094a2c91bb47c8051595210e86c029c70238dbf7fc0") version("1.5-2", sha256="ac5f881330287f5bc68b5cdce4fb74156a95356ffb875ee171538bc44200f437") version("1.5-1", sha256="b8103b32a4ca3a59dda1624c07da08ecd144c7a91a747d1f4663e99421950eb6") version("1.4-2", sha256="983781cedc2b4e3ba9fa020213957d5133ae9cd6710bc61d6225728e2f6e850e") diff --git a/var/spack/repos/builtin/packages/r-fs/package.py b/var/spack/repos/builtin/packages/r-fs/package.py index 01da707587f2e4..03481f2bd0ad51 100644 --- a/var/spack/repos/builtin/packages/r-fs/package.py +++ b/var/spack/repos/builtin/packages/r-fs/package.py @@ -16,6 +16,7 @@ class RFs(RPackage): license("MIT") + version("1.6.4", sha256="7e06290f2dbe36f54fdf51b748a4b00b8b0f68967b5754e37e0c83df7fea5ac8") version("1.6.2", sha256="548b7c0ed5ab26dc4fbd88707ae12987bcaef834dbc6de4e17d453846dc436b2") version("1.5.2", sha256="35cad1781d6d17c1feb56adc4607079c6844b63794d0ce1e74bb18dbc11e1987") version("1.5.0", sha256="36df1653571de3c628a4f769c4627f6ac53d0f9e4106d9d476afb22ae9603897") @@ -23,6 +24,7 @@ class RFs(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.6.2:") + depends_on("r@3.6:", type=("build", "run"), when="@1.6.4:") depends_on("gmake", type="build") depends_on("r-rcpp", type=("build", "run"), when="@:1.3.1") diff --git a/var/spack/repos/builtin/packages/r-future-apply/package.py b/var/spack/repos/builtin/packages/r-future-apply/package.py index 43d35b3845b46a..7854e9a90cf52f 100644 --- a/var/spack/repos/builtin/packages/r-future-apply/package.py +++ b/var/spack/repos/builtin/packages/r-future-apply/package.py @@ -19,6 +19,7 @@ class RFutureApply(RPackage): cran = "future.apply" + version("1.11.2", sha256="f4a635b0fa5e0d826d2f8da6bc1fa5bb055e640c29a85c644931d08ab2d81387") version("1.10.0", sha256="dee92dd84812fe8c55064c0f0e6d806c0c29848b5a5fc4a7725d6a4b623e94aa") version("1.9.1", sha256="4f22ccd5caa62077581c6adc4d35543451e547220270aed3f1abcbaa6a202133") version("1.9.0", sha256="6166c1c5ce30b9745059c3d30c8110f7c1d51871e58aa414f195cb1f91c467f5") diff --git a/var/spack/repos/builtin/packages/r-future/package.py b/var/spack/repos/builtin/packages/r-future/package.py index 5cdaa6a99430cc..3cc6d0ecc884f0 100644 --- a/var/spack/repos/builtin/packages/r-future/package.py +++ b/var/spack/repos/builtin/packages/r-future/package.py @@ -28,6 +28,7 @@ class RFuture(RPackage): license("LGPL-2.1-or-later") + version("1.34.0", sha256="5839d4fd1f8beb1b18b27a7c50c1eb2bb5d80acd926b1bce9323637c8b2dfa5d") version("1.32.0", sha256="d5bb74512d069745184dd580a36449dc0b50d95b1cbbbc1605db82de596f2f76") version("1.29.0", sha256="856d1fd51d2f998c6572490c49fdcc27e5f3e0c1ade75eecdbf64a2cd0954373") version("1.28.0", sha256="6fdda66acd9a255e5baa70ff5dacd3c57ab2ecc2d87fd6abeebdfb939c051bf6") @@ -52,3 +53,4 @@ class RFuture(RPackage): depends_on("r-parallelly@1.30.0:", type=("build", "run"), when="@1.24.0:") depends_on("r-parallelly@1.32.1:", type=("build", "run"), when="@1.28.0:") depends_on("r-parallelly@1.34.0:", type=("build", "run"), when="@1.32.0:") + depends_on("r-parallelly@1.38.0:", type=("build", "run"), when="@1.34.0:") diff --git a/var/spack/repos/builtin/packages/r-gamlss-data/package.py b/var/spack/repos/builtin/packages/r-gamlss-data/package.py index 327f62a42ea766..da3363959306e1 100644 --- a/var/spack/repos/builtin/packages/r-gamlss-data/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss-data/package.py @@ -15,6 +15,7 @@ class RGamlssData(RPackage): cran = "gamlss.data" + version("6.0-6", sha256="bae0db19d95500b3f49f855d4ebd3ddb071c5e2d9104b27e0a73865f4909ab22") version("6.0-2", sha256="dbb3b6f855540928ccdbda497f8d552144895e34565799e8b595e704096db71e") version("5.1-4", sha256="0d3777d8c3cd76cef273aa6bde40a91688719be401195ed9bfd1e85bd7d5eeb5") version("5.1-3", sha256="4941180e7eebe97678ba02ca24c2a797bcb69d92cd34600215a94110e2a70470") diff --git a/var/spack/repos/builtin/packages/r-gamlss-dist/package.py b/var/spack/repos/builtin/packages/r-gamlss-dist/package.py index 46a8f63ad000cd..dc7b3e2380d3a0 100644 --- a/var/spack/repos/builtin/packages/r-gamlss-dist/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss-dist/package.py @@ -21,6 +21,7 @@ class RGamlssDist(RPackage): cran = "gamlss.dist" + version("6.1-1", sha256="d2db3a7658799c2ef212aa18cb75a3ecf4f73faf8c13dfdc3c14b21ae0129069") version("6.0-5", sha256="0f88afdfb148de79d3ece66bf4631ea0dc3ecf1188680802abffd6bc7139a20e") version("6.0-3", sha256="ec90ea83cd81b894c73f987f69814077697be33abf0708e0f3e2a39d02c912bf") version("6.0-1", sha256="b563b4de6bcedcfa4f8d29198a47004e38fd2de6e0509c788015d4e3feb18154") diff --git a/var/spack/repos/builtin/packages/r-gamlss/package.py b/var/spack/repos/builtin/packages/r-gamlss/package.py index b052d0e2dc7a78..4ab3444a07606e 100644 --- a/var/spack/repos/builtin/packages/r-gamlss/package.py +++ b/var/spack/repos/builtin/packages/r-gamlss/package.py @@ -20,6 +20,7 @@ class RGamlss(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("5.4-22", sha256="01e6908df92691147b884a8d58025473e18d7bf58d5f5a2d7e4f18b2a451fe2d") version("5.4-12", sha256="9f791039f7e5c3cf3f6a2da955994a8c41c43044a2d77d99b289e4f82118a6f0") version("5.4-3", sha256="6619d4fdc183ab492615d44961a126c827d18db20a0d59362e54de877f0a3076") version("5.3-4", sha256="72707187471fd35c5379ae8c9b7b0ca87e302557f09cb3979d1cdb2e2500b01a") diff --git a/var/spack/repos/builtin/packages/r-gargle/package.py b/var/spack/repos/builtin/packages/r-gargle/package.py index 9f396884521579..9e65e185270fa3 100644 --- a/var/spack/repos/builtin/packages/r-gargle/package.py +++ b/var/spack/repos/builtin/packages/r-gargle/package.py @@ -18,12 +18,14 @@ class RGargle(RPackage): license("MIT") + version("1.5.2", sha256="4a5beb046eb50a168b4baf5d1fcd8ac20d698e7fcb6b6ef46a436ded5b039001") version("1.4.0", sha256="8e0f1edf5595d4fd27bd92f98af1cc0c1349975803d9d6f3ff0c25ee2440498b") version("1.2.1", sha256="f367e2c82f403167ae84058303a4fb0402664558a2abf0b495474a7ef1a2f020") version("1.2.0", sha256="4d46ca2933f19429ca5a2cfe47b4130a75c7cd9931c7758ade55bac0c091d73b") depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@1.2.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.5.0:") depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-cli@3.0.1:", type=("build", "run"), when="@1.4.0:") depends_on("r-fs@1.3.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-gbm/package.py b/var/spack/repos/builtin/packages/r-gbm/package.py index 6204c12b686f29..2c6bed64576bc3 100644 --- a/var/spack/repos/builtin/packages/r-gbm/package.py +++ b/var/spack/repos/builtin/packages/r-gbm/package.py @@ -20,6 +20,7 @@ class RGbm(RPackage): license("GPL-2.0-or-later OR custom") + version("2.2.2", sha256="029ad2bac10c98979cf69206e94f2cc51a50667ec035f2474c44fb841950c4f4") version("2.1.8.1", sha256="8d2456124552658ee9500707c4e9992cf42cb88705008c32ea258efb4f2be80b") version("2.1.8", sha256="7d5de3b980b8f23275e86ac9bed48a497c9aa53c58e407dfd676309f38272ec1") version("2.1.5", sha256="06fbde10639dfa886554379b40a7402d1f1236a9152eca517e97738895a4466f") diff --git a/var/spack/repos/builtin/packages/r-gbrd/package.py b/var/spack/repos/builtin/packages/r-gbrd/package.py index e44000f09e38d6..39d79da7326703 100644 --- a/var/spack/repos/builtin/packages/r-gbrd/package.py +++ b/var/spack/repos/builtin/packages/r-gbrd/package.py @@ -14,4 +14,5 @@ class RGbrd(RPackage): cran = "gbRd" + version("0.4.12", sha256="48cd1d2a845f4b54c307473d2fa07a4ef6a644272f91c6a953844e66cd832338") version("0.4-11", sha256="0251f6dd6ca987a74acc4765838b858f1edb08b71dbad9e563669b58783ea91b") diff --git a/var/spack/repos/builtin/packages/r-gdalutilities/package.py b/var/spack/repos/builtin/packages/r-gdalutilities/package.py index 125dafba92f0de..671c68f93728d8 100644 --- a/var/spack/repos/builtin/packages/r-gdalutilities/package.py +++ b/var/spack/repos/builtin/packages/r-gdalutilities/package.py @@ -23,6 +23,7 @@ class RGdalutilities(RPackage): cran = "gdalUtilities" + version("1.2.5", sha256="2a72e990080ad626205c78edc6614959b564413b7fc23132008b7259723571a7") version("1.2.4", sha256="56d2582324977f2ae0a8bc42f740cd93b22c71eb8ee6a68b5b07083e409db8c7") version("1.2.1", sha256="8f5dcc0c077bf972da9d574c62c992935311afb76a97f03ace719bc6da214a9c") version("1.2.0", sha256="ead446f7f77f952b72b9ed80c5e415cb9d8d30cfb2439c8d1a8156fa55e2b65b") diff --git a/var/spack/repos/builtin/packages/r-gdata/package.py b/var/spack/repos/builtin/packages/r-gdata/package.py index 51ff21edf0d933..1c24477f549ead 100644 --- a/var/spack/repos/builtin/packages/r-gdata/package.py +++ b/var/spack/repos/builtin/packages/r-gdata/package.py @@ -35,6 +35,7 @@ class RGdata(RPackage): license("GPL-2.0-only") + version("3.0.0", sha256="a456b9921765a705fe8e51780dfbbc6ca005abc948b2f80effeccd468601b17f") version("2.18.0.1", sha256="5e2f3d5b9398d52a4c07a4d35f5f936450a44567c7db8d8f68b4cc6946e032d9") version("2.18.0", sha256="4b287f59f5bbf5fcbf18db16477852faac4a605b10c5284c46b93fa6e9918d7f") version("2.17.0", sha256="8097ec0e4868f6bf746f821cff7842f696e874bb3a84f1b2aa977ecd961c3e4e") diff --git a/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py b/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py index dde99a8f618eeb..22091935c7cd04 100644 --- a/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py +++ b/var/spack/repos/builtin/packages/r-genomeinfodbdata/package.py @@ -47,3 +47,4 @@ class RGenomeinfodbdata(RPackage): depends_on("r@3.5:", type=("build", "run"), when="@1.2.1:") depends_on("r@3.3:", type=("build", "run"), when="@0.99.0:1.1.0") + depends_on("r@3.5.0:", type=("build", "run"), when="@1.2.10:") diff --git a/var/spack/repos/builtin/packages/r-gensa/package.py b/var/spack/repos/builtin/packages/r-gensa/package.py index 7402c6808fc250..96402ef9a7036a 100644 --- a/var/spack/repos/builtin/packages/r-gensa/package.py +++ b/var/spack/repos/builtin/packages/r-gensa/package.py @@ -14,6 +14,7 @@ class RGensa(RPackage): cran = "GenSA" + version("1.1.14", sha256="66e455bb0e66d3c04af84d9dddc9b89f40b4cf9fe9ad1cf0714bcf30aa1b6837") version("1.1.8", sha256="375e87541eb6b098584afccab361dc28ff09d03cf1d062ff970208e294eca216") version("1.1.7", sha256="9d99d3d0a4b7770c3c3a6de44206811272d78ab94481713a8c369f7d6ae7b80f") diff --git a/var/spack/repos/builtin/packages/r-geometries/package.py b/var/spack/repos/builtin/packages/r-geometries/package.py index 68728af1d3adf2..7c262ea9eb8c39 100644 --- a/var/spack/repos/builtin/packages/r-geometries/package.py +++ b/var/spack/repos/builtin/packages/r-geometries/package.py @@ -18,6 +18,7 @@ class RGeometries(RPackage): license("MIT") + version("0.2.4", sha256="c6292acc336bb8520b8cb3672566f993fd077cb1f6f980ae39b9c9f56b971410") version("0.2.2", sha256="32d3063de0f8a751382788f85ebaee5f39d68e486253c159d553bb3d72d69141") version("0.2.0", sha256="8cf5094f3c2458fef5d755799c766afd27c66cd1c292574a6ab532d608360314") diff --git a/var/spack/repos/builtin/packages/r-geomorph/package.py b/var/spack/repos/builtin/packages/r-geomorph/package.py index 6cce7f23134a71..d4144663fb4bb0 100644 --- a/var/spack/repos/builtin/packages/r-geomorph/package.py +++ b/var/spack/repos/builtin/packages/r-geomorph/package.py @@ -18,6 +18,7 @@ class RGeomorph(RPackage): license("GPL-3.0-or-later") + version("4.0.8", sha256="14b4ad5a03fb58d9e7d02ddc4d0756553e9480ded3e68fd699249d58870f0c55") version("4.0.5", sha256="900d41f95a610b026763797f290ce94c10827a59b05030ed01c841c59264313b") version("4.0.4", sha256="dfded29070bc06bf1dc0d6fedaa16fea9f8eef76f0a7443a11f2835c328c6b0a") version("4.0.3", sha256="8fd77bedf2ee85f1e4aaac4b22253810d12dba0b79d78d67695d237b7184e263") @@ -31,9 +32,11 @@ class RGeomorph(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.1.0:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@3.3.2:") + depends_on("r@4.4.0:", type=("build", "run"), when="@4.0.8:") depends_on("r-matrix", type=("build", "run")) depends_on("r-rrpp", type=("build", "run"), when="@3.0.7:") depends_on("r-rrpp@1.0.0:", type=("build", "run"), when="@4.0.1:") + depends_on("r-rrpp@2.0.1:", type=("build", "run"), when="@4.0.8:") depends_on("r-rgl", type=("build", "run")) depends_on("r-jpeg", type=("build", "run")) depends_on("r-ape", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-geor/package.py b/var/spack/repos/builtin/packages/r-geor/package.py index 60cc131b92cec1..9ac4d6fd8b8ad9 100644 --- a/var/spack/repos/builtin/packages/r-geor/package.py +++ b/var/spack/repos/builtin/packages/r-geor/package.py @@ -15,6 +15,7 @@ class RGeor(RPackage): cran = "geoR" + version("1.9-4", sha256="ae9d977cebe0f93b2593542f8d6d060467984dcf174e84ba632307c035d7ebbd") version("1.9-2", sha256="7ce3f5256a33a9de71b22a08caba634e77344889aac7d9eed02625a90254b9d9") version("1.8-1", sha256="990647804590b925a50f72897b24bbabd331cebef0be1696a60528b2f79d6fd3") version("1.7-5.2.1", sha256="3895e49c005a5745738d190ccaad43bb0aa49c74465d4d0b4dd88c5850ed63b9") diff --git a/var/spack/repos/builtin/packages/r-gert/package.py b/var/spack/repos/builtin/packages/r-gert/package.py index 3ac439d4207bab..1f603de052fbb8 100644 --- a/var/spack/repos/builtin/packages/r-gert/package.py +++ b/var/spack/repos/builtin/packages/r-gert/package.py @@ -19,6 +19,7 @@ class RGert(RPackage): license("MIT") + version("2.1.1", sha256="42037c041b284ae7ef4da68b784f2dfc3f72701534a8330265b1abc382eda964") version("1.9.2", sha256="42ca1b4bcafb1fdbbc7f54df0ee4476ecd19e9e7d563b53fe7064e0086ab665e") version("1.9.1", sha256="751d18760a08ae00b8de73dc3e564cf4e76b1f47c7179101320e1b70152e1fdd") version("1.6.0", sha256="8c440aeebabf1cb3b57124ec9280e0f46b2ab56f2bca07d72b5c7a7f4edc2964") diff --git a/var/spack/repos/builtin/packages/r-getopt/package.py b/var/spack/repos/builtin/packages/r-getopt/package.py index 79b26170f133a6..a2d60d3cedcf59 100644 --- a/var/spack/repos/builtin/packages/r-getopt/package.py +++ b/var/spack/repos/builtin/packages/r-getopt/package.py @@ -19,6 +19,7 @@ class RGetopt(RPackage): license("GPL-2.0-or-later") + version("1.20.4", sha256="87d36cbe6dba41dbc1d78d845210266cdd08c7440d977d738a6e45db14221e8b") version("1.20.3", sha256="531f5fdfdcd6b96a73df2b39928418de342160ac1b0043861e9ea844f9fbf57f") version("1.20.2", sha256="3d6c12d32d6cd4b2909be626e570e158b3ed960e4739510e3a251e7f172de38e") version("1.20.1", sha256="1522c35b13e8546979725a68b75e3bc9d156fb06569067472405f6b8591d8654") diff --git a/var/spack/repos/builtin/packages/r-ggally/package.py b/var/spack/repos/builtin/packages/r-ggally/package.py index dac799bacf2cfd..8a2907206754e0 100644 --- a/var/spack/repos/builtin/packages/r-ggally/package.py +++ b/var/spack/repos/builtin/packages/r-ggally/package.py @@ -18,6 +18,7 @@ class RGgally(RPackage): cran = "GGally" + version("2.2.1", sha256="8bb326665936a63f6eef92a2af1a11d1fae78dbd28d6980608d2b38ee1f586c6") version("2.1.2", sha256="30352f36bf061bc98bdd5fa373ea0f23d007040bd908c7c018c8e627e0fb28e5") version("2.1.0", sha256="7ffb86b8a4e79543cf7e6bb1e3684d738ecd8e0ba89e8ef38991898b18dd6c53") version("1.4.0", sha256="9a47cdf004c41f5e4024327b94227707f4dad3a0ac5556d8f1fba9bf0a6355fe") @@ -27,15 +28,20 @@ class RGgally(RPackage): depends_on("r-ggplot2@2.2.0:", type=("build", "run")) depends_on("r-ggplot2@3.3.0:", type=("build", "run"), when="@2.1.0:") depends_on("r-ggplot2@3.3.4:", type=("build", "run"), when="@2.1.2:") + depends_on("r-ggplot2@3.4.4:", type=("build", "run"), when="@2.2.0:") depends_on("r-dplyr@1.0.0:", type=("build", "run"), when="@2.1.0:") - depends_on("r-forcats", type=("build", "run"), when="@2.1.0:") + depends_on("r-ggstats", type=("build", "run"), when="@2.2.0:") depends_on("r-gtable@0.2.0:", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run"), when="@2.1.0:") depends_on("r-plyr@1.8.3:", type=("build", "run")) depends_on("r-progress", type=("build", "run")) depends_on("r-rcolorbrewer", type=("build", "run")) - depends_on("r-reshape@0.8.5:", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@1.4.0:") depends_on("r-scales@1.1.0:", type=("build", "run"), when="@2.1.0:") depends_on("r-tidyr", type=("build", "run"), when="@2.1.0:") + depends_on("r-tidyr@1.3.0:", type=("build", "run"), when="@2.2.0:") + depends_on("r-magrittr", type=("build", "run"), when="@2.2.0:") depends_on("openssl", when="@1.4.0:") + + depends_on("r-forcats", type=("build", "run"), when="@2.1.0:2.1") + depends_on("r-reshape@0.8.5:", type=("build", "run"), when="@:2.1") diff --git a/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py b/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py index 5915714aff0413..d8738700faaf25 100644 --- a/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py +++ b/var/spack/repos/builtin/packages/r-ggbeeswarm/package.py @@ -17,12 +17,14 @@ class RGgbeeswarm(RPackage): license("GPL-3.0-or-later") + version("0.7.2", sha256="fd7ca265bb892dde514d5f8d6a853fb8b32d7a673b05e9c8b50544a523299ce5") version("0.7.1", sha256="f41550335149bc2122fed0dd280d980cecd02ace79e042d5e03c1f102200ac92") version("0.6.0", sha256="bbac8552f67ff1945180fbcda83f7f1c47908f27ba4e84921a39c45d6e123333") depends_on("r@3.0.0:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@0.7.1:") depends_on("r-beeswarm", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@0.7.2:") depends_on("r-lifecycle", type=("build", "run"), when="@0.7.1:") depends_on("r-ggplot2@2.0:", type=("build", "run")) depends_on("r-ggplot2@3.3.0:", type=("build", "run"), when="@0.7.1:") diff --git a/var/spack/repos/builtin/packages/r-ggdendro/package.py b/var/spack/repos/builtin/packages/r-ggdendro/package.py index 657d9a4d49f566..21bfda18c262aa 100644 --- a/var/spack/repos/builtin/packages/r-ggdendro/package.py +++ b/var/spack/repos/builtin/packages/r-ggdendro/package.py @@ -21,9 +21,11 @@ class RGgdendro(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.2.0", sha256="1940c34ddb30083a4c3bc3be98b6b466dcc78e03ac22a32088744db8bff7aa69") version("0.1.23", sha256="3a33e988c4fe12eec540876ad8ba09bda998773b2d2a90e043ebae4a69fa8eb8") version("0.1.22", sha256="f0a65f3498c1abc3076df0fb56364b63bdf5d212d8931f85bcc6997510916b6a") version("0.1-20", sha256="125cae904fa5d426cccaf32ebe9c6297e9ef0c6fd3f19f61513834d03a0cf8ff") + depends_on("r@3.5:", type=("build", "run"), when="@0.2.0:") depends_on("r-mass", type=("build", "run")) depends_on("r-ggplot2@0.9.2:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggforce/package.py b/var/spack/repos/builtin/packages/r-ggforce/package.py index 0c73a818132577..cf8063a2423eb8 100644 --- a/var/spack/repos/builtin/packages/r-ggforce/package.py +++ b/var/spack/repos/builtin/packages/r-ggforce/package.py @@ -19,6 +19,7 @@ class RGgforce(RPackage): license("MIT") + version("0.4.2", sha256="c145b0e6ed6847d409ed2fe103b81234855bc0661cde2bfb4410fb23680e51a8") version("0.4.1", sha256="b44219fb63c45fa003c64bca323452f16dcace635204bc0127d3244c0f451873") version("0.3.3", sha256="2a283bb409da6b96929863a926b153bcc59b2c6f00551805db1d1d43e5929f2f") version("0.3.2", sha256="4cce8acb60ce06af44c1c76bbacd7de129eed9b51ed6a85e03a9bf55b0eff4d2") diff --git a/var/spack/repos/builtin/packages/r-ggfun/package.py b/var/spack/repos/builtin/packages/r-ggfun/package.py index 9c73c7fa48e7b7..c1aebd8afb1784 100644 --- a/var/spack/repos/builtin/packages/r-ggfun/package.py +++ b/var/spack/repos/builtin/packages/r-ggfun/package.py @@ -16,6 +16,7 @@ class RGgfun(RPackage): license("Artistic-2.0") + version("0.1.5", sha256="fe6c01fd68c17497f23f76dfd4e5a6edd79a6e86850b8c5054748f31527b16d3") version("0.0.9", sha256="5c740e9d1e73b77658f41ed65e21492f4e71b12c7c9ff4b9e52ebf5f8f197612") version("0.0.8", sha256="9471a12fc7af203a419767b845e6b6c1e63c080370cb8f2dac80187194122273") version("0.0.7", sha256="a83b5fb95f61e366f96d6d8e6b04dafff8e885e7c80c913614876b50ebb8e174") @@ -23,5 +24,8 @@ class RGgfun(RPackage): version("0.0.5", sha256="b1e340a8932d2cffbbbf6070ce96c9356599e9955a2b6534fcb17e599c575783") version("0.0.4", sha256="5926365f9a90baf47320baf48c40f515ef570f9c767484adea5f04219964d21e") + depends_on("r@4.1.0:", type=("build", "run"), when="@0.1.2:") + depends_on("r-cli", type=("build", "run"), when="@0.1.3:") + depends_on("r-dplyr", type=("build", "run"), when="@0.1.5:") depends_on("r-ggplot2", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggmap/package.py b/var/spack/repos/builtin/packages/r-ggmap/package.py index 9a007a055fb28a..c0b6fe8a04fc48 100644 --- a/var/spack/repos/builtin/packages/r-ggmap/package.py +++ b/var/spack/repos/builtin/packages/r-ggmap/package.py @@ -18,6 +18,7 @@ class RGgmap(RPackage): license("GPL-2.0-only") + version("4.0.0", sha256="0de639357c066e3b632eb960fd811276558ce29aefa2f77ef711ff5841c734f5") version("3.0.2", sha256="ba5fe3975fd4ca1a5fbda4910c9705ac2edacec75c658177edaf87f1c55cdcae") version("3.0.1", sha256="fc824b547f1fd0b52b6fbd18a82fe6f29f97b1f592e2c61baf4686ddfd47e35d") version("3.0.0", sha256="96c24ffdc0710d0633ac4721d599d2c06f43a29c59d1e85c94ff0af30dfdb58d") @@ -26,7 +27,6 @@ class RGgmap(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-ggplot2@2.2.0:", type=("build", "run")) - depends_on("r-rgooglemaps", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-plyr", type=("build", "run")) depends_on("r-jpeg", type=("build", "run")) @@ -44,6 +44,7 @@ class RGgmap(RPackage): depends_on("r-cli", type=("build", "run"), when="@3.0.1:") depends_on("r-rlang", type=("build", "run"), when="@3.0.1:") + depends_on("r-rgooglemaps", type=("build", "run"), when="@:3.0.2") depends_on("r-proto", type=("build", "run"), when="@:2.6.2") depends_on("r-reshape2", type=("build", "run"), when="@:2.6.2") depends_on("r-mapproj", type=("build", "run"), when="@:2.6.2") diff --git a/var/spack/repos/builtin/packages/r-ggnewscale/package.py b/var/spack/repos/builtin/packages/r-ggnewscale/package.py index 5c0d929a7f8163..8e4518e837e3e9 100644 --- a/var/spack/repos/builtin/packages/r-ggnewscale/package.py +++ b/var/spack/repos/builtin/packages/r-ggnewscale/package.py @@ -15,6 +15,8 @@ class RGgnewscale(RPackage): license("GPL-3.0-only") + version("0.5.0", sha256="b7f0dcb38d0e8cb4179d92f38b20489905ceb2a9602b68e2c72997d795c4df2d") version("0.4.8", sha256="c7fefa6941ecbc789507e59be13fa96327fe2549681a938c43beb06ca22a9700") depends_on("r-ggplot2@3.0.0:", type=("build", "run")) + depends_on("r-ggplot2@3.5.0:", type=("build", "run"), when="@0.5.0:") diff --git a/var/spack/repos/builtin/packages/r-ggplot2/package.py b/var/spack/repos/builtin/packages/r-ggplot2/package.py index a7f919b38cc0f8..61b80a6a7fcfec 100644 --- a/var/spack/repos/builtin/packages/r-ggplot2/package.py +++ b/var/spack/repos/builtin/packages/r-ggplot2/package.py @@ -35,12 +35,12 @@ class RGgplot2(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@3.2.0:") depends_on("r@3.3:", type=("build", "run"), when="@3.3.4:") + depends_on("r@3.5:", type=("build", "run"), when="@3.5.0:") depends_on("r-cli", type=("build", "run"), when="@3.4.0:") depends_on("r-glue", type=("build", "run"), when="@3.3.3:") depends_on("r-gtable@0.1.1:", type=("build", "run")) depends_on("r-isoband", type=("build", "run"), when="@3.3.3:") - depends_on("r-lifecycle@1.0.1:", type=("build", "run"), when="@3.4.0:") - depends_on("r-lifecycle@unknown:", type=("build", "run"), when="@3.4.2:") + depends_on("r-lifecycle@1.0.1.1:", type=("build", "run"), when="@3.4.0:") depends_on("r-mass", type=("build", "run")) depends_on("r-mgcv", type=("build", "run"), when="@3.2.0:") depends_on("r-rlang@0.3.0:", type=("build", "run"), when="@3.0.0:") @@ -52,6 +52,7 @@ class RGgplot2(RPackage): depends_on("r-scales@1.3.0:", type=("build", "run"), when="@3.5.0:") depends_on("r-tibble", type=("build", "run")) depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@3.4.0:") + depends_on("r-vctrs@0.6.0:", type=("build", "run"), when="@3.5.1:") depends_on("r-withr@2.0.0:", type=("build", "run"), when="@3.0.0:") depends_on("r-withr@2.5.0:", type=("build", "run"), when="@3.4.0:") diff --git a/var/spack/repos/builtin/packages/r-ggplotify/package.py b/var/spack/repos/builtin/packages/r-ggplotify/package.py index b87ca84a9d7d12..561d5ea54761cd 100644 --- a/var/spack/repos/builtin/packages/r-ggplotify/package.py +++ b/var/spack/repos/builtin/packages/r-ggplotify/package.py @@ -19,6 +19,7 @@ class RGgplotify(RPackage): license("Artistic-2.0") + version("0.1.2", sha256="01bae5759e14e211bddb04413e094ba31399b513989894ea08602d202f990e87") version("0.1.0", sha256="178f73d6d3dc391c3efb1a62c95fe38587044f9e3288dffb915d3687941bb38a") version("0.0.5", sha256="035ea6a70023c4819c8a486d0fd94c2765aa4d6df318747e104eeb9829b9d65d") version("0.0.3", sha256="7e7953a2933aa7127a0bac54375e3e0219a0744cfc3249c3d7b76065f7a51892") diff --git a/var/spack/repos/builtin/packages/r-ggraph/package.py b/var/spack/repos/builtin/packages/r-ggraph/package.py index cc887295f08b27..ad065c45374b10 100644 --- a/var/spack/repos/builtin/packages/r-ggraph/package.py +++ b/var/spack/repos/builtin/packages/r-ggraph/package.py @@ -19,6 +19,7 @@ class RGgraph(RPackage): license("MIT") + version("2.2.1", sha256="4405f8a907ad8fee68b5d4991f0bc8f35d6c0facbb7467c2ce425d3ec8b23af1") version("2.1.0", sha256="686fdb22dc4f613273fb755ec42399a208b4d10348eecd1a217afd4612245c1f") version("2.0.6", sha256="7b0ac90d834a3ce5641b4bca159d59d09607ddaab592908361b75cffb648d40a") version("2.0.5", sha256="e36ad49dba92ee8652e18b1fb197be0ceb9f0a2f8faee2194453a62578449654") @@ -27,20 +28,25 @@ class RGgraph(RPackage): depends_on("r@2.10:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run")) - depends_on("r-rcpp@0.12.2:", type=("build", "run")) + depends_on("r-ggplot2@3.5.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-dplyr", type=("build", "run")) depends_on("r-ggforce@0.3.1:", type=("build", "run")) depends_on("r-igraph@1.0.0:", type=("build", "run")) depends_on("r-scales", type=("build", "run")) depends_on("r-mass", type=("build", "run")) - depends_on("r-digest", type=("build", "run")) - depends_on("r-gtable", type=("build", "run")) depends_on("r-ggrepel", type=("build", "run")) depends_on("r-viridis", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) depends_on("r-tidygraph", type=("build", "run")) depends_on("r-graphlayouts@0.5.0:", type=("build", "run")) + depends_on("r-graphlayouts@1.1.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-withr", type=("build", "run"), when="@2.0.4:") depends_on("r-lifecycle", type=("build", "run"), when="@2.1.0:") + depends_on("r-memoise", type=("build", "run"), when="@2.2.0:") depends_on("r-vctrs", type=("build", "run"), when="@2.1.0:") depends_on("r-cli", type=("build", "run"), when="@2.1.0:") + depends_on("r-cpp11", type=("build", "run"), when="@2.2.0:") + + depends_on("r-rcpp@0.12.2:", type=("build", "run"), when="@:2.1.0") + depends_on("r-digest", type=("build", "run"), when="@:2.1.0") + depends_on("r-gtable", type=("build", "run"), when="@:2.1.0") diff --git a/var/spack/repos/builtin/packages/r-ggrastr/package.py b/var/spack/repos/builtin/packages/r-ggrastr/package.py index 67f07d652dc2fc..c25cf879ec2d05 100644 --- a/var/spack/repos/builtin/packages/r-ggrastr/package.py +++ b/var/spack/repos/builtin/packages/r-ggrastr/package.py @@ -18,6 +18,7 @@ class RGgrastr(RPackage): license("MIT") + version("1.0.2", sha256="cb27406dca99cea6440adf6edb7eb53141b60322452f5a5d4409e36516ad20d1") version("1.0.1", sha256="82d6e90fa38dec85e829f71018532ed5b709a50a585455fc07cb3bae282f5d1f") depends_on("r@3.2.2:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggrepel/package.py b/var/spack/repos/builtin/packages/r-ggrepel/package.py index ecb836d2bb666f..790f13ec54257d 100644 --- a/var/spack/repos/builtin/packages/r-ggrepel/package.py +++ b/var/spack/repos/builtin/packages/r-ggrepel/package.py @@ -17,6 +17,7 @@ class RGgrepel(RPackage): license("GPL-3.0-only OR custom") + version("0.9.5", sha256="d1e600e56c2ad345961ed23f30f04b81c631ff94bd6762a260c62e0206cf8caa") version("0.9.3", sha256="b9eba0e2edee84db0276b49e4834b65f5369edc4bc56f4cacc13e0d1c39a005c") version("0.9.2", sha256="0a3088c48177528e2a65defebbc4f09a744ebb44408588f688811f8d0d827488") version("0.9.1", sha256="29fb916d4799ba6503a5dd019717ffdf154d2aaae9ff1736f03e2be24af6bdfc") diff --git a/var/spack/repos/builtin/packages/r-ggridges/package.py b/var/spack/repos/builtin/packages/r-ggridges/package.py index b91e7d0b8d3c0e..48fae13e222df0 100644 --- a/var/spack/repos/builtin/packages/r-ggridges/package.py +++ b/var/spack/repos/builtin/packages/r-ggridges/package.py @@ -17,6 +17,7 @@ class RGgridges(RPackage): license("GPL-2.0-only OR custom") + version("0.5.6", sha256="efccaa309a150d11c6b402b912e618ea041f25cca3101f32cd821a6f41684e35") version("0.5.4", sha256="2bf71c2034804cec637e6748dc51d8cadad01d3ea4d14ace754327f082e8d851") version("0.5.3", sha256="f5eafab17f2d4a8a2a83821ad3e96ae7c26b62bbce9de414484c657383c7b42e") version("0.5.1", sha256="01f87cdcdf2052ed9c078d9352465cdeda920a41e2ca55bc154c1574fc651c36") @@ -27,6 +28,7 @@ class RGgridges(RPackage): depends_on("r@3.2:", type=("build", "run")) depends_on("r-ggplot2@2.2.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run"), when="@0.5.3:") + depends_on("r-ggplot2@3.4.0:", type=("build", "run"), when="@0.5.5:") depends_on("r-scales@0.4.1:", type=("build", "run")) depends_on("r-withr@2.1.1:", type=("build", "run"), when="@0.5.0:") diff --git a/var/spack/repos/builtin/packages/r-ggsci/package.py b/var/spack/repos/builtin/packages/r-ggsci/package.py index 5c5f4a75fb76d5..fd0574863f1f4b 100644 --- a/var/spack/repos/builtin/packages/r-ggsci/package.py +++ b/var/spack/repos/builtin/packages/r-ggsci/package.py @@ -17,6 +17,7 @@ class RGgsci(RPackage): license("GPL-3.0-or-later") + version("3.2.0", sha256="41d8ed4c01c3740028bdf2ba9c5550f1142061e4a40c93b1d2160719c59c3c4a") version("3.0.0", sha256="8901316516d78f82a2a8685d93ba479424bcfd8cb5e28a28adbd50e68964e129") version("2.9", sha256="4af14e6f3657134c115d5ac5e65a2ed74596f9a8437c03255447cd959fe9e33c") version("2.8", sha256="b4ce7adce7ef23edf777866086f98e29b2b45b58fed085bbd1ffe6ab52d74ae8") diff --git a/var/spack/repos/builtin/packages/r-ggstats/package.py b/var/spack/repos/builtin/packages/r-ggstats/package.py new file mode 100644 index 00000000000000..b1b3678954085a --- /dev/null +++ b/var/spack/repos/builtin/packages/r-ggstats/package.py @@ -0,0 +1,33 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RGgstats(RPackage): + """Provides new statistics, new geometries and new positions for + 'ggplot2' and a suite of functions to facilitate the creation of + statistical plots.""" + + homepage = "https://larmarange.github.io/ggstats/" + cran = "ggstats" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("0.6.0", sha256="f80aaa229f542cb18174b9ab82b0026c6bd3331f22bf2662712ab6af480b6d80") + + depends_on("r-broom-helpers@1.14.0:", type=("build", "run")) + depends_on("r-cli", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run")) + depends_on("r-forcats", type=("build", "run")) + depends_on("r-ggplot2@3.4.0:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run")) + depends_on("r-magrittr", type=("build", "run")) + depends_on("r-patchwork", type=("build", "run")) + depends_on("r-purrr", type=("build", "run")) + depends_on("r-rlang", type=("build", "run")) + depends_on("r-scales", type=("build", "run")) + depends_on("r-stringr", type=("build", "run")) + depends_on("r-tidyr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggthemes/package.py b/var/spack/repos/builtin/packages/r-ggthemes/package.py index a2689071ebba13..d325a1add6f3ba 100644 --- a/var/spack/repos/builtin/packages/r-ggthemes/package.py +++ b/var/spack/repos/builtin/packages/r-ggthemes/package.py @@ -19,11 +19,13 @@ class RGgthemes(RPackage): license("GPL-2.0-only") + version("5.1.0", sha256="074819acfe8bb2233426a0fef3bb448c5ce817bb14d517252fa05932e28bbd0e") version("4.2.4", sha256="7b35168cf5b68f6f52dd533a1b345ec87e09d1a85ca68e8dc5377cdf95718567") version("4.2.0", sha256="5bb3fe94819fe2cce7865f07a6e6ea5c59d3996f78d1c0836ad406f69efb3367") depends_on("r@3.3.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@5.0.0:") depends_on("r-purrr", type=("build", "run")) depends_on("r-scales", type=("build", "run")) depends_on("r-stringr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ggvis/package.py b/var/spack/repos/builtin/packages/r-ggvis/package.py index ac8864a19c3d79..75ead306ea1f9d 100644 --- a/var/spack/repos/builtin/packages/r-ggvis/package.py +++ b/var/spack/repos/builtin/packages/r-ggvis/package.py @@ -17,6 +17,7 @@ class RGgvis(RPackage): license("GPL-2.0-only OR custom") + version("0.4.9", sha256="69b9d184789c90aedd2f336d43033a8b710a16b052580bf9e7ce229ac25ba12f") version("0.4.8", sha256="3d5480a0b97a57c26b595785f826b13d7695dab1f1dd8fcf5d7964fa8546a26a") version("0.4.7", sha256="9e6b067e11d497c796d42156570e2481afb554c5db265f42afbb74d2ae0865e3") version("0.4.4", sha256="1332ea122b768688c8a407a483be80febc4576de0ec8929077738421b27cafaf") diff --git a/var/spack/repos/builtin/packages/r-gh/package.py b/var/spack/repos/builtin/packages/r-gh/package.py index e20962e5930ff1..7be200eaeec618 100644 --- a/var/spack/repos/builtin/packages/r-gh/package.py +++ b/var/spack/repos/builtin/packages/r-gh/package.py @@ -15,6 +15,7 @@ class RGh(RPackage): license("MIT") + version("1.4.1", sha256="76bd3f2a31eeaf76a633362899a20b0f7e8fb6159d4777baf3da2a47854292af") version("1.4.0", sha256="68c69fcd18429b378e639a09652465a4e92b7b5b5704804d0c5b1ca2b9b58b71") version("1.3.1", sha256="fbaea2abdeceb03d28839fd0e58c2eea01092f9ef92dcc044718ef0d298612ef") version("1.3.0", sha256="a44039054e8ca56496f2d9c7a10cdadf4a7383bc91086e768ba7e7f1fbcaed1c") @@ -23,13 +24,16 @@ class RGh(RPackage): version("1.0.1", sha256="f3c02b16637ae390c3599265852d94b3de3ef585818b260d00e7812595b391d2") depends_on("r@3.4:", type=("build", "run"), when="@1.3.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.4.1:") depends_on("r-cli", type=("build", "run"), when="@1.1.0:") depends_on("r-cli@2.0.1:", type=("build", "run"), when="@1.2.0:") depends_on("r-cli@3.0.1:", type=("build", "run"), when="@1.3.1:") depends_on("r-gitcreds", type=("build", "run"), when="@1.2.0:") + depends_on("r-glue", type=("build", "run"), when="@1.4.1:") depends_on("r-httr2", type=("build", "run"), when="@1.4.0:") depends_on("r-ini", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.4.1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.4.0:") depends_on("r-httr@1.2:", type=("build", "run"), when="@1.1.0:1.3.1") diff --git a/var/spack/repos/builtin/packages/r-git2r/package.py b/var/spack/repos/builtin/packages/r-git2r/package.py index a6718ceec1ce27..3586585e516b06 100644 --- a/var/spack/repos/builtin/packages/r-git2r/package.py +++ b/var/spack/repos/builtin/packages/r-git2r/package.py @@ -17,6 +17,7 @@ class RGit2r(RPackage): license("GPL-2.0-only") + version("0.33.0", sha256="1855b68d0e22566f1c255fdcb8e13282a2bebf55cbc804a8591dc8047f0e1895") version("0.32.0", sha256="1b5d254c0c684a56751d26d482823d0006964eb1f55c558f365d037f5e984671") version("0.31.0", sha256="f1db9278fa4604600a64beaedcf86dda595d7c8a10cdb1f7300a6635e73cd66d") version("0.30.1", sha256="85d913ddc7659e32c1b98ebc247fa1cc1b7717a5bd413fa78ea84696986ca840") @@ -30,6 +31,7 @@ class RGit2r(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@0.31.0:") + depends_on("r@4.0:", type=("build", "run"), when="@0.33.0:") depends_on("libgit2") depends_on("zlib-api") depends_on("openssl") diff --git a/var/spack/repos/builtin/packages/r-glmnet/package.py b/var/spack/repos/builtin/packages/r-glmnet/package.py index 1f613f021ac739..31e9bf049919c1 100644 --- a/var/spack/repos/builtin/packages/r-glmnet/package.py +++ b/var/spack/repos/builtin/packages/r-glmnet/package.py @@ -20,6 +20,7 @@ class RGlmnet(RPackage): license("GPL-2.0-only") + version("4.1-8", sha256="1ddbe5ce07076d1bdf58b0202ebd0ceac8eeb4796c5175681adb9e58c30ddcfe") version("4.1-7", sha256="b3a0b606d99df0256eb68e6ebd271e071b246900a4379641af2e7d548c70eaa8") version("4.1-4", sha256="f6b0f70a0b3d81ff91c2b94f795a2a32e90dd458270f1a29e49e085dd65000f9") version("4.1-3", sha256="64bc35aa40b6e580cfb8a21e649eb103e996e8747a10c476b8bb9545c846325a") diff --git a/var/spack/repos/builtin/packages/r-globals/package.py b/var/spack/repos/builtin/packages/r-globals/package.py index 954094aeca6e63..c9c1cca547b182 100644 --- a/var/spack/repos/builtin/packages/r-globals/package.py +++ b/var/spack/repos/builtin/packages/r-globals/package.py @@ -19,6 +19,7 @@ class RGlobals(RPackage): license("LGPL-2.1-or-later") + version("0.16.3", sha256="d73ced94248d8b81d29d774bdfc41496274d7da683a5d84440aed6a501a18c5b") version("0.16.2", sha256="682c26a95fa6c4e76a3a875be1a3192fc5b88e036c80dfa3b256add0336d770a") version("0.16.1", sha256="f7f63a575a3dd518c6afeabb4116bd26692a2a250df113059bc1a5b4711a1e95") version("0.15.0", sha256="f83689a420590b0d62b049c40a944c1c8c7202b3f1cc12102712c63104e99496") diff --git a/var/spack/repos/builtin/packages/r-glue/package.py b/var/spack/repos/builtin/packages/r-glue/package.py index a52dfa812fa89f..e31323deda5e22 100644 --- a/var/spack/repos/builtin/packages/r-glue/package.py +++ b/var/spack/repos/builtin/packages/r-glue/package.py @@ -19,6 +19,7 @@ class RGlue(RPackage): license("MIT") + version("1.7.0", sha256="1af51b51f52c1aeb3bfe9349f55896dd78b5542ffdd5654e432e4d646e4a86dc") version("1.6.2", sha256="9da518f12be584c90e75fe8e07f711ee3f6fc0d03d817f72c25dc0f66499fdbf") version("1.6.1", sha256="318c2f9544f1204216009f512793c44d6bbe178ff2012f56fa5ffb5e1da978db") version("1.6.0", sha256="77bef37ef2c47aad6188ea772880591c5763cce4b1c256e10e68e7c3ec6b4338") @@ -32,3 +33,4 @@ class RGlue(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@1.4.2:") depends_on("r@3.4:", type=("build", "run"), when="@1.6.0:") + depends_on("r@3.6:", when="@1.7.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-gmodels/package.py b/var/spack/repos/builtin/packages/r-gmodels/package.py index f43e4c2660faf2..7f1cf3a5fa3244 100644 --- a/var/spack/repos/builtin/packages/r-gmodels/package.py +++ b/var/spack/repos/builtin/packages/r-gmodels/package.py @@ -13,6 +13,7 @@ class RGmodels(RPackage): license("GPL-2.0-only") + version("2.19.1", sha256="bb57b83274dcc6c62eeb0d0b041d81ed19daca927bcd3872c4667ccfe3e9888d") version("2.18.1.1", sha256="da7d48021b7cd2fd8a7cd8d0bb9658b12342a32698a13877b25ca94aa03f1e95") version("2.18.1", sha256="626140a34eb8c53dd0a06511a76c71bc61c48777fa76fcc5e6934c9c276a1369") version("2.16.2", sha256="ab018894bdb376c5bd6bc4fbc4fe6e86590f4106795a586ef196fbb6699ec47d") diff --git a/var/spack/repos/builtin/packages/r-gmp/package.py b/var/spack/repos/builtin/packages/r-gmp/package.py index 85d4797c3a266d..615fba4dd2f4ca 100644 --- a/var/spack/repos/builtin/packages/r-gmp/package.py +++ b/var/spack/repos/builtin/packages/r-gmp/package.py @@ -17,6 +17,7 @@ class RGmp(RPackage): license("GPL-2.0-or-later") + version("0.7-4", sha256="a7d6b40f77d2619c11db5170b8f47336f7c5fa1db7eed0ac9d8a432e41053919") version("0.7-1", sha256="a6873dc65218905cb7615cb8e2522258f3740e29c0632473d58a1cb409835db6") version("0.6-7", sha256="6333fe691f267aa29f8078f7f738dda50c496f660357276fd33e28d607363f85") version("0.6-6", sha256="87fa95a8084855d2137b3863b6b8f3c277280dbe3a6a230e359cf32c3bed2793") diff --git a/var/spack/repos/builtin/packages/r-googleauthr/package.py b/var/spack/repos/builtin/packages/r-googleauthr/package.py index 81e0152f89bdf7..6e7953fb88d944 100644 --- a/var/spack/repos/builtin/packages/r-googleauthr/package.py +++ b/var/spack/repos/builtin/packages/r-googleauthr/package.py @@ -15,6 +15,7 @@ class RGoogleauthr(RPackage): cran = "googleAuthR" + version("2.0.2", sha256="fd55c85b5f78aa52b6e5cabd4143162cb497ab7288c8db3676acf58a0f393996") version("2.0.1", sha256="9b19a63bc250151674f20b27389baa95c10cc62dc7c3c0ff12a8d684bdb8a14b") version("2.0.0", sha256="ba504baf3bde2e1b3e988bee7602df5765cc6ca542cf0ab76a782c4e60966feb") diff --git a/var/spack/repos/builtin/packages/r-googledrive/package.py b/var/spack/repos/builtin/packages/r-googledrive/package.py index 9f39117c087821..c9e45bb0cf687a 100644 --- a/var/spack/repos/builtin/packages/r-googledrive/package.py +++ b/var/spack/repos/builtin/packages/r-googledrive/package.py @@ -15,20 +15,24 @@ class RGoogledrive(RPackage): license("MIT") + version("2.1.1", sha256="0b8b4f74ba3630b0347249a32a80bc5fc2e8b63ad2952702f30162bd2d38fb82") version("2.1.0", sha256="0d70353bbf1bebc96d3987ebd9cbb2b0902e6ddc4cdccece3d07c2bb688c4b74") version("2.0.0", sha256="605c469a6a086ef4b049909c2e20a35411c165ce7ce4f62d68fd39ffed8c5a26") depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@2.1.0:") + depends_on("r@3.6:", type=("build", "run"), when="@2.1.1:") depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-gargle@1.2.0:", type=("build", "run")) depends_on("r-gargle@1.3.0:", type=("build", "run"), when="@2.1.0:") + depends_on("r-gargle@1.5.0:", type=("build", "run"), when="@2.1.1:") depends_on("r-glue@1.4.2:", type=("build", "run")) depends_on("r-httr", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run")) depends_on("r-magrittr", type=("build", "run")) depends_on("r-pillar", type=("build", "run")) + depends_on("r-pillar@1.9.0:", type=("build", "run"), when="@2.1.1:") depends_on("r-purrr@0.2.3:", type=("build", "run")) depends_on("r-purrr@1.0.1:", type=("build", "run"), when="@2.1.0:") depends_on("r-rlang@0.4.9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-googlesheets4/package.py b/var/spack/repos/builtin/packages/r-googlesheets4/package.py index a959eb236b1151..0a1afe0dc2984a 100644 --- a/var/spack/repos/builtin/packages/r-googlesheets4/package.py +++ b/var/spack/repos/builtin/packages/r-googlesheets4/package.py @@ -21,6 +21,7 @@ class RGooglesheets4(RPackage): license("MIT") + version("1.1.1", sha256="c5cc63348c54b9de8492e7b12b249245746ea1ff33e306f12431f4fc9386fccf") version("1.1.0", sha256="50e15543bef5b8d8cda36f6ea8a1d59b256d889cd3cedddc91f00ae30c8c8ec9") version("1.0.1", sha256="284ecbce98944093cb065c1b0b32074eae7b45fd74b87d7815c7ca6deca76591") version("1.0.0", sha256="0a107d76aac99d6db48d97ce55810c1412b2197f457b8476f676169a36c7cc7a") @@ -28,11 +29,13 @@ class RGooglesheets4(RPackage): depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.0.1:") depends_on("r@3.5:", type=("build", "run"), when="@1.1.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.1.1:") depends_on("r-cellranger", type=("build", "run")) depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-curl", type=("build", "run")) depends_on("r-gargle@1.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-gargle@1.3.0:", type=("build", "run"), when="@1.1.0:") + depends_on("r-gargle@1.5.0:", type=("build", "run"), when="@1.1.1:") depends_on("r-glue@1.3.0:", type=("build", "run")) depends_on("r-googledrive@2.0.0:", type=("build", "run")) depends_on("r-googledrive@2.1.0:", type=("build", "run"), when="@1.1.0:") diff --git a/var/spack/repos/builtin/packages/r-googlevis/package.py b/var/spack/repos/builtin/packages/r-googlevis/package.py index 8200e7c0d62bdc..93a6e5b93d23dd 100644 --- a/var/spack/repos/builtin/packages/r-googlevis/package.py +++ b/var/spack/repos/builtin/packages/r-googlevis/package.py @@ -19,6 +19,7 @@ class RGooglevis(RPackage): license("CC-BY-SA-4.0") + version("0.7.3", sha256="5647ff552de5216b56ae758f29e411d04b754f482adbd3f41277d741b7708c6b") version("0.7.1", sha256="335931059ea8645f824b01a06d30fafb4e38b47cd610a5eee20628801767f218") version("0.7.0", sha256="5f1636024e678f9973e3ce605b46f46ea9cdffd58b98e315b495e66f34eb02e9") version("0.6.11", sha256="f8c90b6c51da7bf184bff6762d98fc24faba1b634724ecdb987161ee10987b97") diff --git a/var/spack/repos/builtin/packages/r-gparotation/package.py b/var/spack/repos/builtin/packages/r-gparotation/package.py index d1a486174641af..20c35487d6b2e6 100644 --- a/var/spack/repos/builtin/packages/r-gparotation/package.py +++ b/var/spack/repos/builtin/packages/r-gparotation/package.py @@ -14,6 +14,7 @@ class RGparotation(RPackage): cran = "GPArotation" + version("2024.3-1", sha256="88f657af29789591d581e0c529fd50ef1307abfb33e0403209bd3e591e2654da") version("2023.3-1", sha256="8748086c3d45286b7c9a81f0f8e58df75a09ba555d48a6eb8cd94af0c7c92a26") version("2022.10-2", sha256="04f72d8f3a9c204df5df904be563ec272a8437a707daee8823b2a690dde21917") version("2022.4-1", sha256="231e7edcdcc091fbecfb4f2e88d1a4344967cf7ea58074b385a4b8b48d9da224") diff --git a/var/spack/repos/builtin/packages/r-gplots/package.py b/var/spack/repos/builtin/packages/r-gplots/package.py index bde5c06bef5850..f56d39a4537021 100644 --- a/var/spack/repos/builtin/packages/r-gplots/package.py +++ b/var/spack/repos/builtin/packages/r-gplots/package.py @@ -34,6 +34,7 @@ class RGplots(RPackage): license("GPL-2.0-only") + version("3.1.3.1", sha256="1ae1de94f27583ad84543a15f042b8dbd0850c56447929c7157787d755211af2") version("3.1.3", sha256="9f853b9e205264d087e61e8825f797ce36c9eb585b187dab794563613a526716") version("3.1.1", sha256="f9ae19c2574b6d41adbeccaf7bc66cf56d7b2769004daba7e0038d5fbd821339") version("3.0.1.1", sha256="7db103f903a25d174cddcdfc7b946039b61e236c95084b90ad17f1a41da3770c") diff --git a/var/spack/repos/builtin/packages/r-graphlayouts/package.py b/var/spack/repos/builtin/packages/r-graphlayouts/package.py index 7a0aadaed50965..57e5a06145277f 100644 --- a/var/spack/repos/builtin/packages/r-graphlayouts/package.py +++ b/var/spack/repos/builtin/packages/r-graphlayouts/package.py @@ -19,6 +19,7 @@ class RGraphlayouts(RPackage): license("MIT") + version("1.1.1", sha256="7bc2459a02b1339ac01184a76687a3e50de5680f4699b5966a3f2e6a882f3801") version("0.8.4", sha256="778d8f7e190b05d0dbbaa7e6dbdfc0b8fef3c83b71333a6fa89926e6c04690fd") version("0.8.3", sha256="f9e4e5d794b4d1c6eba962490b3220d09b73e10893f5fa3be210240bfc654421") version("0.8.2", sha256="0fa2777a2c159f3ef1209cd96838d2651d144c9c971abfef1d22bc6376f47bec") diff --git a/var/spack/repos/builtin/packages/r-grbase/package.py b/var/spack/repos/builtin/packages/r-grbase/package.py index ce963aa539325e..d304465f2f6ae2 100644 --- a/var/spack/repos/builtin/packages/r-grbase/package.py +++ b/var/spack/repos/builtin/packages/r-grbase/package.py @@ -26,6 +26,7 @@ class RGrbase(RPackage): cran = "gRbase" + version("2.0.2", sha256="36720e49b82e360166386c9b3bf17838aeb6d9b921e7e01d48f8a115f9a02e97") version("1.8.9", sha256="dacab442d896e4593c6196e8446b75c4144a1c4ebc3f039dc624516038193d7e") version("1.8.8", sha256="fdd5d1ca8adb74e8bd2b210c9a652a10e60a90b40450cd8a295b06af41acf9db") version("1.8.7", sha256="01d77e1b029ac22b4e13f07384285f363733a42aba842eddfc5e1aceea99f808") @@ -35,13 +36,15 @@ class RGrbase(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.6.0:", type=("build", "run"), when="@1.8-6.7:") - depends_on("r-biocmanager", type=("build", "run"), when="@1.8.7:") - depends_on("r-graph", type=("build", "run")) - depends_on("r-rbgl", type=("build", "run")) - depends_on("r-rgraphviz", type=("build", "run"), when="@1.8-6.7:") + depends_on("r@4.2.0:", type=("build", "run"), when="@2.0.2:") depends_on("r-igraph", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) + depends_on("r-magrittr", type=("build", "run"), when="@:2.0.1") depends_on("r-matrix", type=("build", "run")) depends_on("r-rcpp@0.11.1:", type=("build", "run")) depends_on("r-rcppeigen", type=("build", "run")) depends_on("r-rcpparmadillo", type=("build", "run")) + + depends_on("r-biocmanager", type=("build", "run"), when="@1.8.7:1.9") + depends_on("r-graph", type=("build", "run"), when="@:1.9") + depends_on("r-rbgl", type=("build", "run"), when="@:1.9") + depends_on("r-rgraphviz", type=("build", "run"), when="@1.8-6.7:1.9") diff --git a/var/spack/repos/builtin/packages/r-gsa/package.py b/var/spack/repos/builtin/packages/r-gsa/package.py index 71c0da0a61bfdb..cb18bcb178375d 100644 --- a/var/spack/repos/builtin/packages/r-gsa/package.py +++ b/var/spack/repos/builtin/packages/r-gsa/package.py @@ -11,5 +11,6 @@ class RGsa(RPackage): cran = "GSA" + version("1.03.3", sha256="5459786190f40339addc45e7bb58c6a983548aa8feac7277ea7ec0662c5a282c") version("1.03.2", sha256="177d6059fc645d3d8883806d2dea1c5dfc68efdada9aadde8a96b6d57acf35b8") version("1.03.1", sha256="e192d4383f53680dbd556223ea5f8cad6bae62a80a337ba5fd8d05a8aee6a917") diff --git a/var/spack/repos/builtin/packages/r-gsodr/package.py b/var/spack/repos/builtin/packages/r-gsodr/package.py index da64fb09535cc8..128bd3219c47a2 100644 --- a/var/spack/repos/builtin/packages/r-gsodr/package.py +++ b/var/spack/repos/builtin/packages/r-gsodr/package.py @@ -31,6 +31,7 @@ class RGsodr(RPackage): license("MIT") + version("4.1.1", sha256="d5bf80244b5562206f459cb0ed588c11f8edf4eb2a26e2715be7938ec6be92e0") version("3.1.8", sha256="f43668b14be30632086b832be83c74fa7c25e123fbce0d0203e992a0c11e7c8d") version("3.1.6", sha256="fbeac54e86fba1e4415b41608ca59cf50be1b421cc890eb5c5b0d6d1c9229f6a") version("3.1.5", sha256="37682141707d7e29fab653ccdeb154fea2c085080f686b33f1a54140608e824d") @@ -43,7 +44,7 @@ class RGsodr(RPackage): depends_on("r-curl", type=("build", "run")) depends_on("r-data-table@1.11.6:", type=("build", "run"), when="@:2.1.2") depends_on("r-data-table", type=("build", "run")) - depends_on("r-httr", type=("build", "run")) depends_on("r-r-utils", type=("build", "run")) + depends_on("r-httr", type=("build", "run"), when="@:3.1.8") depends_on("r-future-apply", type=("build", "run"), when="@:2.1.2") diff --git a/var/spack/repos/builtin/packages/r-gss/package.py b/var/spack/repos/builtin/packages/r-gss/package.py index 6cc95a075d8364..22b02013056b76 100644 --- a/var/spack/repos/builtin/packages/r-gss/package.py +++ b/var/spack/repos/builtin/packages/r-gss/package.py @@ -16,6 +16,7 @@ class RGss(RPackage): license("GPL-2.0-or-later") + version("2.2-7", sha256="3b13144702c570c83462b4ea2ad17f4bd630cff5bf2ab0347a33c7e86a4f3f6a") version("2.2-4", sha256="953e89dfe3bee9cac51df3e5325bf4d1496ad76e4393706c4efdb1834c0c7441") version("2.2-3", sha256="24306401cf4e5869f8a690eca7e17c044ece83edd66969bd2daf5976272d244b") version("2.2-2", sha256="1da4da894378ee730cff9628e8b4d2a0d7dfa344b94e5bce6953e66723c21fe4") diff --git a/var/spack/repos/builtin/packages/r-gtable/package.py b/var/spack/repos/builtin/packages/r-gtable/package.py index 1e05bf47a54989..eb6c091d62ce6d 100644 --- a/var/spack/repos/builtin/packages/r-gtable/package.py +++ b/var/spack/repos/builtin/packages/r-gtable/package.py @@ -19,6 +19,7 @@ class RGtable(RPackage): license("MIT") + version("0.3.5", sha256="b19fc1a30359945adbab7d4e915fe95523a839c380e34ae705d70b7ebddeea72") version("0.3.3", sha256="2f9a58d978e2a487b7fd8841539ea33cf948e55ddf6f7a9bd2dd3362600a7b3a") version("0.3.1", sha256="8bd62c5722d5188914d667cabab12991c555f657f4f5ce7b547571ae3aec7cb5") version("0.3.0", sha256="fd386cc4610b1cc7627dac34dba8367f7efe114b968503027fb2e1265c67d6d3") diff --git a/var/spack/repos/builtin/packages/r-gtools/package.py b/var/spack/repos/builtin/packages/r-gtools/package.py index 2a6d23fc12c779..9cff33ad4e6d23 100644 --- a/var/spack/repos/builtin/packages/r-gtools/package.py +++ b/var/spack/repos/builtin/packages/r-gtools/package.py @@ -45,6 +45,7 @@ class RGtools(RPackage): license("GPL-2.0-only") + version("3.9.5", sha256="dee9b6c1152db1a5dc427d074b32bbbb738708683f17a95e0e95e4d79fdf174b") version("3.9.4", sha256="59cf8b194fe98b1cc05dbb4d686810a1068f59d8b402b731548a898ece85f111") version("3.9.3", sha256="7afb53277b382d5752f4597ae433f3c0addf5e8eb24d01a9562faf2a01e33133") version("3.9.2.1", sha256="ec5febad7bb33812684b39679b0bce8a668361b87714f7388546e0f4ac02af5f") diff --git a/var/spack/repos/builtin/packages/r-gwmodel/package.py b/var/spack/repos/builtin/packages/r-gwmodel/package.py index 4a83437510d5c0..74c48ee274fa76 100644 --- a/var/spack/repos/builtin/packages/r-gwmodel/package.py +++ b/var/spack/repos/builtin/packages/r-gwmodel/package.py @@ -24,6 +24,7 @@ class RGwmodel(RPackage): cran = "GWmodel" + version("2.3-3", sha256="5f69d000d7ffba491f1dafbad5ec0b5fcbbdb28831092252a8b409163d6ad33c") version("2.2-9", sha256="3696e0f24994df4f393dbcb2e74bc0808704b80e1203247be3911fc3bcdb5f18") version("2.2-8", sha256="5b1890dbf75502e89b651efd9158be77b3cfa764a5717f9889f438ed2b0a4da2") version("2.2-2", sha256="4e2b221b85fbc828ffc4f057c137ded849afcaac2a75c27d2d6d0a6db17f8a06") @@ -32,14 +33,18 @@ class RGwmodel(RPackage): version("2.0-9", sha256="b479af2c19d4aec30f1883d00193d52e342c609c1badcb51cc0344e4404cffa7") depends_on("r@3.0.0:", type=("build", "run")) - depends_on("r-maptools@0.5-2:", type=("build", "run")) depends_on("r-robustbase", type=("build", "run")) + depends_on("r-sf", type=("build", "run"), when="@2.3-1:") depends_on("r-sp", type=("build", "run")) - depends_on("r-sp@1.4-0:", type=("build", "run"), when="@2.2-2:") - depends_on("r-rcpp", type=("build", "run")) + depends_on("r-sp@1.4-0.1:", type=("build", "run"), when="@2.2-0:") depends_on("r-spatialreg", type=("build", "run")) depends_on("r-spacetime", type=("build", "run")) depends_on("r-spdep", type=("build", "run")) depends_on("r-fnn", type=("build", "run"), when="@2.1-1:") + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rcpp@1.0.12:", type=("build", "run"), when="@2.3-3:") depends_on("r-rcpparmadillo", type=("build", "run")) + depends_on("r-rcppeigen", type=("build", "run"), when="@2.3-3:") depends_on("gmake", type="build") + + depends_on("r-maptools@0.5-2:", type=("build", "run"), when="@:2.2") diff --git a/var/spack/repos/builtin/packages/r-hardhat/package.py b/var/spack/repos/builtin/packages/r-hardhat/package.py index 88330864e76803..9966baaf3eec55 100644 --- a/var/spack/repos/builtin/packages/r-hardhat/package.py +++ b/var/spack/repos/builtin/packages/r-hardhat/package.py @@ -21,6 +21,7 @@ class RHardhat(RPackage): license("MIT") + version("1.4.0", sha256="46d023ddfc8f940cd889478fa91c42e894a0df58a10f3b6c0eb688a500b2b3ad") version("1.3.0", sha256="fe9ff009e2ba6dd4d70cbb541430f88d85c0a28d6a1c2772e4910c79b81fe82e") version("1.2.0", sha256="f9320eccb1b5f624a46fa074e3ccc202c383b77098ecd08b193aeb47daedad78") version("1.0.0", sha256="2740dc243a440e7d32370a78f9258255faea6d900075901cf6009c651769e7bd") diff --git a/var/spack/repos/builtin/packages/r-haven/package.py b/var/spack/repos/builtin/packages/r-haven/package.py index 220171dbcea1f1..8bd719fa2b8022 100644 --- a/var/spack/repos/builtin/packages/r-haven/package.py +++ b/var/spack/repos/builtin/packages/r-haven/package.py @@ -33,6 +33,7 @@ class RHaven(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@2.1.1:") depends_on("r@3.4:", type=("build", "run"), when="@2.5.0:") + depends_on("r@3.6:", type=("build", "run"), when="@2.5.4:") depends_on("r-cli@3.0.0:", type=("build", "run"), when="@2.5.0:") depends_on("r-forcats@0.2.0:", type=("build", "run")) depends_on("r-hms", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hdf5r/package.py b/var/spack/repos/builtin/packages/r-hdf5r/package.py index 259c32003b9f16..257fb41bb7df3f 100644 --- a/var/spack/repos/builtin/packages/r-hdf5r/package.py +++ b/var/spack/repos/builtin/packages/r-hdf5r/package.py @@ -20,6 +20,7 @@ class RHdf5r(RPackage): license("Apache-2.0 OR custom") + version("1.3.11", sha256="9795d667bc72acfabece1e3ece1aa4e60e8194cb4eb8b46985efccd19a55a8c4") version("1.3.8", sha256="b53281e2cf57447965849748e972de2f7fe8df0cee3538ef5813c33c7ed2302b") version("1.3.7", sha256="6e8a02843ed1c970cb41f97e2acee34853d3b70ce617bc9bcff07c41b98f295b") version("1.3.5", sha256="87b75173ab226a9fbaa5b28289349f3c56b638629560a172994b8f9323c1622f") diff --git a/var/spack/repos/builtin/packages/r-hh/package.py b/var/spack/repos/builtin/packages/r-hh/package.py index da38dfed21b413..9f8fc014c5f88f 100644 --- a/var/spack/repos/builtin/packages/r-hh/package.py +++ b/var/spack/repos/builtin/packages/r-hh/package.py @@ -25,6 +25,7 @@ class RHh(RPackage): cran = "HH" + version("3.1-52", sha256="d5495e18df65de613d9bdc43729ca2ac27746b15b90c06502b2ee5e2458d0383") version("3.1-49", sha256="12cef0cb0a07c745026d925aee2970913e1f3f0705a58bc2741bf4940c80b87b") version("3.1-47", sha256="50910ac7de49122df56c6e42413535601c74bbef9240ad8977e3267273d087c0") version("3.1-43", sha256="2ed35c8fc97092e9d2ce3439a2ec342d5d7bd93ad8f5266995cc80d88cd2235b") diff --git a/var/spack/repos/builtin/packages/r-highr/package.py b/var/spack/repos/builtin/packages/r-highr/package.py index 7452077ba82f4a..ea8d5febbdadff 100644 --- a/var/spack/repos/builtin/packages/r-highr/package.py +++ b/var/spack/repos/builtin/packages/r-highr/package.py @@ -17,6 +17,7 @@ class RHighr(RPackage): license("GPL-2.0-or-later") + version("0.11", sha256="e90d14284001963325a84a9dbeef029609d52515da8d65c87ae61be21b7fe0a7") version("0.10", sha256="ec55bc1ff66390ed66806dc2a7b6c17dbfd089b3d73fe2e369017f8cb4bc347b") version("0.9", sha256="beff11390d936c90fdcc00e7ed0eb72220f3de403a51b56659e3d3e0b6d8ed4d") version("0.8", sha256="4bd01fba995f68c947a99bdf9aca15327a5320151e10bd0326fad50a6d8bc657") diff --git a/var/spack/repos/builtin/packages/r-hmisc/package.py b/var/spack/repos/builtin/packages/r-hmisc/package.py index 2ea88f61d0f89b..e2dc348b458769 100644 --- a/var/spack/repos/builtin/packages/r-hmisc/package.py +++ b/var/spack/repos/builtin/packages/r-hmisc/package.py @@ -17,6 +17,7 @@ class RHmisc(RPackage): cran = "Hmisc" + version("5.1-3", sha256="3c61772ff7a78ca5855189faa810c74117dc5df240103adc6e90eb94e9c605eb") version("5.0-1", sha256="db390f8f8a150cb5cffb812e9609a8e8632ceae0dc198528f190fd670ba8fa59") version("4.7-1", sha256="325d571a68b2198eabd258a8d86143cac659ffa70e474088a18e9b58ab882e7f") version("4.7-0", sha256="29ec2d9ca11c790c350e93323126bef4f498c69c41c31bb335fd04671e0f87bd") @@ -26,6 +27,7 @@ class RHmisc(RPackage): version("4.2-0", sha256="9e9614673288dd00295f250fa0bf96fc9e9fed692c69bf97691081c1a01411d9") version("4.1-1", sha256="991db21cdf73ffbf5b0239a4876b2e76fd243ea33528afd88dc968792f281498") + depends_on("r@4.1.0:", type=("build", "run"), when="@5.1-2:") depends_on("r-formula", type=("build", "run")) depends_on("r-ggplot2@2.2:", type=("build", "run")) depends_on("r-cluster", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hoardr/package.py b/var/spack/repos/builtin/packages/r-hoardr/package.py index 1002268151896c..dfeffebdd952c2 100644 --- a/var/spack/repos/builtin/packages/r-hoardr/package.py +++ b/var/spack/repos/builtin/packages/r-hoardr/package.py @@ -19,6 +19,7 @@ class RHoardr(RPackage): license("MIT") + version("0.5.4", sha256="4e031ac1317584451c09bc8288ed73fb2d6ceea3c10d29dbb4be08157e489a37") version("0.5.3", sha256="b9e4d1350e1fde7db922e55128306e3768ee46ff9532f05c96543dcae383647c") version("0.5.2", sha256="819113f0e25da105f120a676b5173872a4144f2f6f354cad14b35f898e76dc54") diff --git a/var/spack/repos/builtin/packages/r-htmltable/package.py b/var/spack/repos/builtin/packages/r-htmltable/package.py index e381c8773dc321..d6fc8d50c56630 100644 --- a/var/spack/repos/builtin/packages/r-htmltable/package.py +++ b/var/spack/repos/builtin/packages/r-htmltable/package.py @@ -18,6 +18,7 @@ class RHtmltable(RPackage): cran = "htmlTable" + version("2.4.3", sha256="3739d01bff313ccd206b63940a8252b037f0521d041c721a4e0d195abd6ef6dd") version("2.4.1", sha256="3a7f3e75d886dc398fd1d3cae907b536fff6af3a3d2c18349ef12ec06d310f93") version("2.4.0", sha256="4ca2b5616d77cfeee8ae5ca74307b86407d478b12d1ce17ba9c447e233b89a9d") version("2.1.0", sha256="4049339b317cbec1c8c7930e2e36cf0fc8b002516092dd270bb794d8db02f0bf") @@ -25,6 +26,7 @@ class RHtmltable(RPackage): version("1.11.2", sha256="64a273b1cdf07a7c57b9031315ca665f95d78e70b4320d020f64a139278877d1") version("1.9", sha256="5b487a7f33af77db7d987bf61f3ef2ba18bb629fe7b9802409f8b3485c603132") + depends_on("r@4.1:", type=("build", "run"), when="@2.4.2:") depends_on("r-stringr", type=("build", "run")) depends_on("r-knitr@1.6:", type=("build", "run")) depends_on("r-magrittr@1.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-htmltools/package.py b/var/spack/repos/builtin/packages/r-htmltools/package.py index 8af75e17e41365..643f2b00c2104c 100644 --- a/var/spack/repos/builtin/packages/r-htmltools/package.py +++ b/var/spack/repos/builtin/packages/r-htmltools/package.py @@ -15,6 +15,7 @@ class RHtmltools(RPackage): license("GPL-2.0-or-later") + version("0.5.8.1", sha256="f9f62293ec06c353c4584db6ccedb06a2da12e485208bd26b856f17dd013f176") version("0.5.5", sha256="c8b23fab855a89c6ed0f6d6c7cad0ff9c5ae329c0bdb479940443ee752f26659") version("0.5.3", sha256="2c451b369ea8918358e2b280f548816664fe0143222c609e6bfb1f9cd2f7324f") version("0.5.2", sha256="7dc7d50436e5a82a5801f85bcd2f572a06a98b4027d71aa17b4854ec9b2767fb") @@ -26,9 +27,10 @@ class RHtmltools(RPackage): depends_on("r@2.14.1:", type=("build", "run")) depends_on("r-digest", type=("build", "run")) depends_on("r-base64enc", type=("build", "run"), when="@0.5.1:") - depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@0.5.2:") depends_on("r-rlang", type=("build", "run"), when="@0.5.1:") + depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@0.5.2:") + depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@0.5.7:") depends_on("r-fastmap@1.1.0:", type=("build", "run"), when="@0.5.2:") - depends_on("r-ellipsis", type=("build", "run"), when="@0.5.5:") + depends_on("r-ellipsis", type=("build", "run"), when="@0.5.5:0.5.7") depends_on("r-rcpp", type=("build", "run"), when="@:0.3.6") diff --git a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py index 95e0cbd21c22d1..f7b0a0c38e3e75 100644 --- a/var/spack/repos/builtin/packages/r-htmlwidgets/package.py +++ b/var/spack/repos/builtin/packages/r-htmlwidgets/package.py @@ -17,6 +17,7 @@ class RHtmlwidgets(RPackage): license("MIT") + version("1.6.4", sha256="7cb08f0b30485dac26f72e4056ec4ed8825d1398e8b9f25ed63db228fe3a0ed0") version("1.6.2", sha256="7fda1672a4c0fbc203c790677b6ee7c40d2c2d72be4f6772f75288fc712b10bc") version("1.5.4", sha256="1a3fc60f40717de7f1716b754fd1c31a132e489a2560a278636ee78eba46ffc1") version("1.5.3", sha256="01a5833182cc224bd100be2815e57e67b524de9f2bb1542787b6e3d1303f0f29") @@ -27,6 +28,7 @@ class RHtmlwidgets(RPackage): depends_on("r-htmltools@0.3:", type=("build", "run")) depends_on("r-htmltools@0.5.4:", type=("build", "run"), when="@1.6.2:") + depends_on("r-htmltools@0.5.7:", type=("build", "run"), when="@1.6.3:") depends_on("r-jsonlite@0.9.16:", type=("build", "run")) depends_on("r-yaml", type=("build", "run")) depends_on("r-rmarkdown", type=("build", "run"), when="@1.6.2:") diff --git a/var/spack/repos/builtin/packages/r-httpuv/package.py b/var/spack/repos/builtin/packages/r-httpuv/package.py index e54167e7d60efd..8801ddadc3ef53 100644 --- a/var/spack/repos/builtin/packages/r-httpuv/package.py +++ b/var/spack/repos/builtin/packages/r-httpuv/package.py @@ -21,6 +21,7 @@ class RHttpuv(RPackage): license("GPL-2.0-or-later OR custom") + version("1.6.15", sha256="5e6ded3623a39df3e1db6cb7e7292b4c03c80b3c6c5faaac3b78b711cb205ed0") version("1.6.9", sha256="8d77f25b22fa7473b45007c2048e9a38d3792d59b2716e1fcdf9e99bd585d95d") version("1.6.6", sha256="41395fd324c5cb884d4f2a8060744758904119db22eeb312f2ea1e7ad7711293") version("1.6.5", sha256="f5f63629ca5e9d0e396a89982d95b5286726c0cb425166f35a3ad32a60a79156") diff --git a/var/spack/repos/builtin/packages/r-httr/package.py b/var/spack/repos/builtin/packages/r-httr/package.py index 028903fd0c251f..a66b9a2c55fda8 100644 --- a/var/spack/repos/builtin/packages/r-httr/package.py +++ b/var/spack/repos/builtin/packages/r-httr/package.py @@ -17,6 +17,7 @@ class RHttr(RPackage): license("MIT") + version("1.4.7", sha256="1555e6c2fb67bd38ff11b479f74aa287b2d93f4add487aec53b836ff07de3a3a") version("1.4.5", sha256="f93bac7f882b0df099abca47dd5aae3686fb3cd2d3e9926fcd639bcddff76f6c") version("1.4.4", sha256="41d82523f3ee260d409a7b5ae4136190cbc5aecbc270b40ed7064f83e7f5435d") version("1.4.3", sha256="9a8613fa96173ac910c021391af1ced4d0609169049c802cf7cdfe1c40897c6a") @@ -32,6 +33,7 @@ class RHttr(RPackage): depends_on("r@3.2:", type=("build", "run"), when="@1.4.1:") depends_on("r@3.5:", type=("build", "run"), when="@1.4.5:") depends_on("r-curl@3.0.0:", type=("build", "run")) + depends_on("r-curl@5.0.2:", type=("build", "run"), when="@1.4.7:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-mime", type=("build", "run")) depends_on("r-openssl@0.8:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-httr2/package.py b/var/spack/repos/builtin/packages/r-httr2/package.py index 4ca63c8d50684d..29f21c022cc990 100644 --- a/var/spack/repos/builtin/packages/r-httr2/package.py +++ b/var/spack/repos/builtin/packages/r-httr2/package.py @@ -18,15 +18,21 @@ class RHttr2(RPackage): license("MIT") + version("1.0.2", sha256="d1f8e37f74a59f4e1b3b886e5f453336ba14251e500acdccc8f4f7d2b9300048") version("0.2.2", sha256="5d1ab62541f7817112519f0f9d00d6a2555bab5b2da7f5c6d579b0c307d7f2bf") depends_on("r@3.4:", type=("build", "run")) + depends_on("r@4.0:", type=("build", "run"), when="@1.0.2:") depends_on("r-cli@3.0.0:", type=("build", "run")) depends_on("r-curl", type=("build", "run")) + depends_on("r-curl@5.1.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-glue", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.0.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-openssl", type=("build", "run")) depends_on("r-r6", type=("build", "run")) depends_on("r-rappdirs", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run")) + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.0:") + depends_on("r-vctrs@0.6.3:", type=("build", "run"), when="@1.0.0:") depends_on("r-withr", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hydrogof/package.py b/var/spack/repos/builtin/packages/r-hydrogof/package.py index 3f5f11b161aa76..de6840e4a4d509 100644 --- a/var/spack/repos/builtin/packages/r-hydrogof/package.py +++ b/var/spack/repos/builtin/packages/r-hydrogof/package.py @@ -19,6 +19,7 @@ class RHydrogof(RPackage): cran = "hydroGOF" + version("0.6-0", sha256="fb1839da5d6c2d0bbff961b4bb39d149b487b59dc36017aada9d3484a842269e") version("0.4-0", sha256="6a109740e36549a9369b5960b869e5e0a296261df7b6faba6cb3bd338d59883b") depends_on("r@2.10.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-hydrotsm/package.py b/var/spack/repos/builtin/packages/r-hydrotsm/package.py index 2fd5cde5e956cc..5cfc85af6cc565 100644 --- a/var/spack/repos/builtin/packages/r-hydrotsm/package.py +++ b/var/spack/repos/builtin/packages/r-hydrotsm/package.py @@ -22,14 +22,18 @@ class RHydrotsm(RPackage): cran = "hydroTSM" + version("0.7-0", sha256="a6e1f0f74a5b8f3a7c05d020739342278b0a54e7b63a66a755db5599ebf94a8e") version("0.6-0", sha256="5be759845ce05ca579ed2657c85d497b78c3060d737e84fcd457153045db4ad7") depends_on("r@2.10.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@0.7-0:") depends_on("r-zoo@1.7-2:", type=("build", "run")) depends_on("r-xts@0.9-7:", type=("build", "run")) depends_on("r-e1071", type=("build", "run")) - depends_on("r-gstat", type=("build", "run")) - depends_on("r-automap", type=("build", "run")) - depends_on("r-sp@1.1-0:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) - depends_on("r-maptools", type=("build", "run")) + depends_on("r-classint", type=("build", "run"), when="@0.7-0:") + + depends_on("r-gstat", type=("build", "run"), when="@:0.6.0") + depends_on("r-automap", type=("build", "run"), when="@:0.6.0") + depends_on("r-sp@1.1-0:", type=("build", "run"), when="@:0.6.0") + depends_on("r-maptools", type=("build", "run"), when="@:0.6.0") diff --git a/var/spack/repos/builtin/packages/r-igraph/package.py b/var/spack/repos/builtin/packages/r-igraph/package.py index dba6d2beabbd6d..cb89fe650b86bf 100644 --- a/var/spack/repos/builtin/packages/r-igraph/package.py +++ b/var/spack/repos/builtin/packages/r-igraph/package.py @@ -17,6 +17,7 @@ class RIgraph(RPackage): license("GPL-2.0-or-later") + version("2.0.3", sha256="8e8a172d4567219474562cfb1085496be3ab356483c4e88011aca1fc3b2d8f76") version("1.4.2", sha256="7d5300adb1a25a6470cada8630e35ef416181147ab624d5a0a8d3552048c4ae5") version("1.3.5", sha256="9e615d67b6b5b57dfa54ec2bbc8c29da8f7c3fe82af1e35ab27273b1035b9bd4") version("1.3.1", sha256="505a2ba7c417ceaf869240cc1c9a5f3fbd75f8d9dfcfe048df1326c6ec41144e") @@ -28,12 +29,18 @@ class RIgraph(RPackage): version("1.0.1", sha256="dc64ed09b8b5f8d66ed4936cde3491974d6bc5178dd259b6eab7ef3936aa5602") depends_on("r@3.0.2:", type=("build", "run"), when="@1.4.2:") + depends_on("r@3.5.0:", type=("build", "run"), when="@1.5.0:") + depends_on("r-cli", type=("build", "run"), when="@1.5.0:") + depends_on("r-cpp11@0.2.0:", type=("build", "run"), when="@1.4.2:") + depends_on("r-cpp11@0.4.7:", type=("build", "run"), when="@1.6.0:") + depends_on("r-lifecycle", type=("build", "run"), when="@1.5.0.1:") + depends_on("r-vctrs", type=("build", "run"), when="@2.0.3:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) depends_on("r-pkgconfig@2.0.0:", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@1.3.5:") - depends_on("r-cpp11@0.2.0:", type=("build", "run"), when="@1.4.2:") + depends_on("r-vctrs", type=("build", "run"), when="@2.0.2:") depends_on("gmp") depends_on("gmp@4.38:", when="@1.2.11:") depends_on("libxml2") diff --git a/var/spack/repos/builtin/packages/r-imager/package.py b/var/spack/repos/builtin/packages/r-imager/package.py index b132cfee0f1611..6b36e21629cf9f 100644 --- a/var/spack/repos/builtin/packages/r-imager/package.py +++ b/var/spack/repos/builtin/packages/r-imager/package.py @@ -20,6 +20,7 @@ class RImager(RPackage): license("LGPL-3.0-only") + version("1.0.2", sha256="7c849086cb17d6c5aefc106217363e14afbcda2a9e0120687d40805b5e1c566a") version("0.42.19", sha256="187abccba648ecece5e466ca6333acd5c8fdd1476daa2d04d5fa9ec5400ae1e2") version("0.42.13", sha256="d90a9893d11190ba249c7fae5bd6517a77907efbce2941452cb2aec57bb5cf7f") version("0.42.11", sha256="47f8b7ff8d05a5191e30ad1869f12a62bdbe3142b22b12a6032dec9b5f8532a8") @@ -29,8 +30,10 @@ class RImager(RPackage): depends_on("r+X") depends_on("r@2.10.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-rcpp@0.11.5:", type=("build", "run")) + depends_on("r-rcpp@1.0.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-stringr", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-jpeg", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-influencer/package.py b/var/spack/repos/builtin/packages/r-influencer/package.py index e3e60fa1dfd4aa..b26eeb2e580c49 100644 --- a/var/spack/repos/builtin/packages/r-influencer/package.py +++ b/var/spack/repos/builtin/packages/r-influencer/package.py @@ -20,6 +20,7 @@ class RInfluencer(RPackage): cran = "influenceR" + version("0.1.5", sha256="8164e4820f769032fab97c9ca486d33e83309641fcc4875065d8f5a43b20f58c") version("0.1.0.1", sha256="63c46f1175fced33fb1b78d4d56e37fbee09b408945b0106dac36e3344cd4766") version("0.1.0", sha256="4fc9324179bd8896875fc0e879a8a96b9ef2a6cf42a296c3b7b4d9098519e98a") diff --git a/var/spack/repos/builtin/packages/r-inline/package.py b/var/spack/repos/builtin/packages/r-inline/package.py index d7601ea0a0302b..0ac66b8e79a6c1 100644 --- a/var/spack/repos/builtin/packages/r-inline/package.py +++ b/var/spack/repos/builtin/packages/r-inline/package.py @@ -20,3 +20,5 @@ class RInline(RPackage): version("0.3.17", sha256="792857b2ebd408d6523424d2f6bb7297e241d4b28ab32372f6a9240c8cd554f3") version("0.3.15", sha256="ff043fe13c1991a3b285bed256ff4a9c0ba10bee764225a34b285875b7d69c68") version("0.3.14", sha256="fd34d6bf965148d26d983a022a0ff7bc1a5831f6ca066deee3f6139894dfc931") + + depends_on("r@2.4.0:", when="@0.3.16:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-insight/package.py b/var/spack/repos/builtin/packages/r-insight/package.py index 2f9f27c8ded0b6..23b0ce72763893 100644 --- a/var/spack/repos/builtin/packages/r-insight/package.py +++ b/var/spack/repos/builtin/packages/r-insight/package.py @@ -23,6 +23,7 @@ class RInsight(RPackage): license("GPL-3.0-only") + version("0.20.3", sha256="b60e189849cd3c368e9c2b2174e89c2dfbba3b34e84feb8a20af1bb758116bb2") version("0.19.1", sha256="1042629644c66b1a372fd4471d38adccc0c3a329879ef685b14b65575c1c98eb") version("0.18.6", sha256="ab0dc3c8ec765f2e93f7bcc3a7abb05140f71db24d50bf8cdd595a5a4e771cae") version("0.18.4", sha256="6e3f378bc2eb30c0300103bdd8a3e74371199b36867b45978ec9690a6fda0c5f") @@ -33,3 +34,4 @@ class RInsight(RPackage): depends_on("r@3.4:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@0.18.4:") + depends_on("r@3.6:", type=("build", "run"), when="@0.19.2:") diff --git a/var/spack/repos/builtin/packages/r-interp/package.py b/var/spack/repos/builtin/packages/r-interp/package.py index 800ecaf9a5b395..e7df13df3b210b 100644 --- a/var/spack/repos/builtin/packages/r-interp/package.py +++ b/var/spack/repos/builtin/packages/r-interp/package.py @@ -32,6 +32,7 @@ class RInterp(RPackage): license("GPL-2.0-or-later") + version("1.1-6", sha256="3674044e5334ecdf124054303929c084fc0797d3123e28576a230492ea6ecd34") version("1.1-4", sha256="4f7b5d388132a4d76e8635e2a7c4fa0d705df2b49e7d108faa16ce2236e34d06") version("1.1-3", sha256="b74e606b38cfb02985c1f9e3e45093620f76c0307b1b0b4058761e871eb5fa3f") diff --git a/var/spack/repos/builtin/packages/r-intervals/package.py b/var/spack/repos/builtin/packages/r-intervals/package.py index 60006c590a02ff..39f6181ad5177e 100644 --- a/var/spack/repos/builtin/packages/r-intervals/package.py +++ b/var/spack/repos/builtin/packages/r-intervals/package.py @@ -13,6 +13,7 @@ class RIntervals(RPackage): license("Artistic-2.0") + version("0.15.4", sha256="50c0e1e3aab3e7b72cc1f0a6559d96caa3a360e969c38538479907e6cbe39f8f") version("0.15.3", sha256="8501fef7c74b9be874e807839518aae85e79bf4a047cd52169b52c6d9b41dfc4") version("0.15.2", sha256="0bd23b0ce817ddd851238233d8a5420bf3a6d29e75fd361418cbc50118777c57") version("0.15.1", sha256="9a8b3854300f2055e1492c71932cc808b02feac8c4d3dbf6cba1c7dbd09f4ae4") diff --git a/var/spack/repos/builtin/packages/r-ipred/package.py b/var/spack/repos/builtin/packages/r-ipred/package.py index b07211585534a2..fe127d79a79c15 100644 --- a/var/spack/repos/builtin/packages/r-ipred/package.py +++ b/var/spack/repos/builtin/packages/r-ipred/package.py @@ -17,6 +17,7 @@ class RIpred(RPackage): license("GPL-2.0-or-later") + version("0.9-15", sha256="a4752de11121262f3f4c43163efa34e05e42cdf4f8496d8897be6f410dc0ee4b") version("0.9-14", sha256="81c83dc847d09c3db52ef15e36cd4dac38c50eead1008ddd458b9e89d7528f35") version("0.9-13", sha256="6168a062d93c2d3063c064a8f242cd3716dee99822e20363a1801261319c4c98") version("0.9-12", sha256="d6e1535704d39415a799d7643141ffa4f6f55597f03e763f4ccd5d8106005843") diff --git a/var/spack/repos/builtin/packages/r-iso/package.py b/var/spack/repos/builtin/packages/r-iso/package.py index 4f8ec037d0d2e6..1eb77a26957f0a 100644 --- a/var/spack/repos/builtin/packages/r-iso/package.py +++ b/var/spack/repos/builtin/packages/r-iso/package.py @@ -14,6 +14,7 @@ class RIso(RPackage): cran = "Iso" + version("0.0-21", sha256="b6842ae1c7b629ebb63355f50bb2e5d96e5696fa59590807ac6028b6dce28fa6") version("0.0-18.1", sha256="2fa5f78a7603cbae94a5e38e791938596a053d48c609a7c120a19cbb7d93c66f") version("0.0-18", sha256="2d7e8c4452653364ee086d95cea620c50378e30acfcff129b7261e1756a99504") version("0.0-17", sha256="c007d6eaf6335a15c1912b0804276ff39abce27b7a61539a91b8fda653629252") diff --git a/var/spack/repos/builtin/packages/r-jade/package.py b/var/spack/repos/builtin/packages/r-jade/package.py index 3047b0916d8a40..5ffd0424b211c2 100644 --- a/var/spack/repos/builtin/packages/r-jade/package.py +++ b/var/spack/repos/builtin/packages/r-jade/package.py @@ -18,6 +18,7 @@ class RJade(RPackage): cran = "JADE" + version("2.0-4", sha256="d4b3d65a33cae454d3ab13343bceabfb3f6b8004ac64ae7bd86dee92a1cd2055") version("2.0-3", sha256="56d68a993fa16fc6dec758c843960eee840814c4ca2271e97681a9d2b9e242ba") depends_on("r-clue", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-kableextra/package.py b/var/spack/repos/builtin/packages/r-kableextra/package.py index 38ae8c03eba9c4..16da516e32d068 100644 --- a/var/spack/repos/builtin/packages/r-kableextra/package.py +++ b/var/spack/repos/builtin/packages/r-kableextra/package.py @@ -18,20 +18,23 @@ class RKableextra(RPackage): cran = "kableExtra" + version("1.4.0", sha256="8fe2cc9fc2e8991685c4dc9e4904459e6f572c945319befde36d76f3ab527409") version("1.3.4", sha256="091ffac282cf9257edcec1a06da38b5e6516f111296bedb934e32f5692ffbbb0") depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-knitr@1.16:", type=("build", "run")) + depends_on("r-knitr@1.33:", type=("build", "run"), when="@1.4.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-stringr@1.0:", type=("build", "run")) depends_on("r-xml2@1.1.1:", type=("build", "run")) - depends_on("r-rvest", type=("build", "run")) depends_on("r-rmarkdown@1.6.0:", type=("build", "run")) depends_on("r-scales", type=("build", "run")) depends_on("r-viridislite", type=("build", "run")) depends_on("r-htmltools", type=("build", "run")) depends_on("r-rstudioapi", type=("build", "run")) - depends_on("r-glue", type=("build", "run")) - depends_on("r-webshot", type=("build", "run")) depends_on("r-digest", type=("build", "run")) depends_on("r-svglite", type=("build", "run")) + + depends_on("r-rvest", type=("build", "run"), when="@:1.3.4") + depends_on("r-glue", type=("build", "run"), when="@:1.3.4") + depends_on("r-webshot", type=("build", "run"), when="@:1.3.4") diff --git a/var/spack/repos/builtin/packages/r-kernlab/package.py b/var/spack/repos/builtin/packages/r-kernlab/package.py index 7e1289948d4ed6..858ef588e51bb5 100644 --- a/var/spack/repos/builtin/packages/r-kernlab/package.py +++ b/var/spack/repos/builtin/packages/r-kernlab/package.py @@ -18,6 +18,7 @@ class RKernlab(RPackage): license("GPL-2.0-only") + version("0.9-33", sha256="70c0787d6d3762c89bb68218fbee19e861fcb5d4c05b787a9692055d95dd3061") version("0.9-32", sha256="654ef34e343deb4d2c4c139a44e5397d6e38876088ce1c53c7deb087935d6fdc") version("0.9-31", sha256="7359c665c1c5e6780e1ce44b143347c8eec839301c3079d7f19e29159873278a") version("0.9-30", sha256="48fc3a839ae57e8ab6ec26a34093ca3306391e7b271bef6e69812e2b4859ee81") diff --git a/var/spack/repos/builtin/packages/r-kernsmooth/package.py b/var/spack/repos/builtin/packages/r-kernsmooth/package.py index 2c19b6b76bcd3a..9977170c76e679 100644 --- a/var/spack/repos/builtin/packages/r-kernsmooth/package.py +++ b/var/spack/repos/builtin/packages/r-kernsmooth/package.py @@ -14,6 +14,7 @@ class RKernsmooth(RPackage): cran = "KernSmooth" + version("2.23-24", sha256="d0b3ec39547ffd92565e91b0c3bb637f3b30e7a46afe416d8790b8c4f528ac5f") version("2.23-20", sha256="20eb75051e2473933d41eedc9945b03c632847fd581e2207d452cf317fa5ec39") version("2.23-18", sha256="8334800c5ad2305539d2731b929ea34f50fa4269ba87277b699fd5be5b03c490") version("2.23-15", sha256="8b72d23ed121a54af188b2cda4441e3ce2646359309885f6455b82c0275210f6") diff --git a/var/spack/repos/builtin/packages/r-klar/package.py b/var/spack/repos/builtin/packages/r-klar/package.py index bef15e27e149d0..b3bc4308d68310 100644 --- a/var/spack/repos/builtin/packages/r-klar/package.py +++ b/var/spack/repos/builtin/packages/r-klar/package.py @@ -20,6 +20,7 @@ class RKlar(RPackage): cran = "klaR" + version("1.7-3", sha256="d36c041c017cdb5ba3dbf7fb61d5ce3908d8e780eb2912fc99471394fcb8e3e5") version("1.7-2", sha256="8035c3edb8257973184ad5a2109fc7c77c32da913cb9dd0c2f1c373e6fccbd61") version("1.7-1", sha256="0354bafb1a202bc439660ecfcfe78359bc2881a69d15ff64afa049e4eb171d25") version("1.7-0", sha256="b4795250ef19fd1b5e1b9a59343fd01159a33dbdbb504a06258220e37a718198") diff --git a/var/spack/repos/builtin/packages/r-knitr/package.py b/var/spack/repos/builtin/packages/r-knitr/package.py index 08e5dd22e4f02d..0a605579aaacaa 100644 --- a/var/spack/repos/builtin/packages/r-knitr/package.py +++ b/var/spack/repos/builtin/packages/r-knitr/package.py @@ -17,6 +17,7 @@ class RKnitr(RPackage): license("GPL-2.0-or-later") + version("1.48", sha256="501b5926da7da1e8df61958639537e4c30110a0a8de07381afd92b31b9bff197") version("1.42", sha256="9344f1a0089e4da101def54aee38d7cfe3b2022d75c560141d8cc22ac65130f3") version("1.40", sha256="9b8f95ff367a0e52f024bda30315ec7cdd6a5b82371a1aaed95ab4eea78535bc") version("1.39", sha256="c91a65edebdca779af7f7480fa6636667497c9291ad55d6efd982db0bb91ac72") @@ -38,6 +39,7 @@ class RKnitr(RPackage): depends_on("r-evaluate@0.10:", type=("build", "run")) depends_on("r-evaluate@0.15:", type=("build", "run"), when="@1.39:") depends_on("r-highr", type=("build", "run")) + depends_on("r-highr@0.11:", type=("build", "run"), when="@1.47:") depends_on("r-yaml@2.1.19:", type=("build", "run")) depends_on("r-xfun", type=("build", "run"), when="@1.23:") depends_on("r-xfun@0.15:", type=("build", "run"), when="@1.30") @@ -46,6 +48,9 @@ class RKnitr(RPackage): depends_on("r-xfun@0.27:", type=("build", "run"), when="@1.37:") depends_on("r-xfun@0.29:", type=("build", "run"), when="@1.39:") depends_on("r-xfun@0.34:", type=("build", "run"), when="@1.42:") + depends_on("r-xfun@0.39:", type=("build", "run"), when="@1.43:") + depends_on("r-xfun@0.43:", type=("build", "run"), when="@1.46:") + depends_on("r-xfun@0.44:", type=("build", "run"), when="@1.47:") depends_on("pandoc", type="build") depends_on("py-rst2pdf", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ks/package.py b/var/spack/repos/builtin/packages/r-ks/package.py index 9ef0ad456fb171..9db06ce08da461 100644 --- a/var/spack/repos/builtin/packages/r-ks/package.py +++ b/var/spack/repos/builtin/packages/r-ks/package.py @@ -18,6 +18,7 @@ class RKs(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.14.2", sha256="f19130476cfafec26bba102b66ecbaeb80a9312c62d55eeec54d1aec75803fcb") version("1.14.0", sha256="2db9c56b7b0217b324bbf1e0f66bb94d3f7067a75c5823cbc7d369d63bbb4391") version("1.13.5", sha256="d1c4d06d704f301628455787ba929add1e774debc343d0952a768abea6cc7815") version("1.13.3", sha256="defb80df665d987f1751899f7a9809cb5a770f3c74266d7fbc7b9493616dce73") @@ -36,5 +37,6 @@ class RKs(RPackage): depends_on("r-mgcv", type=("build", "run")) depends_on("r-multicool", type=("build", "run")) depends_on("r-mvtnorm@1.0-0:", type=("build", "run")) - depends_on("r-plot3d", type=("build", "run"), when="@1.13.3:") depends_on("r-pracma", type=("build", "run"), when="@1.13.3:") + + depends_on("r-plot3d", type=("build", "run"), when="@1.13.3:1.14.1") diff --git a/var/spack/repos/builtin/packages/r-ksamples/package.py b/var/spack/repos/builtin/packages/r-ksamples/package.py index fc0bb71af3a616..b9363d05308dbc 100644 --- a/var/spack/repos/builtin/packages/r-ksamples/package.py +++ b/var/spack/repos/builtin/packages/r-ksamples/package.py @@ -24,6 +24,7 @@ class RKsamples(RPackage): cran = "kSamples" + version("1.2-10", sha256="2d66cc0511fb1be3190c5a285dcd93d02419468ee1ff5ae6d0838f16df2b578d") version("1.2-9", sha256="ba3ec4af3dfcf7cf12f0b784ef67bfea565e16985647ead904629886cc1542ff") depends_on("r-suppdists", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-labeling/package.py b/var/spack/repos/builtin/packages/r-labeling/package.py index cafeae89614e39..62202903af1a55 100644 --- a/var/spack/repos/builtin/packages/r-labeling/package.py +++ b/var/spack/repos/builtin/packages/r-labeling/package.py @@ -15,5 +15,6 @@ class RLabeling(RPackage): license("MIT OR custom") + version("0.4.3", sha256="c62f4fc2cc74377d7055903c5f1913b7295f7587456fe468592738a483e264f2") version("0.4.2", sha256="e022d79276173e0d62bf9e37d7574db65ab439eb2ae1833e460b1cff529bd165") version("0.3", sha256="0d8069eb48e91f6f6d6a9148f4e2dc5026cabead15dd15fc343eff9cf33f538f") diff --git a/var/spack/repos/builtin/packages/r-labelled/package.py b/var/spack/repos/builtin/packages/r-labelled/package.py index 7d3e5d852631fa..755ff749c69849 100644 --- a/var/spack/repos/builtin/packages/r-labelled/package.py +++ b/var/spack/repos/builtin/packages/r-labelled/package.py @@ -18,6 +18,7 @@ class RLabelled(RPackage): license("GPL-3.0-or-later") + version("2.13.0", sha256="9e2e82a42343b62f8a476d4dd7b13e9ffb3ee2c4e23bdf2cd29ef25b3dffa237") version("2.11.0", sha256="eddc5299ca448ea9c244960af65b95f4164495febd609f719e0f453598a0e5dd") version("2.10.0", sha256="5e93e29dcbbf0f6273b502b744695426e238ffe106f1db2bb5daeb1f17c9c40a") version("2.9.1", sha256="9eb10b245f64f3fb7346121aa4cd98638946e1cc4208dd5e28791ef8fd62fa40") @@ -34,5 +35,6 @@ class RLabelled(RPackage): depends_on("r-vctrs", type=("build", "run")) depends_on("r-stringr", type=("build", "run"), when="@2.9.0:") depends_on("r-tidyr", type=("build", "run")) + depends_on("r-tidyselect", type=("build", "run"), when="@2.13.0:") depends_on("r-pillar", type=("build", "run"), when="@:2.7.0") diff --git a/var/spack/repos/builtin/packages/r-later/package.py b/var/spack/repos/builtin/packages/r-later/package.py index 78f29762a9ee0d..0093ebf261d66f 100644 --- a/var/spack/repos/builtin/packages/r-later/package.py +++ b/var/spack/repos/builtin/packages/r-later/package.py @@ -16,6 +16,7 @@ class RLater(RPackage): license("MIT") + version("1.3.2", sha256="52f5073d33cd0d3c12e56526c9c53c323ebafcc79b22cc6e51fb0c41ee2b561e") version("1.3.0", sha256="08f50882ca3cfd2bb68c83f1fcfbc8f696f5cfb5a42c1448c051540693789829") version("1.1.0.1", sha256="71baa7beae774a35a117e01d7b95698511c3cdc5eea36e29732ff1fe8f1436cd") version("0.8.0", sha256="6b2a28b43c619b2c7890840c62145cd3a34a7ed65b31207fdedde52efb00e521") diff --git a/var/spack/repos/builtin/packages/r-lattice/package.py b/var/spack/repos/builtin/packages/r-lattice/package.py index 78c7afeb11b87a..ed00c72206705e 100644 --- a/var/spack/repos/builtin/packages/r-lattice/package.py +++ b/var/spack/repos/builtin/packages/r-lattice/package.py @@ -18,6 +18,7 @@ class RLattice(RPackage): license("GPL-2.0-or-later") + version("0.22-6", sha256="4b377211e472ece7872b9d6759f9b9c660b09594500462eb6146312a1d4d00f7") version("0.21-8", sha256="8ad3d6974262e6cab6cc8fec38aa279b5b2f2524adf6f3eab56f68302b60c329") version("0.20-45", sha256="22388d92bdb7d3959da84d7308d9026dd8226ef07580783729e8ad2f7d7507ad") version("0.20-44", sha256="57b908e3c7ada08a38ad857ee44f44fdf9cfa59d5d9500bda2ccc9c7e96cdb9b") diff --git a/var/spack/repos/builtin/packages/r-lava/package.py b/var/spack/repos/builtin/packages/r-lava/package.py index 25c4232c2beba6..e6488a566d15e6 100644 --- a/var/spack/repos/builtin/packages/r-lava/package.py +++ b/var/spack/repos/builtin/packages/r-lava/package.py @@ -23,6 +23,7 @@ class RLava(RPackage): license("GPL-3.0-only") + version("1.8.0", sha256="8db996eeca012c58736f2d3b97f569c03e9361e20f31513c090a9386eb87e87f") version("1.7.2.1", sha256="d42b1f5c7e4e76718e4f014c44608295f82b5de0eb25ce8e9b35c40c7839ef2e") version("1.7.0", sha256="3078da69f3828812bcd093acc2d1cd2c8cbc8480d81da222ae49a55bcb2e5e24") version("1.6.10", sha256="7a88f8a885872e2abb3011c446e9e1c4884cd4dbe6ab4cfe9207538e5560232e") @@ -32,6 +33,7 @@ class RLava(RPackage): version("1.4.7", sha256="d5cbd4835a94855478efb93051eece965db116ead203f4dd4e09d9a12d52f4bf") depends_on("r@3.0:", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@1.7.4:") depends_on("r-future-apply", type=("build", "run"), when="@1.6.10:") depends_on("r-progressr", type=("build", "run"), when="@1.6.10:") depends_on("r-numderiv", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-lavaan/package.py b/var/spack/repos/builtin/packages/r-lavaan/package.py index a1361283d1a7e9..abd18dcc20214a 100644 --- a/var/spack/repos/builtin/packages/r-lavaan/package.py +++ b/var/spack/repos/builtin/packages/r-lavaan/package.py @@ -16,6 +16,7 @@ class RLavaan(RPackage): license("GPL-2.0-or-later") + version("0.6-18", sha256="b907cacd6c4a2320138cb2206f17b60acf077453540bcb9cc94659fc9a48df51") version("0.6-15", sha256="9a43f3e999f9b3003a8c46a615902e01d6701d28a871d657751dd2ff3928ed9b") version("0.6-12", sha256="8048273e4102f8355ba123c8aff94a9e5a8e9ac9e02a73e986b106ceed4d079e") version("0.6-11", sha256="2cc193b82463a865cd8dadb7332409fdebf47e4035d5fe8dbf3414a7ae18d308") diff --git a/var/spack/repos/builtin/packages/r-leafem/package.py b/var/spack/repos/builtin/packages/r-leafem/package.py index 6a1ebaa35f5607..22feaf3df6f757 100644 --- a/var/spack/repos/builtin/packages/r-leafem/package.py +++ b/var/spack/repos/builtin/packages/r-leafem/package.py @@ -20,6 +20,7 @@ class RLeafem(RPackage): license("MIT") + version("0.2.3", sha256="defd5baa4383da4182e97d41145c7a9633a987de05c465eb99a7a452fbf375e3") version("0.2.0", sha256="97eb78b3eaf6012940f2c4f73effd8ff2d39aa46fef5f2ddf0005990b07dba8d") version("0.1.6", sha256="ca50e0a699f564449248511857a2df0d48cd07de3157e099478a19b533088156") version("0.1.3", sha256="6f123fc15efadb85d317c01003e3b7af5dc925cffe0bbe774b1b39b6bd67f304") diff --git a/var/spack/repos/builtin/packages/r-leaflet-providers/package.py b/var/spack/repos/builtin/packages/r-leaflet-providers/package.py index 6d3f39a792375b..725c0e21a19e07 100644 --- a/var/spack/repos/builtin/packages/r-leaflet-providers/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet-providers/package.py @@ -18,6 +18,9 @@ class RLeafletProviders(RPackage): license("BSD-2-Clause") + version("2.0.0", sha256="c5ceeadc8088c9840a8249f0347501cdba0119be97219a01ea2050d1dd4a8666") version("1.9.0", sha256="9e8fc75c83313ab24663c2e718135459599549ed6e7396086cacb44e36cfd67b") depends_on("r@2.10:", type=("build", "run")) + + depends_on("r-htmltools", type=("build", "run"), when="@2.0.0:") diff --git a/var/spack/repos/builtin/packages/r-leaflet/package.py b/var/spack/repos/builtin/packages/r-leaflet/package.py index 7b17cf605c4ddb..2697b1eb836ab5 100644 --- a/var/spack/repos/builtin/packages/r-leaflet/package.py +++ b/var/spack/repos/builtin/packages/r-leaflet/package.py @@ -17,6 +17,7 @@ class RLeaflet(RPackage): license("GPL-3.0-only") + version("2.2.2", sha256="d2877b8d394116cc648456a828c5b825728be6a7afbbb3d55cc142c91a1ab8eb") version("2.1.2", sha256="26d8671e8c99d85a4c257d8fb8c07ba899a2b95f801652598578f5cc5c724039") version("2.1.1", sha256="32f6a043759a0d2d98ea05739b7b4c55a266aa01272e48243e3c44046c7a5677") version("2.0.4.1", sha256="b0f038295f1de5d32d9ffa1d0dbc1562320190f2f1365f3a5e95863fff88901f") @@ -25,17 +26,23 @@ class RLeaflet(RPackage): version("1.0.1", sha256="f25a8e10c9616ccb5504bb874c533bc44fb7e438e073d4fe4484dee0951a9bc3") depends_on("r@3.1.0:", type=("build", "run")) - depends_on("r-base64enc", type=("build", "run")) depends_on("r-crosstalk", type=("build", "run"), when="@2.0.0:") depends_on("r-htmlwidgets", type=("build", "run")) depends_on("r-htmlwidgets@1.5.4:", type=("build", "run"), when="@2.1.1:") depends_on("r-htmltools", type=("build", "run")) + depends_on("r-jquerylib", type=("build", "run"), when="@2.2.0:") + depends_on("r-leaflet-providers@1.8.0:", type=("build", "run"), when="@2.0.4.1:") + depends_on("r-leaflet-providers@2.0.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-magrittr", type=("build", "run")) - depends_on("r-markdown", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-rcolorbrewer", type=("build", "run")) depends_on("r-raster", type=("build", "run")) + depends_on("r-raster@3.6.3:", type=("build", "run"), when="@2.2.0:") depends_on("r-scales@1.0.0:", type=("build", "run")) depends_on("r-sp", type=("build", "run")) - depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@2.0.0:") - depends_on("r-leaflet-providers@1.8.0:", type=("build", "run"), when="@2.0.4.1:") + depends_on("r-viridislite", type=("build", "run"), when="@2.2.0:") + depends_on("r-xfun", type=("build", "run"), when="@2.2.0:") + + depends_on("r-base64enc", type=("build", "run"), when="@:2.1.2") + depends_on("r-markdown", type=("build", "run"), when="@:2.1.2") + depends_on("r-viridis@0.5.1:", type=("build", "run"), when="@2.0.0:2.1.2") diff --git a/var/spack/repos/builtin/packages/r-leaps/package.py b/var/spack/repos/builtin/packages/r-leaps/package.py index ee2ae5752b582d..fd8f9095f0cb51 100644 --- a/var/spack/repos/builtin/packages/r-leaps/package.py +++ b/var/spack/repos/builtin/packages/r-leaps/package.py @@ -15,5 +15,6 @@ class RLeaps(RPackage): license("GPL-2.0-or-later") + version("3.2", sha256="a0d6bebb676e5cdc0ecf3e3a07163ce0d60b6fe72a083d91f0413e11a8a96fad") version("3.1", sha256="3d7c3a102ce68433ecf167ece96a7ebb4207729e4defd0ac8fc00e7003f5c3b6") version("3.0", sha256="55a879cdad5a4c9bc3b5697dd4d364b3a094a49d8facb6692f5ce6af82adf285") diff --git a/var/spack/repos/builtin/packages/r-leiden/package.py b/var/spack/repos/builtin/packages/r-leiden/package.py index 045f47f7f5d4fd..17abea1f72de09 100644 --- a/var/spack/repos/builtin/packages/r-leiden/package.py +++ b/var/spack/repos/builtin/packages/r-leiden/package.py @@ -19,6 +19,7 @@ class RLeiden(RPackage): license("GPL-3.0-only OR custom") + version("0.4.3.1", sha256="a9ecbbcfa2724d8fdd0133af569278e036b25b6e2cbb23d453092cc6b3fc30e2") version("0.4.3", sha256="6a464b4b860e621749b3b701bb7ceb07e23c1a36be241c3e13b18105eb980938") version("0.4.2", sha256="cace86748c4aa1720508210658ee2f63f7875be5bac215084001fdc59d22e2bd") version("0.3.9", sha256="81754276e026a9a8436476365bbadf0f15a403a525a349cb56418da5d8edea0d") diff --git a/var/spack/repos/builtin/packages/r-lfe/package.py b/var/spack/repos/builtin/packages/r-lfe/package.py index fc00f5b69d04f5..0fc064e6a4f74c 100644 --- a/var/spack/repos/builtin/packages/r-lfe/package.py +++ b/var/spack/repos/builtin/packages/r-lfe/package.py @@ -24,6 +24,7 @@ class RLfe(RPackage): license("Artistic-2.0") + version("3.0-0", sha256="342d05c32932d0db755c35a7e27da1001a38e375866c6f61a18259faf0430399") version("2.9-0", sha256="7c9a9cd74ad98c65b67477eb6924409d7e372d01d7ed50fa2edb6fa34e02223c") version("2.8-8", sha256="0fc22928fa16f22ee66c8e426a0e994346ad2f67b3c5aea597f3eeffbd85ab71") version("2.8-7.1", sha256="d6a1efd8c43f84fa291e4959938f16e85bf5feef113515aaca1fe90075a78c50") diff --git a/var/spack/repos/builtin/packages/r-lhs/package.py b/var/spack/repos/builtin/packages/r-lhs/package.py index b04915a5a2d87d..7277c6a42daaf7 100644 --- a/var/spack/repos/builtin/packages/r-lhs/package.py +++ b/var/spack/repos/builtin/packages/r-lhs/package.py @@ -16,6 +16,7 @@ class RLhs(RPackage): license("GPL-3.0-only") + version("1.2.0", sha256="6b4b773c6b322f1ffb3e2ef49c244ec8a3958a0346a1cc8f42f0d0951e8b0724") version("1.1.6", sha256="e37fce44efe6a371677ba2f72f9e1e48270a0fdc60872d05def89270586cd23f") version("1.1.5", sha256="7a3c6fdcc953490e51026e17a0b1a9dc0ca8d03e6fc989457a7cdda2075b6339") version("1.1.3", sha256="e43b8d48db1cf26013697e2a798ed1d31d1ee1790f2ebfecb280176c0e0c06d1") diff --git a/var/spack/repos/builtin/packages/r-libcoin/package.py b/var/spack/repos/builtin/packages/r-libcoin/package.py index 34c66ac1f80a3e..b22b63182d8eb3 100644 --- a/var/spack/repos/builtin/packages/r-libcoin/package.py +++ b/var/spack/repos/builtin/packages/r-libcoin/package.py @@ -18,6 +18,7 @@ class RLibcoin(RPackage): license("GPL-2.0-only") + version("1.0-10", sha256="3023e0495d0789765bdf04c0ef0990a57b48fefa322c55f20e250d2d70d67eaf") version("1.0-9", sha256="2d7dd0b7c6dfc20472430570419ea36a714da7bbafd336da1fb53c5c6463d9eb") version("1.0-6", sha256="48afc1415fc89b29e4f2c8b6f6db3cffef1531580e5c806ad7cacf4afe6a4e5a") version("1.0-4", sha256="91dcbaa0ab8c2109aa54c3eda29ad0acd67c870efcda208e27acce9d641c09c5") diff --git a/var/spack/repos/builtin/packages/r-lifecycle/package.py b/var/spack/repos/builtin/packages/r-lifecycle/package.py index 6a72cd526ae15b..4ef0c7327b42d4 100644 --- a/var/spack/repos/builtin/packages/r-lifecycle/package.py +++ b/var/spack/repos/builtin/packages/r-lifecycle/package.py @@ -22,6 +22,7 @@ class RLifecycle(RPackage): license("MIT") + version("1.0.4", sha256="ada4d3c7e84b0c93105e888647c5754219a8334f6e1f82d5afaf83d4855b91cc") version("1.0.3", sha256="6459fdc3211585c0cdf120427579c12149b02161efe273a64b825c05e9aa69c2") version("1.0.1", sha256="1da76e1c00f1be96ca34e122ae611259430bf99d6a1b999fdef70c00c30f7ba0") version("0.2.0", sha256="29746e8dee05d4e36f9c612e8c7a903a4f648a36b3b94c9776e518c38a412224") @@ -29,7 +30,9 @@ class RLifecycle(RPackage): depends_on("r@3.2:", type=("build", "run")) depends_on("r@3.3:", type=("build", "run"), when="@1:") depends_on("r@3.4:", type=("build", "run"), when="@1.0.3:") + depends_on("r@3.6:", type=("build", "run"), when="@1.0.4:") depends_on("r-cli@3.4.0:", type=("build", "run"), when="@1.0.3:") depends_on("r-glue", type=("build", "run")) depends_on("r-rlang@0.4.0:", type=("build", "run")) depends_on("r-rlang@1.0.6:", type=("build", "run"), when="@1.0.3:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.4:") diff --git a/var/spack/repos/builtin/packages/r-limsolve/package.py b/var/spack/repos/builtin/packages/r-limsolve/package.py index ae67f10b813fbf..2d042d4e43c85b 100644 --- a/var/spack/repos/builtin/packages/r-limsolve/package.py +++ b/var/spack/repos/builtin/packages/r-limsolve/package.py @@ -18,6 +18,7 @@ class RLimsolve(RPackage): cran = "limSolve" + version("1.5.7.1", sha256="a5945217bbf512724297883f8d7c65846a11202266b2b6bb3355372935e85b92") version("1.5.6", sha256="b97ea9930383634c8112cdbc42f71c4e93fe0e7bfaa8f401921835cb44cb49a0") depends_on("r@2.10:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-list/package.py b/var/spack/repos/builtin/packages/r-list/package.py new file mode 100644 index 00000000000000..25113da7b65aa9 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-list/package.py @@ -0,0 +1,30 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RList(RPackage): + """Allows researchers to conduct multivariate statistical analyses + of survey data with list experiments.""" + + homepage = "https://cran.r-project.org/web/packages/list/index.html" + cran = "list" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("9.2.6", sha256="6a2b1dd9cdee87d739605fb38463cb6e04680c94b73f51fbd39b5552a62432e4") + + depends_on("r@3.2.0:", type=("build", "run")) + depends_on("r-sandwich@2.3-3:", type=("build", "run")) + depends_on("r-vgam@0.9-8:", type=("build", "run")) + depends_on("r-magic@1.5-6:", type=("build", "run")) + depends_on("r-gamlss-dist@4.3-4:", type=("build", "run")) + depends_on("r-mass@7.3-40:", type=("build", "run")) + depends_on("r-quadprog@1.5-5:", type=("build", "run")) + depends_on("r-corpcor@1.6.7:", type=("build", "run")) + depends_on("r-mvtnorm@1.0-2:", type=("build", "run")) + depends_on("r-coda@0.17-1:", type=("build", "run")) + depends_on("r-arm", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-listenv/package.py b/var/spack/repos/builtin/packages/r-listenv/package.py index d9370a0b79b499..568202242fdc86 100644 --- a/var/spack/repos/builtin/packages/r-listenv/package.py +++ b/var/spack/repos/builtin/packages/r-listenv/package.py @@ -17,6 +17,7 @@ class RListenv(RPackage): license("LGPL-2.1-or-later") + version("0.9.1", sha256="422aaf487b91c6512b83c05536f8dac255db79b16ee85254acc59a3fda8c1c3b") version("0.9.0", sha256="352841e04f0725d361b78cfdc75e00511f740d97237dd651ea86aa5484674887") version("0.8.0", sha256="fd2aaf3ff2d8d546ce33d1cb38e68401613975117c1f9eb98a7b41facf5c485f") version("0.7.0", sha256="6126020b111870baea08b36afa82777cd578e88c17db5435cd137f11b3964555") diff --git a/var/spack/repos/builtin/packages/r-lme4/package.py b/var/spack/repos/builtin/packages/r-lme4/package.py index cff157fee17a2d..024091b3a1bd35 100644 --- a/var/spack/repos/builtin/packages/r-lme4/package.py +++ b/var/spack/repos/builtin/packages/r-lme4/package.py @@ -18,6 +18,7 @@ class RLme4(RPackage): license("GPL-2.0-or-later") + version("1.1-35.5", sha256="7d6664db7ea96429562efe1058da58985d779d6fe79ec6f4e86ba68047135170") version("1.1-33", sha256="d956a5ed7cbcc016114a836bad89acf6cdafcd0f82a7d85e3805ced936b40910") version("1.1-31", sha256="5affd1e33d3fece5ec0a6c7663eb12328e64147f8aa92675ce6453c4fe72edfd") version("1.1-30", sha256="fdabdfc4b64cff05ae9506a766c948a953eeb6db71761f9401b36d6d9979300f") @@ -32,7 +33,9 @@ class RLme4(RPackage): depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run"), when="@1.1-16:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.1-31:") + depends_on("r@3.6.0:", type=("build", "run"), when="@1.1-35.5:") depends_on("r-matrix@1.2-1:", type=("build", "run")) + depends_on("r-matrix@1.2-3:", type=("build", "run"), when="@1.1-35.5:") depends_on("r-mass", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) depends_on("r-boot", type=("build", "run"), when="@1.1-21:") @@ -41,5 +44,6 @@ class RLme4(RPackage): depends_on("r-nloptr@1.0.4:", type=("build", "run")) depends_on("r-rcpp@0.10.5:", type=("build", "run")) depends_on("r-rcppeigen", type=("build", "run")) + depends_on("r-rcppeigen@0.3.3.9.4:", type=("build", "run"), when="@1.1-35.1:") depends_on("r-statmod", type=("build", "run"), when="@1.1-26") diff --git a/var/spack/repos/builtin/packages/r-locfit/package.py b/var/spack/repos/builtin/packages/r-locfit/package.py index 932e614ba5fe22..8f0bbe58bb0d0f 100644 --- a/var/spack/repos/builtin/packages/r-locfit/package.py +++ b/var/spack/repos/builtin/packages/r-locfit/package.py @@ -16,6 +16,7 @@ class RLocfit(RPackage): license("GPL-2.0-or-later") + version("1.5-9.10", sha256="4c20661814993a87ca435f42b0814bacb87c5a9ccc2ff55e4cae718cb176ac06") version("1.5-9.7", sha256="48e5fcd089fbc609d8e4c62c390425fba1dd167ad95ae0bddc175cbbe1517aff") version("1.5-9.6", sha256="1ee89e4003cb769feae61ada7ac0a971df30644824f7ed84a21dd5719f713476") version("1.5-9.5", sha256="fd9f2bad9d8beec8be4843dc80e38ebe0f388835a7003490f67e57eeb9e6de23") diff --git a/var/spack/repos/builtin/packages/r-loo/package.py b/var/spack/repos/builtin/packages/r-loo/package.py index 68f9e89684aefd..909a7fd95d6a7e 100644 --- a/var/spack/repos/builtin/packages/r-loo/package.py +++ b/var/spack/repos/builtin/packages/r-loo/package.py @@ -24,6 +24,7 @@ class RLoo(RPackage): license("GPL-3.0-or-later") + version("2.8.0", sha256="aab727a95a2e1c0e5005188e7daa6eba52455fa0c5869130d53cee5a8963244c") version("2.6.0", sha256="66da60fdf53a62cbc93797fa696a4cc43bce77f1721dd4bc1a58d25b3f981210") version("2.5.1", sha256="866a2f54a4e8726cc3062e27daa8a073e6ac4aeb6719af7845284f7a668745f1") version("2.4.1", sha256="bc21fb6b4a93a7e95ee1be57e4e787d731895fb8b4743c26b30b43adee475b50") @@ -35,4 +36,5 @@ class RLoo(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r-checkmate", type=("build", "run")) depends_on("r-matrixstats@0.52:", type=("build", "run")) + depends_on("r-posterior@1.5.0:", type=("build", "run"), when="@2.7.0:") depends_on("pandoc@1.12.3:") diff --git a/var/spack/repos/builtin/packages/r-lpsolve/package.py b/var/spack/repos/builtin/packages/r-lpsolve/package.py index 01847c815886ce..208dbf496237fb 100644 --- a/var/spack/repos/builtin/packages/r-lpsolve/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolve/package.py @@ -17,6 +17,7 @@ class RLpsolve(RPackage): cran = "lpSolve" + version("5.6.20", sha256="3ffe06a0685123c36cd306b874f89a59a70c864c8f78c5569f82a86abedc21db") version("5.6.18", sha256="751e1926fcd81b852b6c0d5ea7ecd9311ef6fbdbce9143b7872fea79590de712") version("5.6.17", sha256="f725802bd9dc05c6913daf48f2458441ad4d2996056d0942737886d8b76c9288") version("5.6.16", sha256="18a11e5184914e02b056d3d8f54ad92e4bbce651d930d61430570b4ae2ecbb2a") diff --git a/var/spack/repos/builtin/packages/r-lpsolveapi/package.py b/var/spack/repos/builtin/packages/r-lpsolveapi/package.py index 3e313013b17d7f..9018b79f2c8f14 100644 --- a/var/spack/repos/builtin/packages/r-lpsolveapi/package.py +++ b/var/spack/repos/builtin/packages/r-lpsolveapi/package.py @@ -16,6 +16,9 @@ class RLpsolveapi(RPackage): cran = "lpSolveAPI" + version( + "5.5.2.0-17.12", sha256="4f00a9d27055ddf3e2a4b0a529b720861b9f916f2ceb1fe0b71e4c52da5b70ef" + ) version( "5.5.2.0-17.9", sha256="7b52ecf3f1174f771fe24e62502be6d31acc3e48a12473e35ad0a89fc2517811" ) diff --git a/var/spack/repos/builtin/packages/r-lubridate/package.py b/var/spack/repos/builtin/packages/r-lubridate/package.py index f3ea109ef55c62..a2b37be10874df 100644 --- a/var/spack/repos/builtin/packages/r-lubridate/package.py +++ b/var/spack/repos/builtin/packages/r-lubridate/package.py @@ -20,6 +20,7 @@ class RLubridate(RPackage): license("GPL-2.0-or-later") + version("1.9.3", sha256="2b6e1406d231b0a14d60b99cc406d159fea5465a5694725ad25343f12cf37fff") version("1.9.2", sha256="8976431a4affe989261cbaa5e09cd44bb42a3b16eed59a42c1698da34c6544a7") version("1.9.0", sha256="b936041f8a71894ef930cfff61b45833e0dd148b5b16697f4f541d25b31a903a") version("1.8.0", sha256="87d66efdb1f3d680db381d7e40a202d35645865a0542e2f270ef008a19002ba5") diff --git a/var/spack/repos/builtin/packages/r-lwgeom/package.py b/var/spack/repos/builtin/packages/r-lwgeom/package.py index c25ea73c5d5419..2b09ba6336888f 100644 --- a/var/spack/repos/builtin/packages/r-lwgeom/package.py +++ b/var/spack/repos/builtin/packages/r-lwgeom/package.py @@ -17,6 +17,7 @@ class RLwgeom(RPackage): license("GPL-2.0-only") + version("0.2-14", sha256="26db6cf7dbc8cf43a70e5e2a34941a1c4b65e182f86f58d64ff9f614b3be929c") version("0.2-11", sha256="7fd73cf58981f9566d946bf63ed6575ea0c70634abeaf4e60ef9615040d63419") version("0.2-9", sha256="69b2a2efdafb0b32c801932eee7cd2c4b8402cede6487f4dfea4e14873091aa8") version("0.2-8", sha256="f48a92de222da0590b37a30d5cbf2364555044a842795f6b488afecc650b8b34") @@ -25,8 +26,10 @@ class RLwgeom(RPackage): depends_on("r@3.3.0:", type=("build", "run")) depends_on("r-rcpp", type=("build", "run")) depends_on("r-units", type=("build", "run")) - depends_on("r-sf@0.9-3:", type=("build", "run")) - depends_on("r-sf@0.6-0:", type=("build", "run"), when="@0.2-9:") + depends_on("r-sf@0.6-0:", type=("build", "run"), when="@0.1-3:") + depends_on("r-sf@0.9-0:", type=("build", "run"), when="@0.2-2:") + depends_on("r-sf@0.9-3:", type=("build", "run"), when="@0.2-4:") + depends_on("r-sf@1.0-15:", type=("build", "run"), when="@0.2-14:") depends_on("geos@3.5.0:") depends_on("proj@4.8.0:6.999") depends_on("sqlite", when="@0.2-8:") diff --git a/var/spack/repos/builtin/packages/r-magick/package.py b/var/spack/repos/builtin/packages/r-magick/package.py index c722a4b67cdcd6..f8f507f93f4ee0 100644 --- a/var/spack/repos/builtin/packages/r-magick/package.py +++ b/var/spack/repos/builtin/packages/r-magick/package.py @@ -24,6 +24,7 @@ class RMagick(RPackage): license("MIT") + version("2.8.4", sha256="45c803370f0d96b729db8114b3e2187cbe6fac13133b67b96a91c8eae734ea0a") version("2.7.4", sha256="e28d67737590f8c19e4cf00a9c74e59d0e45f9ece363ed105b5f40e821e8f02f") version("2.7.3", sha256="83877b2e23ea43fbc1164de9c2422eafbe7858393ac384df5adf3a7eec122441") version("2.6.0", sha256="66585336e3ff18793ae9e2726af67a6672622f270468670ab5fe5e013bc48ecc") diff --git a/var/spack/repos/builtin/packages/r-maldiquant/package.py b/var/spack/repos/builtin/packages/r-maldiquant/package.py index 3d646cd433c5c9..baf6e8c6a16971 100644 --- a/var/spack/repos/builtin/packages/r-maldiquant/package.py +++ b/var/spack/repos/builtin/packages/r-maldiquant/package.py @@ -20,6 +20,7 @@ class RMaldiquant(RPackage): cran = "MALDIquant" + version("1.22.3", sha256="fd094f0ea1a163ad1bd290e789ad827a76075d82ae5ce8a8e53a7095a7479383") version("1.22.1", sha256="0a52a55dbe76a7e7ca50c5555fea4381eeda0c215c66e420d8dc9bfd2992411c") version("1.21", sha256="0771f82034aa6a77af67f3572c900987b7e6b578d04d707c6e06689d021a2ff8") version("1.19.3", sha256="a730327c1f8d053d29e558636736b7b66d0671a009e0004720b869d2c76ff32c") diff --git a/var/spack/repos/builtin/packages/r-mapplots/package.py b/var/spack/repos/builtin/packages/r-mapplots/package.py index f19a3424c1f2e9..4ec8d101b21783 100644 --- a/var/spack/repos/builtin/packages/r-mapplots/package.py +++ b/var/spack/repos/builtin/packages/r-mapplots/package.py @@ -18,6 +18,7 @@ class RMapplots(RPackage): license("GPL-2.0-or-later") + version("1.5.2", sha256="ed0e151d6865549d1a10882984a7fb29bc89a7b94ad69e512f90937b981c8a18") version("1.5.1", sha256="37e96d34f37922180e07bb63b4514e07d42eee5bbf0885b278286ee48cf142a3") depends_on("r@2.10.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-maps/package.py b/var/spack/repos/builtin/packages/r-maps/package.py index b6b6e19dc51794..13840200da6784 100644 --- a/var/spack/repos/builtin/packages/r-maps/package.py +++ b/var/spack/repos/builtin/packages/r-maps/package.py @@ -16,6 +16,7 @@ class RMaps(RPackage): license("GPL-2.0-only") + version("3.4.2", sha256="53e57b889f1779cfd4a116a8ed3eded7ed29a73a1b9506248772a389c8404b0c") version("3.4.1", sha256="e693a5218ed8122e92d73a98a475d9016f2293c7852c8048677daa7649086400") version("3.4.0", sha256="7918ccb2393ca19589d4c4e77d9ebe863dc6317ebfc1ff41869dbfaf439f5747") version("3.3.0", sha256="199afe19a4edcef966ae79ef802f5dcc15a022f9c357fcb8cae8925fe8bd2216") diff --git a/var/spack/repos/builtin/packages/r-maptools/package.py b/var/spack/repos/builtin/packages/r-maptools/package.py index 8ca517229139e6..00278c11b817e3 100644 --- a/var/spack/repos/builtin/packages/r-maptools/package.py +++ b/var/spack/repos/builtin/packages/r-maptools/package.py @@ -17,6 +17,7 @@ class RMaptools(RPackage): cran = "maptools" + version("1.1-8", sha256="5e8579e3f559161935f1dde622ece703eefa2a28a677ce553d7f27611e66e0f7") version( "1.1-6", sha256="d6a5df52db03b2231f21921b693c67f85df3c3b376181aa13ef4f21710f69308", diff --git a/var/spack/repos/builtin/packages/r-mapview/package.py b/var/spack/repos/builtin/packages/r-mapview/package.py index aa7f0dc717b86c..47f23046d54658 100644 --- a/var/spack/repos/builtin/packages/r-mapview/package.py +++ b/var/spack/repos/builtin/packages/r-mapview/package.py @@ -18,6 +18,7 @@ class RMapview(RPackage): license("GPL-3.0-or-later OR custom") + version("2.11.2", sha256="414d7f732b3aaf62005e279d7b0febf50aed2183bf05522c4fccaa92117328b0") version("2.11.0", sha256="87f8cf562a0918201082a743438b9af47429bdb8871511235d72505107f4d30a") version("2.10.0", sha256="b597902c654b9abf1163bb9d4f1044fef85d0a52c8dc6538ca46b0024f63baaa") version("2.9.0", sha256="170cb2b5e67cbeb177f87bd2eab1ecabc44a1042addbcd95a85b2ec4a00eb690") @@ -33,10 +34,12 @@ class RMapview(RPackage): depends_on("r-leafpop", type=("build", "run")) depends_on("r-png", type=("build", "run")) depends_on("r-raster", type=("build", "run")) + depends_on("r-raster@3.6.3:", type=("build", "run"), when="@2.11.2:") depends_on("r-satellite", type=("build", "run")) depends_on("r-scales@0.2.5:", type=("build", "run")) depends_on("r-servr", type=("build", "run"), when="@2.10.0:") depends_on("r-sf", type=("build", "run")) depends_on("r-sp", type=("build", "run")) - depends_on("r-webshot", type=("build", "run")) depends_on("gmake", type="build") + + depends_on("r-webshot", type=("build", "run"), when="@:2.11.0") diff --git a/var/spack/repos/builtin/packages/r-markdown/package.py b/var/spack/repos/builtin/packages/r-markdown/package.py index 2453101e8ecc16..6f3ed794bbd62b 100644 --- a/var/spack/repos/builtin/packages/r-markdown/package.py +++ b/var/spack/repos/builtin/packages/r-markdown/package.py @@ -19,6 +19,7 @@ class RMarkdown(RPackage): license("MIT") + version("1.13", sha256="385421c674cf5bf2ba04d1df7c16bb5d857bec03755a36321999ac37f5b3cfd9") version("1.6", sha256="46228b8d8161ae4b651b4662364eb35a3b91e6a7a457fe99d0e709f2a6f559ea") version("1.3", sha256="b1773e94e7b927c3a8540c2704b06e0f7721a0e3538a93abd58fff420ecb30f1") version("1.1", sha256="8d8cd47472a37362e615dbb8865c3780d7b7db694d59050e19312f126e5efc1b") diff --git a/var/spack/repos/builtin/packages/r-mass/package.py b/var/spack/repos/builtin/packages/r-mass/package.py index 035d1ed9007e9a..4120bc3c4d1d11 100644 --- a/var/spack/repos/builtin/packages/r-mass/package.py +++ b/var/spack/repos/builtin/packages/r-mass/package.py @@ -14,6 +14,7 @@ class RMass(RPackage): cran = "MASS" + version("7.3-61", sha256="3144c8bf579dd7b7c47c259728c27f53f53e294e7ed307da434dfd144e800a90") version("7.3-59", sha256="454200bec7a52835fbb7f9fe8e01a7aaa728b3ab87b068fc6d900e01c930da5a") version("7.3-58.1", sha256="f704e4e2fb131740d023ae1755c925c2e684886a3061b08e26397135f1231420") version("7.3-57", sha256="bd8b880105bc1aadb2db699086f74bd92a8611287979a24243187f9d80795a8d") @@ -28,3 +29,4 @@ class RMass(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r@3.3.0:", type=("build", "run"), when="@7.3-55:") depends_on("r@4.2.0:", type=("build", "run"), when="@7.3-59:") + depends_on("r@4.4.0:", type=("build", "run"), when="@7.3-60.1:") diff --git a/var/spack/repos/builtin/packages/r-matlab/package.py b/var/spack/repos/builtin/packages/r-matlab/package.py index 1483e712473cd4..f0b0666a19effa 100644 --- a/var/spack/repos/builtin/packages/r-matlab/package.py +++ b/var/spack/repos/builtin/packages/r-matlab/package.py @@ -15,6 +15,7 @@ class RMatlab(RPackage): license("Artistic-2.0") + version("1.0.4.1", sha256="fc3fba560b73a9bf0a4f317340856c91af2c9dcc80f5df291f3f7e6d6ac4fd50") version("1.0.4", sha256="1988a2220703444a575f2bad4eb090a0da71478599eb53081dd7237b7ec216ea") version("1.0.2", sha256="a23dec736c51ae1864c1a53caac556a2f98e8020138a3b121badb0f5b7984154") diff --git a/var/spack/repos/builtin/packages/r-matrix/package.py b/var/spack/repos/builtin/packages/r-matrix/package.py index 16dbc8fe2f7cd9..a2d8cda3aa2754 100644 --- a/var/spack/repos/builtin/packages/r-matrix/package.py +++ b/var/spack/repos/builtin/packages/r-matrix/package.py @@ -18,6 +18,7 @@ class RMatrix(RPackage): license("GPL-3.0-only") + version("1.7-0", sha256="fb97bba0df370222eb4f7e2da2e94dd01053b5e054b1c51829ff9a6efc08ad37") version("1.5-4", sha256="15ceb61993d61b442068104abb46e6d91b5a1179c01eeb64563b853abab66f06") version("1.5-1", sha256="557dba0358172d67dc63eb5db90841915bb5ce1528f941a8005ae808d635575d") version("1.4-1", sha256="42b24f1d1e94482b0ff0ef1292e2df29f69694bdbee47b3d6bfeec46fafb2f7e") @@ -32,7 +33,8 @@ class RMatrix(RPackage): version("1.2-6", sha256="4b49b639b7bf612fa3d1c1b1c68125ec7859c8cdadae0c13f499f24099fd5f20") depends_on("r@3.0.1:", type=("build", "run")) - depends_on("r@3.2.0:", type=("build", "run"), when="@1.2.13:") + depends_on("r@3.2.0:", type=("build", "run"), when="@1.2-13:") depends_on("r@3.6.0:", type=("build", "run"), when="@1.3-2:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.3-3:") + depends_on("r@4.4.0:", type=("build", "run"), when="@1.7-0:") depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-matrixmodels/package.py b/var/spack/repos/builtin/packages/r-matrixmodels/package.py index ead6d5734c31cb..d5839d1ec77a7c 100644 --- a/var/spack/repos/builtin/packages/r-matrixmodels/package.py +++ b/var/spack/repos/builtin/packages/r-matrixmodels/package.py @@ -14,6 +14,7 @@ class RMatrixmodels(RPackage): cran = "MatrixModels" + version("0.5-3", sha256="c2db5406c6b0b9d348b44eea215a39c64fc087099fea1342a04d50326577f20f") version("0.5-1", sha256="3fc55bdfa5ab40c75bf395e90983d14c9715078c33c727c1658e4e1f36e43ea9") version("0.5-0", sha256="a87faf1a185219f79ea2307e6787d293e1d30bf3af9398e8cfe1e079978946ed") version("0.4-1", sha256="fe878e401e697992a480cd146421c3a10fa331f6b37a51bac83b5c1119dcce33") @@ -22,3 +23,4 @@ class RMatrixmodels(RPackage): depends_on("r@3.6.0:", type=("build", "run"), when="@0.5-1:") depends_on("r-matrix@1.1-5:", type=("build", "run")) depends_on("r-matrix@1.4-2:", type=("build", "run"), when="@0.5-1:") + depends_on("r-matrix@1.6-0:", type=("build", "run"), when="@0.5-2:") diff --git a/var/spack/repos/builtin/packages/r-matrixstats/package.py b/var/spack/repos/builtin/packages/r-matrixstats/package.py index aeb8639d0862ff..5a90d3d3337f3f 100644 --- a/var/spack/repos/builtin/packages/r-matrixstats/package.py +++ b/var/spack/repos/builtin/packages/r-matrixstats/package.py @@ -17,6 +17,7 @@ class RMatrixstats(RPackage): cran = "matrixStats" + version("1.3.0", sha256="413ee607d95b243c514b4a7c4944c2caea1fb264d27c96ff547c3939f893245a") version("0.63.0", sha256="c000b60421742eb035ff4ceedd3e588a79e4b28985484f0c81361e5a6c351f5f") version("0.62.0", sha256="85e2016b6dd20cbfe32d38a2ef2578ae80e688d9a3590aefd1d2f4bf4bd44eca") version("0.61.0", sha256="dbd3c0ec59b1ae62ff9b4c2c90c4687cbd680d1796f6fdd672319458d4d2fd9a") diff --git a/var/spack/repos/builtin/packages/r-mclust/package.py b/var/spack/repos/builtin/packages/r-mclust/package.py index 76ad0b7e0e52ee..4eb1b82d5c4fba 100644 --- a/var/spack/repos/builtin/packages/r-mclust/package.py +++ b/var/spack/repos/builtin/packages/r-mclust/package.py @@ -19,6 +19,7 @@ class RMclust(RPackage): license("GPL-2.0-or-later") + version("6.1.1", sha256="ddd7018e5e6ea7f92c7fc9872b391491b7e91c2cd89ef1dcaf4408afb5116775") version("6.0.0", sha256="de7c306ecba1ef0f4e4a56c748ce08149417496b711beefb032d561a4c28122a") version("5.4.10", sha256="2a1bbbf3c4a17df08d1ba8bc4d3c6d9c7241ed5fd68b8aabe660115597b60672") version("5.4.9", sha256="65f123c6af86cf5eb511c81ae0eafa60da7b2085bfea1a08bdc3116081da9568") diff --git a/var/spack/repos/builtin/packages/r-mcmc/package.py b/var/spack/repos/builtin/packages/r-mcmc/package.py index 3e32f58cefdc73..0b65a3ddbd6c91 100644 --- a/var/spack/repos/builtin/packages/r-mcmc/package.py +++ b/var/spack/repos/builtin/packages/r-mcmc/package.py @@ -21,6 +21,8 @@ class RMcmc(RPackage): license("MIT") + version("0.9-8", sha256="6a06440d4b58e8a7f122747d92046ff40da4bb58a20bf642228a648a0c826ea7") version("0.9-7", sha256="b7c4d3d5f9364c67a4a3cd49296a61c315ad9bd49324a22deccbacb314aa8260") depends_on("r@3.0.2:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@0.9-8:") diff --git a/var/spack/repos/builtin/packages/r-mcmcglmm/package.py b/var/spack/repos/builtin/packages/r-mcmcglmm/package.py index 7519f5075145a7..83cd8b62c2138e 100644 --- a/var/spack/repos/builtin/packages/r-mcmcglmm/package.py +++ b/var/spack/repos/builtin/packages/r-mcmcglmm/package.py @@ -15,6 +15,7 @@ class RMcmcglmm(RPackage): cran = "MCMCglmm" + version("2.36", sha256="66ffd9aaf8035c7abe7208c8514c60cb56c8c6a170de207d6608f5c44a4f8af1") version("2.34", sha256="829151cca93b05979ece98157e7789d5e5c1c0b4942d69aa9886de03d16091f1") version("2.33", sha256="b56d72e799f8ed5fa2a05ecc743e5b8051f9cc2de57ad3e6de2dcb1c1715d4fc") version("2.32", sha256="a9156e1e0d0f912f2f239476dc8765dc61c480f903381be7ec5db05bd6d3f0b3") diff --git a/var/spack/repos/builtin/packages/r-mcmcpack/package.py b/var/spack/repos/builtin/packages/r-mcmcpack/package.py index 80a0d6ac68dc0b..4e3e289afdfbdf 100644 --- a/var/spack/repos/builtin/packages/r-mcmcpack/package.py +++ b/var/spack/repos/builtin/packages/r-mcmcpack/package.py @@ -19,6 +19,7 @@ class RMcmcpack(RPackage): cran = "MCMCpack" + version("1.7-0", sha256="846073d710017ec1dc9a2b4616cb6aeb60ce04e3500a37214522818d34045def") version("1.6-3", sha256="cb14ba20690b31fd813b05565484c866425f072a5ad99a5cbf1da63588958db3") version("1.6-0", sha256="b5b9493457d11d4dca12f7732bd1b3eb1443852977c8ee78393126f13deaf29b") version("1.5-0", sha256="795ffd3d62bf14d3ecb3f5307bd329cd75798cf4b270ff0e768bc71a35de0ace") @@ -26,9 +27,8 @@ class RMcmcpack(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r-coda@0.11-3:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) + depends_on("r-mass", type=("build", "run")) depends_on("r-mcmc", type=("build", "run")) depends_on("r-quantreg", type=("build", "run")) - depends_on("r-mass", type=("build", "run"), when="@:1.6-0") - conflicts("%gcc@:3") diff --git a/var/spack/repos/builtin/packages/r-mco/package.py b/var/spack/repos/builtin/packages/r-mco/package.py index 1f9d061f04060d..541e0636bd3294 100644 --- a/var/spack/repos/builtin/packages/r-mco/package.py +++ b/var/spack/repos/builtin/packages/r-mco/package.py @@ -17,8 +17,10 @@ class RMco(RPackage): license("GPL-2.0-only") + version("1.17", sha256="8288e99159a541855bd286baf586e61201e286dfd244080aef128871b1699ea2") version("1.15.6", sha256="17ebe279cb9c89b7cd8054ac50d3b657d2b10dadbc584b88da7e79c3a9680582") version("1.0-15.1", sha256="3c13ebc8c1f1bfa18f3f95b3998c57fde5259876e92456b6c6d4c59bef07c193") version("1.0-15", sha256="a25e3effbb6dcae735fdbd6c0bfc775e9fbbcc00dc00076b69c53fe250627055") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.4.0:", type=("build", "run"), when="@1.17:") diff --git a/var/spack/repos/builtin/packages/r-mda/package.py b/var/spack/repos/builtin/packages/r-mda/package.py index ea00d0f377f547..555d28efb4f2f8 100644 --- a/var/spack/repos/builtin/packages/r-mda/package.py +++ b/var/spack/repos/builtin/packages/r-mda/package.py @@ -16,6 +16,7 @@ class RMda(RPackage): license("GPL-2.0-only") + version("0.5-4", sha256="f25f7f28807d0fa478b1b55eb9d026ebc30577d9d5ff288f9abfe1f3fdb8a759") version("0.5-3", sha256="bda6409c17f385fae97da458cc742334e7b47aab8217a975b7551e2e18d38463") version("0.5-2", sha256="344f2053215ddf535d1554b4539e9b09067dac878887cc3eb995cef421fc00c3") version("0.4-10", sha256="7036bc622a8fea5b2de94fc19e6b64f5f0c27e5d743ae7646e116af08c9de6a5") diff --git a/var/spack/repos/builtin/packages/r-memisc/package.py b/var/spack/repos/builtin/packages/r-memisc/package.py index 983cf8f3557f92..b79ef63ca60b04 100644 --- a/var/spack/repos/builtin/packages/r-memisc/package.py +++ b/var/spack/repos/builtin/packages/r-memisc/package.py @@ -20,6 +20,7 @@ class RMemisc(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.99.31.7", sha256="b403185850520db18ebd608df85c76df80e6c64af428cdc4e49c2fe487483637") version("0.99.31.6", sha256="52336b4ffc6e60c3ed10ccc7417231582b0d2e4c5c3b2184396a7d3ca9c1d96e") depends_on("r@3.3.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py b/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py index 45e0017a92fe46..c2aaec6da70b17 100644 --- a/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py +++ b/var/spack/repos/builtin/packages/r-mendelianrandomization/package.py @@ -17,6 +17,7 @@ class RMendelianrandomization(RPackage): cran = "MendelianRandomization" + version("0.10.0", sha256="0851e91f826424f20fd4a58348ffe161d147bdc091d24d676e14d4cd6180e13c") version("0.7.0", sha256="cad7cc1b6964fc7d299864378694c5fd947caa83796a1958e581299796b854c7") depends_on("r@3.0.1:", type=("build", "run")) @@ -30,3 +31,6 @@ class RMendelianrandomization(RPackage): depends_on("r-quantreg@5.01:", type=("build", "run")) depends_on("r-rjson", type=("build", "run")) depends_on("r-glmnet", type=("build", "run")) + depends_on("r-numderiv", type=("build", "run"), when="@0.10.0:") + depends_on("r-rcpp", type=("build", "run"), when="@0.10.0:") + depends_on("r-rcpparmadillo", type=("build", "run"), when="@0.10.0:") diff --git a/var/spack/repos/builtin/packages/r-meta/package.py b/var/spack/repos/builtin/packages/r-meta/package.py index 9a1facc53419c3..aa15244e8da6c7 100644 --- a/var/spack/repos/builtin/packages/r-meta/package.py +++ b/var/spack/repos/builtin/packages/r-meta/package.py @@ -26,11 +26,18 @@ class RMeta(RPackage): license("GPL-2.0-or-later") + version("7.0-0", sha256="d8ead9c94f0d2b42766b8ea8358f40d0641cdcc9c25ba4b9a5fff1a59497de7d") version("6.2-1", sha256="2c2a0d4d8f3b07211120b232a155e3e1312164ce18817e0d5693c8da5da1d6cc") version("6.2-0", sha256="8ec8fb412996bbe17d3ca073f15c191a77bad486b08f39d7b8c2d07360ad5781") depends_on("r@4.0.0:", type=("build", "run")) - depends_on("r-metafor@3.0-0:", type=("build", "run")) - depends_on("r-lme4", type=("build", "run")) depends_on("r-compquadform", type=("build", "run")) + depends_on("r-dplyr", type=("build", "run"), when="@7.0-0:") + depends_on("r-lme4", type=("build", "run")) + depends_on("r-magrittr", type=("build", "run"), when="@7.0-0:") + depends_on("r-metadat", type=("build", "run"), when="@7.0-0:") + depends_on("r-metafor@3.0-0:", type=("build", "run")) + depends_on("r-purrr", type=("build", "run"), when="@7.0-0:") + depends_on("r-readr", type=("build", "run"), when="@7.0-0:") + depends_on("r-stringr", type=("build", "run"), when="@7.0-0:") depends_on("r-xml2", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-metafor/package.py b/var/spack/repos/builtin/packages/r-metafor/package.py index 0d7716b13f57a3..df0be2ae80919e 100644 --- a/var/spack/repos/builtin/packages/r-metafor/package.py +++ b/var/spack/repos/builtin/packages/r-metafor/package.py @@ -31,6 +31,7 @@ class RMetafor(RPackage): license("GPL-2.0-or-later") + version("4.6-0", sha256="07344cc3bd87b8bd25ef998e9a6ce322ae8e448ef5af06ec3e79631724e18666") version("4.0-0", sha256="5cd552ebaf225b745c2e4d944ca80986dd1ad6f1a4c902fb646f3cb11b8dc23b") version("3.8-1", sha256="d694577f954144d8a5eeab6521fe1c87e68ddf9ecfd7ccc915d01533371b0514") diff --git a/var/spack/repos/builtin/packages/r-metap/package.py b/var/spack/repos/builtin/packages/r-metap/package.py index 514c44074d9418..4e144ec6e71eb2 100644 --- a/var/spack/repos/builtin/packages/r-metap/package.py +++ b/var/spack/repos/builtin/packages/r-metap/package.py @@ -19,6 +19,7 @@ class RMetap(RPackage): license("GPL-2.0-only") + version("1.11", sha256="34e8c9fc3ccaae23f57389001987de02339416f843084869f92ff635052093b7") version("1.8", sha256="ee9501a8de8a4c47af1632e6053e42ef53fc4b8bdf0f2759edc4d3eefaf5552b") version("1.7", sha256="d9b511607d0e37de4428549061c5577a4e812b0f55bb7ed887d1b24711f58c42") version("1.4", sha256="5fac23d823d0ad4eebc3f97620364e25f7b41f8d0c3579f6c09ec059940b85a5") diff --git a/var/spack/repos/builtin/packages/r-mgcv/package.py b/var/spack/repos/builtin/packages/r-mgcv/package.py index a0e59e0b84eee7..92416dc5bfd334 100644 --- a/var/spack/repos/builtin/packages/r-mgcv/package.py +++ b/var/spack/repos/builtin/packages/r-mgcv/package.py @@ -21,6 +21,7 @@ class RMgcv(RPackage): license("GPL-2.0-or-later") + version("1.9-1", sha256="700fbc37bedd3a49505b9bc4949faee156d9cfb4f669d797d06a10a15a5bdb32") version("1.8-42", sha256="087fc38b64ad06f2149eafc54f2679dd8840cf6fc488e66cf131e3c1de2db6c7") version("1.8-41", sha256="2f7a030fe2be75edef6bd96147df46c2262f3cdc44c383d8f82b401df44fe690") version("1.8-40", sha256="dbe627266c3b339232e2d4228d5370ba88c86540319e6891d161242efba7e4a5") diff --git a/var/spack/repos/builtin/packages/r-mice/package.py b/var/spack/repos/builtin/packages/r-mice/package.py index d61198a6c3e1b1..8fe870277bf45a 100644 --- a/var/spack/repos/builtin/packages/r-mice/package.py +++ b/var/spack/repos/builtin/packages/r-mice/package.py @@ -25,6 +25,7 @@ class RMice(RPackage): license("GPL-2.0-or-later") + version("3.16.0", sha256="29f0285185a540337e9dde2357690c82d174f115be701ee2f0a7083173a44040") version("3.15.0", sha256="3d64dd260e3dce9c4c2f7be8c99f3063769df9ccfd3a0fc827c2de0ac842e87b") version("3.14.0", sha256="f87bb73d8bfee36c6bf4f15779c59ff6b70c70ca25b1388b4ee236757276d605") version("3.12.0", sha256="575d9e650d5fc8cd66c0b5a2f1e659605052b26d61f772fff5eed81b414ef144") @@ -36,9 +37,13 @@ class RMice(RPackage): depends_on("r-broom", type=("build", "run")) depends_on("r-dplyr", type=("build", "run")) depends_on("r-generics", type=("build", "run"), when="@3.12.0:") + depends_on("r-glmnet", type=("build", "run"), when="@3.16.0:") depends_on("r-lattice", type=("build", "run")) + depends_on("r-mitml", type=("build", "run"), when="@3.16.0:") + depends_on("r-nnet", type=("build", "run"), when="@3.16.0:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) + depends_on("r-rpart", type=("build", "run"), when="@3.16.0:") depends_on("r-tidyr", type=("build", "run"), when="@3.12.0:") depends_on("r-cpp11", type=("build", "run"), when="@3.12.0:") diff --git a/var/spack/repos/builtin/packages/r-microbenchmark/package.py b/var/spack/repos/builtin/packages/r-microbenchmark/package.py index 5382fa8ac55b1f..6b43c99afc58e2 100644 --- a/var/spack/repos/builtin/packages/r-microbenchmark/package.py +++ b/var/spack/repos/builtin/packages/r-microbenchmark/package.py @@ -16,5 +16,6 @@ class RMicrobenchmark(RPackage): license("BSD-2-Clause") + version("1.4.10", sha256="04cc41be72708dce8d31ff1cb105d88cc9f167250ea00fe9a165c99204b9b481") version("1.4.9", sha256="443d2caf370ef33e4ac2773176ad9eb86f8790f43b430968ef9647699dbbffd2") version("1.4-7", sha256="268f13c6323dd28cc2dff7e991bb78b814a8873b4a73f4a3645f40423da984f6") diff --git a/var/spack/repos/builtin/packages/r-minqa/package.py b/var/spack/repos/builtin/packages/r-minqa/package.py index 44337b542c5dce..a7dfbe87cb1f96 100644 --- a/var/spack/repos/builtin/packages/r-minqa/package.py +++ b/var/spack/repos/builtin/packages/r-minqa/package.py @@ -16,6 +16,7 @@ class RMinqa(RPackage): license("GPL-2.0-only") + version("1.2.8", sha256="5941e4b9b01978fc6d9fe24e6ca60cca66883fe9fa6ff3cbfa32aa1ac9db5467") version("1.2.5", sha256="9b83562390990d04b2c61b63ac9a7c9ecab0d35c460d232596e3c73bdc89f4be") version("1.2.4", sha256="cfa193a4a9c55cb08f3faf4ab09c11b70412523767f19894e4eafc6e94cccd0c") diff --git a/var/spack/repos/builtin/packages/r-mlbench/package.py b/var/spack/repos/builtin/packages/r-mlbench/package.py index f70c74bece3ff7..c99a10467bc674 100644 --- a/var/spack/repos/builtin/packages/r-mlbench/package.py +++ b/var/spack/repos/builtin/packages/r-mlbench/package.py @@ -16,6 +16,7 @@ class RMlbench(RPackage): license("GPL-2.0-only") + version("2.1-5", sha256="4dbfd652adda7c0caf544d3a6cd23a2ee97c22faefe4d15b8a6782061cc9e76f") version("2.1-3", sha256="b1f92be633243185ab86e880a1e1ac5a4dd3c535d01ebd187a4872d0a8c6f194") version("2.1-1", sha256="748141d56531a39dc4d37cf0a5165a40b653a04c507e916854053ed77119e0e6") diff --git a/var/spack/repos/builtin/packages/r-mlr/package.py b/var/spack/repos/builtin/packages/r-mlr/package.py index 00c402838ed252..8927e32c22eb32 100644 --- a/var/spack/repos/builtin/packages/r-mlr/package.py +++ b/var/spack/repos/builtin/packages/r-mlr/package.py @@ -24,6 +24,7 @@ class RMlr(RPackage): license("BSD-2-Clause") + version("2.19.2", sha256="85e67049f1067a7eae0f0e5b5c4e4e46a25407a17750512220f438a0fa5097c5") version("2.19.1", sha256="9d52afd54d9d5746e798134d5675818cee65caa53d7eaf317d46ba88d5865202") version("2.19.0", sha256="1149c9b453896481c85906045aa82d511d96979ddecbe5a3faf04f9f4a5e6113") version("2.18.0", sha256="c2fe74e90ed32e5f4cbb0c09a1742051688d87db2f12dd408ddad0f5afc7f8d3") diff --git a/var/spack/repos/builtin/packages/r-mockery/package.py b/var/spack/repos/builtin/packages/r-mockery/package.py index 12e25a80e62f5f..8ccce8f80291d7 100644 --- a/var/spack/repos/builtin/packages/r-mockery/package.py +++ b/var/spack/repos/builtin/packages/r-mockery/package.py @@ -19,6 +19,7 @@ class RMockery(RPackage): license("MIT") + version("0.4.4", sha256="072220a0f2455fca91649fc7ce4ed503cfaa965aa769d1bd0fd6622b222845c3") version("0.4.3", sha256="9fc9f1565c51e51b33634e9fc5328211559a561f095bc4d0fa8bd8b7533d476a") version("0.4.2", sha256="988e249c366ee7faf277de004084cf5ca24b5c8a8c6e3842f1b1362ce2f7ea9b") version("0.4.1", sha256="959d83f8b21e9a89c06c73f310356790c2d63d5ba39b2b60c6777a4eb33909c1") diff --git a/var/spack/repos/builtin/packages/r-multcomp/package.py b/var/spack/repos/builtin/packages/r-multcomp/package.py index 6fd24c0aa9cc0a..3e709c8621b78d 100644 --- a/var/spack/repos/builtin/packages/r-multcomp/package.py +++ b/var/spack/repos/builtin/packages/r-multcomp/package.py @@ -19,6 +19,7 @@ class RMultcomp(RPackage): license("GPL-2.0-only") + version("1.4-26", sha256="a100bbdfaffb8b9cf9a59decf80267421673c4f1eef44c0bc3f77be16b3a69ec") version("1.4-23", sha256="425154a58bd8f2dbaff5d16e97b03473cbc0d571b1c2e4dd66a13c6d20a8cde1") version("1.4-20", sha256="328be4fa4189bde4a7bc645d9ae5ea071ebe31ed658c8c48c4e45aa8e8c42cfc") version("1.4-19", sha256="f03473b1cfbc714cd85a0ee948e2ecdb23bcdccbe95e27237ee25e9c71e3e557") diff --git a/var/spack/repos/builtin/packages/r-multcompview/package.py b/var/spack/repos/builtin/packages/r-multcompview/package.py index bbb75b1dc4deea..6e95f5fa844f20 100644 --- a/var/spack/repos/builtin/packages/r-multcompview/package.py +++ b/var/spack/repos/builtin/packages/r-multcompview/package.py @@ -18,5 +18,6 @@ class RMultcompview(RPackage): cran = "multcompView" + version("0.1-10", sha256="38f249b22758c9f727b1656d1a08c6022a06a1ea319364ff680147d64598ad8a") version("0.1-9", sha256="1f3993e9d51f3c7a711a881b6a20081a85ffab60c27828ceb3640a6b4c887397") version("0.1-8", sha256="123d539172ad6fc63d83d1fc7f356a5ed7b691e7803827480118bebc374fd8e5") diff --git a/var/spack/repos/builtin/packages/r-multicool/package.py b/var/spack/repos/builtin/packages/r-multicool/package.py index fd79b36bde6dc3..a709fbf6bab917 100644 --- a/var/spack/repos/builtin/packages/r-multicool/package.py +++ b/var/spack/repos/builtin/packages/r-multicool/package.py @@ -29,6 +29,7 @@ class RMulticool(RPackage): license("GPL-2.0-only") + version("1.0.1", sha256="bd72de1fbd7ea32018d6af09ac2af80871ebe26bf9dfdf1ba53f87e6cff56c1f") version("0.1-12", sha256="487d28d9c3c606be0cf56e2d8f8b0d79fb71949c68886ea9251fbb1c01664a36") version("0.1-11", sha256="1c907e64af2ac39facdf431a5691e69649f64af1f50e198ae39da5bf30026476") version("0.1-10", sha256="5bb0cb0d9eb64420c862877247a79bb0afadacfe23262ec8c3fa26e5e34d6ff9") diff --git a/var/spack/repos/builtin/packages/r-multitaper/package.py b/var/spack/repos/builtin/packages/r-multitaper/package.py index 024e7bbe305539..5784745e4d0d5c 100644 --- a/var/spack/repos/builtin/packages/r-multitaper/package.py +++ b/var/spack/repos/builtin/packages/r-multitaper/package.py @@ -22,6 +22,7 @@ class RMultitaper(RPackage): license("GPL-2.0-or-later") + version("1.0-17", sha256="3430ca62be2ee491d29b05e461647327a8977743241af2d3c39277c920170af3") version("1.0-15", sha256="837d71f3b46fbce2bea210449cf75e609f5363ff23b7808f5f115fdc51e6a3be") version("1.0-14", sha256="c84c122541dc2874131446e23b212259b3b00590d701efee49e6740fd74a8d13") diff --git a/var/spack/repos/builtin/packages/r-munsell/package.py b/var/spack/repos/builtin/packages/r-munsell/package.py index 44e8c0c4280f95..fd67db64021fb2 100644 --- a/var/spack/repos/builtin/packages/r-munsell/package.py +++ b/var/spack/repos/builtin/packages/r-munsell/package.py @@ -19,6 +19,7 @@ class RMunsell(RPackage): license("MIT") + version("0.5.1", sha256="03a2fd9ac40766cded96dfe33b143d872d0aaa262a25482ce19161ca959429a6") version("0.5.0", sha256="d0f3a9fb30e2b5d411fa61db56d4be5733a2621c0edf017d090bdfa5e377e199") version("0.4.3", sha256="397c3c90af966f48eebe8f5d9e40c41b17541f0baaa102eec3ea4faae5a2bd49") diff --git a/var/spack/repos/builtin/packages/r-mvtnorm/package.py b/var/spack/repos/builtin/packages/r-mvtnorm/package.py index 57fead3897e9ed..00d927b93df30a 100644 --- a/var/spack/repos/builtin/packages/r-mvtnorm/package.py +++ b/var/spack/repos/builtin/packages/r-mvtnorm/package.py @@ -16,6 +16,7 @@ class RMvtnorm(RPackage): license("GPL-2.0-only") + version("1.2-6", sha256="c4dedc3c296ed8e5fd2faecdba6de302bca1dd2e96b84fd846c47a54286acd31") version("1.1-3", sha256="ff4e302139ba631280fc9c4a2ab168596bfd09e17a805974199b043697c02448") version("1.1-1", sha256="e965dad5e93babb7ded25b5ebdbd52332191b61f897d68853a379a07620d45de") version("1.0-11", sha256="0321612de99aa9bc75a45c7e029d3372736014223cbdefb80d8cae600cbc7252") diff --git a/var/spack/repos/builtin/packages/r-nanotime/package.py b/var/spack/repos/builtin/packages/r-nanotime/package.py index 35af382e82f65e..07d29c1cd30997 100644 --- a/var/spack/repos/builtin/packages/r-nanotime/package.py +++ b/var/spack/repos/builtin/packages/r-nanotime/package.py @@ -18,6 +18,7 @@ class RNanotime(RPackage): license("GPL-2.0-or-later") + version("0.3.9", sha256="cc2965edfd68f83a84142ead27a5a84e1c5b2931ec911dddecb3e0bc3ffa79d8") version("0.3.7", sha256="a771782653aef62a071682907fd7bd611f7f98fc80beda227d619aae166ccb15") version("0.3.6", sha256="df751a5cb11ca9ac8762cd1e33bc73e7d20fde9339d2c46bc6f85873388568df") version("0.3.5", sha256="44deaae58452bacea4855d018212593811401c2afc460ffb11905479013923a0") diff --git a/var/spack/repos/builtin/packages/r-ncdf4/package.py b/var/spack/repos/builtin/packages/r-ncdf4/package.py index 874a36f0639b38..0c74f80b6a8f34 100644 --- a/var/spack/repos/builtin/packages/r-ncdf4/package.py +++ b/var/spack/repos/builtin/packages/r-ncdf4/package.py @@ -28,6 +28,7 @@ class RNcdf4(RPackage): license("GPL-3.0-or-later") + version("1.23", sha256="8b05fee9f79dc0605e487dd5d031d2c7dcaedec8f47904983b1c26739894da89") version("1.21", sha256="2f5ae7def382c595c66b6ed0ea0529f8337108eb73de39939f9762f3fb21b30d") version("1.19", sha256="cb8d139211fc7475c435ce9f6a43e47710603409dc523b053c8b7de9848dfb63") version("1.17", sha256="db95c4729d3187d1a56dfd019958216f442be6221bd15e23cd597e6129219af6") diff --git a/var/spack/repos/builtin/packages/r-network/package.py b/var/spack/repos/builtin/packages/r-network/package.py index bea112a0b85d98..9028bd9c21f7cd 100644 --- a/var/spack/repos/builtin/packages/r-network/package.py +++ b/var/spack/repos/builtin/packages/r-network/package.py @@ -17,6 +17,7 @@ class RNetwork(RPackage): license("GPL-2.0-or-later") + version("1.18.2", sha256="bf33892db9cabba9cd1597f09ef0e1277d63520a8cebd2d919e0d41fc706a27b") version("1.18.1", sha256="c80d70352967d8480cfa801f2a31bfe130e2ad4dbf2c07b0046e57f3013cd243") version("1.18.0", sha256="59f4b10174c87c8742c6b3c93c5e47833042375f5f872fdd23155b4a5244ce5b") version("1.17.2", sha256="9588a198807c8c68da147f479ca9af5bcb4468cf91b6a90b8044d313d9fa30f7") diff --git a/var/spack/repos/builtin/packages/r-nimble/package.py b/var/spack/repos/builtin/packages/r-nimble/package.py index 816780deebf76a..c85b3e059f6cea 100644 --- a/var/spack/repos/builtin/packages/r-nimble/package.py +++ b/var/spack/repos/builtin/packages/r-nimble/package.py @@ -28,6 +28,7 @@ class RNimble(RPackage): license("BSD-3-Clause OR GPL-2.0-or-later") + version("1.2.1", sha256="2e8571e73e5b7553ee84db376444c18e211d4ba542ed415004c5128cb6802587") version("0.13.1", sha256="dc70caab64a8a4e44fb13fa6d67f6f2a0453fa684669e24718758bb2a8cf8530") version("0.12.2", sha256="2af7a3ab159a7f0b3b4b139da1db45be4b602f2c0e115cb0403b060ab0101a1b") version("0.12.1", sha256="3520f3212a48c8cbe08a6a8e57b3a72180594f7c09f647d1daf417c9857867d8") @@ -38,5 +39,7 @@ class RNimble(RPackage): depends_on("r@3.1.2:", type=("build", "run")) depends_on("r-igraph", type=("build", "run")) depends_on("r-coda", type=("build", "run")) + depends_on("r-numderiv", type=("build", "run"), when="@1.2.1:") + depends_on("r-pracma", type=("build", "run"), when="@1.2.1:") depends_on("r-r6", type=("build", "run")) depends_on("gmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-nleqslv/package.py b/var/spack/repos/builtin/packages/r-nleqslv/package.py index da58b461a9f1cf..86dd4de0c7dab7 100644 --- a/var/spack/repos/builtin/packages/r-nleqslv/package.py +++ b/var/spack/repos/builtin/packages/r-nleqslv/package.py @@ -19,6 +19,7 @@ class RNleqslv(RPackage): license("GPL-2.0-or-later") + version("3.3.5", sha256="1298172d2fe67d8d6b742ce7e792f6b897f081da5c94d34f14970ab531f04b3a") version("3.3.4", sha256="2783e7525bcd155dd8cedf5a41b7db65cd1fa0e095cd937371448316f3930fcf") version("3.3.3", sha256="2e46dfce95ddfd7ed5208413ee41f6bdf1ae18414fb1d0c146d9da3af12ac633") version("3.3.2", sha256="f54956cf67f9970bb3c6803684c84a27ac78165055745e444efc45cfecb63fed") diff --git a/var/spack/repos/builtin/packages/r-nlme/package.py b/var/spack/repos/builtin/packages/r-nlme/package.py index f08f3a4b2c5b65..38f6eeb5bc180b 100644 --- a/var/spack/repos/builtin/packages/r-nlme/package.py +++ b/var/spack/repos/builtin/packages/r-nlme/package.py @@ -15,6 +15,7 @@ class RNlme(RPackage): license("GPL-2.0-or-later") + version("3.1-166", sha256="237a14ee8d78755b11a7efe234b95be40b46fbdd1b4aaf463f6d532be1909762") version("3.1-162", sha256="ba6da2575554afa2614c4cba9971f8a9f8a07622d201284cb78899f3d6a2dc67") version("3.1-160", sha256="d4454623194876b083774c662fd223bc3b9e8325824cb758b8adecd5dc0d8a08") version("3.1-159", sha256="9bb05f5c3146e2d75078e668821485a3e9ca246fd5d7db2ef1963d3735d919bf") @@ -32,4 +33,5 @@ class RNlme(RPackage): depends_on("r@3.3.0:", type=("build", "run"), when="@3.1-131.1") depends_on("r@3.5.0:", type=("build", "run"), when="@3.1-134:3.1-135") depends_on("r@3.4.0:", type=("build", "run"), when="@3.1-135.5:") + depends_on("r@3.6.0:", type=("build", "run"), when="@3.1-165:") depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-nloptr/package.py b/var/spack/repos/builtin/packages/r-nloptr/package.py index 9d53c849160508..946812061b9981 100644 --- a/var/spack/repos/builtin/packages/r-nloptr/package.py +++ b/var/spack/repos/builtin/packages/r-nloptr/package.py @@ -25,6 +25,7 @@ class RNloptr(RPackage): license("LGPL-3.0-or-later") + version("2.1.1", sha256="4cdaf55dfdeb090119f2c2ca77f617962524654da4511bacd650f62bb6dad8ea") version("2.0.3", sha256="7b26ac1246fd1bd890817b0c3a145456c11aec98458b8518de863650b99616d7") version("2.0.0", sha256="65ca3149cfc9ba15ac10a91f34b5d86b20f5fd693f44e3edf3e392402911619a") version("1.2.2.3", sha256="af08b74fd5e7b4cb455fe67ed759346cbb8f3b9a4178f5f117e0092e5c9af6ff") @@ -32,7 +33,7 @@ class RNloptr(RPackage): version("1.2.1", sha256="1f86e33ecde6c3b0d2098c47591a9cd0fa41fb973ebf5145859677492730df97") version("1.0.4", sha256="84225b993cb1ef7854edda9629858662cc8592b0d1344baadea4177486ece1eb") - depends_on("r-testthat", when="@2.0.0:") + depends_on("r-testthat", when="@2.0.0:2.1.0") depends_on("nlopt@2.4.0:") depends_on("nlopt@2.7.0:", when="@2.0.0:") diff --git a/var/spack/repos/builtin/packages/r-nmf/package.py b/var/spack/repos/builtin/packages/r-nmf/package.py index 744605ac88498f..db582ce04fecb5 100644 --- a/var/spack/repos/builtin/packages/r-nmf/package.py +++ b/var/spack/repos/builtin/packages/r-nmf/package.py @@ -18,6 +18,7 @@ class RNmf(RPackage): cran = "NMF" + version("0.27", sha256="af4302efca4a7654fecd31c376f1bb3496428279a50b8d5691c8a7e66e3f3ef9") version("0.26", sha256="8d44562ef5f33f3811929f944c9d029ec25526d2ddddfe7c8a5b6e23adbc2ec0") version("0.24.0", sha256="481811d35b3bbc07e9a60e2f853b05ef26581b43be9c6c4bab81151b8dcadd93") version("0.23.0", sha256="0f0cca01b37bf46fce90d2e951df609d3d377908aa607825083fd0c47cc24753") diff --git a/var/spack/repos/builtin/packages/r-nmof/package.py b/var/spack/repos/builtin/packages/r-nmof/package.py index 52dcda0ebdde33..a19a76d26029a8 100644 --- a/var/spack/repos/builtin/packages/r-nmof/package.py +++ b/var/spack/repos/builtin/packages/r-nmof/package.py @@ -19,6 +19,7 @@ class RNmof(RPackage): cran = "NMOF" + version("2.8-0", sha256="6dc53a9be41e673e9b2fcb2783aa82090db5455f079b8aac4c388d679f6ec28a") version("2.7-1", sha256="b03e309df35b3fb0980c8a171e1cd1c69739fa6ab7a8992c043166fae4644e23") version("2.7-0", sha256="11eeda730262418f22d24d8f72d363a05ac4c3c1130b88f4eafb1b8d81c83160") version("2.5-1", sha256="0468ba72364cbdf90781824dfb1a60324203e2248d93cb6f1ffd6eb0d271f390") @@ -27,3 +28,4 @@ class RNmof(RPackage): version("1.6-0", sha256="5484cd43c28aaf23d560c2dde8bcd8dd440a205d2214eb50e02fe0bb42ec2755") depends_on("r@2.14:", type=("build", "run")) + depends_on("r@3.5:", type=("build", "run"), when="@2.8-0:") diff --git a/var/spack/repos/builtin/packages/r-nnet/package.py b/var/spack/repos/builtin/packages/r-nnet/package.py index 63b8c5fc3233c7..7dab7edbf0c014 100644 --- a/var/spack/repos/builtin/packages/r-nnet/package.py +++ b/var/spack/repos/builtin/packages/r-nnet/package.py @@ -16,6 +16,7 @@ class RNnet(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("7.3-19", sha256="a9241f469270d3b03bbab7dc0d3c6a06a84010af16ba82fd3bd6660b35382ce7") version("7.3-18", sha256="d29aebfb5cb00071eecf754d55db5d474a6fda88860df5c9d31ba89aa8d9e3d0") version("7.3-17", sha256="ee750bb8164aa058edf93823af987ab2c7ec64128dce2abeaae1b7d3661e9a67") version("7.3-14", sha256="5d1b9e9764d74d16c651f18f949aa4e9e2995ba64633cbfa2c6a7355ae30f4af") diff --git a/var/spack/repos/builtin/packages/r-nnls/package.py b/var/spack/repos/builtin/packages/r-nnls/package.py index 3fb292aa7e1d9c..e1575760df6669 100644 --- a/var/spack/repos/builtin/packages/r-nnls/package.py +++ b/var/spack/repos/builtin/packages/r-nnls/package.py @@ -17,4 +17,5 @@ class RNnls(RPackage): license("GPL-2.0-or-later") + version("1.5", sha256="cd70feb286f86f6dead75da693a8f67c9bd3b91eb738e6e6ac659e3b8c7a3452") version("1.4", sha256="0e5d77abae12bc50639d34354f96a8e079408c9d7138a360743b73bd7bce6c1f") diff --git a/var/spack/repos/builtin/packages/r-nonnest2/package.py b/var/spack/repos/builtin/packages/r-nonnest2/package.py index 3899ba0a474c87..a12129ba5a0b1a 100644 --- a/var/spack/repos/builtin/packages/r-nonnest2/package.py +++ b/var/spack/repos/builtin/packages/r-nonnest2/package.py @@ -20,6 +20,7 @@ class RNonnest2(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.5-7", sha256="e440c2464b3bd3b452e02583bb280eecba6acecf0f2c04b6b9fe4dcdd128db3e") version("0.5-5", sha256="027f510e322122fc75c936251a95ddd392f96047ac86e0fae6cf8f883ac7aab5") depends_on("r@3.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-nor1mix/package.py b/var/spack/repos/builtin/packages/r-nor1mix/package.py index 2f6b7907c37032..6e2747be40ceb2 100644 --- a/var/spack/repos/builtin/packages/r-nor1mix/package.py +++ b/var/spack/repos/builtin/packages/r-nor1mix/package.py @@ -19,5 +19,6 @@ class RNor1mix(RPackage): license("GPL-2.0-or-later") + version("1.3-3", sha256="97bfd0f8c847fa68bf607aaa465845a34ac8a7a262315073026a6a1937dd076e") version("1.3-0", sha256="9ce4ee92f889a4a4041b5ea1ff09396780785a9f12ac46f40647f74a37e327a0") version("1.2-3", sha256="435e6519e832ef5229c51ccb2619640e6b50dfc7470f70f0c938d18a114273af") diff --git a/var/spack/repos/builtin/packages/r-openssl/package.py b/var/spack/repos/builtin/packages/r-openssl/package.py index be058a55493255..eb061bf5d4ead6 100644 --- a/var/spack/repos/builtin/packages/r-openssl/package.py +++ b/var/spack/repos/builtin/packages/r-openssl/package.py @@ -24,6 +24,7 @@ class ROpenssl(RPackage): license("MIT") + version("2.2.1", sha256="25a12328d584212d8d4c095b3d2a71152c5d2bc4adda7a9addb25da01136f78d") version("2.0.6", sha256="77f3032a16270f0d1734f269b8d348eedc75b277812854386091143082c1b3f3") version("2.0.4", sha256="a1a5c65127c20c0ca3b46f2c4f4d3817276a887a231569537c1373e7740a5cec") version("2.0.3", sha256="7cde98520bec857f043fb6aae92334e2ae0dcd86108adc9b18ca298ec16286aa") diff --git a/var/spack/repos/builtin/packages/r-openxlsx/package.py b/var/spack/repos/builtin/packages/r-openxlsx/package.py index d9a311a07d2780..dfcb39680d2b42 100644 --- a/var/spack/repos/builtin/packages/r-openxlsx/package.py +++ b/var/spack/repos/builtin/packages/r-openxlsx/package.py @@ -18,6 +18,7 @@ class ROpenxlsx(RPackage): license("MIT") + version("4.2.6.1", sha256="c208c506a5d6a1d89a18c2b0bedceb467a461939128f2d7916efbf41e7a17aa9") version("4.2.5.2", sha256="ee7089e7e5832ef22ee0d0eebf7cca5096ce23afb2bcdb58700be62526fc9b67") version("4.2.5.1", sha256="64d224380809d8d19788b02daf9d6dae45262594b81f5e013d37d34daf0945c8") version("4.2.5", sha256="65d06d2819b656ac30fc78437ee712a83fb5a7ab750f56268e5c9e578c582519") diff --git a/var/spack/repos/builtin/packages/r-optimx/package.py b/var/spack/repos/builtin/packages/r-optimx/package.py index b079c0226ca9b2..de159d7b6492b7 100644 --- a/var/spack/repos/builtin/packages/r-optimx/package.py +++ b/var/spack/repos/builtin/packages/r-optimx/package.py @@ -22,10 +22,15 @@ class ROptimx(RPackage): license("GPL-2.0-only") + version( + "2023-10.21", sha256="0d732d5604c26af59cfb95b80ed4e226c9c10422e2d82a6cc06b92f9ba6a44b5" + ) version("2022-4.30", sha256="ebe9887a22296cf4b2db07981aaa1f898bf7c17fb61a4b398c228d4077d0b410") version( "2021-10.12", sha256="39384c856b5efa3992cd230548b60eff936d428111ad6ad5b8fb98a3bcbb7943" ) version("2020-4.2", sha256="6381c25c322287fc98ab1b2965d3f68c9a92c587c76aca1d33fd6428b2167101") + depends_on("r-nloptr", type=("build", "run"), when="@2023-10.21:") depends_on("r-numderiv", type=("build", "run")) + depends_on("r-pracma", type=("build", "run"), when="@2023-10.21:") diff --git a/var/spack/repos/builtin/packages/r-optparse/package.py b/var/spack/repos/builtin/packages/r-optparse/package.py index 90ab226ce4a23d..6e8cb4c2eadc4d 100644 --- a/var/spack/repos/builtin/packages/r-optparse/package.py +++ b/var/spack/repos/builtin/packages/r-optparse/package.py @@ -17,6 +17,7 @@ class ROptparse(RPackage): license("GPL-2.0-or-later") + version("1.7.5", sha256="0cc917505780786e69b8ceca4b3840ed7b0c011495108ec05af3871965415712") version("1.7.3", sha256="6287e1af051d4a65037900ce7b30bd962039450dd4eab63b6f2491eace6a07ed") version("1.7.1", sha256="324e304c13efd565d766766193d4ccd75e2cd949dfcfb416afc3939489071fe7") version("1.6.6", sha256="51779d497146e9354b1153713d939e81551e08948c2b00e4b117b1377c0b60d0") diff --git a/var/spack/repos/builtin/packages/r-ordinal/package.py b/var/spack/repos/builtin/packages/r-ordinal/package.py index 6e7cc275734d16..702e439b1bd0b8 100644 --- a/var/spack/repos/builtin/packages/r-ordinal/package.py +++ b/var/spack/repos/builtin/packages/r-ordinal/package.py @@ -25,6 +25,9 @@ class ROrdinal(RPackage): license("GPL-2.0-or-later") + version( + "2023.12-4.1", sha256="2c9dcfa438c964ff1825033d0759d25f404a2a4c5252b81e40f19cffc18e38b1" + ) version( "2022.11-16", sha256="5488ad1dfa531a09d017d68d7393d376c8bc49cceeaa6a3e5f7d57b99168d493" ) diff --git a/var/spack/repos/builtin/packages/r-osqp/package.py b/var/spack/repos/builtin/packages/r-osqp/package.py index a02f97fe441a75..22077432ac18db 100644 --- a/var/spack/repos/builtin/packages/r-osqp/package.py +++ b/var/spack/repos/builtin/packages/r-osqp/package.py @@ -18,10 +18,12 @@ class ROsqp(RPackage): license("Apache-2.0 OR custom") + version("0.6.3.3", sha256="ff3d8e4ec7764333144d461eb5ea7a4adbf5b5f29f84c3ec3e60a93802e2f5bb") version("0.6.0.8", sha256="14034045ae4ae5ec4eae4944653d41d94282fa85a0cd53614ac86f34fd02ed97") version("0.6.0.7", sha256="ee6584d02341e3f1d8fab3b2cb93defd6c48d561297d82a6bedb3e7541868203") depends_on("r-rcpp@0.12.14:", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) + depends_on("r-matrix@1.6-1:", type=("build", "run"), when="@0.6.3:") depends_on("r-r6", type=("build", "run")) depends_on("cmake", type="build") diff --git a/var/spack/repos/builtin/packages/r-packrat/package.py b/var/spack/repos/builtin/packages/r-packrat/package.py index f62071662ee0ed..55110d1834984e 100644 --- a/var/spack/repos/builtin/packages/r-packrat/package.py +++ b/var/spack/repos/builtin/packages/r-packrat/package.py @@ -17,6 +17,7 @@ class RPackrat(RPackage): license("GPL-2.0-only") + version("0.9.2", sha256="69df5943257e6c4d06f3d907241b668b53dedece72158ca935260b8b8e1672d7") version("0.9.1", sha256="414013c6044d2985e69bbc8494c152716b6f81ca15b329c731cfe8f965fd3344") version("0.8.1", sha256="45db0301fa6a0a6944b070ac219cd1fa754bac24e517e59758cdc51e8aed23da") version("0.8.0", sha256="3025b9052974bec00fb09299226b80004d48e611e15a65e5a0bc49d3538844ef") diff --git a/var/spack/repos/builtin/packages/r-paleotree/package.py b/var/spack/repos/builtin/packages/r-paleotree/package.py index 48507c3653e045..0f8149cfac109b 100644 --- a/var/spack/repos/builtin/packages/r-paleotree/package.py +++ b/var/spack/repos/builtin/packages/r-paleotree/package.py @@ -17,6 +17,7 @@ class RPaleotree(RPackage): license("CC0-1.0") + version("3.4.7", sha256="cb28c8a7929905b50094439423b7839174f7ae1b652607583528d44e102f6317") version("3.4.5", sha256="c4dceb3352b74730643aa9f62ceb7f020ce6763614ba334723aadf0eb003d125") version("3.4.4", sha256="8809c3395e6904669db8c7cc3b54dd5c3c76948c8568d310cf02e4a5dbc678e4") version("3.3.25", sha256="aa64b9120075581229439227a12db776d052b03eb5f9721692a16a9402ac8712") diff --git a/var/spack/repos/builtin/packages/r-pamr/package.py b/var/spack/repos/builtin/packages/r-pamr/package.py index b16f865fbb660a..4883fa47bb7a6a 100644 --- a/var/spack/repos/builtin/packages/r-pamr/package.py +++ b/var/spack/repos/builtin/packages/r-pamr/package.py @@ -15,9 +15,11 @@ class RPamr(RPackage): license("GPL-2.0-only") + version("1.57", sha256="01968f7620f1a5e4be1ce666f7ff52211b9dcf6cf5948112c7441aabae56af3d") version("1.56.1", sha256="d0e527f2336ee4beee91eefb2a8f0dfa96413d9b5a5841d6fc7ff821e67c9779") version("1.55", sha256="ed910194937a6097ec79234d84777856fd520b111a7c79f7c86dc607169cc3c3") depends_on("r@2.10:", type=("build", "run")) + depends_on("r@3.5:", type=("build", "run"), when="@1.57:") depends_on("r-cluster", type=("build", "run")) depends_on("r-survival", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pan/package.py b/var/spack/repos/builtin/packages/r-pan/package.py index c50d192d007429..a44741afc873fa 100644 --- a/var/spack/repos/builtin/packages/r-pan/package.py +++ b/var/spack/repos/builtin/packages/r-pan/package.py @@ -20,5 +20,8 @@ class RPan(RPackage): license("GPL-3.0-only") + version("1.9", sha256="cd91232d653783ea7f34c0eebaa80c472b5501b21eea500c4c1a8e57116c6eea") version("1.6", sha256="adc0df816ae38bc188bce0aef3aeb71d19c0fc26e063107eeee71a81a49463b6") version("1.4", sha256="e6a83f0799cc9714f5052f159be6e82ececd013d1626f40c828cda0ceb8b76dc") + + depends_on("r@2.10:", when="@1.9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-parallelly/package.py b/var/spack/repos/builtin/packages/r-parallelly/package.py index ad333a9de4556a..ca52c9bb829df0 100644 --- a/var/spack/repos/builtin/packages/r-parallelly/package.py +++ b/var/spack/repos/builtin/packages/r-parallelly/package.py @@ -24,6 +24,7 @@ class RParallelly(RPackage): license("LGPL-2.1-or-later") + version("1.38.0", sha256="632c823c64d1bb840b2a5ff2cb2f5ffc743d62d5090a3cde55a2ebdde230d1aa") version("1.35.0", sha256="3f5e9b6507196aab052c5e67f8b524b75aa356731c5eaffbadde76c967ad5dcd") version("1.32.1", sha256="31c685f59ac7ff702fe2720910780378113adf0df0baf048a62eef94524cca90") version("1.31.1", sha256="40c7fc3d842fa928448e574091a521bead2367bf97545c744ca78ea9af3117da") diff --git a/var/spack/repos/builtin/packages/r-party/package.py b/var/spack/repos/builtin/packages/r-party/package.py index 4c0783c34c9bbd..adb388f56785ea 100644 --- a/var/spack/repos/builtin/packages/r-party/package.py +++ b/var/spack/repos/builtin/packages/r-party/package.py @@ -30,6 +30,7 @@ class RParty(RPackage): license("GPL-2.0-only") + version("1.3-17", sha256="f0e076b1e743cf50274b57d3a69526461fac5e499fc33d73825f293076f27d4b") version("1.3-13", sha256="def05e7f0c59f1b1ecf0ab3929cff75ae8c2691aaf52292cad4371281b897e7b") version("1.3-11", sha256="3ea41a1775d40bc6d0bdf657b98d939d99f98925ac985a31c969735c56618c9c") version("1.3-10", sha256="e5892955f6ce662ade568e646d1d672c3ecbf5d4e74b4a887a353e6160f7b56a") diff --git a/var/spack/repos/builtin/packages/r-partykit/package.py b/var/spack/repos/builtin/packages/r-partykit/package.py index c65bd967e30c3f..aa345616874bed 100644 --- a/var/spack/repos/builtin/packages/r-partykit/package.py +++ b/var/spack/repos/builtin/packages/r-partykit/package.py @@ -25,6 +25,7 @@ class RPartykit(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("1.2-22", sha256="0f0015aa970b10a85d1fabfd2fcf35a6552e292fe151766e348c105f7f5c0adb") version("1.2-20", sha256="63509aa3ed2d7417ad284c037cef66bc837fdb7a97967957e79b9fee8ed2e0da") version("1.2-16", sha256="e643d4e29c1894497e3dd5fe274783319d0044dec50282ed807cebc21736ddb2") version("1.2-15", sha256="b2e9454b2f4b9a39c9581c5871462f00acef4eeee5696ce3e32cfa1468d1e3ac") diff --git a/var/spack/repos/builtin/packages/r-patchwork/package.py b/var/spack/repos/builtin/packages/r-patchwork/package.py index 96b701585f6847..f025aa8e9f73df 100644 --- a/var/spack/repos/builtin/packages/r-patchwork/package.py +++ b/var/spack/repos/builtin/packages/r-patchwork/package.py @@ -20,8 +20,11 @@ class RPatchwork(RPackage): license("MIT") + version("1.2.0", sha256="cc31ea13560c424de9bfe2287d926a7d9e6cc8da2d5561402bb145b4f51b68a1") version("1.1.2", sha256="dab9d5d2d704d591717eaa6efeacf09cb6cd7bee2ca2c46d18414e8503ac8977") version("1.1.1", sha256="cf0d7d9f92945729b499d6e343441c55007d5b371206d5389b9e5154dc7cf481") depends_on("r-ggplot2@3.0.0:", type=("build", "run")) depends_on("r-gtable", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@1.1.3:") + depends_on("r-rlang", type=("build", "run"), when="@1.1.3:") diff --git a/var/spack/repos/builtin/packages/r-pbapply/package.py b/var/spack/repos/builtin/packages/r-pbapply/package.py index 070035aca81824..221fc29544b036 100644 --- a/var/spack/repos/builtin/packages/r-pbapply/package.py +++ b/var/spack/repos/builtin/packages/r-pbapply/package.py @@ -19,6 +19,7 @@ class RPbapply(RPackage): license("GPL-2.0-or-later") + version("1.7-2", sha256="aeed8c8c308c7e3827daf10b01b8ed4b88c1d68cea57d72d67c600c0ce0dae13") version("1.7-0", sha256="64b8e931e0a09031c20b66173ce80a646043b8f135d329bc86226a11c6b706c0") version("1.5-0", sha256="effdfee286e5ba9534dc2ac3cee96590a37f5cd2af28c836d00c25ca9f070a55") version("1.4-3", sha256="8fe6287535be766b5a688810e2cc1ca4e668ac6b42b6e832473fe5701133eb21") diff --git a/var/spack/repos/builtin/packages/r-pbdzmq/package.py b/var/spack/repos/builtin/packages/r-pbdzmq/package.py index c3ee4bbac8befb..95da65e1e9c71b 100644 --- a/var/spack/repos/builtin/packages/r-pbdzmq/package.py +++ b/var/spack/repos/builtin/packages/r-pbdzmq/package.py @@ -22,6 +22,7 @@ class RPbdzmq(RPackage): license("GPL-3.0-or-later") + version("0.3-11", sha256="da7e204d857370201f75a05fbd808a2f409d440cc96855bb8f48f4a5dd75405b") version("0.3-9", sha256="d033238d0a9810581f6b40c7c75263cfc495a585653bbff98e957c37954e0fb6") version("0.3-8", sha256="eded4ccf6ee54a59e06061f1c6e67a8ec36e03c6ab2318af64446d8f95505465") version("0.3-7", sha256="df2d2be14b2f57a64d76cdda4c01fd1c3d9aa12221c63524c01c71849df11808") diff --git a/var/spack/repos/builtin/packages/r-pbkrtest/package.py b/var/spack/repos/builtin/packages/r-pbkrtest/package.py index 912c6de655b21b..9dba98bf8c20c6 100644 --- a/var/spack/repos/builtin/packages/r-pbkrtest/package.py +++ b/var/spack/repos/builtin/packages/r-pbkrtest/package.py @@ -24,6 +24,7 @@ class RPbkrtest(RPackage): license("GPL-2.0-or-later") + version("0.5.3", sha256="b03e5156fef6a4a2ea67c1d15c051799e63acafef2f89962c580645266e6ba63") version("0.5.2", sha256="8e79adf035a0fcf3c82145ad55847497379e009f7be880ba3007ebeb2e69b6e3") version("0.5.1", sha256="b2a3452003d93890f122423b3f2487dcb6925440f5b8a05578509e98b6aec7c5") version("0.5-0.1", sha256="f56525488c6efe4a5cbf849bf9a82747041478605b166c29bad54e464e46f469") @@ -35,12 +36,14 @@ class RPbkrtest(RPackage): depends_on("r@3.2.3:", type=("build", "run"), when="@0.4-6:") depends_on("r@3.5.0:", type=("build", "run"), when="@0.5-0.1:") depends_on("r@4.1.0:", type=("build", "run"), when="@0.5.2:") + depends_on("r@4.2.0:", type=("build", "run"), when="@0.5.3:") depends_on("r-lme4@1.1-10:", type=("build", "run")) depends_on("r-lme4@1.1-31:", type=("build", "run"), when="@0.5.2:") depends_on("r-broom", type=("build", "run"), when="@0.5-0.1:") + depends_on("r-doby", type=("build", "run"), when="@0.5.3:") depends_on("r-dplyr", type=("build", "run"), when="@0.5-0.1:") depends_on("r-mass", type=("build", "run")) - depends_on("r-matrix@1.2.3:", type=("build", "run")) + depends_on("r-matrix@1.2-3:", type=("build", "run")) depends_on("r-numderiv", type=("build", "run"), when="@0.5-0.1:") depends_on("r-knitr", type=("build", "run"), when="@0.5-0.1:0.5.1") depends_on("r-magrittr", type=("build", "run"), when="@0.5-0.1:0.5.1") diff --git a/var/spack/repos/builtin/packages/r-pcapp/package.py b/var/spack/repos/builtin/packages/r-pcapp/package.py index 536c2e65da8a9e..7a362a7396bf77 100644 --- a/var/spack/repos/builtin/packages/r-pcapp/package.py +++ b/var/spack/repos/builtin/packages/r-pcapp/package.py @@ -16,6 +16,7 @@ class RPcapp(RPackage): cran = "pcaPP" + version("2.0-5", sha256="674faed967016a19f9d927506d6b3f4fc7ff2b2ab5679b2368429ee2c61b7c10") version("2.0-3", sha256="1aac554f039753bf9d026090e47d66b82bf3f1f75479ed0adefa3f7bbb55d603") version("2.0-2", sha256="a18b66974e0bfa5af6505acd777d04fd605b32f06009073488ee2f44280bb54b") version("2.0-1", sha256="9690e2f263162452d5a14bd8c52264cb70b317d30907411af4e5b6df4086121a") @@ -28,4 +29,5 @@ class RPcapp(RPackage): version("1.9-60", sha256="9a4b471957ac39ed7c860e3165bf8e099b5b55cf814654adb58f9d19df2718e7") version("1.9-50", sha256="137637314fba6e11883c63b0475d8e50aa7f363e064baa1e70245f7692565b56") + depends_on("r@3.6.2:", type=("build", "run"), when="@2.0-4:") depends_on("r-mvtnorm", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pegas/package.py b/var/spack/repos/builtin/packages/r-pegas/package.py index c60f86f2bc7398..955281e8108535 100644 --- a/var/spack/repos/builtin/packages/r-pegas/package.py +++ b/var/spack/repos/builtin/packages/r-pegas/package.py @@ -22,6 +22,7 @@ class RPegas(RPackage): license("GPL-2.0-or-later") + version("1.3", sha256="103eb2b29d70e71315809421abdf6f2e8ada9c466469c6e3e7cc0314b9cd3dc8") version("1.2", sha256="9d39f3937c09ea6e2189949a23879bb366f5ca1df3a6aac411c7d2b73837ad55") version("1.1", sha256="87ba91a819496dfc3abdcc792ff853a6d49caae6335598a24c23e8851505ed59") version("0.14", sha256="7df90e6c4a69e8dbed2b3f68b18f1975182475bf6f86d4159256b52fd5332053") diff --git a/var/spack/repos/builtin/packages/r-permute/package.py b/var/spack/repos/builtin/packages/r-permute/package.py index 28e711039470c9..3b23775f414c32 100644 --- a/var/spack/repos/builtin/packages/r-permute/package.py +++ b/var/spack/repos/builtin/packages/r-permute/package.py @@ -25,4 +25,4 @@ class RPermute(RPackage): version("0.9-5", sha256="d2885384a07497e8df273689d6713fc7c57a7c161f6935f3572015e16ab94865") version("0.9-4", sha256="a541a5f5636ddd67fd856d3e11224f15bc068e96e23aabe3e607a7e7c2fc1cf1") - depends_on("r@2.14:", type=("build", "run")) + depends_on("r@2.14.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-philentropy/package.py b/var/spack/repos/builtin/packages/r-philentropy/package.py index 3bca7876a36eb7..f8d68c8e47df70 100644 --- a/var/spack/repos/builtin/packages/r-philentropy/package.py +++ b/var/spack/repos/builtin/packages/r-philentropy/package.py @@ -22,6 +22,7 @@ class RPhilentropy(RPackage): license("GPL-2.0-only") + version("0.8.0", sha256="3aa6d4918168f4fe2c56ea3f26381b0ffc02f1d5b9b95e294bac1a34bf66be3e") version("0.7.0", sha256="ce72e2327aee80aeeb630caa33be6a35e4f2b8a7491842d8c21099b9c43584b7") version("0.6.0", sha256="138acf2aedab17c9d367def378e35c8aba80d9e786284b2866955cea1c24eeb6") version("0.5.0", sha256="b39e9a825458f3377e23b2a133180566780e89019e9d22a6a5b7ca87c49c412f") diff --git a/var/spack/repos/builtin/packages/r-phylobase/package.py b/var/spack/repos/builtin/packages/r-phylobase/package.py index 6ef5f16f86cbe7..877479fdf8108d 100644 --- a/var/spack/repos/builtin/packages/r-phylobase/package.py +++ b/var/spack/repos/builtin/packages/r-phylobase/package.py @@ -16,6 +16,7 @@ class RPhylobase(RPackage): license("GPL-2.0-or-later") + version("0.8.12", sha256="9b81ca60dc6215e74b720880cc2db3abc1f7e6d8785ea7d7df95a950f0778f20") version("0.8.10", sha256="5a44380ff49bab333a56f6f96157324ade8afb4af0730e013194c4badb0bf94b") depends_on("r-ade4", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-phytools/package.py b/var/spack/repos/builtin/packages/r-phytools/package.py index 894bf1daae403f..fbe68ae74b8380 100644 --- a/var/spack/repos/builtin/packages/r-phytools/package.py +++ b/var/spack/repos/builtin/packages/r-phytools/package.py @@ -32,6 +32,7 @@ class RPhytools(RPackage): license("GPL-2.0-or-later") + version("2.3-0", sha256="973020a695be3fef94a37d7d6732d9352b66e44d30feb554d267b6aeb646d081") version("1.5-1", sha256="f8be59abbff1f5032be4523c361da53b0d5b71677fedebba6d7cbae2dca7e101") version("1.2-0", sha256="ba3c684118c0eaab4601b21988c553ce7ee019df1714d2ac8d4451075f843b86") version("1.0-3", sha256="bfe2aec6aae8235264c1494eee42be494fed81a676c6de9e39c57a6e3682b37d") @@ -48,6 +49,7 @@ class RPhytools(RPackage): depends_on("r-clustergeneration", type=("build", "run")) depends_on("r-coda", type=("build", "run")) depends_on("r-combinat", type=("build", "run")) + depends_on("r-deoptim", type=("build", "run"), when="@2.2-0:") depends_on("r-doparallel", type=("build", "run"), when="@1.5-1:") depends_on("r-expm", type=("build", "run")) depends_on("r-foreach", type=("build", "run"), when="@1.5-1:") @@ -57,8 +59,8 @@ class RPhytools(RPackage): depends_on("r-numderiv", type=("build", "run")) depends_on("r-optimparallel", type=("build", "run"), when="@1.2-0:") depends_on("r-phangorn@2.3.1:", type=("build", "run")) - depends_on("r-plotrix", type=("build", "run")) depends_on("r-scatterplot3d", type=("build", "run")) depends_on("r-animation", type=("build", "run"), when="@:0.6-99") depends_on("r-gtools", type=("build", "run"), when="@0.6-99:0.7-70") + depends_on("r-plotrix", type=("build", "run"), when="@:2.0-2") diff --git a/var/spack/repos/builtin/packages/r-pinfsc50/package.py b/var/spack/repos/builtin/packages/r-pinfsc50/package.py index 2c0808598ccce2..c2f91b8d1d0764 100644 --- a/var/spack/repos/builtin/packages/r-pinfsc50/package.py +++ b/var/spack/repos/builtin/packages/r-pinfsc50/package.py @@ -21,6 +21,7 @@ class RPinfsc50(RPackage): license("GPL-2.0-or-later") + version("1.3.0", sha256="971627cf4567fdb34db26010f2db44cfac5ff07f327d3247e778638cc4e849bf") version("1.2.0", sha256="ed1fe214b9261feef8abfbf724c2bd9070d68e99a6ea95208aff2c57bbef8794") depends_on("r@3.2.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pixmap/package.py b/var/spack/repos/builtin/packages/r-pixmap/package.py index 25158831a2b0b4..b8a1808f4d14be 100644 --- a/var/spack/repos/builtin/packages/r-pixmap/package.py +++ b/var/spack/repos/builtin/packages/r-pixmap/package.py @@ -16,5 +16,6 @@ class RPixmap(RPackage): license("GPL-2.0-only") + version("0.4-13", sha256="e3dbc641a0497575b45a4140dadc6bf43cdf39b02393f93f1b0ee4f4d026e711") version("0.4-12", sha256="893ba894d4348ba05e6edf9c1b4fd201191816b444a214f7a6b2c0a79b0a2aec") version("0.4-11", sha256="6fa010749a59cdf56aad9f81271473b7d55697036203f2cd5d81372bcded7412") diff --git a/var/spack/repos/builtin/packages/r-pkgbuild/package.py b/var/spack/repos/builtin/packages/r-pkgbuild/package.py index 9289da8fb73d33..35498c04a8df18 100644 --- a/var/spack/repos/builtin/packages/r-pkgbuild/package.py +++ b/var/spack/repos/builtin/packages/r-pkgbuild/package.py @@ -17,6 +17,7 @@ class RPkgbuild(RPackage): license("MIT") + version("1.4.4", sha256="5972843cd43654715cdbdd28f50af013fa3d1c213146654992b2b5f39ed0e2a8") version("1.4.0", sha256="357f3c40c99650eaa8a715991ff1355a553acb165f217ed204712f698ba55ed6") version("1.3.1", sha256="7c6a82d1e6b19e136a7d16095743c50cd7b6340eeda594e4a8e14d74972ddb48") version("1.2.0", sha256="2e19308d3271fefd5e118c6d132d6a2511253b903620b5417892c72d2010a963") @@ -26,15 +27,17 @@ class RPkgbuild(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.4.0:") + depends_on("r@3.5:", type=("build", "run"), when="@1.4.3:") depends_on("r-callr@2.0.0:", type=("build", "run")) depends_on("r-callr@3.2.0:", type=("build", "run"), when="@1.0.4:") depends_on("r-cli", type=("build", "run")) depends_on("r-cli@3.4.0:", type=("build", "run"), when="@1.4.0:") - depends_on("r-crayon", type=("build", "run")) depends_on("r-desc", type=("build", "run")) - depends_on("r-prettyunits", type=("build", "run")) depends_on("r-processx", type=("build", "run"), when="@1.4.0:") depends_on("r-r6", type=("build", "run")) - depends_on("r-rprojroot", type=("build", "run")) - depends_on("r-withr@2.1.2:", type=("build", "run")) - depends_on("r-withr@2.3.0:", type=("build", "run"), when="@1.3.1:") + + depends_on("r-crayon", type=("build", "run"), when="@:1.4.2") + depends_on("r-prettyunits", type=("build", "run"), when="@:1.4.2") + depends_on("r-rprojroot", type=("build", "run"), when="@:1.4.2") + depends_on("r-withr@2.1.2:", type=("build", "run"), when="@:1.4.0") + depends_on("r-withr@2.3.0:", type=("build", "run"), when="@1.3.1:1.4.0") diff --git a/var/spack/repos/builtin/packages/r-pkgcache/package.py b/var/spack/repos/builtin/packages/r-pkgcache/package.py index 4f7db9e75be88d..33d28cf77c928d 100644 --- a/var/spack/repos/builtin/packages/r-pkgcache/package.py +++ b/var/spack/repos/builtin/packages/r-pkgcache/package.py @@ -17,6 +17,7 @@ class RPkgcache(RPackage): license("MIT") + version("2.2.2", sha256="7ebd6cc5fc0325eae504877dfe9651f90e51b3b9778cecc8aae2671b617b5be3") version("2.1.0", sha256="cfc03c2060028097972c32c3f2d922d7a598dfd963e5e5250d85a3dfa2f2e206") version("2.0.3", sha256="80deafd60f15dda029536d4ce13c37ef91c49cb6636323daadbf3d64a67da028") version("2.0.2", sha256="6860b5b7046ef349c2fdad4ba3aecb57c7516fba952a19e3ff7cccb7f859f881") @@ -31,10 +32,8 @@ class RPkgcache(RPackage): depends_on("r-curl@3.2:", type=("build", "run")) depends_on("r-filelock", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) - depends_on("r-prettyunits", type=("build", "run")) depends_on("r-r6", type=("build", "run")) depends_on("r-processx@3.3.0.9001:", type=("build", "run")) - depends_on("r-rappdirs", type=("build", "run")) depends_on("r-assertthat", type=("build", "run"), when="@:1.3.0") depends_on("r-digest", type=("build", "run"), when="@:1.3.0") @@ -42,3 +41,5 @@ class RPkgcache(RPackage): depends_on("r-tibble", type=("build", "run"), when="@:1.3.0") depends_on("r-uuid", type=("build", "run"), when="@:1.3.0") depends_on("r-glue", type=("build", "run"), when="@:2.0.2") + depends_on("r-prettyunits", type=("build", "run"), when="@:2.2.0") + depends_on("r-rappdirs", type=("build", "run"), when="@:2.2.0") diff --git a/var/spack/repos/builtin/packages/r-pkgdepends/package.py b/var/spack/repos/builtin/packages/r-pkgdepends/package.py index 73ba6e593b87db..fc85a9557a83dc 100644 --- a/var/spack/repos/builtin/packages/r-pkgdepends/package.py +++ b/var/spack/repos/builtin/packages/r-pkgdepends/package.py @@ -22,34 +22,38 @@ class RPkgdepends(RPackage): license("MIT") + version("0.7.2", sha256="b17e22d01250916b06868317359239ca9273d7765b5ead9481b47cf0d96acd26") version("0.5.0", sha256="eadc98e335f9d2cc10b31cf7a5b55fe3308266fbd6f46d5dbd37b5d90bfcf1bc") version("0.3.2", sha256="61db529965f973847b4d1337c6556527a89953cad09d231a6e6ca2145a426a21") version("0.3.1", sha256="8e4263a1792871ee9629b0d6a8caeb53b77012db3b5be91b432f3553cd2a80be") version("0.2.0", sha256="59afdbe0e59663088ba4facac5cd011a0a05b0b9c540103fb8b9f0a673bf4d94") depends_on("r@3.4:", type=("build", "run"), when="@0.3.1:") + depends_on("r@3.5:", type=("build", "run"), when="@0.7.0:") depends_on("r-callr@3.3.1:", type=("build", "run")) depends_on("r-cli@2.1.0:", type=("build", "run")) depends_on("r-cli@3.6.0:", type=("build", "run"), when="@0.5.0:") depends_on("r-curl", type=("build", "run")) depends_on("r-desc@1.2.0:", type=("build", "run")) + depends_on("r-desc@1.4.3:", type=("build", "run"), when="@0.7.1:") depends_on("r-filelock@1.0.2:", type=("build", "run")) - depends_on("r-glue", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) depends_on("r-lpsolve", type=("build", "run")) depends_on("r-pkgbuild@1.0.2:", type=("build", "run")) depends_on("r-pkgcache@1.3.0:", type=("build", "run")) depends_on("r-pkgcache@2.0.0:", type=("build", "run"), when="@0.3.1:") depends_on("r-pkgcache@2.1.0:", type=("build", "run"), when="@0.5.0:") - depends_on("r-prettyunits@1.1.1:", type=("build", "run")) + depends_on("r-pkgcache@2.2.0:", type=("build", "run"), when="@0.6.0:") depends_on("r-processx@3.4.2:", type=("build", "run")) depends_on("r-ps", type=("build", "run")) depends_on("r-r6", type=("build", "run")) - depends_on("r-rprojroot", type=("build", "run")) - depends_on("r-withr@2.1.1:", type=("build", "run")) depends_on("r-zip@2.1.0:", type=("build", "run")) depends_on("r-zip@2.3.0:", type=("build", "run"), when="@0.5.0:") + depends_on("r-glue", type=("build", "run"), when="@:0.7.0") + depends_on("r-prettyunits@1.1.1:", type=("build", "run"), when="@:0.7.0") + depends_on("r-rprojroot", type=("build", "run"), when="@:0.7.0") + depends_on("r-withr@2.1.1:", type=("build", "run"), when="@:0.5.0") depends_on("r-rematch2", type=("build", "run"), when="@:0.2.0") depends_on("r-tibble", type=("build", "run"), when="@:0.2.0") depends_on("r-crayon", type=("build", "run"), when="@:0.3.2") diff --git a/var/spack/repos/builtin/packages/r-pkgdown/package.py b/var/spack/repos/builtin/packages/r-pkgdown/package.py index 14cb41076c0d5e..017b64e16034e3 100644 --- a/var/spack/repos/builtin/packages/r-pkgdown/package.py +++ b/var/spack/repos/builtin/packages/r-pkgdown/package.py @@ -17,29 +17,42 @@ class RPkgdown(RPackage): license("MIT") + version("2.1.0", sha256="c4d1df3b738d66e60db71e57c01c86c46f2fe58f972c9e2403c07a1436279fb4") version("2.0.7", sha256="f33872869dfa8319182d87e90eab3245ff69293b3b791471bf9538afb81b356a") version("2.0.6", sha256="d29a65c8a5b189fd89842e769f58f8c2369a55406269eabfb66d41d0fe1c7f69") depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r@3.6:", type=("build", "run"), when="@2.0.8:") depends_on("r-bslib@0.3.1:", type=("build", "run")) + depends_on("r-bslib@0.5.1:", type=("build", "run"), when="@2.0.8:") depends_on("r-callr@2.0.2:", type=("build", "run")) depends_on("r-callr@3.7.3:", type=("build", "run"), when="@2.0.7:") depends_on("r-cli", type=("build", "run")) + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@2.0.8:") depends_on("r-desc", type=("build", "run")) + depends_on("r-desc@1.4.0:", type=("build", "run"), when="@2.0.8:") depends_on("r-digest", type=("build", "run")) depends_on("r-downlit@0.4.0:", type=("build", "run")) + depends_on("r-downlit@0.4.4:", type=("build", "run"), when="@2.1.0:") + depends_on("r-fontawesome", type=("build", "run"), when="@2.1.0:") depends_on("r-fs@1.4.0:", type=("build", "run")) - depends_on("r-httr@1.4.2:", type=("build", "run")) + depends_on("r-httr2@1.0.0:", type=("build", "run"), when="@2.1.0:") depends_on("r-jsonlite", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) - depends_on("r-memoise", type=("build", "run")) + depends_on("r-openssl", type=("build", "run"), when="@2.1.0:") depends_on("r-purrr", type=("build", "run")) + depends_on("r-purrr@1.0.0:", type=("build", "run"), when="@2.0.8:") depends_on("r-ragg", type=("build", "run")) depends_on("r-rlang@1.0.0:", type=("build", "run")) + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@2.0.9:") depends_on("r-rmarkdown@1.1.9007:", type=("build", "run")) + depends_on("r-rmarkdown@2.27:", type=("build", "run"), when="@2.1.0:") depends_on("r-tibble", type=("build", "run")) depends_on("r-whisker", type=("build", "run")) depends_on("r-withr@2.4.3:", type=("build", "run")) depends_on("r-xml2@1.3.1:", type=("build", "run")) depends_on("r-yaml", type=("build", "run")) depends_on("pandoc") + + depends_on("r-httr@1.4.2:", type=("build", "run"), when="@:2.0.9") + depends_on("r-magrittr", type=("build", "run"), when="@:2.0.9") + depends_on("r-memoise", type=("build", "run"), when="@:2.0.9") diff --git a/var/spack/repos/builtin/packages/r-pkgload/package.py b/var/spack/repos/builtin/packages/r-pkgload/package.py index 5d22035a99e780..3a6b717b956ef6 100644 --- a/var/spack/repos/builtin/packages/r-pkgload/package.py +++ b/var/spack/repos/builtin/packages/r-pkgload/package.py @@ -17,6 +17,7 @@ class RPkgload(RPackage): license("GPL-3.0-only") + version("1.4.0", sha256="09e4885e9cc25af29063a525da0b2ac9dd66fc7a95ea085bf5060312e3a67549") version("1.3.4", sha256="60b04b948cda4dc56257b1e89f9b0a4b1273cacecdb2bd995d66dd76e89926ce") version("1.3.3", sha256="b0898122876479cc4a35cd566654b3a7b50f8ac105565dbf3f8b9d4283816959") version("1.3.2.1", sha256="a1987b123fcbdb9d908b6dc55a04d3cf47d68cfa5090186e4876a429313374b2") @@ -31,10 +32,12 @@ class RPkgload(RPackage): depends_on("r-cli", type=("build", "run"), when="@1.1.0:") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@1.3.0:") - depends_on("r-crayon", type=("build", "run"), when="@1.1.0:") + depends_on("r-crayon", type=("build", "run"), when="@1.1.0:1.3") depends_on("r-desc", type=("build", "run")) depends_on("r-glue", type=("build", "run"), when="@1.3.0:") depends_on("r-fs", type=("build", "run"), when="@1.3.0:") + depends_on("r-lifecycle", type=("build", "run"), when="@1.4.0:") + depends_on("r-processx", type=("build", "run"), when="@1.4.0:") depends_on("r-rlang", type=("build", "run")) depends_on("r-rlang@1.0.3:", type=("build", "run"), when="@1.3.0:1.3.3") depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@1.3.4:") diff --git a/var/spack/repos/builtin/packages/r-pkgmaker/package.py b/var/spack/repos/builtin/packages/r-pkgmaker/package.py index 47efa743ec4041..af688596a32530 100644 --- a/var/spack/repos/builtin/packages/r-pkgmaker/package.py +++ b/var/spack/repos/builtin/packages/r-pkgmaker/package.py @@ -21,6 +21,7 @@ class RPkgmaker(RPackage): license("GPL-2.0-or-later") + version("0.32.10", sha256="972b0473a64408ccc4841fa3f09a567cc32811e69c3c7e42a2f391a5eb2e2933") version("0.32.8", sha256="0ff3578d2c051b544c3f105cfe4801575aac1564add048f9e952c53a8ccd1745") version("0.32.2", sha256="ce45b22def771a9c90a414093823e6befe7e23489c500eeccee5154b44d3ef91") version("0.27", sha256="17a289d8f596ba5637b07077b3bff22411a2c2263c0b7de59fe848666555ec6a") diff --git a/var/spack/repos/builtin/packages/r-pki/package.py b/var/spack/repos/builtin/packages/r-pki/package.py new file mode 100644 index 00000000000000..612dbecdbce823 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-pki/package.py @@ -0,0 +1,22 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RPki(RPackage): + """Public Key Infrastucture functions such as verifying certificates, + RSA encription and signing which can be used to build PKI infrastructure + and perform cryptographic tasks.""" + + homepage = "http://www.rforge.net/PKI" + cran = "PKI" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("0.1-14", sha256="c024e81977b978b705460df96639e3369420bd7e8f4f3242ec796255dc1b7966") + + depends_on("r@2.9.0:", type=("build", "run")) + depends_on("r-base64enc", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-plot3d/package.py b/var/spack/repos/builtin/packages/r-plot3d/package.py index 0ba526522a76cd..31a6ed7e753661 100644 --- a/var/spack/repos/builtin/packages/r-plot3d/package.py +++ b/var/spack/repos/builtin/packages/r-plot3d/package.py @@ -15,6 +15,7 @@ class RPlot3d(RPackage): cran = "plot3D" + version("1.4.1", sha256="db6df74844dda9177f2be024762b2f0e63182916e987a09480514d078d55d1f4") version("1.4", sha256="d04a45197646fb36bc38870c1c2351cb56b912bd772b1ebfa25eaeef35fda9c0") version("1.3", sha256="b9e4ec2789e34ad249318900e186868650e1a33466b385cb492a45466db3dfc9") version("1.1.1", sha256="f6fe4a001387132626fc553ed1d5720d448b8064eb5a6917458a798e1d381632") diff --git a/var/spack/repos/builtin/packages/r-plotly/package.py b/var/spack/repos/builtin/packages/r-plotly/package.py index 9b266588fdf4d4..ba3ba33ad13b84 100644 --- a/var/spack/repos/builtin/packages/r-plotly/package.py +++ b/var/spack/repos/builtin/packages/r-plotly/package.py @@ -17,6 +17,7 @@ class RPlotly(RPackage): license("MIT") + version("4.10.4", sha256="cfa995b7ed55d31a196707a3ae6ea352dd907cef3058a3bf1956fde39366d867") version("4.10.1", sha256="ac0921a1cba24e17a0f3a0a28b7a40ac930e17fe5caa9c3973c9a8d1e20c367a") version("4.10.0", sha256="bd995c654dbc8c09a84adaba8def99766919e3894caf18b551bb26b2f591389a") version("4.9.3", sha256="d44d1a16d96de28bc2d36f1c897384215eeec44d109546c6e9c2707db0880120") diff --git a/var/spack/repos/builtin/packages/r-plotmo/package.py b/var/spack/repos/builtin/packages/r-plotmo/package.py index de5de683ee83b4..2f0cb89e819b98 100644 --- a/var/spack/repos/builtin/packages/r-plotmo/package.py +++ b/var/spack/repos/builtin/packages/r-plotmo/package.py @@ -17,6 +17,7 @@ class RPlotmo(RPackage): license("GPL-3.0-only") + version("3.6.3", sha256="6917cd8185325f1f2998fb14def9e6a8d93f1b708cf70d7c443d3960c9189b7b") version("3.6.2", sha256="cde33a8ec558b12d8e11d7d0531e73f6678a25ee589b79897d2fc425a3fd353c") version("3.6.1", sha256="245a0c87f0cca08746c6fdc60da2e3856cd69b1a2b7b5641293c620d4ae04343") version("3.6.0", sha256="c05afcc442f9542868beea5c3c40fb93b049f9b61c42725b2a1e2bc750c241e3") @@ -25,4 +26,5 @@ class RPlotmo(RPackage): depends_on("r@3.4.0:", type=("build", "run")) depends_on("r-formula@1.2-3:", type=("build", "run")) depends_on("r-plotrix", type=("build", "run")) - depends_on("r-teachingdemos", type=("build", "run")) + + depends_on("r-teachingdemos", type=("build", "run"), when="@:3.6.2") diff --git a/var/spack/repos/builtin/packages/r-plotrix/package.py b/var/spack/repos/builtin/packages/r-plotrix/package.py index 9a74b4ceb74b53..bbeecbe9f3cb26 100644 --- a/var/spack/repos/builtin/packages/r-plotrix/package.py +++ b/var/spack/repos/builtin/packages/r-plotrix/package.py @@ -15,6 +15,7 @@ class RPlotrix(RPackage): license("GPL-2.0-or-later") + version("3.8-4", sha256="e6a22d93ab61c67af21cbbe1fe333c06934cf576a44745bf2beee59bceaae8d6") version("3.8-2", sha256="bb72953102889cea41cd6521874e35d2458ebd10aab97ba6f262e102cac0bc1f") version("3.7-8", sha256="8ccd1f7e656413b9956cea614c986ce9cc61366deba356afb38cee6672a59480") version("3.7-6", sha256="83d5f7574592953288b4fe39c4c0dd7670d097598ad7f6bddbb0687a32954e46") diff --git a/var/spack/repos/builtin/packages/r-pls/package.py b/var/spack/repos/builtin/packages/r-pls/package.py index b5cdc6df154562..5990dc20614e6a 100644 --- a/var/spack/repos/builtin/packages/r-pls/package.py +++ b/var/spack/repos/builtin/packages/r-pls/package.py @@ -17,6 +17,7 @@ class RPls(RPackage): license("GPL-2.0-only") + version("2.8-4", sha256="785b1b63639754811bec124fcd46bd821c76611380f49a7555695a2969b3d562") version("2.8-1", sha256="e22e7febeef1a6800b97ee7f6eb03dc1d6681aba7f9298449c9e6375fa78f28c") version("2.8-0", sha256="eff3a92756ca34cdc1661fa36d2bf7fc8e9f4132d2f1ef9ed0105c83594618bf") version("2.7-3", sha256="8f1d960ab74f05fdd11c4c7a3d30ff9e263fc658f5690b67278ca7c045d0742c") diff --git a/var/spack/repos/builtin/packages/r-plyr/package.py b/var/spack/repos/builtin/packages/r-plyr/package.py index e0cd4ca9f3acf7..34387c943f6ca0 100644 --- a/var/spack/repos/builtin/packages/r-plyr/package.py +++ b/var/spack/repos/builtin/packages/r-plyr/package.py @@ -21,6 +21,7 @@ class RPlyr(RPackage): license("MIT") + version("1.8.9", sha256="15b5e7f711d53bf41b8687923983b8ef424563aa2f74c5195feb5b1df1aee103") version("1.8.8", sha256="a73211b4bbe13e4e5e764966a8dd90172c1cc311938dd464d142e1c7a701070c") version("1.8.7", sha256="7d9fdaf1157035a49c3661da3bbaa7bfcf782aafe1b98f7b5a68b0520046e87f") version("1.8.6", sha256="ea55d26f155443e9774769531daa5d4c20a0697bb53abd832e891b126c935287") diff --git a/var/spack/repos/builtin/packages/r-pmcmrplus/package.py b/var/spack/repos/builtin/packages/r-pmcmrplus/package.py index 047b2bffa94bc5..e5e76090bf7a12 100644 --- a/var/spack/repos/builtin/packages/r-pmcmrplus/package.py +++ b/var/spack/repos/builtin/packages/r-pmcmrplus/package.py @@ -36,6 +36,7 @@ class RPmcmrplus(RPackage): cran = "PMCMRplus" + version("1.9.10", sha256="d883f897fa26a0bca0ba464dac7b360c6adee2c7867097e91fc7588030ed1f70") version("1.9.6", sha256="7f4791566d7dfaed0883187c52fbb845797ff6a1066e77667683ce96391b72d7") version("1.9.4", sha256="1ec36674bb6d2fac3a1b0889c4672e40849c7e3565ffb34bb73b61f973bba19a") version("1.9.3", sha256="76baba60f57343fa5bb6f6d2ea27aab77178e02b0d2f9d5d74abde7d18994f03") diff --git a/var/spack/repos/builtin/packages/r-polspline/package.py b/var/spack/repos/builtin/packages/r-polspline/package.py index ed627a8781b775..f773e956218cbb 100644 --- a/var/spack/repos/builtin/packages/r-polspline/package.py +++ b/var/spack/repos/builtin/packages/r-polspline/package.py @@ -17,6 +17,7 @@ class RPolspline(RPackage): license("GPL-2.0-or-later") + version("1.1.25", sha256="2943fc4cd922300afeaa58e6a0e4c21e5a0f7255e6367c7ea6ad136fce1e9ba3") version("1.1.22", sha256="b2f2198f020d7d492a87bad2b58a6cc9ae91d95b7330dd12b9b1145c72d7457b") version("1.1.20", sha256="6992484e9e41036debef1e705e26959f8f5c7a68d3e1fda58273d2a72297a1b5") version("1.1.19", sha256="953e3c4d007c3ef86ac2af3c71b272a99e8e35b194bdd58575785558c6711f66") diff --git a/var/spack/repos/builtin/packages/r-polyclip/package.py b/var/spack/repos/builtin/packages/r-polyclip/package.py index 55c5ff6f81d59f..93eaf4a57e7400 100644 --- a/var/spack/repos/builtin/packages/r-polyclip/package.py +++ b/var/spack/repos/builtin/packages/r-polyclip/package.py @@ -21,7 +21,9 @@ class RPolyclip(RPackage): license("BSL-1.0") + version("1.10-7", sha256="f58eaac3a5b2f6711c0c5f12fff91cf80a245ae45878f7217880ab062b5550d3") version("1.10-4", sha256="84d2c9778771d3759b49d7d16fb54c8ddc5397da3b1d21074bc4aa42c02e6f56") version("1.10-0", sha256="74dabc0dfe5a527114f0bb8f3d22f5d1ae694e6ea9345912909bae885525d34b") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@1.10-7:") diff --git a/var/spack/repos/builtin/packages/r-pool/package.py b/var/spack/repos/builtin/packages/r-pool/package.py index 56c8ad12266c2f..cb713e912457d3 100644 --- a/var/spack/repos/builtin/packages/r-pool/package.py +++ b/var/spack/repos/builtin/packages/r-pool/package.py @@ -17,12 +17,16 @@ class RPool(RPackage): license("MIT") + version("1.0.3", sha256="c461f96928c3e524a52018160d2406f3a1f5ef5abbae54ae89fe7ecd4c1a1cec") version("1.0.1", sha256="73d5dffd55e80fdadb88401f12570fcf08e932c4c86761931241f9841fddadbf") version("0.1.6", sha256="cdbe5f6c7f757c01893dc9870df0fb8d300829da0e427f6c2559b01caa52d9e1") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@1.0.2:") depends_on("r-dbi", type=("build", "run")) + depends_on("r-dbi@1.2.1:", type=("build", "run"), when="@1.0.3:") depends_on("r-r6", type=("build", "run")) - depends_on("r-withr", type=("build", "run"), when="@1.0.1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-later@1.0.0:", type=("build", "run")) + + depends_on("r-withr", type=("build", "run"), when="@1.0.1") diff --git a/var/spack/repos/builtin/packages/r-poorman/package.py b/var/spack/repos/builtin/packages/r-poorman/package.py index ea5c5ac0e4a80b..09945188155804 100644 --- a/var/spack/repos/builtin/packages/r-poorman/package.py +++ b/var/spack/repos/builtin/packages/r-poorman/package.py @@ -16,6 +16,7 @@ class RPoorman(RPackage): license("MIT") + version("0.2.7", sha256="089418293cdfde3b46bf53e891a3a8ad924d953a1a7e5ae981de54ebde62b4aa") version("0.2.6", sha256="328e0a3e610f17e845d95cd9c0803e0367d6f5835706e8b0ed921fc500983774") version("0.2.5", sha256="b92b30ce0f4f02c4fa4a4e90673ef2e0ed8de9b9080dd064506581989fcc0716") diff --git a/var/spack/repos/builtin/packages/r-popvar/package.py b/var/spack/repos/builtin/packages/r-popvar/package.py index 90c15fa3cb6895..c7afc8c5c63bd2 100644 --- a/var/spack/repos/builtin/packages/r-popvar/package.py +++ b/var/spack/repos/builtin/packages/r-popvar/package.py @@ -22,6 +22,7 @@ class RPopvar(RPackage): cran = "PopVar" + version("1.3.1", sha256="adb0f6705b7bb984272db31f8ac6612100f7970aa7d0e5cfdef76124dd33ac98") version("1.3.0", sha256="3145c41c9aa1588d47aaf76c082e6b1c2fd95cf5014b98bd2867cbf2cec782f9") version("1.2.1", sha256="5e3df79634ab63708a431e4b8e6794675972ac6c58d2bc615726aa0f142f5f25") diff --git a/var/spack/repos/builtin/packages/r-posterior/package.py b/var/spack/repos/builtin/packages/r-posterior/package.py index 4d1c9fdc2c7f1f..859ad7c7999354 100644 --- a/var/spack/repos/builtin/packages/r-posterior/package.py +++ b/var/spack/repos/builtin/packages/r-posterior/package.py @@ -23,6 +23,7 @@ class RPosterior(RPackage): license("BSD-3-Clause") + version("1.6.0", sha256="34612a39fb15a8e3ba6ef5c32a041a4b5f77554216dd774563f46db1150bf40c") version("1.4.1", sha256="2b8953fa8d6890a105521023c431ddea725465eb95cf9454a88852e43ebb58d3") version("1.3.1", sha256="7000780290a24be86dbc406dd4338aec622d8dee1e471b68b55abb4872934d7a") version("1.2.1", sha256="b757e06885a1f21e7ad8f5a3feaecbe0a71ae8d766e4aec4c3aa2183a810afe1") diff --git a/var/spack/repos/builtin/packages/r-powerlaw/package.py b/var/spack/repos/builtin/packages/r-powerlaw/package.py index 4c664b9d152282..c73409dcbce4c7 100644 --- a/var/spack/repos/builtin/packages/r-powerlaw/package.py +++ b/var/spack/repos/builtin/packages/r-powerlaw/package.py @@ -16,6 +16,7 @@ class RPowerlaw(RPackage): cran = "poweRlaw" + version("0.80.0", sha256="713556af1f47e1de749670d08f963688908cfa80e9dfda590efd1a28441772cb") version("0.70.6", sha256="efc091449c5c6494c1c13c85a8eb95625d1c55ffffebe86c7ea16e4abbafa191") version("0.70.2", sha256="240f1454389b1a00ad483fb63e5b53243cc9367f21a3e7253ab2c293673459ab") version("0.70.1", sha256="15b1b8dadeb550c01b9f1308cfa64720be6fbf56afb80f6a096987d6a0055913") diff --git a/var/spack/repos/builtin/packages/r-prabclus/package.py b/var/spack/repos/builtin/packages/r-prabclus/package.py index 56d94d7ba93d81..df23c06398adac 100644 --- a/var/spack/repos/builtin/packages/r-prabclus/package.py +++ b/var/spack/repos/builtin/packages/r-prabclus/package.py @@ -21,11 +21,13 @@ class RPrabclus(RPackage): license("GPL-2.0-or-later") + version("2.3-3", sha256="005d000a9ac357e670de26e5b8fc4ddb1617351275fa43bf6d2e88b8774358c1") version("2.3-2", sha256="f421bcbcb557281e0de4a06b15f9a496adb5c640e883c0f7bb12051efc69e441") version("2.3-1", sha256="ef3294767d43bc3f72478fdaf0d1f13c8de18881bf9040c9f1add68af808b3c0") version("2.2-7.1", sha256="2c5bf3bbb0d225e04c53bb0e11e9c2a6809f0e46d95b8f6dc14b9dd6a2452975") version("2.2-6", sha256="41792980e40ba18204fab92d85120dcd468860e2204e52fb42636c6f7aee5a62") depends_on("r@2.1.0:", type=("build", "run")) + depends_on("r@2.10:", type=("build", "run"), when="@2.2-2:") depends_on("r-mass", type=("build", "run")) depends_on("r-mclust", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-pracma/package.py b/var/spack/repos/builtin/packages/r-pracma/package.py index 2d4858d429a0b6..59d54e213252c5 100644 --- a/var/spack/repos/builtin/packages/r-pracma/package.py +++ b/var/spack/repos/builtin/packages/r-pracma/package.py @@ -18,6 +18,7 @@ class RPracma(RPackage): license("GPL-3.0-or-later") + version("2.4.4", sha256="1a4ef3af2197f999dbaa614bf5a70f09ec463d8c91feb5aa0d995de24ec6ba7f") version("2.4.2", sha256="1d50337fdfd9a8d704a64f01dae5d52b9a2bd6d872fdaa4a6685b8d3bde89c16") version("2.3.8", sha256="2302d454406e72711714732658d0c59c9d5a1ead698f22ee23f38cba63d42764") version("2.3.6", sha256="17ac83fd48c9155e00dc3f0433f95723505dc73d046860afd9001866d699b8de") diff --git a/var/spack/repos/builtin/packages/r-prettyunits/package.py b/var/spack/repos/builtin/packages/r-prettyunits/package.py index b3b317d3f601c9..8c0503a4eb2d5e 100644 --- a/var/spack/repos/builtin/packages/r-prettyunits/package.py +++ b/var/spack/repos/builtin/packages/r-prettyunits/package.py @@ -17,8 +17,11 @@ class RPrettyunits(RPackage): license("MIT") + version("1.2.0", sha256="f059f27e2a5c82e351fe05b87ad712f7afc273c651450453f59d99af5deeacea") version("1.1.1", sha256="9a199aa80c6d5e50fa977bc724d6e39dae1fc597a96413053609156ee7fb75c5") version("1.0.2", sha256="35a4980586c20650538ae1e4fed4d80fdde3f212b98546fc3c7d9469a1207f5c") + depends_on("r@2.10:", type=("build", "run"), when="@1.2.0:") + depends_on("r-magrittr", type=("build", "run"), when="@:1.0.2") depends_on("r-assertthat", type=("build", "run"), when="@:1.0.2") diff --git a/var/spack/repos/builtin/packages/r-proc/package.py b/var/spack/repos/builtin/packages/r-proc/package.py index eb2a3ee026af54..a89e84c78f561e 100644 --- a/var/spack/repos/builtin/packages/r-proc/package.py +++ b/var/spack/repos/builtin/packages/r-proc/package.py @@ -16,6 +16,7 @@ class RProc(RPackage): cran = "pROC" + version("1.18.5", sha256="5593c841a6df5a2f2d209d0c14401971eb9427092ed9c3ac2059273807b42c89") version("1.18.0", sha256="d5ef54b384176ece6d6448014ba40570a98181b58fee742f315604addb5f7ba9") version("1.17.0.1", sha256="221c726ffb81b04b999905effccfd3a223cd73cae70d7d86688e2dd30e51a6bd") diff --git a/var/spack/repos/builtin/packages/r-processx/package.py b/var/spack/repos/builtin/packages/r-processx/package.py index cf92432de3a65a..9c1e21cdf8c5d0 100644 --- a/var/spack/repos/builtin/packages/r-processx/package.py +++ b/var/spack/repos/builtin/packages/r-processx/package.py @@ -20,6 +20,7 @@ class RProcessx(RPackage): license("MIT") + version("3.8.4", sha256="6627672d7fb109f37dc1d0eaef913f4cfc7ad8ac807abf0397e6d37753b1e70b") version("3.8.1", sha256="e008472b81d4ca1a37a4ba7dd58e5e944f96ab2e44c8ccc8840d43e9fe99e93c") version("3.8.0", sha256="9270d9d26c4314151062801a5c1fc57556b4fcb41dbf3558cb5bd230b18ffb0b") version("3.7.0", sha256="de6a8d4135fc53ec35043fbaf6b000dc9597719345595d8479662a39dad55ed3") diff --git a/var/spack/repos/builtin/packages/r-prodlim/package.py b/var/spack/repos/builtin/packages/r-prodlim/package.py index 617aa47649a6d4..86754a10e86ce5 100644 --- a/var/spack/repos/builtin/packages/r-prodlim/package.py +++ b/var/spack/repos/builtin/packages/r-prodlim/package.py @@ -17,6 +17,9 @@ class RProdlim(RPackage): license("GPL-2.0-or-later") + version( + "2024.06.25", sha256="46961f654171aa7ef0ff94b23508ed59f6a438c3a3ba0d338cc3730224406764" + ) version( "2023.03.31", sha256="5510454f8511ca956666f27dfb77d875c56b9166188c33f22cd22b7615797800" ) diff --git a/var/spack/repos/builtin/packages/r-profvis/package.py b/var/spack/repos/builtin/packages/r-profvis/package.py index 709aca7e825642..787041fb2eb3d1 100644 --- a/var/spack/repos/builtin/packages/r-profvis/package.py +++ b/var/spack/repos/builtin/packages/r-profvis/package.py @@ -13,8 +13,12 @@ class RProfvis(RPackage): license("GPL-3.0-only OR custom") + version("0.3.8", sha256="ec02c75bc9907a73564e691adfa8e06651ca0bd73b7915412960231cd265b4b2") version("0.3.7", sha256="43974863cb793f81dbea4b94096343c321f7739c9038980405c9b16b04a906b9") depends_on("r@3.0:", type=("build", "run")) depends_on("r-htmlwidgets@0.3.2:", type=("build", "run")) + depends_on("r-purrr", type=("build", "run"), when="@0.3.8:") + depends_on("r-rlang@0.4.9:", type=("build", "run"), when="@0.3.8:") depends_on("r-stringr", type=("build", "run")) + depends_on("r-vctrs", type=("build", "run"), when="@0.3.8:") diff --git a/var/spack/repos/builtin/packages/r-progress/package.py b/var/spack/repos/builtin/packages/r-progress/package.py index d3f41e6548513e..dbc314340b09ce 100644 --- a/var/spack/repos/builtin/packages/r-progress/package.py +++ b/var/spack/repos/builtin/packages/r-progress/package.py @@ -18,10 +18,12 @@ class RProgress(RPackage): license("MIT") + version("1.2.3", sha256="ea2b079b894de85c3ab12088c9c52aec06432245047a961d5b4b8aa6889f9276") version("1.2.2", sha256="b4a4d8ed55db99394b036a29a0fb20b5dd2a91c211a1d651c52a1023cc58ff35") version("1.2.1", sha256="7401e86ff76bef4d26508b74ee8bd169a0377b2738d9ec79ebff0b7fd5c55326") version("1.1.2", sha256="a9f4abfd9579b80967cd681041643fe9dfcc4eb3beeba45391bb64e9209baabb") + depends_on("r@3.6:", type=("build", "run"), when="@1.2.3:") depends_on("r-r6", type=("build", "run")) depends_on("r-prettyunits", type=("build", "run")) depends_on("r-hms", type=("build", "run"), when="@1.2.0:") diff --git a/var/spack/repos/builtin/packages/r-progressr/package.py b/var/spack/repos/builtin/packages/r-progressr/package.py index 457a09c4b0304a..d07c5124e952d9 100644 --- a/var/spack/repos/builtin/packages/r-progressr/package.py +++ b/var/spack/repos/builtin/packages/r-progressr/package.py @@ -31,6 +31,7 @@ class RProgressr(RPackage): license("GPL-3.0-or-later") + version("0.14.0", sha256="9a2899f879a5577f043be99c18d52bfe4d655cc52a96cae834e8a301b36258af") version("0.13.0", sha256="0ffb3dcadde0cc191bad0ff9e05d000aa65e2fc339cfc94ebbb263088df5a4e1") version("0.11.0", sha256="d8668c82348a20cca34bb18c0c94e6083dbb6dbea40615e07e4161aff7366cd9") version("0.10.1", sha256="8f83024b2a6f52996750d45bf6698c2b438fb1062985f1df936ba3af313caed1") diff --git a/var/spack/repos/builtin/packages/r-proj/package.py b/var/spack/repos/builtin/packages/r-proj/package.py index 78463c53d97f0b..34d502b5e2ad8a 100644 --- a/var/spack/repos/builtin/packages/r-proj/package.py +++ b/var/spack/repos/builtin/packages/r-proj/package.py @@ -9,13 +9,29 @@ class RProj(RPackage): """Generic Coordinate System Transformations Using 'PROJ'. - Currently non-operational, a harmless wrapper to allow package 'reproj' to - install and function while relying on the 'proj4' package.""" + A wrapper around the generic coordinate transformation software 'PROJ' + that transforms coordinates from one coordinate reference system ('CRS') + to another. This includes cartographic projections as well as geodetic + transformations. The intention is for this package to be used by + user-packages such as 'reproj', and that the older 'PROJ.4' and version 5 + pathways be provided by the 'proj4' package.""" cran = "PROJ" + version("0.5.0", sha256="fa6316693289a65d53a764b422f15072c34f440375264b822f2ddd2c6ec88c9b") version("0.4.0", sha256="dde90cfeca83864e61a7422e1573d2d55bb0377c32b9a8f550f47b8631121ce7") version("0.1.0", sha256="5186f221335e8092bbcd4d82bd323ee7e752c7c9cf83d3f94e4567e0b407aa6f") depends_on("r@2.10:", type=("build", "run")) depends_on("r@3.0.2:", type=("build", "run"), when="@0.4.0:") + + depends_on("r-lifecycle", type=("build", "run"), when="@0.5.0:") + depends_on("r-wk", type=("build", "run"), when="@0.5.0:") + + depends_on("proj@6.3.1:", type=("build", "run"), when="@0.4.5:") + # pkgconfig for proj requires libtiff-4 and libcurl + depends_on("libtiff@4", type=("build", "run")) + depends_on("curl", type=("build", "run")) + + def setup_build_environment(self, env): + env.prepend_path("LD_LIBRARY_PATH", self.spec["proj"].prefix.lib) diff --git a/var/spack/repos/builtin/packages/r-proj4/package.py b/var/spack/repos/builtin/packages/r-proj4/package.py index d0d6d029850a53..db7522b89d4ec2 100644 --- a/var/spack/repos/builtin/packages/r-proj4/package.py +++ b/var/spack/repos/builtin/packages/r-proj4/package.py @@ -17,6 +17,7 @@ class RProj4(RPackage): license("GPL-2.0-only") + version("1.0-14", sha256="d3d571da92136666dd3658b6006a7d4d4254cdeada5cda21b05b0c0e692a00b6") version("1.0-12", sha256="4aeb8a54d5b459674093c76068b92dbd3ce99a4e5db8829fbae868c2e43776f8") version("1.0-11", sha256="c5f186530267005d53cc2e86849613b254ca4515a8b10310146f712d45a1d11d") version("1.0-10.1", sha256="66857cbe5cba4930b18621070f9a7263ea0d8ddc3e5a035a051a1496e4e1da19") diff --git a/var/spack/repos/builtin/packages/r-projpred/package.py b/var/spack/repos/builtin/packages/r-projpred/package.py index 35c3befa538c65..0446671c767202 100644 --- a/var/spack/repos/builtin/packages/r-projpred/package.py +++ b/var/spack/repos/builtin/packages/r-projpred/package.py @@ -21,29 +21,33 @@ class RProjpred(RPackage): license("GPL-3.0-only OR custom") + version("2.8.0", sha256="b383ddc5eca275737b96e4e3e14256b4f4abc4b29d292b5cebf3828d0921a1f6") version("2.5.0", sha256="b6ec123f5bf573d14cbd5431e3fbdee3215d71d3e263fcbec72bee5930044e39") version("2.2.1", sha256="6825ace07d1e580d5916bcd6bfd163460ae9008926f464e00deb7f2395cc72ad") version("2.1.2", sha256="a88a651e533c118aad0e8c2c905cfcf688d9c419ed195896036b8f6667b5cfb0") version("2.0.2", sha256="af0a9fb53f706090fe81b6381b27b0b6bd3f7ae1e1e44b0ada6f40972b09a55b") depends_on("r@3.5.0:", type=("build", "run")) - depends_on("r-loo@2.0.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@2.7.0:") + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-gtools", type=("build", "run"), when="@2.7.0:") + depends_on("r-ggplot2", type=("build", "run")) + depends_on("r-scales", type=("build", "run"), when="@2.6.0:") depends_on("r-rstantools@2.0.0:", type=("build", "run")) + depends_on("r-loo@2.0.0:", type=("build", "run")) depends_on("r-lme4", type=("build", "run")) depends_on("r-lme4@1.1-28:", type=("build", "run"), when="@2.5.0:") depends_on("r-mvtnorm", type=("build", "run"), when="@2.1.2:") - depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-rcpp", type=("build", "run")) - depends_on("r-abind", type=("build", "run"), when="@2.5.0:") depends_on("r-mgcv", type=("build", "run")) depends_on("r-gamm4", type=("build", "run")) - depends_on("r-mclogit", type=("build", "run"), when="@2.5.0:") - depends_on("r-nnet", type=("build", "run"), when="@2.5.0:") - depends_on("r-ucminf", type=("build", "run"), when="@2.5.0:") - depends_on("r-ordinal", type=("build", "run"), when="@2.5.0:") + depends_on("r-abind", type=("build", "run"), when="@2.5.0:") depends_on("r-mass", type=("build", "run")) + depends_on("r-ordinal", type=("build", "run"), when="@2.5.0:") + depends_on("r-nnet", type=("build", "run"), when="@2.5.0:") + depends_on("r-mclogit", type=("build", "run"), when="@2.5.0:") depends_on("r-rcpparmadillo", type=("build", "run")) + depends_on("r-ucminf", type=("build", "run"), when="@2.5.0") depends_on("r-optimx", type=("build", "run"), when="@:2.0.2") depends_on("r-rngtools@1.2.4:", type=("build", "run"), when="@:2.0.2") depends_on("r-tidyverse", type=("build", "run"), when="@:2.0.2") diff --git a/var/spack/repos/builtin/packages/r-promises/package.py b/var/spack/repos/builtin/packages/r-promises/package.py index 32016c25724495..91cf59cbee48bd 100644 --- a/var/spack/repos/builtin/packages/r-promises/package.py +++ b/var/spack/repos/builtin/packages/r-promises/package.py @@ -19,12 +19,15 @@ class RPromises(RPackage): license("MIT") + version("1.3.0", sha256="f8209df3bab33340c1bc8c0d26caee2890fafb93129ff1423302abae5931fad3") version("1.2.0.1", sha256="8d3a8217909e91f4c2a2eebba5ac8fc902a9ac1a9e9d8a30815c9dc0f162c4b7") version("1.1.1", sha256="3718c6eb2c3362cbe89389e613118f783f9977dbf24757f85026e661199c5800") version("1.0.1", sha256="c2dbc7734adf009377a41e570dfe0d82afb91335c9d0ca1ef464b9bdcca65558") depends_on("r-r6", type=("build", "run")) - depends_on("r-rcpp", type=("build", "run")) + depends_on("r-fastmap@1.1.0:", type=("build", "run"), when="@1.2.1:") depends_on("r-later", type=("build", "run")) - depends_on("r-rlang", type=("build", "run")) depends_on("r-magrittr", type=("build", "run")) + depends_on("r-magrittr@1.5:", type=("build", "run"), when="@1.2.1:") + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rlang", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ps/package.py b/var/spack/repos/builtin/packages/r-ps/package.py index 89612d8233e912..c78023b660a9d8 100644 --- a/var/spack/repos/builtin/packages/r-ps/package.py +++ b/var/spack/repos/builtin/packages/r-ps/package.py @@ -16,6 +16,7 @@ class RPs(RPackage): license("MIT") + version("1.7.7", sha256="46fedcb2b8faa94ea1451e48e6f31a1e4ed3b12f529e645f9efcfca1003d22f2") version("1.7.5", sha256="1abc3ae3c55797b994973f7e43bf5c7bbb4da649a0dcfad36675e196dba4cb4e") version("1.7.2", sha256="9225ebdedb5c1b245bb38b01ce88084c0fc7eafcff6c4fda2e299003ace6b21a") version("1.7.1", sha256="9c458a377d47cc972d3cd0b2a17d0b7ad3cf3b62226410803072089a57a55ef1") diff --git a/var/spack/repos/builtin/packages/r-pscbs/package.py b/var/spack/repos/builtin/packages/r-pscbs/package.py index 1ac75ed63a739c..89a7f6e1faf53e 100644 --- a/var/spack/repos/builtin/packages/r-pscbs/package.py +++ b/var/spack/repos/builtin/packages/r-pscbs/package.py @@ -15,23 +15,30 @@ class RPscbs(RPackage): cran = "PSCBS" + version("0.67.0", sha256="2695d18d197a3bd729cca0940248ddc1880e4f54da95b9ecc5eda002a715cdbe") version("0.66.0", sha256="58805636e55e0fd3f57bd4a0e296a8bb3d57a7bdd0fdd5868a73ddc83d173a93") version("0.65.0", sha256="3365065d5375c599eb024bfff12c5f6b10a6b1a4fe4ba6f200f7e83618dd399a") depends_on("r@3.2.0:", type=("build", "run")) depends_on("r-r-methodss3@1.7.1:", type=("build", "run")) depends_on("r-r-methodss3@1.8.1:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-methodss3@1.8.2:", type=("build", "run"), when="@0.67.0:") depends_on("r-r-oo@1.22.1:", type=("build", "run")) depends_on("r-r-oo@1.24.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-oo@1.25.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-r-utils@2.8.0:", type=("build", "run")) depends_on("r-r-utils@2.11.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-utils@2.12.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-r-cache@0.13.0:", type=("build", "run")) depends_on("r-r-cache@0.15.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-r-cache@0.16.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-matrixstats@0.54.0:", type=("build", "run")) depends_on("r-matrixstats@0.61.0:", type=("build", "run"), when="@0.66.0:") + depends_on("r-matrixstats@0.62.0:", type=("build", "run"), when="@0.67.0:") depends_on("r-aroma-light@2.4.0:", type=("build", "run")) depends_on("r-dnacopy@1.42.0:", type=("build", "run")) depends_on("r-listenv@0.7.0:", type=("build", "run")) depends_on("r-listenv@0.8.0:", type=("build", "run"), when="@0.66.0:") depends_on("r-future@1.12.0:", type=("build", "run")) depends_on("r-future@1.22.1:", type=("build", "run"), when="@0.66.0:") + depends_on("r-future@1.28.0:", type=("build", "run"), when="@0.67.0:") diff --git a/var/spack/repos/builtin/packages/r-pspline/package.py b/var/spack/repos/builtin/packages/r-pspline/package.py index 03e2140fe43033..c77803682c28be 100644 --- a/var/spack/repos/builtin/packages/r-pspline/package.py +++ b/var/spack/repos/builtin/packages/r-pspline/package.py @@ -15,6 +15,7 @@ class RPspline(RPackage): license("custom") + version("1.0-20", sha256="eaa7cd9b870d5d10cf457c435ebcbe698ba0d463e3a996fbe758a4b57b93eb8a") version("1.0-19", sha256="ba55bf193f1df9785a0e13b7ef727d5fd2415b318cd6a26b48a2db490c4dfe40") version("1.0-18", sha256="f71cf293bd5462e510ac5ad16c4a96eda18891a0bfa6447dd881c65845e19ac7") diff --git a/var/spack/repos/builtin/packages/r-psych/package.py b/var/spack/repos/builtin/packages/r-psych/package.py index c474110e1e4fbe..75f9ce050abf80 100644 --- a/var/spack/repos/builtin/packages/r-psych/package.py +++ b/var/spack/repos/builtin/packages/r-psych/package.py @@ -29,6 +29,7 @@ class RPsych(RPackage): license("GPL-2.0-or-later") + version("2.4.6.26", sha256="2d191a95e0107a7f402a17729916099dff201d20c4435f8bf43e6e8a2fbbd2be") version("2.3.3", sha256="94a9f3c39f8243573752709b89eb8068e11dbe809f86ecf0225fb429556efb6f") version("2.2.9", sha256="4cd518bff387fef95067696b0a0b323310e6f4a063c3d242f2a50bcb17675571") version("2.2.5", sha256="dcc3f9b30ed44dfd1de0366295a308e0b52959eb7ac9cb3bc3f32dc5b15fc321") @@ -38,8 +39,9 @@ class RPsych(RPackage): version("1.8.10", sha256="e8901ddab14729bfccbd82a8824fbb6523c10c2cd8fb7199b1ca56a7ffcb6e58") version("1.7.8", sha256="f328ea602e22b0e7e5f310a8d19f305d8e0a3a86040cdfb64863b68b56d55135") - depends_on("r-mnormt", type=("build", "run")) + depends_on("r-gparotation", type=("build", "run"), when="@2.3.6:") depends_on("r-lattice", type=("build", "run")) + depends_on("r-mnormt", type=("build", "run")) depends_on("r-nlme", type=("build", "run")) depends_on("r-foreign", type=("build", "run"), when="@:1.8.12") diff --git a/var/spack/repos/builtin/packages/r-purrr/package.py b/var/spack/repos/builtin/packages/r-purrr/package.py index b0b1acc7091c01..002bc75ebdd2c1 100644 --- a/var/spack/repos/builtin/packages/r-purrr/package.py +++ b/var/spack/repos/builtin/packages/r-purrr/package.py @@ -15,6 +15,7 @@ class RPurrr(RPackage): license("MIT") + version("1.0.2", sha256="2c1bc6bb88433dff0892b41136f2f5c23573b335ff35a4775c72aa57b48bbb63") version("1.0.1", sha256="0a7911be3539355a4c40d136f2602befcaaad5a3f7222078500bfb969a6f2ba2") version("0.3.5", sha256="a2386cd7e78a043cb9c14703023fff15ab1c879bf648816879d2c0c4a554fcef") version("0.3.4", sha256="23ebc93bc9aed9e7575e8eb9683ff4acc0270ef7d6436cc2ef4236a9734840b2") @@ -25,12 +26,16 @@ class RPurrr(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.2:", type=("build", "run"), when="@0.3.3:") depends_on("r@3.4.0:", type=("build", "run"), when="@1.0.1:") + depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.2:") depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@1.0.1:") + depends_on("r-vctrs@0.6.3:", type=("build", "run"), when="@1.0.2:") depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@1.0.1:") depends_on("r-cli@3.4.0:", type=("build", "run"), when="@1.0.1:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@1.0.2:") depends_on("r-magrittr@1.5:", type=("build", "run")) depends_on("r-magrittr@1.5.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-rlang@0.3.1:", type=("build", "run")) depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@1.0.1:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@1.0.2:") depends_on("r-tibble", type=("build", "run"), when="@:0.2.9") diff --git a/var/spack/repos/builtin/packages/r-qs/package.py b/var/spack/repos/builtin/packages/r-qs/package.py index a4c64566a1692d..fc552f62b09f46 100644 --- a/var/spack/repos/builtin/packages/r-qs/package.py +++ b/var/spack/repos/builtin/packages/r-qs/package.py @@ -18,6 +18,7 @@ class RQs(RPackage): license("GPL-3.0-only") + version("0.26.3", sha256="8801a41f6e5161a55193dc9a75fcee8da1b0e02eebd7653ec05326d594321ee3") version("0.25.5", sha256="3f87388708a0fdfb0e68caade75ed771fd395cb4f649973459bc97f41d42064c") version("0.25.4", sha256="92c49206a9c1c66dbd95f12efc3a57acb728e1f8387b549c437519fb2b98a533") version("0.25.3", sha256="51adf6a112c19f78ceeefa55acf800c7e6bf2664e7d9cea9d932abb24f22be6b") @@ -26,6 +27,7 @@ class RQs(RPackage): depends_on("r@3.5.0:", type=("build", "run")) depends_on("r@3.0.2:", type=("build", "run"), when="@0.25.2:") + depends_on("r-bh", type=("build", "run"), when="@0.26.0:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rapiserialize", type=("build", "run")) depends_on("r-rapiserialize@0.1.1:", type=("build", "run"), when="@0.25.4:") diff --git a/var/spack/repos/builtin/packages/r-qtl/package.py b/var/spack/repos/builtin/packages/r-qtl/package.py index 9497f5aa513466..ba93459f123151 100644 --- a/var/spack/repos/builtin/packages/r-qtl/package.py +++ b/var/spack/repos/builtin/packages/r-qtl/package.py @@ -17,6 +17,7 @@ class RQtl(RPackage): license("GPL-3.0-only") + version("1.66", sha256="d46a7d49f2d0875c0c1cba77c993f995e7cac4db5796dfb1c62d9fa4eb60d681") version("1.60", sha256="8e9e5dfe2c6a76d4f69fb27add93ed0859ed3eaa23347310c2b9e3f07359d8ad") version("1.58", sha256="6eca5ac177ae62304d63c224f161b0f3ac9327ec1a03da5d7df2d5ddf4b09d97") version("1.52", sha256="320ac6172f2911ee772472becd68ff49a357c99fe7454335e4a19090d5788960") diff --git a/var/spack/repos/builtin/packages/r-quantmod/package.py b/var/spack/repos/builtin/packages/r-quantmod/package.py index 2368def60f5c28..1771e645f4ace3 100644 --- a/var/spack/repos/builtin/packages/r-quantmod/package.py +++ b/var/spack/repos/builtin/packages/r-quantmod/package.py @@ -16,6 +16,7 @@ class RQuantmod(RPackage): license("GPL-3.0-only") + version("0.4.26", sha256="396c5d3241f77911d9f7738a60a9d728ed25b3dbce2fd92f5b11f9fcbcb8bb98") version("0.4.22", sha256="f29496f1ca9a9faf91aba70ac50bfe79303197ca8f1e369c96300005b5e6765e") version("0.4.20", sha256="f757df41595d885f7927e18f4835bc233d78d2d3ae48fd11c8874d4338c48e94") version("0.4.18", sha256="aa40448e93a1facf399213ac691784007731e869ad243fe762381ab099cd6c35") diff --git a/var/spack/repos/builtin/packages/r-quantreg/package.py b/var/spack/repos/builtin/packages/r-quantreg/package.py index 9bff357602bb1e..939fa66209312b 100644 --- a/var/spack/repos/builtin/packages/r-quantreg/package.py +++ b/var/spack/repos/builtin/packages/r-quantreg/package.py @@ -21,6 +21,7 @@ class RQuantreg(RPackage): license("GPL-2.0-or-later") + version("5.98", sha256="a98cb259d8cf563f66a25ae8858794e574dd40de6206816ad61b1ffeb9686a61") version("5.95", sha256="4b05a81eceebbd927372cefdc4912dfa70b6dfcd96528489f78e125eb32a96cc") version("5.94", sha256="52d585ccb972ed7726b7d083f5635d3e42915847398e00fd6e0f69a5fe1b17c1") version("5.93", sha256="d4a94984a500bf4c92dec21013441f001a4aa0541c4c651384e257a4b4e9e539") diff --git a/var/spack/repos/builtin/packages/r-quickjsr/package.py b/var/spack/repos/builtin/packages/r-quickjsr/package.py new file mode 100644 index 00000000000000..10b191fc672024 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-quickjsr/package.py @@ -0,0 +1,19 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RQuickjsr(RPackage): + """An 'R' interface to the 'QuickJS' portable 'JavaScript' engine. + The engine and all 'R' to 'JavaScript' interoperability is bundled + within the package, requiring no dependencies beyond a 'C' compiler.""" + + homepage = "https://bellard.org/quickjs/" + cran = "QuickJSR" + + license("MIT", checked_by="wdconinc") + + version("1.3.1", sha256="10559d6e84a838ec97acdbc6028a59e2121811d4a20e83c95cdb8fb4ce208fd1") diff --git a/var/spack/repos/builtin/packages/r-quickplot/package.py b/var/spack/repos/builtin/packages/r-quickplot/package.py index 7cb0c274698a23..c47c367c2a9f65 100644 --- a/var/spack/repos/builtin/packages/r-quickplot/package.py +++ b/var/spack/repos/builtin/packages/r-quickplot/package.py @@ -18,19 +18,23 @@ class RQuickplot(RPackage): maintainers("dorton21") + version("1.0.2", sha256="78b19e03f9925ea3a5b47c12fef58a154dc0d3598dbdda3fe4e47c6636ab4808") version("0.1.8", sha256="5927186ebbd86d2282c59dd28c4af6977ae5f9bc5766de8fce34b94bbfe33be7") version("0.1.6", sha256="48690a77ae961ed1032130621ef06b2eaf86ee592bf1057471a8c6d6a98ace55") depends_on("r@3.3.0:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@0.1.8:") - depends_on("r-backports", type=("build", "run")) + depends_on("r@4.1:", type=("build", "run"), when="@1.0.1:") depends_on("r-data-table@1.10.4:", type=("build", "run")) depends_on("r-fpcompare", type=("build", "run")) - depends_on("r-ggplot2", type=("build", "run")) - depends_on("r-gridbase", type=("build", "run")) - depends_on("r-igraph", type=("build", "run")) - depends_on("r-raster", type=("build", "run")) - depends_on("r-rcolorbrewer", type=("build", "run")) - depends_on("r-rgdal", type=("build", "run")) - depends_on("r-rgeos", type=("build", "run")) - depends_on("r-sp", type=("build", "run")) + depends_on("r-terra", type=("build", "run"), when="@1.0.1:") + + depends_on("r-backports", type=("build", "run"), when="@:1.0.1") + depends_on("r-ggplot2", type=("build", "run"), when="@:1.0.1") + depends_on("r-gridbase", type=("build", "run"), when="@:1.0.1") + depends_on("r-igraph", type=("build", "run"), when="@:1.0.1") + depends_on("r-raster", type=("build", "run"), when="@:1.0.1") + depends_on("r-rcolorbrewer", type=("build", "run"), when="@:1.0.1") + depends_on("r-rgdal", type=("build", "run"), when="@:1.0.1") + depends_on("r-rgeos", type=("build", "run"), when="@:1.0.1") + depends_on("r-sp", type=("build", "run"), when="@:1.0.1") diff --git a/var/spack/repos/builtin/packages/r-r-oo/package.py b/var/spack/repos/builtin/packages/r-r-oo/package.py index f15782b3bc3523..28ffc400bffa67 100644 --- a/var/spack/repos/builtin/packages/r-r-oo/package.py +++ b/var/spack/repos/builtin/packages/r-r-oo/package.py @@ -18,6 +18,7 @@ class RROo(RPackage): cran = "R.oo" + version("1.26.0", sha256="f7602b388c2216fbb4d1a31d4040ed92b40dc83d3e3746db7011637db4d44365") version("1.25.0", sha256="b8b19061774918ee7d9d4330c16c0ea505f7cd02d01343df1e8b2e4fb847beef") version("1.24.0", sha256="37a1dab8dd668ceba69a1ba36c0c60e9809e29b74bd56d1e8ed519e19c8e3bb6") version("1.23.0", sha256="f5124ce3dbb0a62e8ef1bfce2de2d1dc2f776e8c48fd8cac358f7f5feb592ea1") @@ -28,3 +29,4 @@ class RROo(RPackage): depends_on("r-r-methodss3@1.7.1:", type=("build", "run")) depends_on("r-r-methodss3@1.8.0:", type=("build", "run"), when="@1.24.0:") depends_on("r-r-methodss3@1.8.1:", type=("build", "run"), when="@1.25.0:") + depends_on("r-r-methodss3@1.8.2:", type=("build", "run"), when="@1.26.0:") diff --git a/var/spack/repos/builtin/packages/r-r-utils/package.py b/var/spack/repos/builtin/packages/r-r-utils/package.py index e673eb37572acc..91132f04dbae20 100644 --- a/var/spack/repos/builtin/packages/r-r-utils/package.py +++ b/var/spack/repos/builtin/packages/r-r-utils/package.py @@ -13,6 +13,7 @@ class RRUtils(RPackage): cran = "R.utils" + version("2.12.3", sha256="74d6e77a95a23381a490fea54be01b653d4b938a2dc75e749a694ab48302c40c") version("2.12.2", sha256="fe3cf1aa8641540634e96990294d0202d4d94ec79ce73aaf78e4eda30fcb8836") version("2.12.1", sha256="3eb82903bee99f9684cd9dbd4f92d682fdb82feb7ff32a70aa54550e9e09ad62") version("2.12.0", sha256="74de455220ea1e658ac503f5763a6be687d982eb61187779f4019a16db856503") diff --git a/var/spack/repos/builtin/packages/r-ragg/package.py b/var/spack/repos/builtin/packages/r-ragg/package.py index 0d0abcb60c0d6e..3bff5fdae80896 100644 --- a/var/spack/repos/builtin/packages/r-ragg/package.py +++ b/var/spack/repos/builtin/packages/r-ragg/package.py @@ -18,6 +18,7 @@ class RRagg(RPackage): license("MIT") + version("1.3.2", sha256="8037a45209fdd50acf101208af8e832b840a11ad4201cf7fb480de432e6b6931") version("1.2.5", sha256="936f4d75e0e01cdeefb9f57d121cdd7812d0de5a9e1a3a8315f92ce1c84da8f9") version("1.2.4", sha256="c547e5636a2eefaa0021a0d50fad1e813c2ce976ec0c9c3f796d38a110680dcd") version("1.2.3", sha256="976da0007ef0d4dbadda4734727b539671b65c1eff4ff392d734f4e2c846f2b2") @@ -28,3 +29,9 @@ class RRagg(RPackage): depends_on("libpng") depends_on("libtiff") depends_on("jpeg") + + def flag_handler(self, name, flags): + # Freetype 2.13.3 broke the public interface by switching char/unsigned char: + if name == "cxxflags" and self.spec["freetype"].version >= Version("2.13.3"): + flags.append("-fpermissive") + return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/r-rainbow/package.py b/var/spack/repos/builtin/packages/r-rainbow/package.py index c5c88b9ca79239..9cdd8644d2331a 100644 --- a/var/spack/repos/builtin/packages/r-rainbow/package.py +++ b/var/spack/repos/builtin/packages/r-rainbow/package.py @@ -16,6 +16,7 @@ class RRainbow(RPackage): license("GPL-3.0-only") + version("3.8", sha256="eca456288b70fe4b6c74a587d8624d3b36d67f8f9ffc13320eefb17a952d823d") version("3.7", sha256="159dd90555eee237397f042d811f773aaee779f5036c4e0669a52c36e28d8db2") version("3.6", sha256="63d1246f88a498f3db0321b46a552163631b288a25b24400935db41326636e87") diff --git a/var/spack/repos/builtin/packages/r-ranger/package.py b/var/spack/repos/builtin/packages/r-ranger/package.py index a952be3532d2af..8672102bbfb12d 100644 --- a/var/spack/repos/builtin/packages/r-ranger/package.py +++ b/var/spack/repos/builtin/packages/r-ranger/package.py @@ -20,6 +20,7 @@ class RRanger(RPackage): license("GPL-3.0-only") + version("0.16.0", sha256="0395f93afdb807a7882c1fa8f183a26a871c5168ea0903566951298ef1138589") version("0.15.1", sha256="4d65d9ee7c5f2704a0e303a27222c02aa53e49f3c28dc0b4451371e37ada2b2e") version("0.14.1", sha256="5d99401d555da1cfb11c70e59d1bb545ce48720073a06a2a32eb396f622dee1b") version("0.13.1", sha256="60934f0accc21edeefddbb4ddebfdd7cd10a3d3e90b31aa2e6e4b7f50d632d0a") diff --git a/var/spack/repos/builtin/packages/r-rapiserialize/package.py b/var/spack/repos/builtin/packages/r-rapiserialize/package.py index 8b4e48ed9b569c..d25c382dc6fd2a 100644 --- a/var/spack/repos/builtin/packages/r-rapiserialize/package.py +++ b/var/spack/repos/builtin/packages/r-rapiserialize/package.py @@ -22,5 +22,6 @@ class RRapiserialize(RPackage): maintainers("dorton21") + version("0.1.3", sha256="9f413759eabb2acce2b9a363687ca365e1bbedaf9851d23a2ec3683a3d46f42b") version("0.1.2", sha256="9cc0bbb918eeadb394339c64b15324e8123fbb0061692f40102b111417a2600a") version("0.1.0", sha256="324d42c655c27b4647d194bfcd7c675da95c67ea3a74ce99853502022792a23e") diff --git a/var/spack/repos/builtin/packages/r-raster/package.py b/var/spack/repos/builtin/packages/r-raster/package.py index 1059e36a53431b..d57d33f6326b07 100644 --- a/var/spack/repos/builtin/packages/r-raster/package.py +++ b/var/spack/repos/builtin/packages/r-raster/package.py @@ -18,6 +18,7 @@ class RRaster(RPackage): license("GPL-3.0-or-later") + version("3.6-26", sha256="c65777225a46ada699e70098f54c60cf191d15e454fac9440aca439a4dbd5592") version("3.6-20", sha256="7e5be49f4e37a2c14a3b87661b252956643b959146cbdb08e983660c1d59a813") version("3.6-3", sha256="9f06e0f7c36258790a97421b3a26d98c9b6a2cb702f941e58ab0b18f21b0c3c6") version("3.5-15", sha256="29c7d3c5d34284f8b5a2ddc9989fbcf092ce209d5eb5310ebc772b5ebdfdd685") @@ -37,3 +38,4 @@ class RRaster(RPackage): depends_on("r-terra@1.5-12:", type=("build", "run"), when="@3.5-15:") depends_on("r-terra@1.6-16:", type=("build", "run"), when="@3.6-3:") depends_on("r-terra@1.6-41:", type=("build", "run"), when="@3.6-20:") + depends_on("r-terra@1.7-29:", type=("build", "run"), when="@3.6-23:") diff --git a/var/spack/repos/builtin/packages/r-rbibutils/package.py b/var/spack/repos/builtin/packages/r-rbibutils/package.py index f4c84e16ddf475..382b8aced4e27a 100644 --- a/var/spack/repos/builtin/packages/r-rbibutils/package.py +++ b/var/spack/repos/builtin/packages/r-rbibutils/package.py @@ -18,6 +18,7 @@ class RRbibutils(RPackage): license("GPL-2.0-only") + version("2.2.16", sha256="9c7c0fba47f63b1749005311c7174b40e72d95c863a67b736a84b8ff375a2aaf") version("2.2.13", sha256="ac235c60bf191ad1830b93045af1b2fe50a6978f6f63cecc4c514a8ba339efc2") version("2.2.9", sha256="b22c07ff916ec338e5a8c6e7e4302f06c9b88d64ee6a59ee4bf5d83a3d5eff86") version("2.2.8", sha256="f1aecdeeba99042d34de19234238c5bbdc18a26f271f6adf9c9b7e349d50d152") diff --git a/var/spack/repos/builtin/packages/r-rcpp/package.py b/var/spack/repos/builtin/packages/r-rcpp/package.py index f6e52df3a1cf6d..7f455481300ea2 100644 --- a/var/spack/repos/builtin/packages/r-rcpp/package.py +++ b/var/spack/repos/builtin/packages/r-rcpp/package.py @@ -23,6 +23,7 @@ class RRcpp(RPackage): cran = "Rcpp" + version("1.0.13", sha256="21fec650c113e57935fd86c7d1be190811f1ae036c1ee203bfbbf3ad5cdb22ce") version("1.0.12", sha256="0c7359cc43beee02761aa3df2baccede1182d29d28c9cd49964b609305062bd0") version("1.0.11", sha256="df757c3068599c6c05367900bcad93547ba3422d59802dbaca20fd74d4d2fa5f") version("1.0.10", sha256="1e65e24a9981251ab5fc4f9fd65fe4eab4ba0255be3400a8c5abe20b62b5d546") diff --git a/var/spack/repos/builtin/packages/r-rcppannoy/package.py b/var/spack/repos/builtin/packages/r-rcppannoy/package.py index 3277a206c08a3b..efe0cbb9784c29 100644 --- a/var/spack/repos/builtin/packages/r-rcppannoy/package.py +++ b/var/spack/repos/builtin/packages/r-rcppannoy/package.py @@ -20,6 +20,7 @@ class RRcppannoy(RPackage): cran = "RcppAnnoy" + version("0.0.22", sha256="9f2121d787c4d3e7beccdd65f5d1de81f31c99d57d5d61ca3cc5af7169dd8f65") version("0.0.20", sha256="dcc6c7e091154d0a5698472e0fc7ed77976941c7376d21e019c90c3efaeacf85") version("0.0.19", sha256="89b209900516f3096b53c90937081fb8965c605c867aa465f1b3b68092b7688a") version("0.0.18", sha256="e4e7ddf071109b47b4fdf285db6d2155618ed73da829c30d8e64fc778e63c858") diff --git a/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py b/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py index fd7f543b708131..16bd7ee5a93fa0 100644 --- a/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py +++ b/var/spack/repos/builtin/packages/r-rcpparmadillo/package.py @@ -23,6 +23,7 @@ class RRcpparmadillo(RPackage): cran = "RcppArmadillo" + version("14.0.0-1", sha256="80c4d4fadc3ed92712affc50279de4c5f2e1f7ee777ad1f1b3f9f3e94a64ba90") version( "0.12.4.0.0", sha256="f6db54c465abc0a570a0da6f737d9fdf2187287fb235ce487b1903b5177482cb" ) @@ -59,3 +60,4 @@ class RRcpparmadillo(RPackage): depends_on("r@3.3.0:", type=("build", "run"), when="@0.8.500.0:") depends_on("r-rcpp@0.11.0:", type=("build", "run")) + depends_on("r-rcpp@1.0.8:", type=("build", "run"), when="@0.12.8.4.0:") diff --git a/var/spack/repos/builtin/packages/r-rcppblaze/package.py b/var/spack/repos/builtin/packages/r-rcppblaze/package.py index 817b604c3a8b34..274f2fe7dc0004 100644 --- a/var/spack/repos/builtin/packages/r-rcppblaze/package.py +++ b/var/spack/repos/builtin/packages/r-rcppblaze/package.py @@ -37,9 +37,14 @@ class RRcppblaze(RPackage): license("BSD-3-Clause") + version("1.0.1", sha256="2d152294dc231e4ab097a377ddeda6f2bbb608970c82563a893c77de08916227") version("0.2.2", sha256="67550ed8aea12a219047af61b41e5b9f991608a21ce9a8fbf7ac55da0f7c2742") depends_on("r@3.0.2:", type=("build", "run")) + depends_on("r@4.2.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-rcpp@0.11.0:", type=("build", "run")) + depends_on("r-rcpp@1.0.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-matrix@1.1-0:", type=("build", "run")) - depends_on("r-bh@1.54.0-2:", type=("build", "run")) + depends_on("r-matrix@1.5-0:", type=("build", "run"), when="@1.0.0:") + + depends_on("r-bh@1.54.0-2:", type=("build", "run"), when="@:0.2.2") diff --git a/var/spack/repos/builtin/packages/r-rcppcnpy/package.py b/var/spack/repos/builtin/packages/r-rcppcnpy/package.py index 550a3ba3c2134f..475e7862c39520 100644 --- a/var/spack/repos/builtin/packages/r-rcppcnpy/package.py +++ b/var/spack/repos/builtin/packages/r-rcppcnpy/package.py @@ -20,6 +20,7 @@ class RRcppcnpy(RPackage): license("BitTorrent-1.0") + version("0.2.12", sha256="856dbc857b2d425c80d9a1628e45743234fee2e68575aa9e2d29a6efae60c39a") version("0.2.11", sha256="5dbb36f2526c276fd79b8e08a30503dc401cdf54d8c40f61af758c9ee1192f55") version("0.2.10", sha256="77d6fbc86520a08da40d44c0b82767099f8f719ca95870d91efff1a9cab1ab9c") version("0.2.9", sha256="733f004ad1a8b0e5aafbf547c4349d2df3118afd57f1ff99f20e39135c6edb30") diff --git a/var/spack/repos/builtin/packages/r-rcppeigen/package.py b/var/spack/repos/builtin/packages/r-rcppeigen/package.py index 2b0899a537b0d4..c58708e5b4ee93 100644 --- a/var/spack/repos/builtin/packages/r-rcppeigen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppeigen/package.py @@ -27,6 +27,7 @@ class RRcppeigen(RPackage): license("MPL-2.0") + version("0.3.4.0.1", sha256="25ed48f148b50aaadd92752d73e3eefe00ab4ecd4ae5662ae91a9ff3f72a4e26") version("0.3.3.9.3", sha256="5873a47fd6587d916f86119ab140c6736abf80ac45d06ff1c9d198708e7d1c76") version("0.3.3.9.2", sha256="2547e794d5a6fb8d9fbadf19e64afa0bcf413cc69ecf3f428995fa5a0fced493") version("0.3.3.9.1", sha256="8a0486249b778a4275a1168fc89fc7fc49c2bb031cb14b50a50089acae7fe962") @@ -36,6 +37,7 @@ class RRcppeigen(RPackage): version("0.3.2.9.0", sha256="25affba9065e3c12d67b1934d1ce97a928a4011a7738f7b90f0e9830409ec93b") version("0.3.2.8.1", sha256="ceccb8785531c5c23f9232b594e5372c214a114a08ec759115e946badd08d681") - depends_on("r-matrix@1.1-0:", type=("build", "run")) depends_on("r-rcpp@0.11.0:", type=("build", "run")) depends_on("r@3.6.0:", type=("build", "run"), when="@0.3.3.9.3:") + + depends_on("r-matrix@1.1-0:", type=("build", "run"), when="@:0.3.3.9.3") diff --git a/var/spack/repos/builtin/packages/r-rcppensmallen/package.py b/var/spack/repos/builtin/packages/r-rcppensmallen/package.py index a835b67d9a2372..32837f6befa080 100644 --- a/var/spack/repos/builtin/packages/r-rcppensmallen/package.py +++ b/var/spack/repos/builtin/packages/r-rcppensmallen/package.py @@ -11,10 +11,14 @@ class RRcppensmallen(RPackage): cran = "RcppEnsmallen" + version( + "0.2.21.1.1", sha256="87396e259666c8797a00c4255d912da58c7880313a8c4e7d48c6384eb6161956" + ) version( "0.2.19.0.1", sha256="b4a9bde4dde309a52a47b56790389ecab14fe64066098d2a38b1b588ba3d8631" ) depends_on("r@3.3.0:", type=("build", "run")) + depends_on("r@4.0.0:", type=("build", "run"), when="@0.2.20.0.1:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rcpparmadillo@0.9.800.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rcpphnsw/package.py b/var/spack/repos/builtin/packages/r-rcpphnsw/package.py index 0400df4dc15637..15af171e213a0c 100644 --- a/var/spack/repos/builtin/packages/r-rcpphnsw/package.py +++ b/var/spack/repos/builtin/packages/r-rcpphnsw/package.py @@ -17,6 +17,7 @@ class RRcpphnsw(RPackage): cran = "RcppHNSW" + version("0.6.0", sha256="a5a6ed00a84143aa62aa67df66fcccae657d5db0a1f9bb4b955a8e94c2ff580f") version("0.4.1", sha256="4f0082154f77dcb7756d41cdbfe0f58316431b9027081321a27942f319097c74") version("0.3.0", sha256="a0eb4eea65e28ba31e8306a1856f7e617a192bd448b148f88abe99181cbde007") version("0.1.0", sha256="75a54c30953845dec685764c7b3b4cd7315197c91aef4ab3b4eb0a6293010a95") diff --git a/var/spack/repos/builtin/packages/r-rcppparallel/package.py b/var/spack/repos/builtin/packages/r-rcppparallel/package.py index c127625cc326ed..86f026cdaf4642 100644 --- a/var/spack/repos/builtin/packages/r-rcppparallel/package.py +++ b/var/spack/repos/builtin/packages/r-rcppparallel/package.py @@ -16,6 +16,7 @@ class RRcppparallel(RPackage): cran = "RcppParallel" + version("5.1.9", sha256="fd0861f3f0f7be4e0ef29c021e75beb351ae2eb18ce5d79e21f2725da4da114f") version("5.1.7", sha256="f9c30eb9ce1abffc590825d513d6d28dcbe970e36032dd7521febf04e905b29c") version("5.1.5", sha256="6396322b3b6d6f7019aac808ceb74707bc5c4ed01677fab408372c2a5508c2ea") version("5.0.2", sha256="8ca200908c6365aafb2063be1789f0894969adc03c0f523c6cc45434b8236f81") diff --git a/var/spack/repos/builtin/packages/r-rcppprogress/package.py b/var/spack/repos/builtin/packages/r-rcppprogress/package.py index 9693b278bcf7c6..2c177e8a682b9a 100644 --- a/var/spack/repos/builtin/packages/r-rcppprogress/package.py +++ b/var/spack/repos/builtin/packages/r-rcppprogress/package.py @@ -25,4 +25,4 @@ class RRcppprogress(RPackage): depends_on("cxx", type="build") # generated - depends_on("r-rcpp@0.9.4:", type=("build", "run"), when="@:0.4") + depends_on("r-rcpp@0.9.4:", type=("build", "run"), when="@:0.4.0") diff --git a/var/spack/repos/builtin/packages/r-rcpproll/package.py b/var/spack/repos/builtin/packages/r-rcpproll/package.py index a963f612903449..d9fa889e2e03d2 100644 --- a/var/spack/repos/builtin/packages/r-rcpproll/package.py +++ b/var/spack/repos/builtin/packages/r-rcpproll/package.py @@ -16,6 +16,7 @@ class RRcpproll(RPackage): cran = "RcppRoll" + version("0.3.1", sha256="d2f5d978b6feb8510ec1a1a50ba0e8bf9002bb77bfad7d120f5b30b8f56036df") version("0.3.0", sha256="cbff2096443a8a38a6f1dabf8c90b9e14a43d2196b412b5bfe5390393f743f6b") depends_on("r@2.15.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rcppziggurat/package.py b/var/spack/repos/builtin/packages/r-rcppziggurat/package.py index e261a2745cccb3..9b1f89a11d0821 100644 --- a/var/spack/repos/builtin/packages/r-rcppziggurat/package.py +++ b/var/spack/repos/builtin/packages/r-rcppziggurat/package.py @@ -23,6 +23,7 @@ class RRcppziggurat(RPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated + depends_on("r@3.0.0:", type=("build", "run"), when="@0.1.6:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rcppgsl", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rcurl/package.py b/var/spack/repos/builtin/packages/r-rcurl/package.py index 187bc3809849a5..c96541652a5fc4 100644 --- a/var/spack/repos/builtin/packages/r-rcurl/package.py +++ b/var/spack/repos/builtin/packages/r-rcurl/package.py @@ -21,6 +21,7 @@ class RRcurl(RPackage): cran = "RCurl" + version("1.98-1.16", sha256="1a8dc40e10593617348071c6265cc7fac22e26271564206b308a3badfc6c0da7") version("1.98-1.12", sha256="1a83fef04e9573b402171a6e4a4b27857a3d045eec8970f8f7233850bba626b2") version("1.98-1.9", sha256="f28d4871675ec3d2b45fb5d36f7647f546f81121510954c3ad24fdec1643cec5") version("1.98-1.6", sha256="6cb56864ac043195b658bbdb345518d561507d84ccd60362866e970c2f71d1a2") diff --git a/var/spack/repos/builtin/packages/r-rdpack/package.py b/var/spack/repos/builtin/packages/r-rdpack/package.py index cb3ecb5a5f273f..18d017edcd68e8 100644 --- a/var/spack/repos/builtin/packages/r-rdpack/package.py +++ b/var/spack/repos/builtin/packages/r-rdpack/package.py @@ -19,6 +19,7 @@ class RRdpack(RPackage): cran = "Rdpack" + version("2.6.1", sha256="39626397c4ab1706bfdc53433dbaa0a6cb691dcba68173945b5a9eb041acf945") version("2.4", sha256="7652add12b30fcba1f3a12493a089a4166079e78c47b95802a98595a3ff53581") version("2.3", sha256="c45e1ab8352b92ce03f26ece1f4db3716959fca2af9e826d5bd3c76b2151f7c5") version("2.1.3", sha256="8381a8866b9acf5acb2c80069684339c3921f1b45fa202719e8f6852fb4d55b8") diff --git a/var/spack/repos/builtin/packages/r-readr/package.py b/var/spack/repos/builtin/packages/r-readr/package.py index 2621ce060f23ff..c85022427a80e2 100644 --- a/var/spack/repos/builtin/packages/r-readr/package.py +++ b/var/spack/repos/builtin/packages/r-readr/package.py @@ -18,6 +18,7 @@ class RReadr(RPackage): license("MIT") + version("2.1.5", sha256="0fa65a5fe0a46cffe221b7696b52adb82dd4d7a692a895484e438e439594e10a") version("2.1.4", sha256="98144fa48c4fa61ef8c73ede8f87a2d2c5c44e9502b7875b266eb79984fbeb0d") version("2.1.3", sha256="d70dd55e80e87cf1387811fcdc3da92987a892ee75dae02f77ff074142618263") version("2.1.2", sha256="94afd03a1fa4abcf2985ec903bbf5995d7c590e1a50512ed80d081ef4fe10c1b") @@ -31,6 +32,7 @@ class RReadr(RPackage): depends_on("r@3.1:", type=("build", "run"), when="@1.3.0:") depends_on("r@3.4:", type=("build", "run"), when="@2.1.3:") depends_on("r@3.5:", type=("build", "run"), when="@2.1.4:") + depends_on("r@3.6:", type=("build", "run"), when="@2.1.5:") depends_on("r-cli", type=("build", "run"), when="@1.4.0:") depends_on("r-cli@3.0.0:", type=("build", "run"), when="@2.1.2:") depends_on("r-cli@3.2.0:", type=("build", "run"), when="@2.1.3:") diff --git a/var/spack/repos/builtin/packages/r-readxl/package.py b/var/spack/repos/builtin/packages/r-readxl/package.py index 8867658ab7031a..5060121560c790 100644 --- a/var/spack/repos/builtin/packages/r-readxl/package.py +++ b/var/spack/repos/builtin/packages/r-readxl/package.py @@ -18,6 +18,7 @@ class RReadxl(RPackage): license("MIT") + version("1.4.3", sha256="7efebbcdefeb8523633db62b3eeb6ea2e4e81e3d010d8b2adb134011c09a5948") version("1.4.2", sha256="387304e2c5be0dca4861ec0232f0d92cc1882b660ca917f8f2a8a4ae858aba11") version("1.4.1", sha256="f6bebb7f940fb21baacd60345b7075c77eb1d026466c55e6a36148de680da1fa") version("1.4.0", sha256="ab9239c249f79b649f7665a612b3dbf4b774ab633115e6dee41091a8cb2491f7") @@ -28,6 +29,7 @@ class RReadxl(RPackage): depends_on("r@3.4:", type=("build", "run"), when="@1.4.0:") depends_on("r@3.5:", type=("build", "run"), when="@1.4.2:") + depends_on("r@3.6:", type=("build", "run"), when="@1.4.3:") depends_on("r-cellranger", type=("build", "run")) depends_on("r-tibble@1.3.1:", type=("build", "run")) depends_on("r-tibble@2.0.1:", type=("build", "run"), when="@1.4.0:") diff --git a/var/spack/repos/builtin/packages/r-recipes/package.py b/var/spack/repos/builtin/packages/r-recipes/package.py index 499c560a274af3..b80809a2f5fde8 100644 --- a/var/spack/repos/builtin/packages/r-recipes/package.py +++ b/var/spack/repos/builtin/packages/r-recipes/package.py @@ -19,6 +19,7 @@ class RRecipes(RPackage): license("MIT") + version("1.1.0", sha256="c5dc8876bc680272812bbb4be39a29464c42a7b773f8cc6d07ac4145f830206d") version("1.0.6", sha256="105e97127cdd6aaeb9fb3348e51a9c46e21fb8bcb734cb3bbd6dbdf2b6b2fc8f") version("1.0.2", sha256="1a7b5a9a2946fa34599935b6d93101ec559d8a901d49cc691972c75df8d5670e") version("1.0.1", sha256="9e3ae212413409bf41ec7d1a311586e12c0ca79943cef436707d041c57125bc9") @@ -29,11 +30,11 @@ class RRecipes(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.0.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.1.0:") depends_on("r-dplyr", type=("build", "run")) depends_on("r-dplyr@1.1.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-cli", type=("build", "run"), when="@1.0.1:") depends_on("r-clock@0.6.1:", type=("build", "run"), when="@1.0.6:") - depends_on("r-ellipsis", type=("build", "run"), when="@0.1.17:") depends_on("r-generics", type=("build", "run")) depends_on("r-generics@0.1.0:", type=("build", "run"), when="@0.1.15:") depends_on("r-generics@0.1.0.9000:", type=("build", "run"), when="@0.2.0:") @@ -43,6 +44,7 @@ class RRecipes(RPackage): depends_on("r-hardhat@0.1.6.9001:", type=("build", "run"), when="@0.2.0:") depends_on("r-hardhat@1.2.0:", type=("build", "run"), when="@1.0.1:") depends_on("r-hardhat@1.3.0:", type=("build", "run"), when="@1.0.6:") + depends_on("r-hardhat@1.4.0:", type=("build", "run"), when="@1.1.0:") depends_on("r-ipred", type=("build", "run")) depends_on("r-ipred@0.9-12:", type=("build", "run"), when="@0.1.17:") depends_on("r-lifecycle", type=("build", "run"), when="@0.1.15:") @@ -55,6 +57,7 @@ class RRecipes(RPackage): depends_on("r-purrr@1.0.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-rlang@0.4.0:", type=("build", "run")) depends_on("r-rlang@1.0.3:", type=("build", "run"), when="@1.0.1:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.9:") depends_on("r-tibble", type=("build", "run")) depends_on("r-tidyr", type=("build", "run")) depends_on("r-tidyr@1.0.0:", type=("build", "run"), when="@0.1.15:") @@ -66,3 +69,5 @@ class RRecipes(RPackage): depends_on("r-vctrs", type=("build", "run"), when="@0.1.17:") depends_on("r-vctrs@0.5.0:", type=("build", "run"), when="@1.0.6:") depends_on("r-withr", type=("build", "run")) + + depends_on("r-ellipsis", type=("build", "run"), when="@0.1.17:1.0.10") diff --git a/var/spack/repos/builtin/packages/r-rematch/package.py b/var/spack/repos/builtin/packages/r-rematch/package.py index 54933633fc3819..1a188bd4264b46 100644 --- a/var/spack/repos/builtin/packages/r-rematch/package.py +++ b/var/spack/repos/builtin/packages/r-rematch/package.py @@ -16,4 +16,5 @@ class RRematch(RPackage): license("MIT") + version("2.0.0", sha256="15daf7bf2907aef8503635bc8631fce9fd75248a1fc2496825588c4bdf785c26") version("1.0.1", sha256="a409dec978cd02914cdddfedc974d9b45bd2975a124d8870d52cfd7d37d47578") diff --git a/var/spack/repos/builtin/packages/r-remotes/package.py b/var/spack/repos/builtin/packages/r-remotes/package.py index 6db1982ab0fded..4b9b40c792cfaf 100644 --- a/var/spack/repos/builtin/packages/r-remotes/package.py +++ b/var/spack/repos/builtin/packages/r-remotes/package.py @@ -18,6 +18,7 @@ class RRemotes(RPackage): license("MIT") + version("2.5.0", sha256="4d663f1426cd88d42f4070f23d969305c575e0499ed1397be6607b0770d2850c") version("2.4.2", sha256="f2ef875f24a485bf4f55a8c830f87cdd5db868f9a8cdb624dc452d0bf66ba516") version("2.2.0", sha256="12f234fd8c46f4ac54e06a3c60e4015ed2193a32762ca4dd6854f120136f33b8") version("2.1.1", sha256="4e590746fce618094089372b185e1ea234b3337b23c44c44118e942d0fb5118b") diff --git a/var/spack/repos/builtin/packages/r-renv/package.py b/var/spack/repos/builtin/packages/r-renv/package.py index 2f60c028645d17..fe9e81566aaa7d 100644 --- a/var/spack/repos/builtin/packages/r-renv/package.py +++ b/var/spack/repos/builtin/packages/r-renv/package.py @@ -19,6 +19,7 @@ class RRenv(RPackage): license("MIT") + version("1.0.7", sha256="7b60b58a23743803ab167f82f78663e86f778947b2bda07afa12689338794507") version("0.17.3", sha256="1c4f28cd233e1f539a2a091f1d118de83eb8aea5d5780dbdfb6bb8dcc6e4f5f0") version("0.16.0", sha256="f3a13e6b71e9be460db73bd9e11a3cb8a1d9bc05c6b77423957cbc2a7f8ba016") version("0.15.5", sha256="b4f1a9a7daa82f0c3123ebd4eeba06e98d5485215518e5292b25bc56741d582e") diff --git a/var/spack/repos/builtin/packages/r-repr/package.py b/var/spack/repos/builtin/packages/r-repr/package.py index 7146c4da14d9e4..a7ad7aaf29b47b 100644 --- a/var/spack/repos/builtin/packages/r-repr/package.py +++ b/var/spack/repos/builtin/packages/r-repr/package.py @@ -17,6 +17,7 @@ class RRepr(RPackage): license("GPL-3.0-or-later") + version("1.1.7", sha256="73bd696b4d4211096e0d1e382d5ce6591527d2ff400cc7ae8230f0235eed021b") version("1.1.6", sha256="3d2e6c9b363c1ec4811688deff7fb22093cadc9e0a333930382093d93c16673f") version("1.1.4", sha256="6f799ca83e0940618dd8c22e62ffdce5ec11ba3366c5306ae58b55b53c097040") version("1.1.0", sha256="743fe018f9e3e54067a970bc38b6b8c0c0498b43f88d179ac4a959c2013a5f96") diff --git a/var/spack/repos/builtin/packages/r-reprex/package.py b/var/spack/repos/builtin/packages/r-reprex/package.py index 3043c5e95aba3f..5b983f8b349cae 100644 --- a/var/spack/repos/builtin/packages/r-reprex/package.py +++ b/var/spack/repos/builtin/packages/r-reprex/package.py @@ -21,6 +21,7 @@ class RReprex(RPackage): license("MIT") + version("2.1.1", sha256="c860368cbc7ef90ea786fb61ab6fa42cd89b5258be48652abc20ad414001879c") version("2.0.2", sha256="a85b16e26112364a65c886efea050df08c17aadf1411fd14ec27d9ef13e87092") version("2.0.1", sha256="0e6d8667cacb63135476a766fba3a4f91e5ad86274ea66d2b1e6d773b5ca6426") version("0.3.0", sha256="203c2ae6343f6ff887e7a5a3f5d20bae465f6e8d9745c982479f5385f4effb6c") @@ -32,6 +33,7 @@ class RReprex(RPackage): depends_on("r@3.1:", type=("build", "run"), when="@0.2.0:") depends_on("r@3.3:", type=("build", "run"), when="@1:") depends_on("r@3.4:", type=("build", "run"), when="@2.0.2:") + depends_on("r@3.6:", type=("build", "run"), when="@2.1.0:") depends_on("r-callr@2.0.0:", type=("build", "run")) depends_on("r-callr@3.3.1:", type=("build", "run"), when="@1:") depends_on("r-callr@3.6.0:", type=("build", "run"), when="@2:") diff --git a/var/spack/repos/builtin/packages/r-reproducible/package.py b/var/spack/repos/builtin/packages/r-reproducible/package.py index 94b3089e4bb62b..42c219d4090eb6 100644 --- a/var/spack/repos/builtin/packages/r-reproducible/package.py +++ b/var/spack/repos/builtin/packages/r-reproducible/package.py @@ -26,6 +26,7 @@ class RReproducible(RPackage): license("GPL-3.0-only") + version("2.1.0", sha256="9bdc44339e5e82a0082492cb63846699c7491c7ade74d9843b6173d4be84b92b") version("1.2.16", sha256="ec504cdc1adf305cd008ce65eff226e3cb60b7a454b2c8b98a871c84458546ae") version("1.2.10", sha256="fcee3aeb9d38c561c95df8663614ff0ed91a871719730766171b4ed19c82f729") version("1.2.8", sha256="6f453016404f6a2a235cb4d951a29aa7394dc3bd0b9cfc338dc85fb3d5045dd5") @@ -34,19 +35,22 @@ class RReproducible(RPackage): depends_on("r@3.5:", type=("build", "run")) depends_on("r@3.6:", type=("build", "run"), when="@1.2.8:") depends_on("r@4.0:", type=("build", "run"), when="@1.2.10:") + depends_on("r@4.1:", type=("build", "run"), when="@2.0.2:") depends_on("r-data-table@1.10.4:", type=("build", "run")) - depends_on("r-dbi", type=("build", "run")) depends_on("r-digest", type=("build", "run")) + depends_on("r-filelock", type=("build", "run"), when="@2.0.2:") depends_on("r-fpcompare", type=("build", "run")) - depends_on("r-glue", type=("build", "run")) + depends_on("r-fs", type=("build", "run"), when="@2.0.9:") depends_on("r-lobstr", type=("build", "run"), when="@1.2.10:") - depends_on("r-magrittr", type=("build", "run")) - depends_on("r-raster", type=("build", "run")) - depends_on("r-raster@3.5-15:", type=("build", "run"), when="@1.2.10:") - depends_on("r-rsqlite", type=("build", "run")) - depends_on("r-rlang", type=("build", "run")) - depends_on("r-sp@1.4-2:", type=("build", "run")) depends_on("unrar", type=("build", "run")) + depends_on("r-dbi", type=("build", "run"), when="@:2.0.1") depends_on("r-gdalutilities", type=("build", "run"), when="@1.2.8") + depends_on("r-glue", type=("build", "run"), when="@:2.0.1") + depends_on("r-lobstr", type=("build", "run"), when="@1.2.10:2.0.1") + depends_on("r-magrittr", type=("build", "run"), when="@:2.0.1") + depends_on("r-raster@3.5-15:", type=("build", "run"), when="@1.2.10:2.0.1") depends_on("r-require", type=("build", "run"), when="@:1.2.10") + depends_on("r-rlang", type=("build", "run"), when="@:2.0.1") + depends_on("r-rsqlite", type=("build", "run"), when="@:2.0.1") + depends_on("r-sp@1.4-2:", type=("build", "run"), when="@:2.0.1") diff --git a/var/spack/repos/builtin/packages/r-require/package.py b/var/spack/repos/builtin/packages/r-require/package.py index 867c8417847479..edd15c5a6f7877 100644 --- a/var/spack/repos/builtin/packages/r-require/package.py +++ b/var/spack/repos/builtin/packages/r-require/package.py @@ -20,6 +20,7 @@ class RRequire(RPackage): maintainers("dorton21") + version("1.0.1", sha256="52256624b86178ec5efb86b992bbe5a24f2fa53687cec532c0a73b1852ce6800") version("0.3.0", sha256="de879999f71bd3009b58676673f26774119fa84d3d7fcc28d0b02f07d5c63968") version("0.1.4", sha256="1657dacff807ec8865892fce4d55cec9e31affafd90cb44ab59b704d29575a8c") version("0.1.2", sha256="c045c1cc69f6d6248306d88f6399699b9f86134a71b631e35b9101901593af1b") @@ -31,3 +32,4 @@ class RRequire(RPackage): depends_on("r@4.0:", type=("build", "run"), when="@0.1.2:") depends_on("r-data-table@1.10.4:", type=("build", "run")) depends_on("r-remotes", type=("build", "run"), when="@:0.0.13") + depends_on("r-sys", type=("build", "run"), when="@0.3.1.9074:") diff --git a/var/spack/repos/builtin/packages/r-reticulate/package.py b/var/spack/repos/builtin/packages/r-reticulate/package.py index 120cce8a6e3de4..9d6f53afffaad9 100644 --- a/var/spack/repos/builtin/packages/r-reticulate/package.py +++ b/var/spack/repos/builtin/packages/r-reticulate/package.py @@ -19,6 +19,7 @@ class RReticulate(RPackage): license("Apache-2.0") + version("1.38.0", sha256="cb2f313e2351a3cde03be55561b592318ec5376fba3b10e371eeff1986deca8d") version("1.28", sha256="58a299ed18faaa3ff14936752fcc2b86e64ae18fc9f36befdfd492ccb251516f") version("1.26", sha256="3fd74823bde1b0e094db7c2bf6b40ee2501f8d724b4c35b53da95c3c588c74c5") version("1.25", sha256="2125af9e75939c3b7c0dc74f28f42606e816d63aa1143baf631c318ff5ff3a2c") @@ -29,9 +30,12 @@ class RReticulate(RPackage): version("1.13", sha256="adbe41d556b667c4419d563680f8608a56b0f792b8bc427b3bf4c584ff819de3") depends_on("r@3.0:", type=("build", "run")) + depends_on("r@3.5:", type=("build", "run"), when="@1.30.0:") depends_on("r-matrix", type=("build", "run")) depends_on("r-rcpp@0.12.7:", type=("build", "run", "link")) + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@1.29.0:") depends_on("r-rcpptoml", type=("build", "run", "link"), when="@1.23:") + depends_on("r-rlang", type=("build", "run"), when="@1.29.0:") depends_on("r-here", type=("build", "run", "link"), when="@1.23:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-png", type=("build", "run", "link"), when="@1.23:") diff --git a/var/spack/repos/builtin/packages/r-rfast/package.py b/var/spack/repos/builtin/packages/r-rfast/package.py index d6ddfe5967c5e0..63d534f379d296 100644 --- a/var/spack/repos/builtin/packages/r-rfast/package.py +++ b/var/spack/repos/builtin/packages/r-rfast/package.py @@ -21,11 +21,13 @@ class RRfast(RPackage): cran = "Rfast" + version("2.1.0", sha256="f9e46cac99db756cd49c9cd83be8adc0d381e6c03102389bfdcb8258d02418ff") version("2.0.7", sha256="8f86159a4760a7124e1c91ae0b022c7e496f81590ea4e4af702bea44e8dedf8f") version("2.0.6", sha256="34694b5c67ce8fcbdc90aac2ac80a74d4b66515f383e6301aea7c020009ebe7f") version("2.0.4", sha256="959907e36e24620c07ec282b203b40214f4914f4928c07ee6491043c27af31d9") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-rcpp@0.12.3:", type=("build", "run")) + depends_on("r-rcppparallel", type=("build", "run"), when="@2.1.0:") depends_on("r-rcppziggurat", type=("build", "run")) depends_on("r-rcpparmadillo", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rgdal/package.py b/var/spack/repos/builtin/packages/r-rgdal/package.py index 4194c69d7f7f07..a472fbd9eaa7ce 100644 --- a/var/spack/repos/builtin/packages/r-rgdal/package.py +++ b/var/spack/repos/builtin/packages/r-rgdal/package.py @@ -23,6 +23,7 @@ class RRgdal(RPackage): cran = "rgdal" + version("1.6-7", sha256="555cedfdadb05db90b061d4b056f96d8b7010c00ea54bc6c1bbcc7684fadae33") version( "1.6-6", sha256="d742d7aadfc004771e61cac28a1faffeb4dbda981dea19115be11c541087399a", diff --git a/var/spack/repos/builtin/packages/r-rgenoud/package.py b/var/spack/repos/builtin/packages/r-rgenoud/package.py index 172196c919519a..dc489925fec2ef 100644 --- a/var/spack/repos/builtin/packages/r-rgenoud/package.py +++ b/var/spack/repos/builtin/packages/r-rgenoud/package.py @@ -15,6 +15,7 @@ class RRgenoud(RPackage): license("GPL-3.0-only") + version("5.9-0.10", sha256="e644ee640a097ed2d32be03db3603259981656fa459922035a8c531d692acde9") version("5.9-0.3", sha256="31560a8dad791f9c47a673e90d397b3fc60da1a58be1ae1486ace90d988eb55f") version("5.8-3.0", sha256="9beb11b5edab3ab3aa6001daa39668b240a8e0328be9d55db4e23ff88ce3235d") version("5.8-2.0", sha256="106c4f6a6df5159578e929a0141b3cfbaa88141a70703ff59a1fc48a27e2d239") diff --git a/var/spack/repos/builtin/packages/r-rgeos/package.py b/var/spack/repos/builtin/packages/r-rgeos/package.py index fae7ad271ea3be..2122332ecd7e26 100644 --- a/var/spack/repos/builtin/packages/r-rgeos/package.py +++ b/var/spack/repos/builtin/packages/r-rgeos/package.py @@ -30,6 +30,7 @@ class RRgeos(RPackage): cran = "rgeos" + version("0.6-4", sha256="9d03c4de96fd3fad55ff8d1ff8113dcaaa00f15d9d0588e54c9f91751bcede11") version( "0.6-2", sha256="2ee2bb8b0c20d7908ac55d4d1cf8292c624ab836e02599ce1871a249a59fe0af", diff --git a/var/spack/repos/builtin/packages/r-rgexf/package.py b/var/spack/repos/builtin/packages/r-rgexf/package.py index e9c146ced9005f..7498cd8798f262 100644 --- a/var/spack/repos/builtin/packages/r-rgexf/package.py +++ b/var/spack/repos/builtin/packages/r-rgexf/package.py @@ -21,6 +21,7 @@ class RRgexf(RPackage): license("MIT") + version("0.16.3", sha256="cddcc58a10092cfea32999d7baaf6eae9b34e649a16627ee0b466a7cf2c339b0") version("0.16.2", sha256="6ee052b0de99d0c7492366b991d345a51b3d0cc890d10a68b8670e1bd4fc8201") version("0.16.0", sha256="2a671df9ac70cfefd4092754317cb28e32a33df345b80e1975bf838e838245ee") version("0.15.3", sha256="2e8a7978d1fb977318e6310ba65b70a9c8890185c819a7951ac23425c6dc8147") diff --git a/var/spack/repos/builtin/packages/r-rgl/package.py b/var/spack/repos/builtin/packages/r-rgl/package.py index 67f0b5e874b109..37a0a0d4b58b9d 100644 --- a/var/spack/repos/builtin/packages/r-rgl/package.py +++ b/var/spack/repos/builtin/packages/r-rgl/package.py @@ -20,6 +20,7 @@ class RRgl(RPackage): license("GPL-2.0-or-later") + version("1.3.1", sha256="9fea7b59dd7fef9bbd783c745d68325ec753ef412699d168bb6c664a56506d49") version("1.1.3", sha256="4fa246c2ab06261ea81e09a7a489f34174b93359fe74a3db291f8d0eccd38aae") version("0.110.2", sha256="da1118c1990ae161a5787960fb22009601d2ee7d39ca9c97c31c70589bce346d") version("0.108.3.2", sha256="033af3aceade6c21d0a602958fff1c25c21febc7d0e867cf88860cfa25fc3c65") @@ -34,6 +35,7 @@ class RRgl(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run")) depends_on("r@3.3.0:", type=("build", "run"), when="@0.108.3:") + depends_on("r@3.6.0:", type=("build", "run"), when="@1.3.1:") depends_on("r-htmlwidgets", type=("build", "run")) depends_on("r-htmlwidgets@1.6.0:", type=("build", "run"), when="@1.1.3:") depends_on("r-htmltools", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py index f2931bef8119a1..d3e59136454c62 100644 --- a/var/spack/repos/builtin/packages/r-rgooglemaps/package.py +++ b/var/spack/repos/builtin/packages/r-rgooglemaps/package.py @@ -16,6 +16,7 @@ class RRgooglemaps(RPackage): cran = "RgoogleMaps" + version("1.5.1", sha256="14fe6c37d935a1c5a9ac063c9c9c59a1e93c6f86907480792302f9a9452cf8a4") version("1.4.5.3", sha256="d1d5ad8db841754af175d4104a05c5c31e5cc445be314a3ac70483c31798680b") version("1.4.3", sha256="44cb62bcd23e5b4807e91c5825352eb8d38aaaeb3b38a8271ca9f21c1e1d4b19") version("1.4.2", sha256="b479996fcb72f067644a7ea7f00325e44e76efd202e84aaab022753c4a6d5584") @@ -23,6 +24,6 @@ class RRgooglemaps(RPackage): depends_on("r@2.10:", type=("build", "run")) depends_on("r-png", type=("build", "run")) - depends_on("r-sp", type=("build", "run"), when="@1.4.5.3:") + depends_on("r-sp", type=("build", "run"), when="@1.4.5.3:1.4.5.3") depends_on("r-rjsonio", type=("build", "run"), when="@1.2.0.5:1.2.0.7") diff --git a/var/spack/repos/builtin/packages/r-rio/package.py b/var/spack/repos/builtin/packages/r-rio/package.py index f120492fe933df..473ae6b88fff96 100644 --- a/var/spack/repos/builtin/packages/r-rio/package.py +++ b/var/spack/repos/builtin/packages/r-rio/package.py @@ -22,15 +22,22 @@ class RRio(RPackage): license("GPL-2.0-only") + version("1.2.2", sha256="51472a286ad82e1cafd4d87d774662650ccf40d788b59dc70e49fe754e045394") version("0.5.29", sha256="9fa63187e1814053e6ed2a164665b4924e08c3453adccb78f7211d403dcc5412") version("0.5.16", sha256="d3eb8d5a11e0a3d26169bb9d08f834a51a6516a349854250629072d59c29d465") depends_on("r@2.15.0:", type=("build", "run")) + depends_on("r@4.0:", when="@1.2:", type=("build", "run")) depends_on("r-foreign", type=("build", "run")) depends_on("r-haven@1.1.2:", type=("build", "run"), when="@0.5.26:") depends_on("r-haven@1.1.0:", type=("build", "run")) depends_on("r-curl@0.6:", type=("build", "run")) + depends_on("r-data-table@1.11.2:", when="@1:", type=("build", "run")) depends_on("r-data-table@1.9.8:", type=("build", "run")) + depends_on("r-lifecycle", when="@1:", type=("build", "run")) + depends_on("r-r-utils", when="@1:", type=("build", "run")) + depends_on("r-readr", when="@1.2.1:", type=("build", "run")) depends_on("r-readxl@0.1.1:", type=("build", "run")) - depends_on("r-openxlsx", type=("build", "run")) + depends_on("r-openxlsx", type=("build", "run"), when="@:0.5.30") depends_on("r-tibble", type=("build", "run")) + depends_on("r-writexl", when="@1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rjags/package.py b/var/spack/repos/builtin/packages/r-rjags/package.py index 3797aa89837798..4d0883a909269f 100644 --- a/var/spack/repos/builtin/packages/r-rjags/package.py +++ b/var/spack/repos/builtin/packages/r-rjags/package.py @@ -16,6 +16,7 @@ class RRjags(RPackage): license("GPL-2.0-only") + version("4-16", sha256="369d393e519ae26219ff44e6a8f07d9310a9bb06fa0ec9dcce33ce7c4bc7e7e7") version("4-14", sha256="313b5df702598ce3bbc5f8b027b654c8489420ca5a4e0a794954ea9f4837e2cb") version("4-13", sha256="f85cc34c5127b828d8a3fa3613ef29f147c868bdaf55eb0f7406c10abbf92b32") version("4-12", sha256="b91f34c3f9ebf78fa44bd661346fbb6f28a01693a7203ac133c98392dd273e10") diff --git a/var/spack/repos/builtin/packages/r-rjava/package.py b/var/spack/repos/builtin/packages/r-rjava/package.py index 0a135ed48789f1..662ae85fd4d5c8 100644 --- a/var/spack/repos/builtin/packages/r-rjava/package.py +++ b/var/spack/repos/builtin/packages/r-rjava/package.py @@ -14,6 +14,7 @@ class RRjava(RPackage): cran = "rJava" + version("1.0-11", sha256="9ea0ccf5553d86f7de8649a8324766c4f0810f35b7be561640dd87fd37986417") version("1.0-6", sha256="e290d0493317a5d6c452793e92baa914e37ef03faef19b2e436329b4ec8658c6") version("0.9-13", sha256="5b1688f5044476b34f71d868b222ac5fce3a088f0c2b9e4591c1e48f3d8c75f4") version("0.9-11", sha256="c28ae131456a98f4d3498aa8f6eac9d4df48727008dacff1aa561fc883972c69") diff --git a/var/spack/repos/builtin/packages/r-rjson/package.py b/var/spack/repos/builtin/packages/r-rjson/package.py index 55bfe6a4af01a5..c0c3ea6ae52b00 100644 --- a/var/spack/repos/builtin/packages/r-rjson/package.py +++ b/var/spack/repos/builtin/packages/r-rjson/package.py @@ -15,6 +15,7 @@ class RRjson(RPackage): license("GPL-2.0-only") + version("0.2.22", sha256="06cdf67b72b6166a6ad399c8176b34f8a5a75fa5257ddbd46a2b99b2f39e1d27") version("0.2.21", sha256="982b56d35ccc0c7db0b20c1d3eab5f5f47c620309646fdc278ff1cc3433ea2e2") version("0.2.20", sha256="3a287c1e5ee7c333ed8385913c0a307daf99335fbdf803e9dcca6e3d5adb3f6c") version("0.2.19", sha256="5c2672461986f2b715416cab92ed262abe9875f31299bc8a1a072ef7c6dd49bc") @@ -25,3 +26,4 @@ class RRjson(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r@4.0.0:", type=("build", "run"), when="@0.2.21:") + depends_on("r@4.4.0:", type=("build", "run"), when="@0.2.22:") diff --git a/var/spack/repos/builtin/packages/r-rjsonio/package.py b/var/spack/repos/builtin/packages/r-rjsonio/package.py index 63495d35d3cda7..86833a53685e66 100644 --- a/var/spack/repos/builtin/packages/r-rjsonio/package.py +++ b/var/spack/repos/builtin/packages/r-rjsonio/package.py @@ -27,6 +27,7 @@ class RRjsonio(RPackage): cran = "RJSONIO" + version("1.3-1.9", sha256="f173034b0c28873f417ee804b9e278aedd92e76eb56c7c6d71b1c02fa1193ece") version("1.3-1.8", sha256="f6f0576d3c7852b16295dfc897feebca064fe5dd29cdce7592f94c56823553f5") version("1.3-1.6", sha256="82d1c9ea7758b2a64ad683f9c46223dcba9aa8146b43c1115bf9aa76a657a09f") version("1.3-1.4", sha256="54142c931e15eca278a02dad5734026bb49d960471eb085008af825352953190") diff --git a/var/spack/repos/builtin/packages/r-rlang/package.py b/var/spack/repos/builtin/packages/r-rlang/package.py index 48a47e14479eee..6f630c0707ae4a 100644 --- a/var/spack/repos/builtin/packages/r-rlang/package.py +++ b/var/spack/repos/builtin/packages/r-rlang/package.py @@ -16,6 +16,7 @@ class RRlang(RPackage): license("MIT") + version("1.1.4", sha256="f2d74527508bf3287102470beb27de0d234c3cbba399c28d3312f2c83c64a6e1") version("1.1.2", sha256="2a0ee1dc6e5c59b283c32db5e74e869922a336197cb406fe92622b6ec66f8092") version("1.1.1", sha256="5e5ec9a7796977216c39d94b1e342e08f0681746657067ba30de11b8fa8ada99") version("1.1.0", sha256="f89859d91c9edc05fd7ccf21163fe53ad58da907ee273a93d5ab004a8649335b") diff --git a/var/spack/repos/builtin/packages/r-rlist/package.py b/var/spack/repos/builtin/packages/r-rlist/package.py new file mode 100644 index 00000000000000..672f6b7586c968 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-rlist/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RRlist(RPackage): + """Provides a set of functions for data manipulation with + list objects, including mapping, filtering, grouping, sorting, + updating, searching, and other useful functions. Most functions + are designed to be pipeline friendly so that data processing with + lists can be chained.""" + + homepage = "https://renkun-ken.github.io/rlist/" + cran = "rlist" + + license("MIT", checked_by="wdconinc") + + version("0.4.6.2", sha256="ebde658d897c8a27a90ebb892b9e2bad15e2ad75557a7352fb08cbb5604e0997") + + depends_on("r@2.15:", type=("build", "run")) + depends_on("r-yaml", type=("build", "run")) + depends_on("r-jsonlite", type=("build", "run")) + depends_on("r-xml", type=("build", "run")) + depends_on("r-data-table", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rmariadb/package.py b/var/spack/repos/builtin/packages/r-rmariadb/package.py index 740d434eaff766..231701e2bb21eb 100644 --- a/var/spack/repos/builtin/packages/r-rmariadb/package.py +++ b/var/spack/repos/builtin/packages/r-rmariadb/package.py @@ -15,6 +15,7 @@ class RRmariadb(RPackage): cran = "RMariaDB" + version("1.3.2", sha256="7c87ef0623218b9e79dd6a9b1a25f495520289603ca48f54ea45309bd8826828") version("1.2.2", sha256="c97c61ace584f9ad9929d3e3f366556e0eecad12bc98ea2979563a01475f468e") version("1.2.1", sha256="c9176a096854ce33a98ce0faef0065c50b5d356174f90cea742c70e130cf5f0c") version("1.1.0", sha256="9ffa63a15052876a51a7996ca4e6a5b7b937f594b5cc7ca5a86f43789e22a956") @@ -27,11 +28,12 @@ class RRmariadb(RPackage): depends_on("r-dbi@1.1.3:", type=("build", "run"), when="@1.2.2:") depends_on("r-hms@0.5.0:", type=("build", "run")) depends_on("r-lubridate", type=("build", "run"), when="@1.1.0:") - depends_on("r-rcpp@0.12.4:", type=("build", "run")) + depends_on("r-cpp11", type=("build", "run"), when="@1.3.0:") depends_on("r-rlang", type=("build", "run"), when="@1.2.1:") depends_on("r-plogr", type=("build", "run")) depends_on("mariadb-client") + depends_on("r-rcpp@0.12.4:", type=("build", "run"), when="@:1.2.2") depends_on("r-bh", type=("build", "run"), when="@:1.1.0") # Set the library explicitly to prevent configure from finding a system diff --git a/var/spack/repos/builtin/packages/r-rmarkdown/package.py b/var/spack/repos/builtin/packages/r-rmarkdown/package.py index 2b4e444e0ef688..767288056bc7b5 100644 --- a/var/spack/repos/builtin/packages/r-rmarkdown/package.py +++ b/var/spack/repos/builtin/packages/r-rmarkdown/package.py @@ -16,6 +16,7 @@ class RRmarkdown(RPackage): license("GPL-3.0-only") + version("2.28", sha256="a102a503a92d4203038c5a0675451daf9460df18efcabd5c23283ecefe75a085") version("2.21", sha256="c25b20a422d11a115c93460f41c488874002154abb349b14e0d6518682fdac28") version("2.17", sha256="aa576c458ec4c2e8468aaa4e3f60202d8d9c7ef54fa01d6b2d243bffee08c4be") version("2.16", sha256="d3d34e0419c419d3ab20eb60952a0f0f4c391d202277af55dcd673d25561fa71") @@ -38,7 +39,7 @@ class RRmarkdown(RPackage): depends_on("r-jquerylib", type=("build", "run"), when="@2.11:") depends_on("r-jsonlite", type=("build", "run")) depends_on("r-knitr@1.22:", type=("build", "run")) - depends_on("r-stringr@1.2.0:", type=("build", "run"), when="@1.6:") + depends_on("r-knitr@1.43:", type=("build", "run"), when="@2.26:") depends_on("r-tinytex@0.11:", type=("build", "run"), when="@1.10:") depends_on("r-tinytex@0.31:", type=("build", "run"), when="@2.8:") depends_on("r-xfun", type=("build", "run"), when="@1.13:") @@ -54,3 +55,4 @@ class RRmarkdown(RPackage): depends_on("r-mime", type=("build", "run"), when="@1.8:1.14") depends_on("r-catools", type=("build", "run"), when="@:1.7") depends_on("r-base64enc", type=("build", "run"), when="@:1.14") + depends_on("r-stringr@1.2.0:", type=("build", "run"), when="@1.6:2.25") diff --git a/var/spack/repos/builtin/packages/r-rmpfr/package.py b/var/spack/repos/builtin/packages/r-rmpfr/package.py index 7388730fc157d1..04b423d5abb74d 100644 --- a/var/spack/repos/builtin/packages/r-rmpfr/package.py +++ b/var/spack/repos/builtin/packages/r-rmpfr/package.py @@ -17,6 +17,7 @@ class RRmpfr(RPackage): cran = "Rmpfr" + version("0.9-5", sha256="bce9a2729efcd329a13910e2ecb4675b4626dd3322cd01b01cb835d516a5f31b") version("0.9-2", sha256="ed63da32f3b970900c87cdb728eb16ed9fb0c79114cdecdc09e573f50ff7175e") version("0.8-9", sha256="cfee5ab47d49c6433c372a267f7d849c8f7c61a84e00d08afb047eaafcdbbc8a") version("0.8-7", sha256="93c2db785ff705dcfc6fa7f0373c2426cdc2ef72ceb5b294edeb2952775f57d2") diff --git a/var/spack/repos/builtin/packages/r-rmpi/package.py b/var/spack/repos/builtin/packages/r-rmpi/package.py index 88b9a301751980..2a706a42e12868 100644 --- a/var/spack/repos/builtin/packages/r-rmpi/package.py +++ b/var/spack/repos/builtin/packages/r-rmpi/package.py @@ -14,6 +14,7 @@ class RRmpi(RPackage): cran = "Rmpi" + version("0.7-2", sha256="8591fa9f50de52535a32b36e7ed142c6ca4e03fdfdbef79a1e27a63ed5322eef") version("0.7-1", sha256="17dae27dea9317aacabc2255dfcf2538fb3195472cedd521256ced9a20dd2dc1") version("0.6-9.2", sha256="358ac1af97402e676f209261a231f36a35e60f0301edf8ca53dac11af3c3bd1a") version("0.6-9", sha256="b2e1eac3e56f6b26c7ce744b29d8994ab6507ac88df64ebbb5af439414651ee6") @@ -24,10 +25,13 @@ class RRmpi(RPackage): depends_on("mpi") # The following MPI types are not supported - conflicts("^intel-mpi") - conflicts("^intel-parallel-studio") - conflicts("^mvapich2") - conflicts("^spectrum-mpi") + conflicts("^[virtuals=mpi] intel-mpi") + conflicts("^[virtuals=mpi] intel-parallel-studio") + conflicts("^[virtuals=mpi] mvapich2") + conflicts("^[virtuals=mpi] spectrum-mpi") + + # Rmpi's Open MPI implementation depends on v4.x ORTE runtime environment + conflicts("^[virtuals=mpi] openmpi@5:") def configure_args(self): spec = self.spec diff --git a/var/spack/repos/builtin/packages/r-rms/package.py b/var/spack/repos/builtin/packages/r-rms/package.py index a14c2404c25241..289f9dd9a993f8 100644 --- a/var/spack/repos/builtin/packages/r-rms/package.py +++ b/var/spack/repos/builtin/packages/r-rms/package.py @@ -27,6 +27,7 @@ class RRms(RPackage): license("GPL-2.0-or-later") + version("6.8-1", sha256="9d38545749430763c242bae1181ce24a7f6f6b244e4c69348ab200b83925596a") version("6.6-0", sha256="f3abadb94339f3aedadd27e1aceade069bcb53c94bf246626b0dc94b16b6625c") version("6.3-0", sha256="6c41eb670daf5e4391cc2f2a19e20a591f90769c124300a7ccf555820140d3f9") version("6.2-0", sha256="10d58cbfe39fb434223834e29e5248c9384cded23e6267cfc99367d0f5ee24b6") @@ -38,9 +39,11 @@ class RRms(RPackage): version("5.1-1", sha256="c489948df5c434b40bcf5288844f5b4e08d157f36939d09230c1600f88d1bfe3") depends_on("r@3.5.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@6.8-0:") depends_on("r-hmisc@4.3-0:", type=("build", "run")) depends_on("r-hmisc@4.7-0:", type=("build", "run"), when="@6.3-0:") depends_on("r-hmisc@4.8-0:", type=("build", "run"), when="@6.6-0:") + depends_on("r-hmisc@5.1-0:", type=("build", "run"), when="@6.8-0:") depends_on("r-survival@3.1-6:", type=("build", "run")) depends_on("r-survival@3.1-12:", type=("build", "run"), when="@6.1-0:") depends_on("r-ggplot2@2.2:", type=("build", "run")) @@ -56,6 +59,7 @@ class RRms(RPackage): depends_on("r-cluster", type=("build", "run"), when="@6.1-0:") depends_on("r-digest", type=("build", "run"), when="@6.1-0:") depends_on("r-knitr", type=("build", "run"), when="@6.6-0:") - depends_on("r-kableextra", type=("build", "run"), when="@6.6-0:") depends_on("r-colorspace", type=("build", "run"), when="@6.6-0:") depends_on("r-lattice", type=("build", "run"), when="@:6.3-0") + + depends_on("r-kableextra", type=("build", "run"), when="@6.6-0:6.7-0") diff --git a/var/spack/repos/builtin/packages/r-rmysql/package.py b/var/spack/repos/builtin/packages/r-rmysql/package.py index 2e3639efdd42fc..fba82187857459 100644 --- a/var/spack/repos/builtin/packages/r-rmysql/package.py +++ b/var/spack/repos/builtin/packages/r-rmysql/package.py @@ -15,6 +15,7 @@ class RRmysql(RPackage): cran = "RMySQL" + version("0.10.27", sha256="f1735b689cd9bdb9c776a16138eaa1f6c5cbdbab5c1d292e1240e3bbf105bfab") version("0.10.25", sha256="ed130f9bd80ea9fd5b4fdbb6fa094c35646354507de68eb3d19a3cbc8b5a4794") version("0.10.24", sha256="ca1b9aacab6d76866ba09210ae881c3a7555bd5144ea0a0a446fceff80637241") version("0.10.23", sha256="f4ac7ed4fba83749819c07ce32d53ee024cf1cedebbda3b832644bff9edf4a15") diff --git a/var/spack/repos/builtin/packages/r-rnoaa/package.py b/var/spack/repos/builtin/packages/r-rnoaa/package.py index 5e059a6b534980..b8551eab7c92bb 100644 --- a/var/spack/repos/builtin/packages/r-rnoaa/package.py +++ b/var/spack/repos/builtin/packages/r-rnoaa/package.py @@ -22,6 +22,7 @@ class RRnoaa(RPackage): license("MIT") + version("1.4.0", sha256="a1869303b3fc14d9b3674451c0ce9331ddc26110b7474fe419ac37f7ffb63097") version("1.3.8", sha256="57974b48162637e98888f041d6f0e580d3c60bd5008af2d2bc659491f0deb98a") version("1.3.0", sha256="4c421ad6e4c2b25e4dea5351c338aed70bea6e382562412d1dad825a50b0d161") version("0.8.4", sha256="fb9ae771111dd5f638c1eff3290abad2ff9cc7e68a6678bf2414433ebed2dbbf") diff --git a/var/spack/repos/builtin/packages/r-robust/package.py b/var/spack/repos/builtin/packages/r-robust/package.py index a5bf5c16e107b1..37ad526b3dbe75 100644 --- a/var/spack/repos/builtin/packages/r-robust/package.py +++ b/var/spack/repos/builtin/packages/r-robust/package.py @@ -17,6 +17,7 @@ class RRobust(RPackage): license("GPL-3.0-or-later") + version("0.7-5", sha256="a3c02a9c9101b966907cb52b3193c4ef51864928ad99c3351edf5390532c1acc") version("0.7-1", sha256="efaac70c6399b2787938e23ea89039b4a6043e76601bd794ba0ddda1edee65df") version("0.7-0", sha256="5e1aac30e185e416c22445663704f39433af9fdb48452185f2c9beb3528084b9") version("0.6-1", sha256="496fd225f6bc6f734e338308f18475125aaf691b39e25308bddb284d3106117d") diff --git a/var/spack/repos/builtin/packages/r-robustbase/package.py b/var/spack/repos/builtin/packages/r-robustbase/package.py index a05863c09574b0..37db5ba90f8c63 100644 --- a/var/spack/repos/builtin/packages/r-robustbase/package.py +++ b/var/spack/repos/builtin/packages/r-robustbase/package.py @@ -19,6 +19,7 @@ class RRobustbase(RPackage): license("GPL-2.0-or-later") + version("0.99-4", sha256="a978d04fcd4bee7a4ebfa9f05e9abb4a1ca4d970867229a90698bed2fbf40cbc") version("0.95-1", sha256="862cd26db3ecdf34ab47c52d355fd65ffebbff448aea17999a9b95a1f13ba3ea") version("0.95-0", sha256="5cfaea1c46df6d45086614fea5f152c8da8ebfcadf33bb8df5b82e742eef9724") version("0.93-9", sha256="d75fb5075463fec61d063bced7003936e9198492328b6fae15f67e8415713c45") diff --git a/var/spack/repos/builtin/packages/r-rodbc/package.py b/var/spack/repos/builtin/packages/r-rodbc/package.py index e16a948741e307..d0fdeba36c27d8 100644 --- a/var/spack/repos/builtin/packages/r-rodbc/package.py +++ b/var/spack/repos/builtin/packages/r-rodbc/package.py @@ -15,6 +15,7 @@ class RRodbc(RPackage): license("GPL-2.0-or-later") + version("1.3-23", sha256="15cdd15ac0afb3294420c7593b04a5e4e31df175418b22a8ec075bf5855e0f3b") version("1.3-20", sha256="7f157bd1ca2502bea4247260aac5b0f3aa1026ddffe5c50b026f2d59c210fbd6") version("1.3-19", sha256="3afcbd6877cd8b7c8df4a94bacd041a51e5ac607810acb88efd380b45d2d4efe") version("1.3-17", sha256="469fc835f65c344d5c3eaa097ff278ee8e9f12f845722a9aad340115faa704f7") diff --git a/var/spack/repos/builtin/packages/r-roxygen2/package.py b/var/spack/repos/builtin/packages/r-roxygen2/package.py index 60df397a81d3f0..97e60dac2d2185 100644 --- a/var/spack/repos/builtin/packages/r-roxygen2/package.py +++ b/var/spack/repos/builtin/packages/r-roxygen2/package.py @@ -18,6 +18,7 @@ class RRoxygen2(RPackage): license("MIT") + version("7.3.2", sha256="b788879f9132b7e2e656f442a6c592314676a9bf32d6a0a56e156cfa1ada011c") version("7.2.3", sha256="d844fab977d2575ab942fa1309ac7ff67f35f099a75d8b41c79efe6ea10416da") version("7.2.1", sha256="d2f0342591dc2b561fad8f6cf6fb3001e5e0bdd02be68bb2c6315f6bb82cda21") version("7.2.0", sha256="2ebfcfd567b9db6c606c6d42be1645b4e987f987995a2ad8954fa963a519448b") @@ -31,6 +32,7 @@ class RRoxygen2(RPackage): depends_on("r@3.1:", type=("build", "run"), when="@6.1.0:") depends_on("r@3.2:", type=("build", "run"), when="@7.1.0:") depends_on("r@3.3:", type=("build", "run"), when="@7.1.2:") + depends_on("r@3.6:", type=("build", "run"), when="@7.3.0:") depends_on("r-brew", type=("build", "run")) depends_on("r-cli@3.3.0:", type=("build", "run"), when="@7.2.0:") depends_on("r-commonmark", type=("build", "run")) @@ -39,6 +41,7 @@ class RRoxygen2(RPackage): depends_on("r-pkgload@1.0.2:", type=("build", "run")) depends_on("r-purrr", type=("build", "run")) depends_on("r-purrr@0.3.3:", type=("build", "run"), when="@7.1.0:") + depends_on("r-purrr@1.0.0:", type=("build", "run"), when="@7.3.0:") depends_on("r-r6@2.1.2:", type=("build", "run")) depends_on("r-rlang", type=("build", "run"), when="@7.1.0:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@7.2.0:") diff --git a/var/spack/repos/builtin/packages/r-rpart-plot/package.py b/var/spack/repos/builtin/packages/r-rpart-plot/package.py index 7ed71d89b96617..3a8b649d9b4dc9 100644 --- a/var/spack/repos/builtin/packages/r-rpart-plot/package.py +++ b/var/spack/repos/builtin/packages/r-rpart-plot/package.py @@ -14,6 +14,7 @@ class RRpartPlot(RPackage): cran = "rpart.plot" + version("3.1.2", sha256="3dca2a5d1a8e5eb5129fd6efce9c5f6b2fa241bfb65f2a8823a8db89f4b422b2") version("3.1.1", sha256="30736240058df21a96d10912a091d938f821d521a3bc4efb9aa4ef6fb233024d") version("3.1.0", sha256="2aaba0c0cabbc17aca9085248b0ad74ee7ff2b8f729e020e84b3917de174c15e") version("3.0.9", sha256="1150f5e9899b3b31b17160617cd99c3ad340c8361aeb229264a7a3a3a28015a4") diff --git a/var/spack/repos/builtin/packages/r-rpart/package.py b/var/spack/repos/builtin/packages/r-rpart/package.py index 24fd3ebd141ac9..36bd41d99cfd5b 100644 --- a/var/spack/repos/builtin/packages/r-rpart/package.py +++ b/var/spack/repos/builtin/packages/r-rpart/package.py @@ -17,6 +17,7 @@ class RRpart(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("4.1.23", sha256="f9b89aed6aa6cea656a2dcb271574e969ce2b1c98beb07bd91e17339f6daabaf") version("4.1.19", sha256="fe723ed0b5583fae8b40e6fecc29b357229cb11f2339b02a4e4f812926249565") version("4.1.16", sha256="27ec75258a5a3459ad999f5f36760ead974930744249605bf8465f234f31425c") version("4.1-15", sha256="2b8ebe0e9e11592debff893f93f5a44a6765abd0bd956b0eb1f70e9394cfae5c") diff --git a/var/spack/repos/builtin/packages/r-rpostgres/package.py b/var/spack/repos/builtin/packages/r-rpostgres/package.py index 0e829406e50370..c7adf3b7e10497 100644 --- a/var/spack/repos/builtin/packages/r-rpostgres/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgres/package.py @@ -14,6 +14,7 @@ class RRpostgres(RPackage): cran = "RPostgres" + version("1.4.7", sha256="3dd1f1d83bd8a25a0a86532c6971072fccea7b1769f601ad9daa8c9aa8f66924") version("1.4.5", sha256="70ff848cba51ddad4642a20e01cda1033e6f218b015a13380c30604bbd18c797") version("1.4.4", sha256="c9cc0648c432f837fd0eb4922db4903357244d5a2cedd04ea236f249b08acdfc") version("1.4.3", sha256="a5be494a54b6e989fadafdc6ee2dc5c4c15bb17bacea9ad540b175c693331be2") @@ -22,14 +23,16 @@ class RRpostgres(RPackage): depends_on("r@3.1.0:", type=("build", "run")) depends_on("r-bit64", type=("build", "run")) depends_on("r-blob@1.2.0:", type=("build", "run")) + depends_on("r-cpp11", type=("build", "run"), when="@1.4.6:") depends_on("r-dbi@1.1.0:", type=("build", "run")) + depends_on("r-dbi@1.2.0:", type=("build", "run"), when="@1.4.7:") depends_on("r-hms@0.5.0:", type=("build", "run")) depends_on("r-hms@1.0.0:", type=("build", "run"), when="@1.4.3:") depends_on("r-lubridate", type=("build", "run")) - depends_on("r-rcpp@0.11.4.2:", type=("build", "run")) - depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@1.4.3:") depends_on("r-withr", type=("build", "run")) depends_on("r-plogr@0.2.0:", type=("build", "run")) depends_on("postgresql@9.0:") + depends_on("r-rcpp@0.11.4.2:", type=("build", "run"), when="@:1.4.5") + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@1.4.3:1.4.5") depends_on("r-bh", type=("build", "run"), when="@:1.3.1") diff --git a/var/spack/repos/builtin/packages/r-rpostgresql/package.py b/var/spack/repos/builtin/packages/r-rpostgresql/package.py index 74715c6c5d8a18..74cd1832a1e2d2 100644 --- a/var/spack/repos/builtin/packages/r-rpostgresql/package.py +++ b/var/spack/repos/builtin/packages/r-rpostgresql/package.py @@ -23,6 +23,7 @@ class RRpostgresql(RPackage): license("PostgreSQL") + version("0.7-6", sha256="385939708b6a3657663409f91e165ded0ff5268d1dc6225e0f9b34764baf2d2c") version("0.7-5", sha256="6b5401ee55bd948ae7bc84520d789ceb422533a7d5e5bd6e10e3b54447f29fa1") version("0.7-4", sha256="b6adf60094f2b03dff1959147cde7f61c2f4c4576d77b2a263c63f8e3cd556c6") version("0.7-3", sha256="bdbca10329aeb357f05364772964716dfb5ce2470f7eb4a33770862b6ded71b9") diff --git a/var/spack/repos/builtin/packages/r-rprojroot/package.py b/var/spack/repos/builtin/packages/r-rprojroot/package.py index 0d6bea6d61b240..3d081b81fcdd29 100644 --- a/var/spack/repos/builtin/packages/r-rprojroot/package.py +++ b/var/spack/repos/builtin/packages/r-rprojroot/package.py @@ -17,6 +17,7 @@ class RRprojroot(RPackage): license("MIT") + version("2.0.4", sha256="b5f463fb25a24dac7a4ca916be57dbe22b5262e1f41e53871ca83e57d4336e99") version("2.0.3", sha256="50604247470e910cecfe9b76df754bf96a0d701f81b732f7aa9c90a20d30f897") version("2.0.2", sha256="5fa161f0d4ac3b7a99dc6aa2d832251001dc92e93c828593a51fe90afd019e1f") version("1.3-2", sha256="df5665834941d8b0e377a8810a04f98552201678300f168de5f58a587b73238b") diff --git a/var/spack/repos/builtin/packages/r-rrblup/package.py b/var/spack/repos/builtin/packages/r-rrblup/package.py index 85db94fb3ef34a..0759a2f0a34314 100644 --- a/var/spack/repos/builtin/packages/r-rrblup/package.py +++ b/var/spack/repos/builtin/packages/r-rrblup/package.py @@ -17,6 +17,7 @@ class RRrblup(RPackage): cran = "rrBLUP" + version("4.6.3", sha256="cd2a257ecb8252f352fd09189b538db62e4de4a51091cf392c18966c3f0c80cd") version("4.6.2", sha256="860f5e3f889593b6737f386743a2679322ec7d3557bea8e25482fd6cb745adff") version("4.6.1", sha256="e9230e74cc430a83ac5567071cb1c7f00b35c368f7d79bcc1cfde7225446c4db") version("4.6", sha256="28b475a1466fcdc1780caace75cf34155338fda496cebd5799315598a4bc84af") diff --git a/var/spack/repos/builtin/packages/r-rrcov/package.py b/var/spack/repos/builtin/packages/r-rrcov/package.py index a0822cb4e6725c..71895d0cf2bf46 100644 --- a/var/spack/repos/builtin/packages/r-rrcov/package.py +++ b/var/spack/repos/builtin/packages/r-rrcov/package.py @@ -23,6 +23,7 @@ class RRrcov(RPackage): license("GPL-3.0-or-later") + version("1.7-6", sha256="b8a2c07c42e4e76e9f90cb016cb72a40f6d2ce1f10d1753c06e3344f38e148de") version("1.7-2", sha256="0f01ed07cbc9e55dfcba27040a3f72237fb2fb86eda899472c2f96500220ecae") version("1.7-1", sha256="e115a09997b46c7eed33017f748632c7d50a95ad621f1f452f22dfc714c9a4e5") version("1.7-0", sha256="cbcca84a82d63fa50556aa8db29312b9bb588a638eb306ce4a81c271529228fd") diff --git a/var/spack/repos/builtin/packages/r-rrpp/package.py b/var/spack/repos/builtin/packages/r-rrpp/package.py index b9de4ebda6b3aa..a0e839f3c535b4 100644 --- a/var/spack/repos/builtin/packages/r-rrpp/package.py +++ b/var/spack/repos/builtin/packages/r-rrpp/package.py @@ -25,6 +25,7 @@ class RRrpp(RPackage): cran = "RRPP" + version("2.0.3", sha256="ff70976d4656c39bb02d842668c4d283bc2a26294d3aa2c6590f86a87fd8a2b5") version("1.3.1", sha256="50c7d4b20fb84088b0440c2f55ed146bcb35b0d9dda8581dca28e30b2fecbcd5") version("1.2.3", sha256="6eee638af94d69d4dd471a5e01243622dedef3c0c95b3363e21e8e11f0ea564c") version("1.1.2", sha256="2b563f3db9e349abe481444f48a1a3e6bc1154de8259b7a7060ab588287e80c0") @@ -34,6 +35,7 @@ class RRrpp(RPackage): version("0.3.0", sha256="34fea6ce7a78e4f38398d3b99585bab11a8171bc8b9a4e461b6d984ed1373739") depends_on("r@3.5.0:", type=("build", "run"), when="@0.6.2:") + depends_on("r@4.4.0:", type=("build", "run"), when="@2.0.3:") depends_on("r-ape", type=("build", "run"), when="@0.6.2:") depends_on("r-ggplot2", type=("build", "run"), when="@1.1.2:") depends_on("r-matrix", type=("build", "run"), when="@1.1.2:") diff --git a/var/spack/repos/builtin/packages/r-rsconnect/package.py b/var/spack/repos/builtin/packages/r-rsconnect/package.py index 2e5b56d586480f..bb7db9df32d842 100644 --- a/var/spack/repos/builtin/packages/r-rsconnect/package.py +++ b/var/spack/repos/builtin/packages/r-rsconnect/package.py @@ -17,6 +17,7 @@ class RRsconnect(RPackage): license("GPL-2.0-only") + version("1.3.1", sha256="47de8a832da493e2a1b3243fb42459a53eb193f75a1143348b7d8c7478cb5557") version("0.8.29", sha256="852899d2aaf90bcedf4d191a9e00c770e8ee4233235169fc97e6aa636de01c43") version("0.8.28", sha256="25b9a947772ada9593da5c48297b7a7dd0e11aa73fbb9a282631c75ec49616e0") version("0.8.27", sha256="0a44d5605fc7cd6855ea0235d662e4a323a24a2c214cc4f1696afbca3a8f169c") @@ -25,13 +26,19 @@ class RRsconnect(RPackage): version("0.8.17", sha256="64767a4d626395b7871375956a9f0455c3d64ff6e779633b0e554921d85da231") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-curl", type=("build", "run")) + depends_on("r-cli", type=("build", "run"), when="@1.0.0:") depends_on("r-digest", type=("build", "run")) depends_on("r-jsonlite", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.0.0:") depends_on("r-openssl", type=("build", "run")) depends_on("r-openssl@2.0.0:", type=("build", "run"), when="@0.8.26:") depends_on("r-packrat@0.6:", type=("build", "run"), when="@0.8.18:") depends_on("r-packrat@0.5:", type=("build", "run")) depends_on("r-packrat@0.6:", type=("build", "run"), when="@0.8.26:") + depends_on("r-pki", type=("build", "run"), when="@1.2.2:") + depends_on("r-renv@1.0.0:", type=("build", "run"), when="@1.0.0:") + depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.0.0:") depends_on("r-rstudioapi@0.5:", type=("build", "run")) depends_on("r-yaml@2.1.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rsnns/package.py b/var/spack/repos/builtin/packages/r-rsnns/package.py index 75c5dd094b63ff..a0323c1d768351 100644 --- a/var/spack/repos/builtin/packages/r-rsnns/package.py +++ b/var/spack/repos/builtin/packages/r-rsnns/package.py @@ -20,6 +20,7 @@ class RRsnns(RPackage): cran = "RSNNS" + version("0.4-17", sha256="424557d7326889e09e31e04d2a9b7224bed0bb4aa6f9e5433d7ce4fe04a35afc") version("0.4-15", sha256="4a4286444f50b28fb6294b8b49250fa6c43c8fddf2ee0550a3ae59a4212ec1b3") version("0.4-14", sha256="7f6262cb2b49b5d5979ccce9ded9cbb2c0b348fd7c9eabc1ea1d31c51a102c20") version("0.4-12", sha256="b18dfeda71573bc92c6888af72da407651bff7571967965fd3008f0d331743b9") diff --git a/var/spack/repos/builtin/packages/r-rspectra/package.py b/var/spack/repos/builtin/packages/r-rspectra/package.py index 76a264fd1cf995..68b56dff7d8747 100644 --- a/var/spack/repos/builtin/packages/r-rspectra/package.py +++ b/var/spack/repos/builtin/packages/r-rspectra/package.py @@ -22,6 +22,7 @@ class RRspectra(RPackage): cran = "RSpectra" + version("0.16-2", sha256="a2f149d79519fee79dabe1b174dfb847a916045315d5927a93cc6b005522aa7e") version("0.16-1", sha256="cba5d3403d6a7d0e27abf6279fbfea6e0d0fe36b28c688bbadb8eafb3841329a") version("0.16-0", sha256="aaf1cfc9ffe3a4c6684247899924e1c18306971dfef4bae1dc596a2fb42a64a9") version("0.15-0", sha256="1ad5698201007044a0420cb10b7c48e94312a8a1d22b9d946d5de1c6743969a9") diff --git a/var/spack/repos/builtin/packages/r-rsqlite/package.py b/var/spack/repos/builtin/packages/r-rsqlite/package.py index f81bdf06ac0704..2fe5dcc456480e 100644 --- a/var/spack/repos/builtin/packages/r-rsqlite/package.py +++ b/var/spack/repos/builtin/packages/r-rsqlite/package.py @@ -15,6 +15,7 @@ class RRsqlite(RPackage): cran = "RSQLite" + version("2.3.7", sha256="25e0572589e64264fe4e5d0495f5d85d977bacbb93a3fc631ede5b078db294ce") version("2.3.1", sha256="9ed23e160c401c14e41c40e9930f72697172b2c72933c2d2725a05e81e1f34ca") version("2.2.18", sha256="62196adb62ad8ec73ddce573e5391686e9359566e365b123ac4f299809944bea") version("2.2.14", sha256="2ae36a875ebc02497985b2ad9ddc6a5434f576e2ab25769580749d9e4f3b607c") @@ -30,6 +31,8 @@ class RRsqlite(RPackage): depends_on("r-blob@1.2.0:", type=("build", "run")) depends_on("r-dbi@1.0.0:", type=("build", "run")) depends_on("r-dbi@1.1.0:", type=("build", "run"), when="@2.2.10:") + depends_on("r-dbi@1.2.0:", type=("build", "run"), when="@2.3.5:") + depends_on("r-rlang", type=("build", "run"), when="@2.3.4:") depends_on("r-memoise", type=("build", "run")) depends_on("r-pkgconfig", type=("build", "run")) depends_on("r-plogr@0.2.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-rstan/package.py b/var/spack/repos/builtin/packages/r-rstan/package.py index 00da44c08d40ce..713ff0a2252655 100644 --- a/var/spack/repos/builtin/packages/r-rstan/package.py +++ b/var/spack/repos/builtin/packages/r-rstan/package.py @@ -23,6 +23,7 @@ class RRstan(RPackage): license("GPL-3.0-or-later") + version("2.32.6", sha256="3390d00191bbd3b0739dd19fe437b99a041a6b04be208877b48419d1348a1a70") version("2.21.8", sha256="b2d4edc315419037970c9fa2e8740b934966d88d40548152811f3d4a28475075") version("2.21.7", sha256="4495221310d390925b665c32e05ffabd3ae8857225bda65131a7ed2be41d6d45") version("2.21.5", sha256="86e4fe562d8ddcd0b02336f35a420fa8786dd21de7ca2bebb4ed6e9c252bb9ea") @@ -38,18 +39,29 @@ class RRstan(RPackage): depends_on("r@3.4.0:", type=("build", "run"), when="@2.18.1:") depends_on("r-stanheaders@2.18.1:", type=("build", "run")) depends_on("r-stanheaders@2.21.0:", type=("build", "run"), when="@2.21.2:") + depends_on("r-stanheaders@2.32.0:", type=("build", "run"), when="@2.26.23:") depends_on("r-ggplot2@2.0.0:", type=("build", "run")) depends_on("r-ggplot2@3.0.0:", type=("build", "run"), when="@2.21.2:") + depends_on("r-ggplot2@3.3.5:", type=("build", "run"), when="@2.26.23:") depends_on("r-inline", type=("build", "run")) + depends_on("r-inline@0.3.19:", type=("build", "run"), when="@2.26.23:") depends_on("r-gridextra@2.0.0:", type=("build", "run")) + depends_on("r-gridextra@2.3:", type=("build", "run"), when="@2.26.23:") depends_on("r-rcpp@0.12.0:", type=("build", "run")) + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@2.26.23:") depends_on("r-rcppparallel@5.0.1:", type=("build", "run"), when="@2.21.2:") + depends_on("r-rcppparallel@5.1.4:", type=("build", "run"), when="@2.26.23:") depends_on("r-loo@2.0.0:", type=("build", "run"), when="@2.18:") depends_on("r-loo@2.3.0:", type=("build", "run"), when="@2.21.2:") + depends_on("r-loo@2.4.1:", type=("build", "run"), when="@2.26.23:") depends_on("r-pkgbuild", type=("build", "run"), when="@2.18:") + depends_on("r-pkgbuild@1.2.0:", type=("build", "run"), when="@2.26.23:") + depends_on("r-quickjsr", type=("build", "run"), when="@2.26.23:") depends_on("r-rcppeigen@0.3.3.3.0:", type=("build", "run")) + depends_on("r-rcppeigen@0.3.4.0.0:", type=("build", "run"), when="@2.26.23:") depends_on("r-bh@1.69.0:", type=("build", "run")) depends_on("r-bh@1.72.0-2:", type=("build", "run"), when="@2.21.2:") + depends_on("r-bh@1.75.0-0:", type=("build", "run"), when="@2.26.23:") depends_on("gmake", type="build") depends_on("pandoc", type="build") diff --git a/var/spack/repos/builtin/packages/r-rstantools/package.py b/var/spack/repos/builtin/packages/r-rstantools/package.py index f2acce430cbe20..ab14cf382e075d 100644 --- a/var/spack/repos/builtin/packages/r-rstantools/package.py +++ b/var/spack/repos/builtin/packages/r-rstantools/package.py @@ -19,6 +19,7 @@ class RRstantools(RPackage): license("GPL-3.0-or-later") + version("2.4.0", sha256="bff72ca2f0352c6c5d2868823e286fdb73a6ead74508a4124cbcb222c83b4faa") version("2.3.1", sha256="82d4f2e884ffc894463bd37765606d5a9bef2ee631758840ec58636acdca6975") version("2.2.0", sha256="cb810baeb90c67668361b666c6862df9917aff6aaec63d2c3a485f28407c4eb7") version("2.1.1", sha256="c95b15de8ec577eeb24bb5206e7b685d882f88b5e6902efda924b7217f463d2d") diff --git a/var/spack/repos/builtin/packages/r-rstudioapi/package.py b/var/spack/repos/builtin/packages/r-rstudioapi/package.py index f581b5dd5c3363..3f56a5135e58e1 100644 --- a/var/spack/repos/builtin/packages/r-rstudioapi/package.py +++ b/var/spack/repos/builtin/packages/r-rstudioapi/package.py @@ -16,6 +16,7 @@ class RRstudioapi(RPackage): license("MIT") + version("0.16.0", sha256="74ffa867199e87a54386fbd26919233371f314f73d7338dd4e4695708fed4fe6") version("0.14", sha256="469d0987b1ad728a96c363a422fba712a5cebc8b11a5f7e953b4a671044dafc4") version("0.13", sha256="aac35bbdcb4a8e8caba943bc8a2b98120e8940b80cd1020224bb1a26ff776d8b") version("0.11", sha256="13e07fb7e2eba8cf1d885db2721901d676d219a1042d7ef5d166125e4905306b") diff --git a/var/spack/repos/builtin/packages/r-rtsne/package.py b/var/spack/repos/builtin/packages/r-rtsne/package.py index 3949660dff7d42..48d9e44a322350 100644 --- a/var/spack/repos/builtin/packages/r-rtsne/package.py +++ b/var/spack/repos/builtin/packages/r-rtsne/package.py @@ -15,6 +15,7 @@ class RRtsne(RPackage): cran = "Rtsne" + version("0.17", sha256="3aae6814d6c6d406785145f07374135652f2b26a58690dfd4bfbc8365dc5590b") version("0.16", sha256="52a05adc826c28212e97d11c54eba3fec45d14eb52039c0f47f62a8e338ffbd5") version("0.15", sha256="56376e4f0a382fad3d3d40e2cb0562224be5265b827622bcd235e8fc63df276c") version("0.13", sha256="1c3bffe3bd11733ee4fe01749c293669daafda1af2ec74f9158f6080625b999d") diff --git a/var/spack/repos/builtin/packages/r-runit/package.py b/var/spack/repos/builtin/packages/r-runit/package.py index 9c88a53ce58972..8de30e09b9e7ec 100644 --- a/var/spack/repos/builtin/packages/r-runit/package.py +++ b/var/spack/repos/builtin/packages/r-runit/package.py @@ -16,6 +16,7 @@ class RRunit(RPackage): license("GPL-2.0-only") + version("0.4.33", sha256="b2a4c5afc7ef9534dac5006f6ef1b2af68630bb73eb74ef70ec7ed53dae6cb5f") version("0.4.32", sha256="23a393059989000734898685d0d5509ece219879713eb09083f7707f167f81f1") depends_on("r@2.5.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-runjags/package.py b/var/spack/repos/builtin/packages/r-runjags/package.py index c9343dbf9f0668..0bb9196c2a5f2b 100644 --- a/var/spack/repos/builtin/packages/r-runjags/package.py +++ b/var/spack/repos/builtin/packages/r-runjags/package.py @@ -24,6 +24,7 @@ class RRunjags(RPackage): license("GPL-2.0-only") + version("2.2.2-4", sha256="6f656e4d0620c0806e596ddb4bfec3934534ec17c02da699fcbfd6720a6f424f") version("2.2.1-7", sha256="e81fdb15e59cdceda125d6ae7cf0cde93361ba80b123d51afd1ecdc993f25016") version("2.2.0-3", sha256="1b1fc0b0cfecf9ecdecc3abcba804cdc114b3c5352d5cc801602deeca90db528") version("2.2.0-2", sha256="e5dfeb83d36faf19ebe64429f6db64aedecf3c9a040fd5bf9c0200914bf5039a") diff --git a/var/spack/repos/builtin/packages/r-rvest/package.py b/var/spack/repos/builtin/packages/r-rvest/package.py index 0e3cb2b544c956..a1104d8d0feb26 100644 --- a/var/spack/repos/builtin/packages/r-rvest/package.py +++ b/var/spack/repos/builtin/packages/r-rvest/package.py @@ -16,6 +16,7 @@ class RRvest(RPackage): license("MIT") + version("1.0.4", sha256="7d707c6b2994cf7b6c1d665bec872d2ef5c55f30e7c343c447a8a386a6049ca6") version("1.0.3", sha256="a465ef7391afaa3c26eebe8c61db02314ac04c4d8de5aa53f090716763d21c1e") version("1.0.2", sha256="89bb477e0944c80298a52ccf650db8f6377fd7ed3c1bc7034d000f695fdf05a4") version("0.3.6", sha256="6a2ee3a25d2d738031edbc1b5e2410f2a4538dfbb9705af145f9039504b902fa") @@ -26,15 +27,19 @@ class RRvest(RPackage): depends_on("r@3.0.1:", type=("build", "run")) depends_on("r@3.1:", type=("build", "run"), when="@0.3.3") depends_on("r@3.2:", type=("build", "run"), when="@0.3.4:") + depends_on("r@3.6:", type=("build", "run"), when="@1.0.4:") depends_on("r-cli", type=("build", "run"), when="@1.0.3:") depends_on("r-glue", type=("build", "run"), when="@1.0.3:") depends_on("r-httr@0.5:", type=("build", "run")) depends_on("r-lifecycle@1.0.0:", type=("build", "run"), when="@1:") + depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@1.0.4:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.0.3:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.0.4:") depends_on("r-selectr", type=("build", "run")) depends_on("r-tibble", type=("build", "run"), when="@1:") depends_on("r-xml2", type=("build", "run")) depends_on("r-xml2@1.3:", type=("build", "run"), when="@1:") - depends_on("r-withr", type=("build", "run"), when="@1.0.3:") + + depends_on("r-withr", type=("build", "run"), when="@1.0.3") diff --git a/var/spack/repos/builtin/packages/r-rzmq/package.py b/var/spack/repos/builtin/packages/r-rzmq/package.py index 4d32899d5de6a2..5fc9d735d7f169 100644 --- a/var/spack/repos/builtin/packages/r-rzmq/package.py +++ b/var/spack/repos/builtin/packages/r-rzmq/package.py @@ -17,6 +17,7 @@ class RRzmq(RPackage): license("GPL-3.0-only") + version("0.9.13", sha256="8d603543b23a0b78352b4995c90c03d00686fef1d7a25004b66690191fb463f1") version("0.9.8", sha256="815a7eb502b1da3a84246b2dfb6594ca3f241a8675783e6bcdbbf9c952ec1c53") version("0.9.7", sha256="5f47b67b75fd4a230780406f7a55a3708ce8c014cff755a809a6bfa1a6925a45") version("0.9.6", sha256="80a3fc6eb6f7851224c4cd5e219ca4db0286551ad429359d4df853ccb9234316") diff --git a/var/spack/repos/builtin/packages/r-s2/package.py b/var/spack/repos/builtin/packages/r-s2/package.py index bf4d851e0854de..5555d6062d6f21 100644 --- a/var/spack/repos/builtin/packages/r-s2/package.py +++ b/var/spack/repos/builtin/packages/r-s2/package.py @@ -20,6 +20,7 @@ class RS2(RPackage): license("Apache-2.0") + version("1.1.7", sha256="30762c7150dd72e2f4a3d50e64b8b73b2d59b73275687ba3eea7a6e07f786878") version("1.1.2", sha256="8fb237531c6f4aa5b78fbe36d4fd15bfe852c1308fed58b04b3dae2bb73c0b57") version("1.1.0", sha256="e3aae968538fe80db5b3325474dd9d8ff7f0452b6c606d049a3cac72732ac416") version("1.0.7", sha256="2010c1c6ae29938ec9cd153a8b2c06a333ea4d647932369b2fc7d0c68d6d9e3f") diff --git a/var/spack/repos/builtin/packages/r-sandwich/package.py b/var/spack/repos/builtin/packages/r-sandwich/package.py index 808fae8fb70309..a4729a707dbb1a 100644 --- a/var/spack/repos/builtin/packages/r-sandwich/package.py +++ b/var/spack/repos/builtin/packages/r-sandwich/package.py @@ -27,6 +27,7 @@ class RSandwich(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("3.1-0", sha256="96b0e105ee50391a1fd286e9556ba6669f08565fa30788b1a21bc861b0a023fa") version("3.0-2", sha256="6e30b6b554eb19430a60c45a8132fb7918ddb0013577bf6a62caeb163bdfe2b4") version("3.0-1", sha256="f6584b7084f3223bbc0c4722f53280496be73849747819b0cb4e8f3910284a89") version("3.0-0", sha256="828fe53b5e09db5015efd529b2db4dcd40251bce110fea7b0b219fa9ac36d529") diff --git a/var/spack/repos/builtin/packages/r-sass/package.py b/var/spack/repos/builtin/packages/r-sass/package.py index 4ac8e74774c482..e6a3fbd54743a2 100644 --- a/var/spack/repos/builtin/packages/r-sass/package.py +++ b/var/spack/repos/builtin/packages/r-sass/package.py @@ -18,12 +18,14 @@ class RSass(RPackage): license("MIT") + version("0.4.9", sha256="e133049aad7964e0f6150257e1470b3748f36029322265ee797b8caf7517d4d2") version("0.4.5", sha256="eba161d982d2db108c8c0b61ec6b41a20d3adec430c7cc39537ab388c1007a90") version("0.4.2", sha256="b409049d0de9fae853f46c19d353226c8e9244ce847bdada033d8669fc2c9646") version("0.4.1", sha256="850fcb6bd49085d5afd25ac18da0744234385baf1f13d8c0a320f4da2de608bb") version("0.4.0", sha256="7d06ca15239142a49e88bb3be494515abdd8c75f00f3f1b0ee7bccb55019bc2b") depends_on("r-fs", type=("build", "run")) + depends_on("r-fs@1.2.4:", type=("build", "run"), when="@0.4.7:") depends_on("r-rlang@0.4.10:", type=("build", "run")) depends_on("r-htmltools@0.5.1:", type=("build", "run")) depends_on("r-r6", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-satellite/package.py b/var/spack/repos/builtin/packages/r-satellite/package.py index c5bb5a77ba2f5e..e3ece86c2a4498 100644 --- a/var/spack/repos/builtin/packages/r-satellite/package.py +++ b/var/spack/repos/builtin/packages/r-satellite/package.py @@ -25,6 +25,7 @@ class RSatellite(RPackage): license("MIT") + version("1.0.5", sha256="3e4c382f905eb0b2d84f03423af2960854e5cf94905a373c6ba3f41a2b72a1ad") version("1.0.4", sha256="99e79577a70489930c32da46ac26453af53e21c2d3a99f51fbf1f55f2d80dc7c") version("1.0.2", sha256="6447476bd31216e5abe504221e465677954d07419b4174ab4f4e4f7a197969c5") diff --git a/var/spack/repos/builtin/packages/r-scales/package.py b/var/spack/repos/builtin/packages/r-scales/package.py index 38e64733b39619..02ca38d3bb6f2c 100644 --- a/var/spack/repos/builtin/packages/r-scales/package.py +++ b/var/spack/repos/builtin/packages/r-scales/package.py @@ -28,7 +28,10 @@ class RScales(RPackage): depends_on("r@2.13:", type=("build", "run")) depends_on("r@3.1:", type=("build", "run"), when="@1.0.0:") depends_on("r@3.2:", type=("build", "run"), when="@1.1.1:") + depends_on("r@3.6:", type=("build", "run"), when="@1.3.0:") + depends_on("r-cli", type=("build", "run"), when="@1.3.0:") depends_on("r-farver@2.0.3:", type=("build", "run"), when="@1.1.1:") + depends_on("r-glue", type=("build", "run"), when="@1.3.0:") depends_on("r-labeling", type=("build", "run")) depends_on("r-lifecycle", type=("build", "run"), when="@1.1.1:") depends_on("r-munsell@0.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-scattermore/package.py b/var/spack/repos/builtin/packages/r-scattermore/package.py index 84f03f3dcf8f43..10c0964bdd2a68 100644 --- a/var/spack/repos/builtin/packages/r-scattermore/package.py +++ b/var/spack/repos/builtin/packages/r-scattermore/package.py @@ -16,6 +16,7 @@ class RScattermore(RPackage): license("GPL-3.0-or-later") + version("1.2", sha256="5534a87b0bdd1375f0fbffc1a5c980ad64e33a108435a67469b8324b580602d1") version("0.8", sha256="dbdd73d8261cb063464bb29d5c17733b7e87bc50a19948bc80439e19f2a9f8e5") version("0.7", sha256="f36280197b8476314d6ce81a51c4ae737180b180204043d2937bc25bf3a5dfa2") diff --git a/var/spack/repos/builtin/packages/r-scatterpie/package.py b/var/spack/repos/builtin/packages/r-scatterpie/package.py index 6fdd0ba32c9a13..106a5a1eced932 100644 --- a/var/spack/repos/builtin/packages/r-scatterpie/package.py +++ b/var/spack/repos/builtin/packages/r-scatterpie/package.py @@ -15,12 +15,14 @@ class RScatterpie(RPackage): license("Artistic-2.0") + version("0.2.3", sha256="704f1072ff934729aefdd659e5c81e62b59f5ae94dc36a1e1f52085dce896447") version("0.1.9", sha256="517fd6cc297aa33f0fbb2643e35ca41dc971166ea2e8ed78460bd4ef7a77a687") version("0.1.8", sha256="a6ccc63a8be63fa113704cf5d4893c1ec1b75d3081ab971bd70e650e708872a0") version("0.1.7", sha256="3f7807519cfe135066ca79c8d8a09b59da9aa6d8aaee5e9aff40cca3d0bebade") version("0.1.5", sha256="e13237b7effc302acafc1c9b520b4904e55875f4a3b804f653eed2940ca08840") depends_on("r@3.4.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@0.2.0:") depends_on("r-ggplot2", type=("build", "run")) depends_on("r-ggforce", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py index f9f96803ee60b3..a7de5b624cf226 100644 --- a/var/spack/repos/builtin/packages/r-scatterplot3d/package.py +++ b/var/spack/repos/builtin/packages/r-scatterplot3d/package.py @@ -15,6 +15,7 @@ class RScatterplot3d(RPackage): license("GPL-2.0-only") + version("0.3-44", sha256="1c9c08348c3ed925f59df40cb73accc9e1a169ccfb1e8571f105f40fa98e6ec2") version("0.3-43", sha256="90d7bfb535b76008768306ea9209adfb48e0e07f36eabbb59ab6ddb6522f16a5") version("0.3-42", sha256="a9fedde70e1a846c4dcafbff20f115425206d507896d12c2b21ff052556c5216") version("0.3-41", sha256="4c8326b70a3b2d37126ca806771d71e5e9fe1201cfbe5b0d5a0a83c3d2c75d94") diff --git a/var/spack/repos/builtin/packages/r-sctransform/package.py b/var/spack/repos/builtin/packages/r-sctransform/package.py index 345c4d9a2aa82d..5444c52fc84bf4 100644 --- a/var/spack/repos/builtin/packages/r-sctransform/package.py +++ b/var/spack/repos/builtin/packages/r-sctransform/package.py @@ -20,6 +20,7 @@ class RSctransform(RPackage): license("GPL-3.0-only OR custom") + version("0.4.1", sha256="5f6be7f8be543e4c32c8007207b603a750881459370b7bb5afd63e8c8fabf171") version("0.3.5", sha256="c08e56df05d64ed04ee53eb9e1d4d321da8aff945e36d56db1d5ceb1cd7e6e0b") version("0.3.3", sha256="83af125c40f211e1ddae5098f88766aea1453c02ae98486081f3efadb3620b2b") version("0.3.2", sha256="5dbb0a045e514c19f51bbe11c2dba0b72dca1942d6eb044c36b0538b443475dc") @@ -28,6 +29,7 @@ class RSctransform(RPackage): depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.1.0:", type=("build", "run"), when="@0.3.2:") depends_on("r@3.5.0:", type=("build", "run"), when="@0.3.3:") + depends_on("r@3.6.0:", type=("build", "run"), when="@0.4.0:") depends_on("r-dplyr", type=("build", "run"), when="@0.3.3:") depends_on("r-magrittr", type=("build", "run"), when="@0.3.3:") depends_on("r-mass", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-segmented/package.py b/var/spack/repos/builtin/packages/r-segmented/package.py index 71a2c7cf9910ad..b546891122c302 100644 --- a/var/spack/repos/builtin/packages/r-segmented/package.py +++ b/var/spack/repos/builtin/packages/r-segmented/package.py @@ -22,6 +22,7 @@ class RSegmented(RPackage): license("GPL-2.0-or-later") + version("2.1-1", sha256="6723b0114b1142a7587f712d7a58ce0bebfb53864b84fa1e5d9d7824b17903dd") version("1.6-4", sha256="472c08ae3eb1c4e784aba45f3e745b0e946bef77c26fbb9f103fd35e1a349191") version("1.6-1", sha256="f609ca311c8ca45a7b0776b47d9df06aa175c4f17f8e7e9b33c64902ee00d56f") version("1.6-0", sha256="6baf7f0a4f5d37b945312d28fcbca47cc3c171d097c43a28cf7ffc998a4ce569") @@ -33,5 +34,6 @@ class RSegmented(RPackage): version("0.5-2.2", sha256="3aa7136370dd77911ba8e061b5215560d120bc71f355eeadc0856389dfecb2f1") version("0.5-1.4", sha256="b1dc5f79ccc076c2943b15fe4f339368afa241797b7e80c91b62132cfa66809c") + depends_on("r@3.5.0:", type=("build", "run"), when="@2.0-3:") depends_on("r-mass", type=("build", "run"), when="@1.4-0:") depends_on("r-nlme", type=("build", "run"), when="@1.6-0:") diff --git a/var/spack/repos/builtin/packages/r-seqinr/package.py b/var/spack/repos/builtin/packages/r-seqinr/package.py index dd12e8fa2aac44..7bf921e774099e 100644 --- a/var/spack/repos/builtin/packages/r-seqinr/package.py +++ b/var/spack/repos/builtin/packages/r-seqinr/package.py @@ -18,6 +18,7 @@ class RSeqinr(RPackage): license("GPL-2.0-or-later") + version("4.2-36", sha256="931a62a091a7aaaa5efadb1fe85f29e861e2506b75710ba3a6be9b58cb14b225") version("4.2-30", sha256="faf8fe533867eeef57fddfa6592e19d5984954d0670c6c7dbeab6411d55fee4b") version("4.2-16", sha256="c4f3253832fc255197bdce7b4dd381db606c6b787d2e888751b4963acf3a4032") version("4.2-8", sha256="584b34e9dec0320cef02096eb356a0f6115bbd24356cf62e67356963e9d5e9f7") diff --git a/var/spack/repos/builtin/packages/r-servr/package.py b/var/spack/repos/builtin/packages/r-servr/package.py index 9766f0b22b2441..cf8467a1a0f6af 100644 --- a/var/spack/repos/builtin/packages/r-servr/package.py +++ b/var/spack/repos/builtin/packages/r-servr/package.py @@ -17,6 +17,7 @@ class RServr(RPackage): license("GPL-2.0-or-later") + version("0.30", sha256="43f920161408871a042462b7c3353149a608941253541a19a9ce3408f9882d40") version("0.26", sha256="7588d7e00d5b2f77b0737f164f3d7b0ba7b1e8b60c0372a1d6452096e2d2031c") version("0.25", sha256="e6ae0d4c09e9037268b1c291c36c93ba0a74c31fe2fcb1f0652b2ae9fca5e73c") version("0.24", sha256="d94e1d31802ce6bbab7a5838ff94cbca8cd998237d834ff25fedf7514f41a087") @@ -26,4 +27,5 @@ class RServr(RPackage): depends_on("r-mime@0.2:", type=("build", "run")) depends_on("r-httpuv@1.5.2:", type=("build", "run")) depends_on("r-xfun", type=("build", "run")) + depends_on("r-xfun@0.42:", type=("build", "run"), when="@0.29:") depends_on("r-jsonlite", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-sets/package.py b/var/spack/repos/builtin/packages/r-sets/package.py index 308610786d0004..77484ffb9274e1 100644 --- a/var/spack/repos/builtin/packages/r-sets/package.py +++ b/var/spack/repos/builtin/packages/r-sets/package.py @@ -19,6 +19,7 @@ class RSets(RPackage): license("GPL-2.0-only") + version("1.0-25", sha256="5ca469218f9679f2372e33e56f781b52947ccbedf730b91a2d3a572993c024f4") version("1.0-24", sha256="e75733f5c9418eb09fb950a4a94ccf84ddd88231c61ee80d02b7f0917debcac9") version("1.0-23", sha256="e5b6bc52060421c572d7f2d99b25909a38eacabd5344a47e1cdb2662c62d690b") version("1.0-22", sha256="6fbf9aa6b0113a58e04f803ab35593feabb0fb55d486d54afb59e027008f9ec6") @@ -53,4 +54,4 @@ class RSets(RPackage): version("0.1", sha256="18dda6c9d526a2f41f2b49a472fb27a7f1bb9ce6ea137b8963e8ad6c378825d0") depends_on("r@2.6:", type=("build", "run"), when="@0.1:") - depends_on("r@2.7:", type=("build", "run"), when="@0.1-2:") + depends_on("r@2.7.0:", type=("build", "run"), when="@0.1-2:") diff --git a/var/spack/repos/builtin/packages/r-seurat/package.py b/var/spack/repos/builtin/packages/r-seurat/package.py index f8483751fccf5c..0af2d89f458776 100644 --- a/var/spack/repos/builtin/packages/r-seurat/package.py +++ b/var/spack/repos/builtin/packages/r-seurat/package.py @@ -19,6 +19,7 @@ class RSeurat(RPackage): cran = "Seurat" + version("5.1.0", sha256="adcfb43d7a8cc55eaa7a0954a082ac95e14059a82901913379bfec115e224d59") version("4.3.0", sha256="7ebacb3b86f74279de60b597f9a6e728f0668719811b0dca3425d21762fff97c") version("4.2.1", sha256="410238b6ca147451b43800a6e49c132fa5f6aacfe6b93b39a1e4d61257a9e35e") version("4.2.0", sha256="22a3d22a9ba255c4db5b37339b183fdfb91e2d37a8b8d58a9ff45b1bc414ebef") @@ -37,9 +38,11 @@ class RSeurat(RPackage): depends_on("r@4.0.0:", type=("build", "run"), when="@4.1.0:") depends_on("r-cluster", type=("build", "run"), when="@2.3.0:") depends_on("r-cowplot", type=("build", "run")) + depends_on("r-fastdummies", type=("build", "run"), when="@5.0.0:") depends_on("r-fitdistrplus", type=("build", "run"), when="@2.3.0:") depends_on("r-future", type=("build", "run"), when="@3.0.0:") depends_on("r-future-apply", type=("build", "run"), when="@3.0.0:") + depends_on("r-generics@0.1.3:", type=("build", "run"), when="@5.0.0:") depends_on("r-ggplot2@3.0.0:", type=("build", "run")) depends_on("r-ggplot2@3.3.0:", type=("build", "run"), when="@3.2.3:") depends_on("r-ggrepel", type=("build", "run"), when="@3.0.0:") @@ -51,6 +54,7 @@ class RSeurat(RPackage): depends_on("r-jsonlite", type=("build", "run"), when="@3.2.3:") depends_on("r-kernsmooth", type=("build", "run"), when="@3.0.0:") depends_on("r-leiden@0.3.1:", type=("build", "run"), when="@3.1.0:") + depends_on("r-lifecycle", type=("build", "run"), when="@5.0.0:") depends_on("r-lmtest", type=("build", "run"), when="@2.3.0:") depends_on("r-mass", type=("build", "run")) depends_on("r-matrix@1.2-14:", type=("build", "run")) @@ -63,27 +67,34 @@ class RSeurat(RPackage): depends_on("r-plotly@4.9.0:", type=("build", "run"), when="@3.2.3:") depends_on("r-png", type=("build", "run"), when="@2.3.0:") depends_on("r-progressr", type=("build", "run"), when="@4.3.0:") + depends_on("r-purrr", type=("build", "run"), when="@4.4.0:") depends_on("r-rann", type=("build", "run"), when="@2.3.0:") depends_on("r-rcolorbrewer", type=("build", "run")) depends_on("r-rcpp@0.11.0:", type=("build", "run")) depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@4.1.0:") depends_on("r-rcppannoy", type=("build", "run"), when="@3.1.0:") depends_on("r-rcppannoy@0.0.18:", type=("build", "run"), when="@4.1.0:") + depends_on("r-rcpphnsw", type=("build", "run"), when="@5.0.0:") depends_on("r-reticulate", type=("build", "run"), when="@2.3.1:") depends_on("r-rlang", type=("build", "run"), when="@3.0.0:") depends_on("r-rocr", type=("build", "run")) + depends_on("r-rspectra", type=("build", "run"), when="@5.0.0:") depends_on("r-rtsne", type=("build", "run")) depends_on("r-scales", type=("build", "run"), when="@3.0.0:") depends_on("r-scattermore@0.7:", type=("build", "run"), when="@3.2.3:") + depends_on("r-scattermore@1.2:", type=("build", "run"), when="@4.4.0:") depends_on("r-sctransform@0.2.0:", type=("build", "run"), when="@3.0.0:") depends_on("r-sctransform@0.3.1:", type=("build", "run"), when="@3.2.3:") depends_on("r-sctransform@0.3.3:", type=("build", "run"), when="@4.1.0:") depends_on("r-sctransform@0.3.4:", type=("build", "run"), when="@4.2.0:") depends_on("r-sctransform@0.3.5:", type=("build", "run"), when="@4.2.1:") + depends_on("r-sctransform@0.4.0:", type=("build", "run"), when="@4.4.0:") + depends_on("r-sctransform@0.4.1:", type=("build", "run"), when="@5.0.0:") depends_on("r-seuratobject@4.0.4:", type=("build", "run"), when="@4.1.0:") depends_on("r-seuratobject@4.1.0:", type=("build", "run"), when="@4.1.1:") depends_on("r-seuratobject@4.1.2:", type=("build", "run"), when="@4.2.0:") depends_on("r-seuratobject@4.1.3:", type=("build", "run"), when="@4.2.1:") + depends_on("r-seuratobject@5.0.2:", type=("build", "run"), when="@5.0.0:") depends_on("r-shiny", type=("build", "run"), when="@3.2.3:") depends_on("r-spatstat-explore", type=("build", "run"), when="@4.2.1:") depends_on("r-spatstat-geom", type=("build", "run"), when="@4.1.0:") diff --git a/var/spack/repos/builtin/packages/r-seuratobject/package.py b/var/spack/repos/builtin/packages/r-seuratobject/package.py index 74d32ae36f8f4c..8240e6ccaaa7c1 100644 --- a/var/spack/repos/builtin/packages/r-seuratobject/package.py +++ b/var/spack/repos/builtin/packages/r-seuratobject/package.py @@ -20,20 +20,26 @@ class RSeuratobject(RPackage): cran = "SeuratObject" + version("5.0.2", sha256="ded30d21f445b7e353fe4a0c4954d45ad19fbe162615d9addf6732f9318ba0cf") version("4.1.3", sha256="585d2754f6165a367f0f458523f0a25d4d4160c929c931b27c5603cc6bd986d3") version("4.1.2", sha256="6a5945f501b573dbe44a15e7d969e63fd5be0c4f8e9d716b71ca29f695236d0d") version("4.1.0", sha256="9ca406cb3bd95c588e1a81c5383e3173a446cc0667142b139ca32685b4b20a05") version("4.0.4", sha256="585261b7d2045193accf817a29e2e3356e731f57c554bed37d232fa49784088c") depends_on("r@4.0.0:", type=("build", "run")) + depends_on("r@4.1.0:", when="@5.0.2:", type=("build", "run")) depends_on("r-future", type=("build", "run"), when="@4.1.0:") depends_on("r-future-apply", type=("build", "run"), when="@4.1.0:") + depends_on("r-generics", when="@5:", type=("build", "run")) + depends_on("r-lifecycle", when="@5:", type=("build", "run")) depends_on("r-matrix@1.3-3:", type=("build", "run")) depends_on("r-matrix@1.5-0:", type=("build", "run"), when="@4.1.2:") + depends_on("r-matrix@1.6-4:", when="@5.0.2:", type=("build", "run")) depends_on("r-progressr", type=("build", "run"), when="@4.1.0:") depends_on("r-rcpp@1.0.5:", type=("build", "run")) depends_on("r-sp", type=("build", "run"), when="@4.1.0:") depends_on("r-sp@1.5-0:", type=("build", "run"), when="@4.1.2:") + depends_on("r-spam", when="@5:", type=("build", "run")) depends_on("r-rlang@0.4.7:", type=("build", "run")) depends_on("r-rcppeigen", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-sf/package.py b/var/spack/repos/builtin/packages/r-sf/package.py index 8a98b2c2d69232..d122e494ef8ea4 100644 --- a/var/spack/repos/builtin/packages/r-sf/package.py +++ b/var/spack/repos/builtin/packages/r-sf/package.py @@ -19,6 +19,7 @@ class RSf(RPackage): license("GPL-2.0-only OR MIT") + version("1.0-16", sha256="e96e191011cdf2a073c773bdfc50ffd4a5d80f1da0ba1aa05db8015da45a9987") version("1.0-12", sha256="3778ebf58d824b1dfa6297ca8363714d5d85eda04c55ab2bf39597cac1d91287") version("1.0-9", sha256="85c0c71a0a64750281e79aa96e36d13e6285927008b2d37d699e52aba7d8013b") version("1.0-8", sha256="3ddc7090e79d6b5e3fad69e01254677ab5ec86a0b25e7e73493c8eac0ea98732") diff --git a/var/spack/repos/builtin/packages/r-sfheaders/package.py b/var/spack/repos/builtin/packages/r-sfheaders/package.py index 46d0172e3fbb24..12300042f5f804 100644 --- a/var/spack/repos/builtin/packages/r-sfheaders/package.py +++ b/var/spack/repos/builtin/packages/r-sfheaders/package.py @@ -17,11 +17,13 @@ class RSfheaders(RPackage): license("MIT") + version("0.4.4", sha256="f65ffe67b1d07beb6904b8960c66be684f5526b4d6450ab46c630c77e9b9bd07") version("0.4.2", sha256="ed9fb934c537fb6f126886f8e5997727de856e32fc3d38911b61a3a83faa7b2c") version("0.4.0", sha256="86bcd61018a0491fc8a1e7fb0422c918296287b82be299a79ccee8fcb515e045") depends_on("r-geometries@0.2.0:", type=("build", "run")) depends_on("r-geometries@0.2.2:", type=("build", "run"), when="@0.4.2:") + depends_on("r-geometries@0.2.4:", type=("build", "run"), when="@0.4.4:") depends_on("r-rcpp", type=("build", "run")) depends_on("r-rcpp@1.0.10:", type=("build", "run"), when="@0.4.2:") depends_on("r@3.0.2:", type=("build", "run"), when="@0.4.2:") diff --git a/var/spack/repos/builtin/packages/r-sfsmisc/package.py b/var/spack/repos/builtin/packages/r-sfsmisc/package.py index e024fa2f8be048..6c128a2ad1a8ec 100644 --- a/var/spack/repos/builtin/packages/r-sfsmisc/package.py +++ b/var/spack/repos/builtin/packages/r-sfsmisc/package.py @@ -23,6 +23,7 @@ class RSfsmisc(RPackage): license("GPL-2.0-or-later") + version("1.1-19", sha256="869931dd35d2e18cf2f960b86da2638b7a03c92288c6d7a736a10fa5585cf23b") version("1.1-15", sha256="4afa42cf83a287f62cac21741fc0559dee9dbd69dee59a740defce9a0e7c81e6") version("1.1-13", sha256="a81710357de2dcdaf00d9fa30a29cde0dd83616edc358452fd6105ea88f34218") version("1.1-12", sha256="9b12184a28fff87cacd0c3602d0cf63acb4d0f3049ad3a6ff16177f6df350782") diff --git a/var/spack/repos/builtin/packages/r-shadowtext/package.py b/var/spack/repos/builtin/packages/r-shadowtext/package.py index f7f9eefa0a5bfc..7d5a0ba9979ff0 100644 --- a/var/spack/repos/builtin/packages/r-shadowtext/package.py +++ b/var/spack/repos/builtin/packages/r-shadowtext/package.py @@ -16,6 +16,7 @@ class RShadowtext(RPackage): license("Artistic-2.0") + version("0.1.4", sha256="87d0bea90e0090dd40f7cd8c380d185a9d4112a32a729d31859eaeca0cd46ee8") version("0.1.2", sha256="253c4e737dbb302aa0729e5074e84cbfde2a73bfd7a0fd2c74b557cb728bae7d") version("0.1.1", sha256="eb06581d7ed06c963eee47548932688fd48eba70b3ebd2a7b41a6501d6e00006") version("0.0.7", sha256="6e32b1dfd3d4816803848b876666185258b888286ec3d3e8500499ec3eba31e8") diff --git a/var/spack/repos/builtin/packages/r-shape/package.py b/var/spack/repos/builtin/packages/r-shape/package.py index 338cebd9601a7f..cb9f17c6b992e7 100644 --- a/var/spack/repos/builtin/packages/r-shape/package.py +++ b/var/spack/repos/builtin/packages/r-shape/package.py @@ -16,10 +16,11 @@ class RShape(RPackage): license("GPL-3.0-or-later") + version("1.4.6.1", sha256="43f9bd0f997fd6cf1838efd8b2509c9a6396513f4e54a20360481634affd22a4") version("1.4.6", sha256="b9103e5ed05c223c8147dbe3b87a0d73184697343634a353a2ae722f7ace0b7b") version("1.4.5", sha256="094a79b8f42226189227fd7af71868e42106caa25a4d7f80a26977e8bc84189f") version("1.4.4", sha256="f4cb1b7d7c84cf08d2fa97f712ea7eb53ed5fa16e5c7293b820bceabea984d41") version("1.4.3", sha256="720f6ca9c70a39a3900af9d074bff864b18ac58013b21d48b779047481b93ded") version("1.4.2", sha256="c6c08ba9cc2e90e5c9d3d5223529b57061a041f637886ad7665b9fa27465637a") - depends_on("r@2.0.1:", type=("build", "run")) + depends_on("r@2.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-shiny/package.py b/var/spack/repos/builtin/packages/r-shiny/package.py index 91acdf5b46587f..1cc0eb3e3dab59 100644 --- a/var/spack/repos/builtin/packages/r-shiny/package.py +++ b/var/spack/repos/builtin/packages/r-shiny/package.py @@ -18,6 +18,7 @@ class RShiny(RPackage): license("GPL-3.0-only OR custom") + version("1.9.1", sha256="854b6a214f127d652de2e0e02d675fd53209b058c11911f56f8d41382ba654e3") version("1.8.1.1", sha256="a38d5fb5d750e2c2091ce9101f138c1f9bc7009bbb195227a3519c5d97e36753") version("1.7.4", sha256="bbfcdd7375013b8f59248b3f3f4e752acd445feb25179f3f7f65cd69614da4b5") version("1.7.3", sha256="b8ca9a39fa69ea9b270a7e9037198d95122c79bd493b865d909d343dd3523ada") @@ -57,7 +58,9 @@ class RShiny(RPackage): depends_on("r-commonmark@1.7:", type=("build", "run"), when="@1.5.0:") depends_on("r-glue@1.3.2:", type=("build", "run"), when="@1.5.0:") depends_on("r-bslib@0.3.0:", type=("build", "run"), when="@1.7.1:") + depends_on("r-bslib@0.6.0:", type=("build", "run"), when="@1.9.0:") depends_on("r-cachem", type=("build", "run"), when="@1.7.1:") + depends_on("r-cachem@1.1.0:", type=("build", "run"), when="@1.9.0:") depends_on("r-lifecycle@0.2.0:", type=("build", "run"), when="@1.7.1:") depends_on("r-digest", type=("build", "run"), when="@:1.5.0") diff --git a/var/spack/repos/builtin/packages/r-signac/package.py b/var/spack/repos/builtin/packages/r-signac/package.py index 0188ca933440a3..26001125b652f9 100644 --- a/var/spack/repos/builtin/packages/r-signac/package.py +++ b/var/spack/repos/builtin/packages/r-signac/package.py @@ -18,11 +18,13 @@ class RSignac(RPackage): cran = "Signac" + version("1.14.0", sha256="e0aad9e2c27c148fdd376081c2de1e3db46b1835eac83ef41fe562e08363c59e") version("1.9.0", sha256="b8ff36427e5919fd420daa1f50cf8c71935293ee7f88560041acb993b5e3afa8") version("1.8.0", sha256="9c4b123f4d077111c7e6dd1659483ada984300c8e923672ca924e46fb6a1dd06") version("1.7.0", sha256="5e4456eeab29fa2df7f6236b050dec8cb9c073d7652a89ee5030a27f94e5e4bf") depends_on("r@4.0.0:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@1.14.0:") depends_on("r-genomeinfodb@1.29.3:", type=("build", "run")) depends_on("r-genomicranges", type=("build", "run")) depends_on("r-iranges", type=("build", "run")) @@ -30,11 +32,13 @@ class RSignac(RPackage): depends_on("r-rsamtools", type=("build", "run")) depends_on("r-s4vectors", type=("build", "run")) depends_on("r-seuratobject@4.0.0:", type=("build", "run")) + depends_on("r-seuratobject@5.0.2:", type=("build", "run"), when="@1.14.0:") depends_on("r-data-table", type=("build", "run")) depends_on("r-dplyr@1.0.0:", type=("build", "run")) depends_on("r-future", type=("build", "run")) depends_on("r-future-apply", type=("build", "run")) depends_on("r-ggplot2", type=("build", "run")) + depends_on("r-rlang", type=("build", "run"), when="@1.10.0:") depends_on("r-irlba", type=("build", "run")) depends_on("r-pbapply", type=("build", "run")) depends_on("r-tidyr", type=("build", "run")) @@ -47,4 +51,5 @@ class RSignac(RPackage): depends_on("r-rcpp", type=("build", "run")) depends_on("r-tidyselect", type=("build", "run")) depends_on("r-vctrs", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.12.0:") depends_on("zlib-api") diff --git a/var/spack/repos/builtin/packages/r-sm/package.py b/var/spack/repos/builtin/packages/r-sm/package.py index 60879f612c79d4..c52d11a2db3a33 100644 --- a/var/spack/repos/builtin/packages/r-sm/package.py +++ b/var/spack/repos/builtin/packages/r-sm/package.py @@ -17,6 +17,7 @@ class RSm(RPackage): license("GPL-2.0-or-later") + version("2.2-6.0", sha256="27a6e3291a572c3d30f25982902ccde5299230061e5dc1a38fb52aaac2561d61") version("2.2-5.7.1", sha256="ea0cc32eb14f6c18beba0bede66ed37bc5341bd3f76c1a7ae56d7254693e1457") version("2.2-5.7", sha256="2607a2cafc68d7e99005daf99e36f4a66eaf569ebb6b7500e962642cf58be80f") version("2.2-5.6", sha256="b890cd7ebe8ed711ab4a3792c204c4ecbe9e6ca1fd5bbc3925eba5833a839c30") diff --git a/var/spack/repos/builtin/packages/r-snakecase/package.py b/var/spack/repos/builtin/packages/r-snakecase/package.py index fc895fbf5b0d25..4d06c77185d5c4 100644 --- a/var/spack/repos/builtin/packages/r-snakecase/package.py +++ b/var/spack/repos/builtin/packages/r-snakecase/package.py @@ -16,6 +16,7 @@ class RSnakecase(RPackage): license("GPL-3.0-only") + version("0.11.1", sha256="2a5f9791337ca42e392f23fb873eb44f74810583e9aa7c62fda2f28f9e750821") version("0.11.0", sha256="998420a58391ac85785e60bcdf6fd6927c82758ad2859a9a73a0e57299e8c1cf") depends_on("r@3.2:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-snowfall/package.py b/var/spack/repos/builtin/packages/r-snowfall/package.py index 0f5473d70d8d88..fb3b1b77c63138 100644 --- a/var/spack/repos/builtin/packages/r-snowfall/package.py +++ b/var/spack/repos/builtin/packages/r-snowfall/package.py @@ -19,6 +19,7 @@ class RSnowfall(RPackage): license("GPL-2.0-or-later") + version("1.84-6.3", sha256="2641932b01041e34b7afb1261f649755b4c8d6560080e0e2ee549ffdf3b8b143") version("1.84-6.2", sha256="9b467ab2b992455c6e1aeabe375c5694761fa1cf8aaf4f003ca47102b656353b") version("1.84-6.1", sha256="5c446df3a931e522a8b138cf1fb7ca5815cc82fcf486dbac964dcbc0690e248d") diff --git a/var/spack/repos/builtin/packages/r-sp/package.py b/var/spack/repos/builtin/packages/r-sp/package.py index b0c228fd6dc977..54483d6c2afb67 100644 --- a/var/spack/repos/builtin/packages/r-sp/package.py +++ b/var/spack/repos/builtin/packages/r-sp/package.py @@ -18,6 +18,7 @@ class RSp(RPackage): license("GPL-2.0-or-later") + version("2.1-4", sha256="e185e7fb61d2d7dbc50fd765a93e170fa778083a653588db1f5e99d019479f0a") version("1.6-0", sha256="f5977fbe80e7dee8e95d41fe0ef9d87c2c984422bb529ea5211fd38a13f9fcda") version("1.5-1", sha256="69b9eab481d389bbb736d2adcf50c180aca248c3ffc4ebda8ffe2accc5f229df") version("1.5-0", sha256="939a06adf78ec8de7a663d6ca5bba426780852b357773446b00cc298200ff81c") @@ -29,4 +30,6 @@ class RSp(RPackage): version("1.2-3", sha256="58b3a9e395ca664ee61b20b480be4eb61576daca44c3d3f6f9a943bb0155879a") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.2.0:", type=("build", "run"), when="@2.0-0:") + depends_on("r@3.5.0:", type=("build", "run"), when="@2.1-0:") depends_on("r-lattice", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spacetime/package.py b/var/spack/repos/builtin/packages/r-spacetime/package.py index e3c0310fcbff62..65dc4624032460 100644 --- a/var/spack/repos/builtin/packages/r-spacetime/package.py +++ b/var/spack/repos/builtin/packages/r-spacetime/package.py @@ -20,6 +20,7 @@ class RSpacetime(RPackage): license("GPL-2.0-or-later") + version("1.3-1", sha256="1942a51949e82d19a652fc09e61d738f8eca6ed992783cc1d0164313d71521cf") version("1.3-0", sha256="2e9902a5c6f355f0b8e23237cf3b1553f22d7d79493bdbdb99e49104b9ef541b") version("1.2-8", sha256="4297a027ab4cff32e41cec65aa7d92af66c7a885fd2322b010b0af9a14f24c59") version("1.2-6", sha256="8fd46606ed9589ffce19368d40004890f96e8fe77f13b546e6a2f8b9ced0dd81") diff --git a/var/spack/repos/builtin/packages/r-spades-core/package.py b/var/spack/repos/builtin/packages/r-spades-core/package.py index 4aacc1dd26cb16..d6b2158fa3dcf3 100644 --- a/var/spack/repos/builtin/packages/r-spades-core/package.py +++ b/var/spack/repos/builtin/packages/r-spades-core/package.py @@ -23,6 +23,7 @@ class RSpadesCore(RPackage): maintainers("dorton21") + version("2.1.0", sha256="aee1a3093dfe04210719a7ced12d522299845bbd794f7eb78308f3a5b613762b") version("1.1.0", sha256="67af4f3f153b75a0865fde2457c5d951c2f2184d07c557879b7a8c43a6e7ad66") version("1.0.10", sha256="05e20f7d9aeef9ba68e50e993ef3027b8c85afc5e3f83f5ecaee9d1a7873e379") version("1.0.9", sha256="1176a41a1af334388c1b16ff4ed9a6f30007bb5ed1fa14d798c59461042537dd") @@ -30,17 +31,26 @@ class RSpadesCore(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@1.0.10:") + depends_on("r@4.1:", type=("build", "run"), when="@2.0.2:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0.4:") depends_on("r-quickplot@0.1.4:", type=("build", "run")) depends_on("r-reproducible@1.2.1.9007:", type=("build", "run")) depends_on("r-reproducible@1.2.7:", type=("build", "run"), when="@1.0.9:") depends_on("r-reproducible@1.2.9:", type=("build", "run"), when="@1.1.0:") - depends_on("r-crayon", type=("build", "run")) + depends_on("r-reproducible@2.1.0:", type=("build", "run"), when="@2.1.0:") + depends_on("r-cli", type=("build", "run"), when="@2.1.0:") depends_on("r-data-table@1.10.4:", type=("build", "run")) depends_on("r-data-table@1.11.0:", type=("build", "run"), when="@1.0.9:") - depends_on("r-fastdigest", type=("build", "run")) + depends_on("r-fs", type=("build", "run"), when="@2.0.3:") depends_on("r-igraph@1.0.1:", type=("build", "run")) depends_on("r-lobstr", type=("build", "run"), when="@1.1.0:") + depends_on("r-quickplot@1.0.2:", type=("build", "run"), when="@2.1.0:") depends_on("r-qs@0.21.1:", type=("build", "run")) - depends_on("r-raster@2.5-8:", type=("build", "run")) depends_on("r-require@0.0.7:", type=("build", "run")) + depends_on("r-require@0.3.1:", type=("build", "run"), when="@2.0.2:") + depends_on("r-terra@1.7-46:", type=("build", "run"), when="@2.0.3:") depends_on("r-whisker", type=("build", "run")) + + depends_on("r-crayon", type=("build", "run"), when="@:2.0.5") + depends_on("r-fastdigest", type=("build", "run"), when="@:1.1.0") + depends_on("r-raster@2.5-8:", type=("build", "run"), when="@:1.1.0") diff --git a/var/spack/repos/builtin/packages/r-spades-tools/package.py b/var/spack/repos/builtin/packages/r-spades-tools/package.py index 809ad5f86d3453..a5427ce5a65e52 100644 --- a/var/spack/repos/builtin/packages/r-spades-tools/package.py +++ b/var/spack/repos/builtin/packages/r-spades-tools/package.py @@ -19,6 +19,7 @@ class RSpadesTools(RPackage): maintainers("dorton21") + version("2.0.7", sha256="f1c62cc76ff75119ae54e35be81d5819a282c547f77292e4f392599465e7b2cf") version("1.0.1", sha256="6b0d69c8737ff06e2cf312ff94b298b81f4c50af2efd498a124b99ed66a2be9a") version("1.0.0", sha256="1172b96ada7052fcaa3a113ed31eeb1b67dba70f40fa74cbb378c6e75e9235dc") version("0.3.10", sha256="ba4c075b534caaca413e2e97711b5475c2679d9546c8fee4a07fb2bb94d52c94") @@ -28,19 +29,24 @@ class RSpadesTools(RPackage): depends_on("r@3.5.0:", type=("build", "run")) depends_on("r@3.6:", type=("build", "run"), when="@0.3.9:") depends_on("r@4.0:", type=("build", "run"), when="@0.3.10:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0.6:") depends_on("r-backports", type=("build", "run")) depends_on("r-checkmate@1.8.2:", type=("build", "run")) - depends_on("r-circstats@0.2-4:", type=("build", "run")) depends_on("r-data-table@1.10.4:", type=("build", "run")) - depends_on("r-fastmatch@1.1-0:", type=("build", "run")) depends_on("r-fpcompare@0.2.1:", type=("build", "run")) - depends_on("r-magrittr", type=("build", "run")) - depends_on("r-quickplot", type=("build", "run")) - depends_on("r-raster@2.5-8:", type=("build", "run")) depends_on("r-rcpp@0.12.12:", type=("build", "run")) - depends_on("r-require", type=("build", "run"), when="@0.3.10:") - depends_on("r-rgeos", type=("build", "run")) - depends_on("r-sp@1.2-4:", type=("build", "run")) - + depends_on("r-reproducible@2.0.2:", type=("build", "run"), when="@2.0.0:") + depends_on("r-reproducible@2.0.5:", type=("build", "run"), when="@2.0.1:") + depends_on("r-reproducible@2.0.9:", type=("build", "run"), when="@2.0.5:") + depends_on("r-terra", type=("build", "run"), when="@2.0.0:") + + depends_on("r-circstats@0.2-4:", type=("build", "run"), when="@:1.0.1") + depends_on("r-fastmatch@1.1-0:", type=("build", "run"), when="@:1.0.1") + depends_on("r-magrittr", type=("build", "run"), when="@:1.0.1") + depends_on("r-quickplot", type=("build", "run"), when="@:1.0.1") + depends_on("r-raster@2.5-8:", type=("build", "run"), when="@:1.0.1") depends_on("r-reproducible@0.2.0:", type=("build", "run"), when="@:0.3.6") depends_on("r-reproducible@1.2.7:", type=("build", "run"), when="@0.3.9") + depends_on("r-require", type=("build", "run"), when="@0.3.10:1.0.1") + depends_on("r-rgeos", type=("build", "run"), when="@:1.0.1") + depends_on("r-sp@1.2-4:", type=("build", "run"), when="@:1.0.1") diff --git a/var/spack/repos/builtin/packages/r-spades/package.py b/var/spack/repos/builtin/packages/r-spades/package.py index f7db62f71dfb7c..dd2f112cb063f9 100644 --- a/var/spack/repos/builtin/packages/r-spades/package.py +++ b/var/spack/repos/builtin/packages/r-spades/package.py @@ -26,6 +26,7 @@ class RSpades(RPackage): maintainers("dorton21") + version("2.0.11", sha256="a88e202d1fe6fa700dfc176018a07cc5dd9ac9a8d0695eb6bc507ace52b68a32") version("2.0.9", sha256="f68080318bc922c6d8c495e6d963acdbb24dc90a3e8013e3e2f894b40a584c85") version("2.0.8", sha256="2230704f700d07bda25a23ab5c6630a093c9ed2fe3c47ab6294eebaf1d86f03f") version("2.0.7", sha256="5b62e9d701aa178be57f22369a5d043c9793a1bd3dcd4acac18c5a6b906ed8a0") @@ -33,10 +34,15 @@ class RSpades(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@2.0.8:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0.10:") depends_on("r-quickplot", type=("build", "run")) + depends_on("r-quickplot@1.0.2:", type=("build", "run"), when="@2.0.10:") depends_on("r-reproducible@1.2.1.9007:", type=("build", "run")) depends_on("r-reproducible@1.2.2:", type=("build", "run"), when="@2.0.9:") + depends_on("r-reproducible@2.0.10:", type=("build", "run"), when="@2.0.10:") depends_on("r-spades-core@1.0.4:", type=("build", "run")) + depends_on("r-spades-core@2.0.3:", type=("build", "run"), when="@2.0.10:") depends_on("r-spades-tools", type=("build", "run")) + depends_on("r-spades-tools@2.0.5:", type=("build", "run"), when="@2.0.10:") depends_on("r-spades-addins", type=("build", "run"), when="@:2.0.6") diff --git a/var/spack/repos/builtin/packages/r-spam/package.py b/var/spack/repos/builtin/packages/r-spam/package.py index 845a6147f30f12..6612bb66bb4474 100644 --- a/var/spack/repos/builtin/packages/r-spam/package.py +++ b/var/spack/repos/builtin/packages/r-spam/package.py @@ -21,6 +21,7 @@ class RSpam(RPackage): license("LGPL-2.0-only OR BSD-3-Clause") + version("2.10-0", sha256="719c86a23801ecf051ffd8291912ee3567af4010e74af470fbf09e274728ac79") version("2.9-1", sha256="c32e219279988b1bfc258aaf64f5a46efa558202848a9ae64946ffbe8b497ddb") version("2.8-0", sha256="d98177435b028d1c706d0197ea8132bfaffae6052c3ce6064a7f64178512d6aa") version("2.6-0", sha256="638fdd658e94f7544b46f6b6568b20a9f390bcd703aff572a3a5249fef66be5c") @@ -29,3 +30,4 @@ class RSpam(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.5:", type=("build", "run"), when="@2.9-1:") depends_on("r-dotcall64", type=("build", "run")) + depends_on("r-rcpp@1.0.8.3:", type=("build", "run"), when="@2.10-0:") diff --git a/var/spack/repos/builtin/packages/r-sparsem/package.py b/var/spack/repos/builtin/packages/r-sparsem/package.py index 0c9254fad8a8df..17b270cc03f44e 100644 --- a/var/spack/repos/builtin/packages/r-sparsem/package.py +++ b/var/spack/repos/builtin/packages/r-sparsem/package.py @@ -15,6 +15,7 @@ class RSparsem(RPackage): cran = "SparseM" + version("1.84-2", sha256="2580fdbb8679e76c92b9f0c5bd9bb503c4cb6a750ef6ae96595441690ce98665") version("1.81", sha256="bd838f381ace680fa38508ff70b3d83cb9ffa28ac1ab568509249bca53c34b33") version("1.78", sha256="d6b79ec881a10c91cb03dc23e6e783080ded9db4f2cb723755aa0d7d29a8b432") version("1.77", sha256="a9329fef14ae4fc646df1f4f6e57efb0211811599d015f7bc04c04285495d45c") diff --git a/var/spack/repos/builtin/packages/r-spatial/package.py b/var/spack/repos/builtin/packages/r-spatial/package.py index 401e685f9c5d54..5a2c17f3353288 100644 --- a/var/spack/repos/builtin/packages/r-spatial/package.py +++ b/var/spack/repos/builtin/packages/r-spatial/package.py @@ -15,6 +15,7 @@ class RSpatial(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("7.3-17", sha256="f1003ed8cff2a47169a4787c8be46e8c2c501cc06c8b1e5f97bf62507e5f5dd7") version("7.3-16", sha256="e46565a64c5ec148a77789867e5103746462a41de294539b230bad2a0e16e406") version("7.3-15", sha256="e5613be94d6f5c1f54813dadc96e4a86b3417dea28106cc90cb24dfd6c3c8cef") version("7.3-12", sha256="7639039ee7407bd088e1b253376b2cb4fcdf4cc9124d6b48e4119d5cda872d63") diff --git a/var/spack/repos/builtin/packages/r-spatialeco/package.py b/var/spack/repos/builtin/packages/r-spatialeco/package.py index 40b51335c87910..f71a8a26243ba6 100644 --- a/var/spack/repos/builtin/packages/r-spatialeco/package.py +++ b/var/spack/repos/builtin/packages/r-spatialeco/package.py @@ -19,6 +19,7 @@ class RSpatialeco(RPackage): cran = "spatialEco" + version("2.0-2", sha256="533b8e938df196609a6c85270c0bdc279287c5ee222de9e05ac745713a3ab57c") version("2.0-0", sha256="9a2384e875ec465d1a2ccd392acc90d4469eb62babd32bb90e30b27a921153f6") version("1.3-7", sha256="38688466d9a2a56675e2fe45cf69833a163133ad3afb6f95e9ac2e8eab221b7a") version("1.3-5", sha256="d4fb211124edf828333841c44a5af01165c53d89af460144214d81e3c13983c7") @@ -28,24 +29,25 @@ class RSpatialeco(RPackage): depends_on("r@3.6:", type=("build", "run")) depends_on("r@4.0:", type=("build", "run"), when="@1.3-7:") + depends_on("r@4.2:", type=("build", "run"), when="@2.0-2:") depends_on("r-sf", type=("build", "run")) - depends_on("r-spatstat-explore", type=("build", "run"), when="@2.0-0:") depends_on("r-terra", type=("build", "run"), when="@2.0-0:") - depends_on("r-spatstat-geom", type=("build", "run"), when="@1.3-7:") - depends_on("r-spatstat-geom@3.0-3:", type=("build", "run"), when="@2.0-0:") - depends_on("r-spdep", type=("build", "run")) - depends_on("r-spatialpack@0.3:", type=("build", "run")) - depends_on("r-envstats", type=("build", "run")) - depends_on("r-mgcv", type=("build", "run")) - depends_on("r-yaimpute", type=("build", "run")) - depends_on("r-rms", type=("build", "run")) - depends_on("r-rann", type=("build", "run")) - depends_on("r-rcurl", type=("build", "run")) - depends_on("r-readr", type=("build", "run")) - depends_on("r-cluster", type=("build", "run")) - depends_on("r-ks", type=("build", "run"), when="@2.0-0:") - depends_on("r-mass", type=("build", "run")) + depends_on("r-spatstat-explore", type=("build", "run"), when="@2.0-0") + depends_on("r-spatstat-geom", type=("build", "run"), when="@1.3-7:2.0-0") + depends_on("r-spatstat-geom@3.0-3:", type=("build", "run"), when="@2.0-0") + depends_on("r-spdep", type=("build", "run"), when="@:2.0-0") + depends_on("r-spatialpack@0.3:", type=("build", "run"), when="@:2.0-0") + depends_on("r-envstats", type=("build", "run"), when="@:2.0-0") + depends_on("r-mgcv", type=("build", "run"), when="@:2.0-0") + depends_on("r-yaimpute", type=("build", "run"), when="@:2.0-0") + depends_on("r-rms", type=("build", "run"), when="@:2.0-0") + depends_on("r-rann", type=("build", "run"), when="@:2.0-0") + depends_on("r-rcurl", type=("build", "run"), when="@:2.0-0") + depends_on("r-readr", type=("build", "run"), when="@:2.0-0") + depends_on("r-cluster", type=("build", "run"), when="@:2.0-0") + depends_on("r-ks", type=("build", "run"), when="@2.0-0") + depends_on("r-mass", type=("build", "run"), when="@:2.0-0") depends_on("r-dplyr", type=("build", "run"), when="@:1.3-2") depends_on("r-exactextractr", type=("build", "run"), when="@:1.3-2") depends_on("r-maptools", type=("build", "run"), when="@:1.3-2") diff --git a/var/spack/repos/builtin/packages/r-spatialreg/package.py b/var/spack/repos/builtin/packages/r-spatialreg/package.py index 7f187dbf57c166..89f37bc51c79c2 100644 --- a/var/spack/repos/builtin/packages/r-spatialreg/package.py +++ b/var/spack/repos/builtin/packages/r-spatialreg/package.py @@ -35,6 +35,7 @@ class RSpatialreg(RPackage): license("GPL-2.0-only") + version("1.3-5", sha256="eefeaa2f22d3652a23c30c8ff81364f419634e466cdb0c2d9c7bcef9287b00c4") version("1.2-8", sha256="150cb77ca09800d93af7de37440072d59ac7e41acb45ab42fc1c0e59edd7f9de") version("1.2-6", sha256="9b384117a31ab5fe830325b3eacbec5eb9d40bf0e9ca3c75ea15ca6b78fbd41d") version("1.2-3", sha256="09e0e65f043975d5c1d4be99ef9f29cf0790e962dcde9b7e45a7027d268fce22") @@ -44,12 +45,15 @@ class RSpatialreg(RPackage): depends_on("r@3.3.0:", type=("build", "run")) depends_on("r-spdata", type=("build", "run")) + depends_on("r-spdata@2.3.1:", type=("build", "run"), when="@1.3-4:") depends_on("r-matrix", type=("build", "run")) depends_on("r-sf", type=("build", "run"), when="@1.2-1:") depends_on("r-spdep", type=("build", "run")) - depends_on("r-expm", type=("build", "run")) + depends_on("r-spdep@1.3-1:", type=("build", "run"), when="@1.3-1:") + depends_on("r-expm", type=("build", "run"), when="@:1.2-10") depends_on("r-coda", type=("build", "run")) depends_on("r-mass", type=("build", "run")) + depends_on("r-multcomp", type=("build", "run"), when="@1.2-9:") depends_on("r-boot", type=("build", "run")) depends_on("r-learnbayes", type=("build", "run")) depends_on("r-nlme", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-data/package.py b/var/spack/repos/builtin/packages/r-spatstat-data/package.py index bcb503e91d9412..f043688b31ac7b 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-data/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-data/package.py @@ -13,6 +13,7 @@ class RSpatstatData(RPackage): cran = "spatstat.data" + version("3.1-2", sha256="9b9b416303b8040f723400f3dc454cda75cff1d958660767e7b824503b490b77") version("3.0-1", sha256="8eeb4b1de356e9cef42f58b5e0fc7ced2a476a1306e09395ba97253b22dd5300") version("3.0-0", sha256="cff9058a88489020a4a05b9576cd452f37fa9b42084873c474d06931f5187057") version("2.2-0", sha256="d3943bb4f6509d60bf68e79ce4533c5ec5261f411da6b0ef5238c124fc37c3e5") @@ -27,4 +28,5 @@ class RSpatstatData(RPackage): depends_on("r-spatstat-utils@2.1-0:", type=("build", "run"), when="@2.1-2:") depends_on("r-spatstat-utils@3.0-0:", type=("build", "run"), when="@3.0-0:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.0-1:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.1-2:") depends_on("r-matrix", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-explore/package.py b/var/spack/repos/builtin/packages/r-spatstat-explore/package.py index 373c33f4255dfe..292ba6b28eac07 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-explore/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-explore/package.py @@ -25,19 +25,28 @@ class RSpatstatExplore(RPackage): cran = "spatstat.explore" + version("3.3-2", sha256="a24827d24a86f2f20f8dcbbb5f57f5ab43345fa346c572099b84d867e7bf85ed") version("3.1-0", sha256="87ef4882652db3b834214bfc776dd7d23d931a9227de12f19722aeb1029d086e") version("3.0-3", sha256="137444a46d26d88241336feece63ed7b006a9328cfe3861d4b8ab7b4bed963a7") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run")) + depends_on("r-spatstat-data@3.0-4:", type=("build", "run"), when="@:") + depends_on("r-spatstat-data@3.1-2:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-geom@3.0:", type=("build", "run")) depends_on("r-spatstat-geom@3.0-5:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-geom@3.2-9:", type=("build", "run"), when="@:") + depends_on("r-spatstat-geom@3.3-2:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-random@3.0:", type=("build", "run")) depends_on("r-spatstat-random@3.1:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-random@3.3-1:", type=("build", "run"), when="@3.3-2:") depends_on("r-nlme", type=("build", "run")) + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-utils@3.0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-utils@3.1-0:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-sparse@3.0:", type=("build", "run")) + depends_on("r-spatstat-sparse@3.1-0:", type=("build", "run"), when="@3.3-2:") depends_on("r-goftest@1.2-2:", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) depends_on("r-abind", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-geom/package.py b/var/spack/repos/builtin/packages/r-spatstat-geom/package.py index 8070c59daf6bad..94f62c92590b6a 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-geom/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-geom/package.py @@ -26,6 +26,7 @@ class RSpatstatGeom(RPackage): cran = "spatstat.geom" + version("3.3-2", sha256="cbc08a6924edbf0f1ea104136d5b2200caeecbd6c2cb4d55d4f56af9beea570f") version("3.1-0", sha256="184a96679babcbff4897c5a471e034eb1bb7127c6cf668e8cc2c2c74bdea47fe") version("3.0-3", sha256="6e5b56c60e774a0cdcaa5a8ffde071225f233832446a341588bd8a7840913c84") version("2.4-0", sha256="32b89a409ce87ffe901e4c8720a26cac9629f9816e163c4ad68b7aa012d69e67") @@ -34,8 +35,11 @@ class RSpatstatGeom(RPackage): depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-data@2.0-0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run"), when="@3.0-3:") + depends_on("r-spatstat-data@3.1:", type=("build", "run"), when="@3.3-2:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-2:") depends_on("r-spatstat-utils@2.2-0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0:", type=("build", "run"), when="@3.0-3:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.3-2:") depends_on("r-deldir@1.0-2:", type=("build", "run")) depends_on("r-polyclip@1.10-0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py b/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py index cae0f1106f143f..995ad70fd09791 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-linnet/package.py @@ -39,22 +39,31 @@ class RSpatstatLinnet(RPackage): cran = "spatstat.linnet" + version("3.2-1", sha256="1af0d8063c72650f17c6b79afb07e69e0b6a9794583e8f0c38c6624d91dc11bf") version("3.1-0", sha256="b9b0ad66af169ca1ef3da852578d7b65521cf55f4a72c43ae5b1f2d4f47bf00c") version("2.3-2", sha256="9c78a4b680debfff0f3ae934575c30d03ded49bc9a7179475384af0ebaf13778") version("2.3-1", sha256="119ba6e3da651aa9594f70a7a35349209534215aa640c2653aeddc6aa25038c3") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-model@3.2-1:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-model@3.2-11.005:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-explore@3.0-6:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-explore@3.2-7.006:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-data@2.1-0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-data@3.0-4:", type=("build", "run"), when="@3.1-5:") depends_on("r-spatstat-geom@2.3-0:", type=("build", "run")) depends_on("r-spatstat-geom@3.0-6:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-geom@3.2-9.028:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-random@2.2-0:", type=("build", "run"), when="@2.3-2:") depends_on("r-spatstat-random@3.1-3:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-random@3.2-3.003:", type=("build", "run"), when="@3.2-1:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-utils@2.2-0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.2-1:") depends_on("r-matrix", type=("build", "run")) depends_on("r-spatstat-sparse@2.0:", type=("build", "run")) depends_on("r-spatstat-sparse@3.0:", type=("build", "run"), when="@3.1-0:") + depends_on("r-spatstat-sparse@3.1-0:", type=("build", "run"), when="@3.2-1:") depends_on("r-spatstat-core@2.3-2:", type=("build", "run"), when="@2.3-2:2.3-2") diff --git a/var/spack/repos/builtin/packages/r-spatstat-model/package.py b/var/spack/repos/builtin/packages/r-spatstat-model/package.py index 1a84bfd784dc39..a29c32b000c316 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-model/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-model/package.py @@ -32,17 +32,25 @@ class RSpatstatModel(RPackage): cran = "spatstat.model" + version("3.3-1", sha256="5c1c969b5f2bbfdfe91ad31cd912f31b91ec9cc7651ecec86c1d7a562161afa7") version("3.2-3", sha256="8ad7d2644773571a5c579ceebb98b735dccc97e9b4b109ea39b4ce3faedb14ea") depends_on("r@3.5.0:", type=("build", "run")) depends_on("r-spatstat-data@3.0:", type=("build", "run")) + depends_on("r-spatstat-data@3.0-4:", type=("build", "run"), when="@3.2-11:") depends_on("r-spatstat-geom@3.0-5:", type=("build", "run")) + depends_on("r-spatstat-geom@3.3-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-random@3.1-4:", type=("build", "run")) + depends_on("r-spatstat-random@3.3-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-explore@3.1-0:", type=("build", "run")) + depends_on("r-spatstat-explore@3.3-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-nlme", type=("build", "run")) depends_on("r-rpart", type=("build", "run")) + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run")) + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.3-1:") depends_on("r-spatstat-sparse@3.0:", type=("build", "run")) + depends_on("r-spatstat-sparse@3.1-0:", type=("build", "run"), when="@3.3-1:") depends_on("r-mgcv", type=("build", "run")) depends_on("r-matrix", type=("build", "run")) depends_on("r-abind", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-spatstat-random/package.py b/var/spack/repos/builtin/packages/r-spatstat-random/package.py index 2a8cf215742877..f967f4d0239093 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-random/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-random/package.py @@ -25,6 +25,7 @@ class RSpatstatRandom(RPackage): cran = "spatstat.random" + version("3.3-1", sha256="83026bce8802e14423edfa0a0f9c8279ef74565992bdac1804dfec357988bbd3") version("3.1-4", sha256="a6cd75e187a992fd8dae535f6745e12801635a344ca51bd2fe048debea3df7d3") version("3.0-1", sha256="938c845c063b8781bf894c0a67537e7b2a7c425a4beba4a95ec9d2c37b43e5b6") version("2.2-0", sha256="45f0bbdb9dbd53b6c4151c3cdd098451cf787729717ccbb063cd1f33910e604d") @@ -33,9 +34,13 @@ class RSpatstatRandom(RPackage): depends_on("r-spatstat-data@2.1-0:", type=("build", "run")) depends_on("r-spatstat-data@2.2-0.003:", type=("build", "run"), when="@3.0-1:") depends_on("r-spatstat-data@3.0:", type=("build", "run"), when="@3.1-4:") + depends_on("r-spatstat-data@3.1:", type=("build", "run"), when="@3.3-0:") depends_on("r-spatstat-geom@2.4-0:", type=("build", "run")) depends_on("r-spatstat-geom@2.4-0.023:", type=("build", "run"), when="@3.0-1:") depends_on("r-spatstat-geom@3.0-5:", type=("build", "run"), when="@3.1-4:") + depends_on("r-spatstat-geom@3.3-0:", type=("build", "run"), when="@3.3-0:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.3-0:") depends_on("r-spatstat-utils@2.2-0:", type=("build", "run")) depends_on("r-spatstat-utils@2.3-1.003:", type=("build", "run"), when="@3.0-1:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.1-4:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.3-0:") diff --git a/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py b/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py index 932c51884ffa1e..e2080bc2062f43 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-sparse/package.py @@ -15,6 +15,7 @@ class RSpatstatSparse(RPackage): cran = "spatstat.sparse" + version("3.1-0", sha256="63be5dc5818339b878a14a39815dab730b28029d51bac5233e88f5e2464bbbe9") version("3.0-1", sha256="2c1cf0ddad366aa4230bd03241a1ef87ed635f53a6943fc4a6c2d371626d0d1c") version("3.0-0", sha256="99be0a3c7592760fdf1668dc0811f75ed91c400390d1ecc3d5e643255f501ad2") version("2.1-1", sha256="9a35ad69715b767b3ae60b02dce05ccf108fcccdf95bbc8f7d02557bcbde7303") @@ -27,3 +28,4 @@ class RSpatstatSparse(RPackage): depends_on("r-spatstat-utils@2.1-0:", type=("build", "run")) depends_on("r-spatstat-utils@3.0-0:", type=("build", "run"), when="@3.0-0:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.0-1:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.1-0:") diff --git a/var/spack/repos/builtin/packages/r-spatstat-univar/package.py b/var/spack/repos/builtin/packages/r-spatstat-univar/package.py new file mode 100644 index 00000000000000..6cc988eb3022a7 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-spatstat-univar/package.py @@ -0,0 +1,23 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RSpatstatUnivar(RPackage): + """Estimation of one-dimensional probability distributions including + kernel density estimation, weighted empirical cumulative distribution + functions, Kaplan-Meier and reduced-sample estimators for right-censored + data, heat kernels, kernel properties, quantiles and integration.""" + + homepage = "http://spatstat.org/" + cran = "spatstat.univar" + + license("GPL-2.0-or-later", checked_by="wdconinc") + + version("3.0-0", sha256="00bc501d9bec32231207f0562433193bd680606ce465131caa5e2704b4ff4771") + + depends_on("r@3.5.0:", type=("build", "run"), when="@3.0-0:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@2.0-3.011:") diff --git a/var/spack/repos/builtin/packages/r-spatstat-utils/package.py b/var/spack/repos/builtin/packages/r-spatstat-utils/package.py index 2a5490c177afb9..ab4ddd6c1a397b 100644 --- a/var/spack/repos/builtin/packages/r-spatstat-utils/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat-utils/package.py @@ -14,6 +14,7 @@ class RSpatstatUtils(RPackage): cran = "spatstat.utils" + version("3.1-0", sha256="c30c3154700005f4bae9b428924248046128f7150b873e36e3897a622f962d3d") version("3.0-2", sha256="be60cd2cf21a6b3f71ba60553c045fd87884a4e57744f60e6eb0a2d096314615") version("3.0-1", sha256="cba1c7806564fd9145ca15edf77233d6ba5609f0989f7812221f5fc1ece0b91a") version("2.3-1", sha256="5b914308df0585993084b5e95967864eea0314c98ed6af58267b64b2235dfe22") @@ -23,3 +24,4 @@ class RSpatstatUtils(RPackage): version("1.15-0", sha256="90e07d730b6939f47f93c939afae10874b2c82bd402960ede4133de67dca2a0c") depends_on("r@3.3.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@3.1-0:") diff --git a/var/spack/repos/builtin/packages/r-spatstat/package.py b/var/spack/repos/builtin/packages/r-spatstat/package.py index 766b10079e68ea..c38424cf60641f 100644 --- a/var/spack/repos/builtin/packages/r-spatstat/package.py +++ b/var/spack/repos/builtin/packages/r-spatstat/package.py @@ -50,6 +50,7 @@ class RSpatstat(RPackage): license("GPL-2.0-or-later") + version("3.1-1", sha256="5649309818c6e76c8b8ee7b66a25dcbd2b358d90da56f67dd961b5cf9ff55512") version("3.0-5", sha256="b926ed55dfeb95b09fb441f44d85204277eee00e42ac258c0a08baa1ce263bb1") version("2.3-4", sha256="4ea0f8d70b926b92bf4a06521f985a0bb6d573619f5d526957c87860ccb999da") version("2.3-0", sha256="da02443722f2c7ef9d59a2799b7b8002c94cecf73f2b0d2b29280d39f49c4c06") @@ -59,23 +60,31 @@ class RSpatstat(RPackage): depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.5.0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-model@3.2-3:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-model@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-explore@3.1-0:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-explore@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-data@1.4-2:", type=("build", "run")) depends_on("r-spatstat-data@2.1-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-data@2.1-2:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-data@3.0-1:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-data@3.1-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-geom@2.3-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-geom@2.4-0:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-geom@3.1-0:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-geom@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-random@2.2-0:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-random@3.1-4:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-random@3.3-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-linnet@2.3-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-linnet@2.3-2:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-linnet@3.1-0:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-linnet@3.2-0:", type=("build", "run"), when="@3.1-1:") + depends_on("r-spatstat-univar@3.0-0:", type=("build", "run"), when="@3.1-1:") depends_on("r-spatstat-utils@1.17:", type=("build", "run")) depends_on("r-spatstat-utils@2.2-0:", type=("build", "run"), when="@2.3-0:") depends_on("r-spatstat-utils@2.3-0:", type=("build", "run"), when="@2.3-4:") depends_on("r-spatstat-utils@3.0-2:", type=("build", "run"), when="@3.0-5:") + depends_on("r-spatstat-utils@3.0-5:", type=("build", "run"), when="@3.1-1:") depends_on("r-rpart", type=("build", "run"), when="@:1.64-1") depends_on("r-nlme", type=("build", "run"), when="@:1.64-1") diff --git a/var/spack/repos/builtin/packages/r-spdata/package.py b/var/spack/repos/builtin/packages/r-spdata/package.py index 7a4a7e225ebbe7..028bda6521e16e 100644 --- a/var/spack/repos/builtin/packages/r-spdata/package.py +++ b/var/spack/repos/builtin/packages/r-spdata/package.py @@ -20,6 +20,7 @@ class RSpdata(RPackage): cran = "spData" + version("2.3.1", sha256="8c377f2123b7b274c5ca0de656ccd30aaba1b5b245be58a842395311ecc70075") version("2.2.2", sha256="878a58e98b6cf259432149ecb4e5d66ada59466e1b5b0dafa60ec839e90104ed") version("2.2.0", sha256="6e9c0a72f29021a84e9049b147c9e0186f14876a4a1663ad98bbb33440ee901f") version("2.0.1", sha256="c635a3e2e5123b4cdb2e6877b9b09e3d50169e1512a53b2ba2db7fbe63b990fc") diff --git a/var/spack/repos/builtin/packages/r-spdep/package.py b/var/spack/repos/builtin/packages/r-spdep/package.py index 63f980382cd8bf..2383c056e1e893 100644 --- a/var/spack/repos/builtin/packages/r-spdep/package.py +++ b/var/spack/repos/builtin/packages/r-spdep/package.py @@ -23,6 +23,7 @@ class RSpdep(RPackage): license("GPL-2.0-or-later") + version("1.3-5", sha256="ba8efa06ddbc12408f4f6d4c85606d84922131d9c05953e0b23b81f03e56e626") version("1.2-8", sha256="8d9fb4cb10d1035526ad6d9f7a11972efb0e3137dcff176d73df6ebfe96c9190") version("1.2-7", sha256="9dac594825bf2d0aa31e845bfec05d8ce206327840fe455391741dbbdf9c9eea") version("1.2-4", sha256="a9f4d5af56efb1a2bcd3e85fe4d0e8a42896a2c30a790b2487e1ebadf398a677") @@ -37,6 +38,7 @@ class RSpdep(RPackage): depends_on("r@3.3.0:", type=("build", "run"), when="@0.7-8:") depends_on("r-sp@1.0:", type=("build", "run")) depends_on("r-spdata@0.2.6.0:", type=("build", "run"), when="@1.0-2:") + depends_on("r-spdata@2.3.1:", type=("build", "run"), when="@1.3-5:") depends_on("r-sf", type=("build", "run"), when="@1.0-2:") depends_on("r-deldir", type=("build", "run")) depends_on("r-boot@1.3-1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-speedglm/package.py b/var/spack/repos/builtin/packages/r-speedglm/package.py index 9ec7b5a82472ae..e967e7ffc97748 100644 --- a/var/spack/repos/builtin/packages/r-speedglm/package.py +++ b/var/spack/repos/builtin/packages/r-speedglm/package.py @@ -16,9 +16,11 @@ class RSpeedglm(RPackage): license("GPL-2.0-or-later") + version("0.3-5", sha256="f8663677c10ff324c5639402060ddd2b1a1e917445cb0f8f84e146b85e82bb4b") version("0.3-4", sha256="1a12db7dbceaaf5cf4f9a0c03e2a2b9f32e91b697daf2ccfe81bbae9ac3046ce") version("0.3-3", sha256="d065d0ee42fb772760fca8d97ad2aa56cd76b1d9ecb4e97478ec362429e16738") version("0.3-2", sha256="5fcaf18324dc754152f528a44894944063303f780d33e58569ea7c306bfc45ac") + depends_on("r-biglm", type=("build", "run"), when="@0.3-5:") depends_on("r-matrix", type=("build", "run")) depends_on("r-mass", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-splancs/package.py b/var/spack/repos/builtin/packages/r-splancs/package.py index 2dbe2fb03352e7..a964aa09cabe45 100644 --- a/var/spack/repos/builtin/packages/r-splancs/package.py +++ b/var/spack/repos/builtin/packages/r-splancs/package.py @@ -17,9 +17,10 @@ class RSplancs(RPackage): license("GPL-2.0-or-later") + version("2.01-45", sha256="8bccf1d61d7feaab52da07a9c95aa66bcd3986a6b214f13b232c1e2bea4b76d3") version("2.01-43", sha256="b351565e1f69f6c86a29d921d3a18d5896c4586e2ab8c73bb3df8e75630fc448") version("2.01-42", sha256="8c0af4764521e20b629dba6afd5c284e7be48786f378c37668eacfa26d2ef0aa") version("2.01-40", sha256="79744381ebc4a361740a36dca3c9fca9ae015cfe0bd585b7856a664a3da74363") - depends_on("r@2.10:", type=("build", "run")) + depends_on("r@2.10.0:", type=("build", "run")) depends_on("r-sp@0.9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-splines2/package.py b/var/spack/repos/builtin/packages/r-splines2/package.py new file mode 100644 index 00000000000000..bf1ae174c52cc3 --- /dev/null +++ b/var/spack/repos/builtin/packages/r-splines2/package.py @@ -0,0 +1,27 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RSplines2(RPackage): + """Constructs basis functions of B-splines, M-splines, I-splines, convex + splines (C-splines), periodic splines, natural cubic splines, generalized + Bernstein polynomials, their derivatives, and integrals (except C-splines) + by closed-form recursive formulas. It also contains a C++ head-only library + integrated with Rcpp. See Wang and Yan (2021) + for details.""" + + homepage = "https://wwenjie.org/splines2" + cran = "splines2" + + license("GPL-3.0-or-later", checked_by="wdconinc") + + version("0.5.3", sha256="c27e7bd12d615095f765f4c1ed3cb9e39b922653aabbe88c4ca3ac31e6a01ddc") + + depends_on("r@3.2.3:", type=("build", "run")) + + depends_on("r-rcpp", type=("build", "run")) + depends_on("r-rcpparmadillo", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-stabledist/package.py b/var/spack/repos/builtin/packages/r-stabledist/package.py index 747a119144c5e5..1a8e0c40df11c3 100644 --- a/var/spack/repos/builtin/packages/r-stabledist/package.py +++ b/var/spack/repos/builtin/packages/r-stabledist/package.py @@ -16,6 +16,7 @@ class RStabledist(RPackage): license("GPL-2.0-or-later") + version("0.7-2", sha256="26671710c0d8e3c815b56e6e4f6bc9ea0509db47c0ef5b8acfbfa16095a16fd5") version("0.7-1", sha256="06c5704d3a3c179fa389675c537c39a006867bc6e4f23dd7e406476ed2c88a69") depends_on("r@3.1.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-stanheaders/package.py b/var/spack/repos/builtin/packages/r-stanheaders/package.py index 4ce431492efe98..f6f63c610a3290 100644 --- a/var/spack/repos/builtin/packages/r-stanheaders/package.py +++ b/var/spack/repos/builtin/packages/r-stanheaders/package.py @@ -27,6 +27,7 @@ class RStanheaders(RPackage): cran = "StanHeaders" + version("2.32.10", sha256="c3125b8d7dc4c6b7082258b2fa6c9530c2e4714c89ffd08b8e72f4c9f4108582") version("2.21.0-7", sha256="27546e064f0e907e031d9185ad55245d118d82fbe3074ecb1d76fae8b9f2336b") version("2.21.0-6", sha256="a0282a054d0e6ab310ec7edcffa953b77c7e4a858d9ac7028aab1b4fb4ce8cf3") version("2.18.1-10", sha256="8a9f7e22105428e97d14f44f75395c37cf8c809de148d279c620024452b3565a") @@ -37,5 +38,7 @@ class RStanheaders(RPackage): depends_on("r+X", type=("build", "run")) depends_on("r@3.4.0:", type=("build", "run"), when="@2.18.0:") depends_on("r-rcppparallel@5.0.1:", type=("build", "run"), when="@2.21.0:") + depends_on("r-rcppparallel@5.1.4:", type=("build", "run"), when="@2.26.25:") depends_on("r-rcppeigen", type=("build", "run"), when="@2.21.0:") + depends_on("r-rcppeigen@0.3.4.0.0:", type=("build", "run"), when="@2.32.8:") depends_on("pandoc", type="build") diff --git a/var/spack/repos/builtin/packages/r-stars/package.py b/var/spack/repos/builtin/packages/r-stars/package.py index 20f393bbe3ffde..94552ddf7d0648 100644 --- a/var/spack/repos/builtin/packages/r-stars/package.py +++ b/var/spack/repos/builtin/packages/r-stars/package.py @@ -15,6 +15,7 @@ class RStars(RPackage): cran = "stars" + version("0.6-6", sha256="70ca3509adfb4227ca8910d47c87f587ec06d8ef4577af63fe772757844ec7ac") version("0.6-1", sha256="1f78db3adab9ebbfc9d98c6cc592708d893b5d7fd7fd876af454042ef42204a7") version("0.5-6", sha256="e0413c95423635f7f7b2520813382e911257da8ace9b743da9fe3eab568a9461") @@ -22,7 +23,9 @@ class RStars(RPackage): depends_on("r-abind", type=("build", "run")) depends_on("r-sf@1.0-8:", type=("build", "run")) depends_on("r-sf@1.0-10:", type=("build", "run"), when="@0.6-1:") + depends_on("r-sf@1.0-15:", type=("build", "run"), when="@0.6-5:") depends_on("r-classint@0.4-1:", type=("build", "run")) - depends_on("r-lwgeom", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) depends_on("r-units", type=("build", "run")) + + depends_on("r-lwgeom", type=("build", "run"), when="@:0.6-3") diff --git a/var/spack/repos/builtin/packages/r-statnet-common/package.py b/var/spack/repos/builtin/packages/r-statnet-common/package.py index f02f6d0cb4cebb..e71cf28c478bc2 100644 --- a/var/spack/repos/builtin/packages/r-statnet-common/package.py +++ b/var/spack/repos/builtin/packages/r-statnet-common/package.py @@ -14,6 +14,7 @@ class RStatnetCommon(RPackage): cran = "statnet.common" + version("4.9.0", sha256="a485dc6e363a993d87336fbd1027adb1cd7b9103447fd63904cae4dc3bfc2dd7") version("4.8.0", sha256="def999130673fbcb315fecf3620a2559864f51961a828625aa5cd5fded7946f0") version("4.7.0", sha256="b69731a606b56b729b1917375efafb572b960ce5000a0fc2ec5222fd7d80a1b3") version("4.6.0", sha256="ddad51128b50d465e1d1aca3a53b452810b9ba578e96b08b8f50f5850d7bb21d") diff --git a/var/spack/repos/builtin/packages/r-stringfish/package.py b/var/spack/repos/builtin/packages/r-stringfish/package.py index 14c846404ed634..729c0b09f97f3b 100644 --- a/var/spack/repos/builtin/packages/r-stringfish/package.py +++ b/var/spack/repos/builtin/packages/r-stringfish/package.py @@ -18,6 +18,7 @@ class RStringfish(RPackage): license("GPL-3.0-only") + version("0.16.0", sha256="3608bc83900246297b38df46954bd9aa3b6f463a56eefbe80cfc713eab797993") version("0.15.7", sha256="34b1703a8876a40860d35f88a94e069832a7d2bc86189ff07af84ff04fd4b735") version("0.15.5", sha256="9df21146a7710e5a9ab4bb53ebc231a580c798b7e541b8d78df53207283f8129") version("0.14.2", sha256="9373cfc715cda1527fd20179435977b8e59e19d8c5ef82a31e519f93fb624ced") diff --git a/var/spack/repos/builtin/packages/r-stringi/package.py b/var/spack/repos/builtin/packages/r-stringi/package.py index abc075ec2a75f1..805cf78970eb75 100644 --- a/var/spack/repos/builtin/packages/r-stringi/package.py +++ b/var/spack/repos/builtin/packages/r-stringi/package.py @@ -22,6 +22,7 @@ class RStringi(RPackage): license("custom") + version("1.8.4", sha256="c219f8f64d1a2bfd4ca9528452d44d30db1899af14f4b9ef248412443bc669f3") version("1.7.12", sha256="efe8ac2900001f986a75db5641fbb24587a6d23de274a6a85c39dfa58921e009") version("1.7.8", sha256="538918b1cd6ed1d8a2dd5ab146ba800a088e99f93c52dcd82615b6e127478b1c") version("1.7.6", sha256="0ea3d5afec5701977ff53de9afbaceb53b00aa34f5fb641cadc1eeb7759119ec") @@ -36,6 +37,7 @@ class RStringi(RPackage): depends_on("r@2.14:", type=("build", "run")) depends_on("r@3.1:", type=("build", "run"), when="@1.6.1:") + depends_on("r@3.4:", type=("build", "run"), when="@1.8.1:") depends_on("icu4c@52:") depends_on("icu4c@55:", when="@1.5.3:") # since version 1.6.1 there is also a SystemRequirement on C++11 diff --git a/var/spack/repos/builtin/packages/r-stringr/package.py b/var/spack/repos/builtin/packages/r-stringr/package.py index 90fcda65fb417d..97ca2ce28a6811 100644 --- a/var/spack/repos/builtin/packages/r-stringr/package.py +++ b/var/spack/repos/builtin/packages/r-stringr/package.py @@ -19,6 +19,7 @@ class RStringr(RPackage): license("MIT") + version("1.5.1", sha256="a4adec51bb3f04214b1d8ef40d3a58949f21b1497cbeaf2ba552e0891eef45de") version("1.5.0", sha256="52b159d7700a139111b4caf939e7c9c6ab3e01185181400d70a74c552826633a") version("1.4.1", sha256="ec0d8e90caa3e107f18c188ed313dea8bfd12a738011b0be09ef5362360ddcb1") version("1.4.0", sha256="87604d2d3a9ad8fd68444ce0865b59e2ffbdb548a38d6634796bbd83eeb931dd") @@ -29,12 +30,14 @@ class RStringr(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.3:", type=("build", "run"), when="@1.5.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.5.1:") depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@1.5.0:") depends_on("r-cli", type=("build", "run"), when="@1.5.0:") depends_on("r-stringi@1.1.7:", type=("build", "run")) depends_on("r-stringi@1.5.3:", type=("build", "run"), when="@1.5.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-vctrs", type=("build", "run"), when="@1.5.0:") + depends_on("r-vctrs@0.4.0:", type=("build", "run"), when="@1.5.1:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.5.0:") depends_on("r-glue@1.2.0:", type=("build", "run"), when="@1.3.0:") depends_on("r-glue@1.6.1:", type=("build", "run"), when="@1.5.0:") diff --git a/var/spack/repos/builtin/packages/r-styler/package.py b/var/spack/repos/builtin/packages/r-styler/package.py index a64f522bccc1a9..4fc81952dacdee 100644 --- a/var/spack/repos/builtin/packages/r-styler/package.py +++ b/var/spack/repos/builtin/packages/r-styler/package.py @@ -15,6 +15,7 @@ class RStyler(RPackage): license("MIT") + version("1.10.3", sha256="adb9c22111a8669bdce6d4a5c09e0ad353e07c3488373484a258028203bfda41") version("1.9.1", sha256="c80fa3c062f007645ec820b5b087d4d5784e7797cc88d030ab59fb5823ded0bb") version("1.8.1", sha256="15505fa85f0aa2902bc8af3f00b2aeb205d41a92b77bffbd176d657753ee81e9") version("1.8.0", sha256="4f8b74c1ac158b0a4433b6008da6bb708f3c9ed1c7fb9bb5d79748858cb484c7") @@ -24,6 +25,7 @@ class RStyler(RPackage): depends_on("r@3.4.0:", type=("build", "run"), when="@1.7.0:") depends_on("r@3.5.0:", type=("build", "run"), when="@1.8.0:") + depends_on("r@3.6.0:", type=("build", "run"), when="@1.10.0:") depends_on("r-cli@1.1.0:", type=("build", "run")) depends_on("r-cli@3.1.1:", type=("build", "run"), when="@1.7.0:") depends_on("r-magrittr@1.0.1:", type=("build", "run")) @@ -32,6 +34,7 @@ class RStyler(RPackage): depends_on("r-r-cache@0.14.0:", type=("build", "run")) depends_on("r-r-cache@0.15.0:", type=("build", "run"), when="@1.6.2:") depends_on("r-rlang@0.1.1:", type=("build", "run")) + depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@1.10.0:") depends_on("r-rprojroot@1.1:", type=("build", "run")) depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@1.8.0:") depends_on("r-withr@1.0.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-subplex/package.py b/var/spack/repos/builtin/packages/r-subplex/package.py index 9199d1e852debe..25f6eda8ca7282 100644 --- a/var/spack/repos/builtin/packages/r-subplex/package.py +++ b/var/spack/repos/builtin/packages/r-subplex/package.py @@ -16,6 +16,7 @@ class RSubplex(RPackage): license("GPL-3.0-only") + version("1.9", sha256="07a9ea8cba46a6eec037f8c6e87279c122479ccc560a96bd3086d653f95d69b7") version("1.8", sha256="3bc31d8990380c9f790c9c7d84cb2e39f4945eff934eddfa1196d597465be5a5") version("1.7", sha256="d5ecf4a484936d71cb294f08c3968ef5a8dcbdc861bfc0e97e3b1ab99afff887") version("1.6", sha256="0d05da1622fffcd20a01cc929fc6c2b7df40a8246e7018f7f1f3c175b774cbf9") @@ -24,3 +25,4 @@ class RSubplex(RPackage): version("1.4-1", sha256="94b7b961aaa229a6f025151191ed50272af1394be69f1c41146b9e8c786caec6") depends_on("r@2.5.1:", type=("build", "run")) + depends_on("r@4.1.0:", type=("build", "run"), when="@1.9:") diff --git a/var/spack/repos/builtin/packages/r-survey/package.py b/var/spack/repos/builtin/packages/r-survey/package.py index 9cc9e7b6c65a54..c9c51f056cd941 100644 --- a/var/spack/repos/builtin/packages/r-survey/package.py +++ b/var/spack/repos/builtin/packages/r-survey/package.py @@ -21,6 +21,7 @@ class RSurvey(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("4.4-2", sha256="8a4a0f3122f0971f7c8756805add781192c655f507b235801dd78457a8d2f1bd") version("4.1-1", sha256="05e89a1678a39e32bfb41af8a31d643b04fc4d2660a96e701825e6bffcd75a52") version("4.0", sha256="b053f40f4cfa90507ca524f72d3b3a4b4869def52f11f907a14f1c6d90063de1") version("3.36", sha256="90f32e9d2b52eacf881e6717a4b5edfc5a3beb5da516f8372293549589d79475") @@ -31,9 +32,12 @@ class RSurvey(RPackage): depends_on("r@2.16.0:", type=("build", "run"), when="@3.32:") depends_on("r@3.1.0:", type=("build", "run"), when="@3.35:") depends_on("r@3.5.0:", type=("build", "run"), when="@4.1-1:") + depends_on("r@4.1.0:", type=("build", "run"), when="@4.4-2:") depends_on("r-matrix", type=("build", "run"), when="@3.31:") depends_on("r-survival", type=("build", "run"), when="@3.31:") depends_on("r-lattice", type=("build", "run"), when="@3.31:") depends_on("r-minqa", type=("build", "run"), when="@3.34:") depends_on("r-numderiv", type=("build", "run"), when="@3.34:") depends_on("r-mitools@2.4:", type=("build", "run"), when="@3.36:") + depends_on("r-rcpp@0.12.8:", type=("build", "run"), when="@4.4:") + depends_on("r-rcpparmadillo", type=("build", "run"), when="@4.4:") diff --git a/var/spack/repos/builtin/packages/r-survival/package.py b/var/spack/repos/builtin/packages/r-survival/package.py index 79b6b0e0293b55..052c27d368fe42 100644 --- a/var/spack/repos/builtin/packages/r-survival/package.py +++ b/var/spack/repos/builtin/packages/r-survival/package.py @@ -17,6 +17,7 @@ class RSurvival(RPackage): license("LGPL-2.0-or-later") + version("3.7-0", sha256="cd96b08ec928b0028f69c942cc788e190b4543c8518d71deb6d8a712de44feef") version("3.5-5", sha256="1375a509554b0258e04e27baca2e073e179406e2a9a71e6d3e0c777072568476") version("3.4-0", sha256="a48e23d47265fe4d90fb5f0f9fc388906014f8063211980856985db9e89cf812") version("3.3-1", sha256="14878705cd0c7edcfead79011444aa84f680759293bde8634721c49f37cb4dc7") diff --git a/var/spack/repos/builtin/packages/r-svglite/package.py b/var/spack/repos/builtin/packages/r-svglite/package.py index 2003f6a798c21f..babdf515f2b58c 100644 --- a/var/spack/repos/builtin/packages/r-svglite/package.py +++ b/var/spack/repos/builtin/packages/r-svglite/package.py @@ -16,12 +16,14 @@ class RSvglite(RPackage): license("GPL-2.0-or-later") + version("2.1.3", sha256="f0a8564e6f9127f4d1e05cf5a5f36b4e244aee0008e27473e504c63873ef0a54") version("2.1.1", sha256="48700169eec1b05dbee9e2bae000aa84c544617b018cb3ac431a128cfd8dac56") version("2.1.0", sha256="ad40f590c7e80ae83001a3826b6e8394ba733446ed51fd55faeda974ab839c9b") version("2.0.0", sha256="76e625fe172a5b7ce99a67b6d631b037b3f7f0021cfe15f2e15e8851b89defa5") depends_on("r+X", type=("build", "run")) depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@2.1.2:") depends_on("r-systemfonts@1.0.0:", type=("build", "run")) depends_on("r-cpp11", type=("build", "run")) depends_on("libpng") diff --git a/var/spack/repos/builtin/packages/r-sys/package.py b/var/spack/repos/builtin/packages/r-sys/package.py index 117130dc41fcf5..bee43018e268b9 100644 --- a/var/spack/repos/builtin/packages/r-sys/package.py +++ b/var/spack/repos/builtin/packages/r-sys/package.py @@ -19,6 +19,7 @@ class RSys(RPackage): license("MIT") + version("3.4.2", sha256="b7bdce66f0fb681830ea6fb77b5a2c6babb43920abb1eddc733f95c0a63ce5b3") version("3.4.1", sha256="324e6d8fde58264e62bc04867b719c5fd16296de1542689801b8cb13621ecf52") version("3.4", sha256="17f88fbaf222f1f8fd07919461093dac0e7175ae3c3b3264b88470617afd0487") version("3.2", sha256="2819498461fe2ce83d319d1a47844e86bcea6d01d10861818dba289e7099bbcc") diff --git a/var/spack/repos/builtin/packages/r-systemfonts/package.py b/var/spack/repos/builtin/packages/r-systemfonts/package.py index fffb2dcdc7a805..4d4f38f6390590 100644 --- a/var/spack/repos/builtin/packages/r-systemfonts/package.py +++ b/var/spack/repos/builtin/packages/r-systemfonts/package.py @@ -21,11 +21,13 @@ class RSystemfonts(RPackage): license("MIT") + version("1.1.0", sha256="1941069bd20320284ec026a38c53cb736be60bda431303ceaf8fd27ae13fb644") version("1.0.4", sha256="ef766c75b942f147d382664a00d6a4930f1bfe0cce9d88943f571682a85a84c0") version("1.0.3", sha256="647c99d5ea6f90a49768ea7b10b39816af6be85168475273369fd973a20dbbba") version("1.0.1", sha256="401db4d9e78e3a5e00b7a0b4fbad7fbb1c584734469b65fe5b7ebe1851c7a797") depends_on("r@3.2.0:", type=("build", "run")) depends_on("r-cpp11@0.2.1:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@1.1.0:") depends_on("fontconfig") depends_on("freetype") diff --git a/var/spack/repos/builtin/packages/r-tclust/package.py b/var/spack/repos/builtin/packages/r-tclust/package.py index 964e8746050f48..28e5169388cdd5 100644 --- a/var/spack/repos/builtin/packages/r-tclust/package.py +++ b/var/spack/repos/builtin/packages/r-tclust/package.py @@ -18,6 +18,7 @@ class RTclust(RPackage): license("GPL-3.0-only") + version("2.0-4", sha256="a6667167778b974afc968340161171a7911415bcc1220dc7f0f350552f560578") version("1.5-4", sha256="2b55da5e351c5054c9627f57a43084518a138a1d8097e35a364db0eff63471a8") version("1.5-2", sha256="492674b30a465e5f4a22ba0ce5556ed4d8e57b29090f9b5b94ad655d064e6f8b") version("1.5-1", sha256="73328b30774bb0767d613d7f2b60b75706b19fab864c712645ea18181f1af327") @@ -30,3 +31,10 @@ class RTclust(RPackage): version("1.1-02", sha256="f73c0d7a495552f901b710cf34e114c0ba401d5a17c48156313245904bcccad4") depends_on("r@2.12.0:", type=("build", "run")) + depends_on("r@3.6.2:", type=("build", "run"), when="@1.5-6:") + + depends_on("r-doparallel", type=("build", "run"), when="@2.0:") + depends_on("r-foreach", type=("build", "run"), when="@2.0:") + depends_on("r-mass", type=("build", "run"), when="@2.0:") + depends_on("r-rcpp@1.0.7:", type=("build", "run"), when="@2.0:") + depends_on("r-rcpparmadillo", type=("build", "run"), when="@2.0:") diff --git a/var/spack/repos/builtin/packages/r-teachingdemos/package.py b/var/spack/repos/builtin/packages/r-teachingdemos/package.py index 72d8ccbcc41aed..45c58294c5047d 100644 --- a/var/spack/repos/builtin/packages/r-teachingdemos/package.py +++ b/var/spack/repos/builtin/packages/r-teachingdemos/package.py @@ -15,6 +15,7 @@ class RTeachingdemos(RPackage): cran = "TeachingDemos" + version("2.13", sha256="f80eb952b7d1a0cde3bed8152f9c4e9eceaa3f635209b2af9a11e785e8c0fbcc") version("2.12", sha256="3e75405ce1affa406d6df85e06f96381412bc7a2810b25d8c81bfe64c4698644") version("2.10", sha256="2ef4c2e36ba13e32f66000e84281a3616584c86b255bca8643ff3fe4f78ed704") diff --git a/var/spack/repos/builtin/packages/r-tensora/package.py b/var/spack/repos/builtin/packages/r-tensora/package.py index 1e962ddcdbfa52..0c1c67061f70ec 100644 --- a/var/spack/repos/builtin/packages/r-tensora/package.py +++ b/var/spack/repos/builtin/packages/r-tensora/package.py @@ -18,6 +18,7 @@ class RTensora(RPackage): license("GPL-2.0-or-later") + version("0.36.2.1", sha256="06588261fe7dff6a8edafe2b9d436b39a3b46c754f2ed327ae6322561a617db7") version("0.36.2", sha256="8e8947566bd3b65a54de4269df1abaa3d49cf5bfd2a963c3274a524c8a819ca7") version("0.36.1", sha256="c7ffe12b99867675b5e9c9f31798f9521f14305c9d9f9485b171bcbd8697d09c") version("0.36", sha256="97b3e72f26ca3a756d045008764d787a32c68f0a276fb7a29b6e1b4592fdecf6") diff --git a/var/spack/repos/builtin/packages/r-terra/package.py b/var/spack/repos/builtin/packages/r-terra/package.py index d71f827e72ae34..7f4abc51edbd3e 100644 --- a/var/spack/repos/builtin/packages/r-terra/package.py +++ b/var/spack/repos/builtin/packages/r-terra/package.py @@ -23,6 +23,7 @@ class RTerra(RPackage): license("GPL-3.0-or-later") + version("1.7-78", sha256="658956b79d8a1371aefdf7300316f1756b58d436ba549ade012307684b2d4b7e") version("1.7-29", sha256="3f39b052a34c9f1166a342be4c25bbdc1e2c81402edb734901d63fc6fa547ca5") version("1.6-17", sha256="db888f4220ca511332f4d011345b2b207fcc1de26d2eae473e0eeb5dfd8bbc02") version("1.5-21", sha256="091ee928ccaa6561aa9f8ee6c1c99f139dc89f1653c2a76a035cca14d404f43f") diff --git a/var/spack/repos/builtin/packages/r-tester/package.py b/var/spack/repos/builtin/packages/r-tester/package.py index 3d25497a42a403..ee8387ad3125e1 100644 --- a/var/spack/repos/builtin/packages/r-tester/package.py +++ b/var/spack/repos/builtin/packages/r-tester/package.py @@ -15,6 +15,7 @@ class RTester(RPackage): license("GPL-3.0-only") + version("0.2.0", sha256="bec8141b8572ca8d19a270a2eaec23aa4c01a167f32f2e05a4bf353418a0020b") version("0.1.7", sha256="b9c645119c21c69450f3d366c911ed92ac7c14ef61652fd676a38fb9d420b5f4") depends_on("r@3.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-testthat/package.py b/var/spack/repos/builtin/packages/r-testthat/package.py index 756b98bad21d8d..dcf74f0b19e7a5 100644 --- a/var/spack/repos/builtin/packages/r-testthat/package.py +++ b/var/spack/repos/builtin/packages/r-testthat/package.py @@ -17,6 +17,7 @@ class RTestthat(RPackage): license("MIT") + version("3.2.1.1", sha256="d785ce3975939e28b61048b0e28d881c80904534ff21e5b1a79a0a934124e9f7") version("3.1.7", sha256="1ad86b1739481c6c46359a6634ecc706bf513f34b26d7a62cbc719bbd4658eab") version("3.1.5", sha256="a8f56b9426206ddfc30b550c82ff2f042ebe1c2f5bfd4184aec8facac8f5b7fc") version("3.1.4", sha256="a47eec031b4e186a8bd331031371b2347063a283050eca2adbfaa37d7a6c9c09") @@ -29,34 +30,52 @@ class RTestthat(RPackage): version("1.0.2", sha256="0ef7df0ace1fddf821d329f9d9a5d42296085350ae0d94af62c45bd203c8415e") depends_on("r@3.1:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@3.2.0:") depends_on("r-brio", type=("build", "run"), when="@3.0.1:") + depends_on("r-brio@1.1.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-callr@3.5.1:", type=("build", "run"), when="@3.0.1:") + depends_on("r-callr@3.7.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-cli", type=("build", "run"), when="@2.0.0:") depends_on("r-cli@2.2.0:", type=("build", "run"), when="@3.0.1:") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@3.1.4:") depends_on("r-cli@3.4.0:", type=("build", "run"), when="@3.1.5:") + depends_on("r-cli@3.6.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-desc", type=("build", "run"), when="@3.0.1:") + depends_on("r-desc@1.4.2:", type=("build", "run"), when="@3.2.0:") depends_on("r-digest", type=("build", "run")) - depends_on("r-ellipsis", type=("build", "run"), when="@2.3.2:") - depends_on("r-ellipsis@0.2.0:", type=("build", "run"), when="@3.0.1:") + depends_on("r-digest@0.6.33:", type=("build", "run"), when="@3.2.0:") depends_on("r-evaluate", type=("build", "run"), when="@2.2.0:") + depends_on("r-evaluate@0.21:", type=("build", "run"), when="@3.2.0:") depends_on("r-jsonlite", type=("build", "run"), when="@3.0.1:") + depends_on("r-jsonlite@1.8.7:", type=("build", "run"), when="@3.2.0:") depends_on("r-lifecycle", type=("build", "run"), when="@3.0.1:") + depends_on("r-lifecycle@1.0.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-magrittr", type=("build", "run")) + depends_on("r-magrittr@2.0.3:", type=("build", "run"), when="@3.2.0:") depends_on("r-pkgload", type=("build", "run"), when="@2.3.2:") + depends_on("r-pkgload@1.3.2.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-praise", type=("build", "run")) + depends_on("r-praise@1.0.0:", type=("build", "run"), when="@3.2.0:") depends_on("r-processx", type=("build", "run"), when="@3.0.1:") + depends_on("r-processx@3.8.2:", type=("build", "run"), when="@3.2.0:") depends_on("r-ps@1.3.4:", type=("build", "run"), when="@3.0.1:") + depends_on("r-ps@1.7.5:", type=("build", "run"), when="@3.2.0:") depends_on("r-r6@2.2.0:", type=("build", "run")) + depends_on("r-r6@2.5.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-rlang@0.3.0:", type=("build", "run"), when="@2.0.0:") depends_on("r-rlang@0.4.1:", type=("build", "run"), when="@2.3.2:") depends_on("r-rlang@0.4.9:", type=("build", "run"), when="@3.0.1:") depends_on("r-rlang@1.0.1:", type=("build", "run"), when="@3.1.4:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-waldo@0.2.1:", type=("build", "run"), when="@3.0.1:") depends_on("r-waldo@0.2.4:", type=("build", "run"), when="@3.1.1:") depends_on("r-waldo@0.4.0:", type=("build", "run"), when="@3.1.4:") + depends_on("r-waldo@0.5.1:", type=("build", "run"), when="@3.2.0:") depends_on("r-withr@2.0.0:", type=("build", "run"), when="@2.0.0:") depends_on("r-withr@2.3.0:", type=("build", "run"), when="@3.0.1:") depends_on("r-withr@2.4.3:", type=("build", "run"), when="@3.1.2:") + depends_on("r-withr@2.5.0:", type=("build", "run"), when="@3.2.0:") depends_on("r-crayon@1.3.4:", type=("build", "run"), when="@:3.1.4") + depends_on("r-ellipsis", type=("build", "run"), when="@2.3.2:3.2.0") + depends_on("r-ellipsis@0.2.0:", type=("build", "run"), when="@3.0.1:3.2.0") diff --git a/var/spack/repos/builtin/packages/r-textshaping/package.py b/var/spack/repos/builtin/packages/r-textshaping/package.py index 877fe54114bf6a..1c75b421d14a4e 100644 --- a/var/spack/repos/builtin/packages/r-textshaping/package.py +++ b/var/spack/repos/builtin/packages/r-textshaping/package.py @@ -18,11 +18,15 @@ class RTextshaping(RPackage): license("MIT") + version("0.4.0", sha256="35e940786bb278560de61bb55d4f46f8c86c878d0461613ceb8c98ba9b239d7a") version("0.3.6", sha256="80e2c087962f55ce2811fbc798b09f5638c06c6b28c10cd3cb3827005b902ada") depends_on("r@3.2.0:", type=("build", "run")) - depends_on("r-systemfonts@1.0.0:", type=("build", "run")) depends_on("r-cpp11@0.2.1:", type=("build", "run")) + depends_on("r-lifecycle", type=("build", "run"), when="@0.4.0:") + depends_on("r-systemfonts@1.0.0:", type=("build", "run")) + depends_on("r-systemfonts@1.1.0:", type=("build", "run"), when="@0.4.0:") + depends_on("pkgconfig", type="build") depends_on("freetype") depends_on("harfbuzz") depends_on("fribidi") diff --git a/var/spack/repos/builtin/packages/r-tictoc/package.py b/var/spack/repos/builtin/packages/r-tictoc/package.py index 726315142308af..ad06c0a532a4c9 100644 --- a/var/spack/repos/builtin/packages/r-tictoc/package.py +++ b/var/spack/repos/builtin/packages/r-tictoc/package.py @@ -22,6 +22,7 @@ class RTictoc(RPackage): license("Apache-2.0 OR custom") + version("1.2.1", sha256="8fcdb7c9a1e4b4817bcab654effd64dea6ec749a7901d4060d5b5c625fc88833") version("1.2", sha256="f05ea4b4142a90b0dc5d10356be3748625ef86bbd0e4399c56455654165ff20c") version("1.1", sha256="120f868ba276bda70c8edef5d6c092586cf73db0fa02eb5459d8f55350fb474d") version("1.0.1", sha256="a09a1535c417ddf6637bbbda5fca6edab6c7f7b252a64e57e99d4d0748712705") diff --git a/var/spack/repos/builtin/packages/r-tidycensus/package.py b/var/spack/repos/builtin/packages/r-tidycensus/package.py index 19b3865c0dd573..855763530f7882 100644 --- a/var/spack/repos/builtin/packages/r-tidycensus/package.py +++ b/var/spack/repos/builtin/packages/r-tidycensus/package.py @@ -20,6 +20,7 @@ class RTidycensus(RPackage): license("MIT") + version("1.6.5", sha256="b846406eeff21cf8035f6cfe0479eadb5fec67e02ef7106294f9d2ddff45f122") version("1.3.2", sha256="ca47323f19c94a3c767bef59986f4a6cb4e455b3eb21ea64f1b3d6339443c515") version("1.2.3", sha256="23bc58bb6e20e1056e40dca55a49576b5e186fdb324f00fa9d5c07fb675f32ff") version("1.2.2", sha256="5cdbb92314061c9d8d3d62f623699fa115d7faae1f4a961d55ab905538f8e7cc") diff --git a/var/spack/repos/builtin/packages/r-tidygraph/package.py b/var/spack/repos/builtin/packages/r-tidygraph/package.py index 0b4496c6edda6c..4331c3fa9056c9 100644 --- a/var/spack/repos/builtin/packages/r-tidygraph/package.py +++ b/var/spack/repos/builtin/packages/r-tidygraph/package.py @@ -19,6 +19,7 @@ class RTidygraph(RPackage): license("MIT") + version("1.3.1", sha256="aac1d4bb9396081bbeecbde11a3cd1a26a56bd6b1f608a628b359cb37c18ac1a") version("1.2.3", sha256="b09c06b12583ae57edd1ec01e61a0e1b7a4b82358361fb28a6046dbece475687") version("1.2.2", sha256="d555cad6b5b56bd2edaa29950a0fd15942e972db21561bfd5cd64fd9a8936470") version("1.2.1", sha256="2fbdc2db18c5ad48c72f14d2d04111f4b0d4c434ad87c280eda3bcb98673ad36") @@ -30,6 +31,8 @@ class RTidygraph(RPackage): depends_on("r-dplyr@0.8.5:", type=("build", "run"), when="@1.2.0:") depends_on("r-igraph", type=("build", "run")) depends_on("r-igraph@1.3.0:", type=("build", "run"), when="@1.2.3:") + depends_on("r-igraph@2.0.0:", type=("build", "run"), when="@1.3.1:") + depends_on("r-lifecycle", type=("build", "run"), when="@1.3.0:") depends_on("r-magrittr", type=("build", "run")) depends_on("r-rlang", type=("build", "run")) depends_on("r-r6", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-tidyr/package.py b/var/spack/repos/builtin/packages/r-tidyr/package.py index 1a690a07a22aa3..3e9d7eb748e170 100644 --- a/var/spack/repos/builtin/packages/r-tidyr/package.py +++ b/var/spack/repos/builtin/packages/r-tidyr/package.py @@ -21,6 +21,7 @@ class RTidyr(RPackage): license("MIT") + version("1.3.1", sha256="e820c261cb5543f572f49276a7bdc7302aa4215da4bf850b1b939a315353835d") version("1.3.0", sha256="8d532b9366fdd3ec9827b51830e559a49d073425007c766025f0e603964e0a9d") version("1.2.1", sha256="6971766d3663dc75c2328ab257816f4e42d9fdc05c2d87d171b8b9b5ecce61af") version("1.2.0", sha256="8cd01da9e97827521d01ea50b9225f2705c46b7538bbf74bec6249a04c1213a8") @@ -33,6 +34,7 @@ class RTidyr(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4.0:", type=("build", "run"), when="@1.3.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.3.1:") depends_on("r-dplyr@0.7.0:", type=("build", "run")) depends_on("r-dplyr@0.8.2:", type=("build", "run"), when="@1.1.2:") depends_on("r-dplyr@1.0.0:", type=("build", "run"), when="@1.2.0:") @@ -46,6 +48,7 @@ class RTidyr(RPackage): depends_on("r-purrr@1.0.1:", type=("build", "run"), when="@1.3.0:") depends_on("r-rlang", type=("build", "run")) depends_on("r-rlang@1.0.4:", type=("build", "run"), when="@1.3.0:") + depends_on("r-rlang@1.1.1:", type=("build", "run"), when="@1.3.1:") depends_on("r-tibble", type=("build", "run")) depends_on("r-tibble@2.1.1:", type=("build", "run"), when="@1.1.2:") depends_on("r-tidyselect@0.2.5:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-tidyselect/package.py b/var/spack/repos/builtin/packages/r-tidyselect/package.py index 91c1235e7bc1b8..e7fcba5f2c31f1 100644 --- a/var/spack/repos/builtin/packages/r-tidyselect/package.py +++ b/var/spack/repos/builtin/packages/r-tidyselect/package.py @@ -17,6 +17,7 @@ class RTidyselect(RPackage): license("MIT") + version("1.2.1", sha256="169e97ba0bbfbcdf4a80534322751f87a04370310c40e27f04aac6525d45903c") version("1.2.0", sha256="538d26b727e37d618e2efd3b00836048f103112a03e6994bf07a02392e269e3b") version("1.1.2", sha256="0389a3b15417954a30d6d692f6ebdd3d0f318cb94a5c9b05365df2f4ea1d8270") version("1.1.1", sha256="18eb6a6746196a81ce19ee6cbf1db0c33f494177b97e2419312ef25a00ae486b") @@ -38,10 +39,11 @@ class RTidyselect(RPackage): depends_on("r-vctrs@0.2.2:", type=("build", "run"), when="@1.1.0:") depends_on("r-vctrs@0.3.0:", type=("build", "run"), when="@1.1.1:") depends_on("r-vctrs@0.4.1:", type=("build", "run"), when="@1.2.0:") + depends_on("r-vctrs@0.5.2:", type=("build", "run"), when="@1.2.1:") depends_on("r-rcpp@0.12.0:", type=("build", "run"), when="@:0.2.5") depends_on("r-cli@3.3.0:", type=("build", "run"), when="@1.2.0:") depends_on("r-ellipsis", type=("build", "run"), when="@1.1.0:1.1.2") - depends_on("r-purrr", type=("build", "run")) + depends_on("r-purrr", type=("build", "run"), when="@:1.1.2") depends_on("r-purrr@0.3.2:", type=("build", "run"), when="@1.1.0:1.1.2") diff --git a/var/spack/repos/builtin/packages/r-tidytree/package.py b/var/spack/repos/builtin/packages/r-tidytree/package.py index 53ec7b519e7722..9636cedcd1b67c 100644 --- a/var/spack/repos/builtin/packages/r-tidytree/package.py +++ b/var/spack/repos/builtin/packages/r-tidytree/package.py @@ -18,6 +18,7 @@ class RTidytree(RPackage): license("Artistic-2.0") + version("0.4.6", sha256="dba909ba767283fa76795a67e048ff1c8cd339c7e44f64c9698c70ecb3d92292") version("0.4.2", sha256="cb831a66d8afa5e21f5072e4fbebcbd2228881090d0040f87605f5aeefda155e") version("0.4.1", sha256="fbc4364d17e1b1c26ed06af0cdf36c88a5bc562fdbd4731ab179e30bba4009eb") version("0.3.9", sha256="12435d4f4c4d734b2a758cb13eb3b44bdfa8fdfa79a6e81fb99f7ce3a5d82edf") diff --git a/var/spack/repos/builtin/packages/r-tiff/package.py b/var/spack/repos/builtin/packages/r-tiff/package.py index b99b115da6047f..d133e132af148f 100644 --- a/var/spack/repos/builtin/packages/r-tiff/package.py +++ b/var/spack/repos/builtin/packages/r-tiff/package.py @@ -17,6 +17,7 @@ class RTiff(RPackage): license("GPL-2.0-only OR GPL-3.0-only") + version("0.1-12", sha256="df10ce719f92597572763182f7cb03686b8d7fb9123d036a4daf5b10738e815c") version("0.1-11", sha256="b8c3ea15114d972f8140541c7b01f5ce2e5322af1f63c1a083aaf766fd3eec75") version("0.1-10", sha256="535154e89e85e14fe697469d2c59826a44c7937e7eca2eaca1aee6b0fe320afe") version("0.1-6", sha256="623bd9c16a426df7e6056738c5d91da86ea9b49df375eea6b5127e4e458dc4fb") diff --git a/var/spack/repos/builtin/packages/r-tigris/package.py b/var/spack/repos/builtin/packages/r-tigris/package.py index cb556f39c81f92..909fe240eaf374 100644 --- a/var/spack/repos/builtin/packages/r-tigris/package.py +++ b/var/spack/repos/builtin/packages/r-tigris/package.py @@ -16,6 +16,7 @@ class RTigris(RPackage): license("MIT") + version("2.1", sha256="796bed6ce003323815d606886472bf21c101656fca8a593daa3b69cb3bd6fd97") version("2.0.1", sha256="d87c6b0c11ffb967699d345c6bfcfa82581a0753e1130bf0c927b2960b074d8c") version("1.6.1", sha256="927e8da3f7120bcc10f0b4ded95687512693e069f082eea7aea6302a2f1b2db2") version("1.6", sha256="fa14fbbaf44f5ade1cc92e6e4e4ed2e775bc7c106310711d16b0135a948a1661") diff --git a/var/spack/repos/builtin/packages/r-timechange/package.py b/var/spack/repos/builtin/packages/r-timechange/package.py index 27425f56bdb623..97ffb606e87390 100644 --- a/var/spack/repos/builtin/packages/r-timechange/package.py +++ b/var/spack/repos/builtin/packages/r-timechange/package.py @@ -21,6 +21,7 @@ class RTimechange(RPackage): license("GPL-3.0-only") + version("0.3.0", sha256="d85c0b5514ab9578d16032e703c33f197feaed1a424c834ebfcbf0ad46ae46b4") version("0.2.0", sha256="3d602008052123daef94a5c3f5154c5461b4ec0432ab70c37273d7ddd252f7f1") version("0.1.1", sha256="8503919d233d7d7b81fe47692f0f2d6742ff4cae7320a5522bf98f077f5d7f70") diff --git a/var/spack/repos/builtin/packages/r-timedate/package.py b/var/spack/repos/builtin/packages/r-timedate/package.py index 60d51b27944ea9..c299e1ba86bff2 100644 --- a/var/spack/repos/builtin/packages/r-timedate/package.py +++ b/var/spack/repos/builtin/packages/r-timedate/package.py @@ -21,6 +21,7 @@ class RTimedate(RPackage): cran = "timeDate" + version("4032.109", sha256="402841bda47e8c31f49773de2ff5447e9780bc7c8af5fb18be9287b546fcb958") version("4022.108", sha256="a5949b4fe2f6bdff751fc0793df8e3150cc25c078d48a28c066c10a6c4bfceef") version("4021.106", sha256="14adf1ec6cbd80f11a243fa66ea943725a7a4c75923ae2d8e424235d500b10e2") version("3043.102", sha256="377cba03cddab8c6992e31d0683c1db3a73afa9834eee3e95b3b0723f02d7473") diff --git a/var/spack/repos/builtin/packages/r-tinytex/package.py b/var/spack/repos/builtin/packages/r-tinytex/package.py index 754386ac724945..71efa6f83af93e 100644 --- a/var/spack/repos/builtin/packages/r-tinytex/package.py +++ b/var/spack/repos/builtin/packages/r-tinytex/package.py @@ -20,6 +20,7 @@ class RTinytex(RPackage): license("MIT") + version("0.52", sha256="932a713b9fdd52fe8869e8c38d03f15602f2c02ec543d4dabffde2a3981f513a") version("0.45", sha256="0c2fbbd09e80af80ca6b685bf0653f070da97b85413d39af966aba28f376e92c") version("0.42", sha256="205f7a1978118aa38b6d9f7d3e1667c635da262b43967d1a879520284c2e22b1") version("0.39", sha256="f22e9b77c200fe44cc073b759c2b2bc3310a2382d897282548aa02dcbabc25ed") diff --git a/var/spack/repos/builtin/packages/r-tinytiger/package.py b/var/spack/repos/builtin/packages/r-tinytiger/package.py index 930f366c341531..832df344c2f882 100644 --- a/var/spack/repos/builtin/packages/r-tinytiger/package.py +++ b/var/spack/repos/builtin/packages/r-tinytiger/package.py @@ -23,13 +23,15 @@ class RTinytiger(RPackage): license("MIT") + version("0.0.9", sha256="fe9b1098a2d1d4722f8a7657a9244afcd3d6b7f4f112fc6a92c2fb75da07de59") version("0.0.4", sha256="818328b5095d9e8b302f1a04d004cd3ec6e62d945dbd757fe15e9ab768a7459e") version("0.0.3", sha256="841d92dd4185b9bff5eef0d3635805c5a3efb1bc4ff0a1101ef264417e37921c") depends_on("r@2.0.0:", type=("build", "run")) depends_on("r@2.10:", type=("build", "run"), when="@0.0.4:") - depends_on("r-rlang") depends_on("r-cli") depends_on("r-glue") depends_on("r-curl") depends_on("r-sf") + + depends_on("r-rlang", type=("build", "run"), when="@:0.0.8") diff --git a/var/spack/repos/builtin/packages/r-tseries/package.py b/var/spack/repos/builtin/packages/r-tseries/package.py index 55c8888de3986d..bf8fa57c602a31 100644 --- a/var/spack/repos/builtin/packages/r-tseries/package.py +++ b/var/spack/repos/builtin/packages/r-tseries/package.py @@ -13,6 +13,7 @@ class RTseries(RPackage): license("GPL-2.0-only") + version("0.10-57", sha256="18754bb7642728916e30e67cb75462a296699b9b1f2ef1fb9803199f00f89bee") version("0.10-53", sha256="ec388ee6d022752bbebbecbf22d793d31f3734982e3f2e3ffd8dde14bffcca56") version("0.10-52", sha256="9399c8dbedb3b44b8b3b854f6e8867e0a14f3727a7aa66ec9c6eff069ead8f45") version("0.10-51", sha256="a55f20704883710ab58ea479e20cf0f263c50d54282f693793cda4af664c207f") @@ -23,6 +24,8 @@ class RTseries(RPackage): version("0.10-42", sha256="827f79858715c700e8cabd2c27853ba88ad0e05eb043bc94e126b155a75546c4") depends_on("r@2.10.0:", type=("build", "run")) + depends_on("r@3.4.0:", type=("build", "run"), when="@0.10-57:") + depends_on("r-jsonlite", type=("build", "run"), when="@0.10-54:") depends_on("r-quadprog", type=("build", "run")) depends_on("r-zoo", type=("build", "run")) depends_on("r-quantmod@0.4-9:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-ttr/package.py b/var/spack/repos/builtin/packages/r-ttr/package.py index 74b7203b52c63d..9517b98fcd209e 100644 --- a/var/spack/repos/builtin/packages/r-ttr/package.py +++ b/var/spack/repos/builtin/packages/r-ttr/package.py @@ -15,6 +15,7 @@ class RTtr(RPackage): cran = "TTR" + version("0.24.4", sha256="89732b9c359bae2f41cd23db649f0897c10fab0702d780c4c25a997322710284") version("0.24.3", sha256="4d9aef32647664be5cf965b05f21ed62cde9425fa87c21530852e05ef7aaba87") version("0.24.2", sha256="2587b988d9199474a19470b9b999b99133d0d8aa45410813e05c5f0ed763711b") version("0.23-4", sha256="eb17604da986213b3b924f0af65c3d089502a658a253ee34f6b8f6caccf6bfa2") diff --git a/var/spack/repos/builtin/packages/r-tweenr/package.py b/var/spack/repos/builtin/packages/r-tweenr/package.py index 254f43f96f19b3..ec6b9f42303346 100644 --- a/var/spack/repos/builtin/packages/r-tweenr/package.py +++ b/var/spack/repos/builtin/packages/r-tweenr/package.py @@ -19,6 +19,7 @@ class RTweenr(RPackage): license("MIT") + version("2.0.3", sha256="efabe512a45d653787ba40f87f3e23add4037f88573a102fa9ac7a5ff43c8cbe") version("2.0.2", sha256="64bbfded418d4880e3636f434571c20303d2f66be6950d64583a864fbb661ff3") version("1.0.2", sha256="1805f575da6705ca4e5ec1c4605222fc826ba806d9ff9af41770294fe08ff69f") version("1.0.1", sha256="efd68162cd6d5a4f6d833dbf785a2bbce1cb7b9f90ba3fb060931a4bd705096b") diff --git a/var/spack/repos/builtin/packages/r-tzdb/package.py b/var/spack/repos/builtin/packages/r-tzdb/package.py index 8f606a1a1e9e43..596b3a4acd95d6 100644 --- a/var/spack/repos/builtin/packages/r-tzdb/package.py +++ b/var/spack/repos/builtin/packages/r-tzdb/package.py @@ -23,10 +23,12 @@ class RTzdb(RPackage): license("MIT") + version("0.4.0", sha256="4253c66041bdddfd463c98183bf0052fbcacdb7c5cff9eadbb858b3dcf9d3a23") version("0.3.0", sha256="6099f0ec1fba692b51b4360aa776902a39f10dae815933c31994b8e4d4277038") version("0.2.0", sha256="c335905d452b400af7ed54b916b5246cb3f47ede0602911a2bcb25a1cf56d5a9") depends_on("r@3.3:", type=("build", "run")) depends_on("r@3.4.0:", type=("build", "run"), when="@0.3.0:") + depends_on("r@3.5.0:", type=("build", "run"), when="@0.4.0:") depends_on("r-cpp11@0.4.0:", type=("build", "run")) depends_on("r-cpp11@0.4.2:", type=("build", "run"), when="@0.3.0:") diff --git a/var/spack/repos/builtin/packages/r-ucminf/package.py b/var/spack/repos/builtin/packages/r-ucminf/package.py index ba6dc6e92af8bc..76ec1fef1b1727 100644 --- a/var/spack/repos/builtin/packages/r-ucminf/package.py +++ b/var/spack/repos/builtin/packages/r-ucminf/package.py @@ -19,5 +19,8 @@ class RUcminf(RPackage): license("GPL-2.0-or-later") + version("1.2.2", sha256="4bdb6ae769fa49a167cfdc92dc544ba3b6f34df6c08810cfb0c55613aff5bd29") version("1.1-4.1", sha256="01a5b6f373ad267d22e2c29b8f7b6e31a1a148e48f4413e6a38e51aa049976b2") version("1.1-4", sha256="a2eb382f9b24e949d982e311578518710f8242070b3aa3314a331c1e1e7f6f07") + + depends_on("r@3.5.0:", when="@1.2.0:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-units/package.py b/var/spack/repos/builtin/packages/r-units/package.py index 01ebe5a976f5de..83719b38cac0ea 100644 --- a/var/spack/repos/builtin/packages/r-units/package.py +++ b/var/spack/repos/builtin/packages/r-units/package.py @@ -22,6 +22,7 @@ class RUnits(RPackage): license("GPL-2.0-only") + version("0.8-5", sha256="d95e80af760b053e10a1e33ce1f0c1280a84e84bd4b1d9c34d1fe9fc153603b1") version("0.8-1", sha256="d3e1ba246b4c97205bc3da3cf45d6b5bd5c196b8d421b84b4e94b2090985cd9a") version("0.8-0", sha256="9c46fe138e8c1c3d3a51268776412f02d09673656516148cccb71b1071beb21a") version("0.7-2", sha256="b90be023431100632b3081747af9e743e615452b4ad38810991f7b024b7040eb") diff --git a/var/spack/repos/builtin/packages/r-urca/package.py b/var/spack/repos/builtin/packages/r-urca/package.py index 2dcbdb474b29a5..178ceca85b7ac8 100644 --- a/var/spack/repos/builtin/packages/r-urca/package.py +++ b/var/spack/repos/builtin/packages/r-urca/package.py @@ -16,6 +16,7 @@ class RUrca(RPackage): license("GPL-2.0-or-later") + version("1.3-4", sha256="fe3d6ce5041f1e7caaf3137dfb6187640bcd2d208e19c59ee1202355ac0acb16") version("1.3-3", sha256="43baa8b6735f8325a69e6a43686f4fecd77a0eb7f60da25b4fc5c51b9271e9f1") version("1.3-0", sha256="621cc82398e25b58b4a16edf000ed0a1484d9a0bc458f734e97b6f371cc76aaa") diff --git a/var/spack/repos/builtin/packages/r-usethis/package.py b/var/spack/repos/builtin/packages/r-usethis/package.py index 497cfe55a70646..70eafc1274bc59 100644 --- a/var/spack/repos/builtin/packages/r-usethis/package.py +++ b/var/spack/repos/builtin/packages/r-usethis/package.py @@ -18,6 +18,7 @@ class RUsethis(RPackage): license("MIT") + version("3.0.0", sha256="98f850f9ceaae37eb16ccd1232275b4e8f818c115c67151fa99096c477f7ccb5") version("2.1.6", sha256="31dc6707577065ac1d4acb7d4cbf135942727c5cc2699092198c544be86f6818") version("2.1.5", sha256="7d539e16ecdc1cd45ba1a215d42d8b9c16bc38280ddd27048003dbb37b16f052") version("2.0.0", sha256="22aa2b59f36a8701a4648554c7b0e010253bf917a0f431f06efac7d8a6b59854") @@ -26,6 +27,7 @@ class RUsethis(RPackage): depends_on("r@3.2:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@2.1.5:") + depends_on("r@3.6:", type=("build", "run"), when="@2.2.0:") depends_on("r-cli", type=("build", "run"), when="@1.6.1:") depends_on("r-cli@3.0.1:", type=("build", "run"), when="@2.1.5:") depends_on("r-clipr@0.3.0:", type=("build", "run")) @@ -33,6 +35,7 @@ class RUsethis(RPackage): depends_on("r-curl@2.7:", type=("build", "run")) depends_on("r-desc", type=("build", "run")) depends_on("r-desc@1.4.0:", type=("build", "run"), when="@2.1.5:") + depends_on("r-desc@1.4.2:", type=("build", "run"), when="@2.2.0:") depends_on("r-fs@1.3.0:", type=("build", "run")) depends_on("r-gert@1.0.2:", type=("build", "run"), when="@2.0.0:") depends_on("r-gert@1.4.1:", type=("build", "run"), when="@2.1.5:") @@ -50,6 +53,7 @@ class RUsethis(RPackage): depends_on("r-rlang@0.4.3:", type=("build", "run"), when="@1.6.1:") depends_on("r-rlang@0.4.10:", type=("build", "run"), when="@2.1.5:") depends_on("r-rlang@1.0.0:", type=("build", "run"), when="@2.1.6:") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@2.2.0:") depends_on("r-rprojroot@1.2:", type=("build", "run")) depends_on("r-rstudioapi", type=("build", "run")) depends_on("r-whisker", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-utf8/package.py b/var/spack/repos/builtin/packages/r-utf8/package.py index ac87cb8e0464e9..09a2d22c500403 100644 --- a/var/spack/repos/builtin/packages/r-utf8/package.py +++ b/var/spack/repos/builtin/packages/r-utf8/package.py @@ -16,6 +16,7 @@ class RUtf8(RPackage): license("Apache-2.0 OR custom") + version("1.2.4", sha256="418f824bbd9cd868d2d8a0d4345545c62151d321224cdffca8b1ffd98a167b7d") version("1.2.3", sha256="c0a88686591f4ad43b52917d0964e9df4c62d8858fe25135a1bf357dfcbd6347") version("1.2.2", sha256="a71aee87d43a9bcf29249c7a5a2e9ca1d2a836e8d5ee3a264d3062f25378d8f4") version("1.1.4", sha256="f6da9cadfc683057d45f54b43312a359cf96ec2731c0dda18a8eae31d1e31e54") diff --git a/var/spack/repos/builtin/packages/r-uuid/package.py b/var/spack/repos/builtin/packages/r-uuid/package.py index a8b3bcc731ec23..deecee84276ca7 100644 --- a/var/spack/repos/builtin/packages/r-uuid/package.py +++ b/var/spack/repos/builtin/packages/r-uuid/package.py @@ -17,6 +17,7 @@ class RUuid(RPackage): license("MIT") + version("1.2-1", sha256="f90e49733d7d6ea7cf91abdc07b7d0e9a34a4b993e6914d754f0621281fc4b96") version("1.1-0", sha256="e75b50ee7dc8c4c8e7083023e954ffd1c6a004431bf5e9094463e46aa760f42f") version("1.0-3", sha256="456e4633659f20242fd7cd585ad005a3e07265f1d1db383fca6794c8ac2c8346") version("0.1-4", sha256="98e0249dda17434bfa209c2058e9911e576963d4599be9f7ea946e664f8ca93e") diff --git a/var/spack/repos/builtin/packages/r-uwot/package.py b/var/spack/repos/builtin/packages/r-uwot/package.py index c5e5d78dbdb689..c18015609e45cc 100644 --- a/var/spack/repos/builtin/packages/r-uwot/package.py +++ b/var/spack/repos/builtin/packages/r-uwot/package.py @@ -24,6 +24,7 @@ class RUwot(RPackage): license("GPL-3.0-or-later") + version("0.2.2", sha256="d9938c43d29530d4b36d1b2649cc679b09945a740db2cd3a266242b1aa9a6cd1") version("0.1.14", sha256="8016e8192b7e72604ca71840cbe43fa1d2caed8a8ad7cbf20e85cd3b384a9fe0") version("0.1.11", sha256="4fcf90f1369a2a1f01db9e05a2365b155b2ada8e51e1f7f3ba5122d86affd41b") version("0.1.10", sha256="6ee1b6027bce679cd5a35f647f516a5b327632234bcf323c7f3d5b5e10807d23") @@ -36,6 +37,7 @@ class RUwot(RPackage): depends_on("r-rcppannoy@0.0.17:", type=("build", "run"), when="@0.1.10:") depends_on("r-irlba", type=("build", "run")) depends_on("r-rcppprogress", type=("build", "run")) + depends_on("r-rspectra", type=("build", "run"), when="@0.2.2:") depends_on("r-dqrng", type=("build", "run")) depends_on("r-rcppparallel", type=("build", "run"), when="@:0.1.3") diff --git a/var/spack/repos/builtin/packages/r-v8/package.py b/var/spack/repos/builtin/packages/r-v8/package.py index 423c952e82b8e6..0d4dbf747dfa27 100644 --- a/var/spack/repos/builtin/packages/r-v8/package.py +++ b/var/spack/repos/builtin/packages/r-v8/package.py @@ -15,6 +15,7 @@ class RV8(RPackage): cran = "V8" + version("5.0.0", sha256="668fb759f973016e1e6aae21d711e83226d6895b43b2476c77feadf47896b21a") version("4.3.0", sha256="7e395c4faed0d2a9d647820269d2d374953fc67c6108d57d63e93ec570dbe0d0") version("4.2.2", sha256="50653527198637a37c010052f394839f50a3c643975aac1d04e42d36f8e5313b") version("4.2.1", sha256="99881af4798d11da0adccd8e4e1aa5dc4adccf5e3572724c14f6f90c2b8c3ff0") diff --git a/var/spack/repos/builtin/packages/r-vcd/package.py b/var/spack/repos/builtin/packages/r-vcd/package.py index 14933c740c03c0..47bb1bb196f176 100644 --- a/var/spack/repos/builtin/packages/r-vcd/package.py +++ b/var/spack/repos/builtin/packages/r-vcd/package.py @@ -20,6 +20,7 @@ class RVcd(RPackage): license("GPL-2.0-only") + version("1.4-12", sha256="c931ef115529931cddb1d5caec4d4d3569ebf12aadde719b2f5019812c9ded88") version("1.4-11", sha256="7a54e855689e1429d46e0d4d7a956f96b0ad2fd0c7084fa023902c55849e0932") version("1.4-10", sha256="7188192afa289350cc1b89790f4f8f5a5114c1c88bee7715a0c8f5347aa0b35b") version("1.4-9", sha256="a5b420ad5ff1a27fa92f98099a8b43f2dded7e5f60297b3e4d947ad6f039568f") diff --git a/var/spack/repos/builtin/packages/r-vcfr/package.py b/var/spack/repos/builtin/packages/r-vcfr/package.py index f8320ac87e6a56..a818ee8b6b5117 100644 --- a/var/spack/repos/builtin/packages/r-vcfr/package.py +++ b/var/spack/repos/builtin/packages/r-vcfr/package.py @@ -22,6 +22,7 @@ class RVcfr(RPackage): maintainers("dorton21") + version("1.15.0", sha256="df17e48b961d96f2a78a1a15037df674f57d0445f2669e401543d8082f0b49fa") version("1.14.0", sha256="8576dbd2e5a707dabc20acbbea3fe18b6a783910e622423ac203609a386204cb") version("1.13.0", sha256="743ce845732ada638f0f8a2cd789cd06aa25d818fec87c8bdb998f7c77089ebc") version("1.12.0", sha256="dd87ff010365de363864a44ca49887c0fdad0dd18d0d9c66e44e39c2d4581d52") diff --git a/var/spack/repos/builtin/packages/r-vegan/package.py b/var/spack/repos/builtin/packages/r-vegan/package.py index 5821e4b266fc5b..9fa33c733c0f49 100644 --- a/var/spack/repos/builtin/packages/r-vegan/package.py +++ b/var/spack/repos/builtin/packages/r-vegan/package.py @@ -16,6 +16,7 @@ class RVegan(RPackage): license("GPL-2.0-only") + version("2.6-6.1", sha256="7d2a5e700a6639bef203d6e35dfe6e8cc1dd7440957334317b61a9dafbb90b60") version("2.6-4", sha256="5d8ad4bebe79ae2bbd840a34100cf54c62f089c66ea484a542a201afcba21d06") version("2.6-2", sha256="ab77d110c959d19b0c6268ae0c8f78c897e2419eff3f1f7b19c1bb2f8db7c059") version("2.5-7", sha256="e63b586951ea7d8b0118811f329c700212892ec1db3b93951603ce1d68aa462a") @@ -27,6 +28,7 @@ class RVegan(RPackage): depends_on("r@3.1.0:", type=("build", "run"), when="@2.5-1") depends_on("r@3.2.0:", type=("build", "run"), when="@2.5-2:") depends_on("r@3.4.0:", type=("build", "run"), when="@2.5-5:") + depends_on("r@4.1.0:", type=("build", "run"), when="@2.6-6:") depends_on("r-permute@0.9-0:", type=("build", "run")) depends_on("r-lattice", type=("build", "run")) depends_on("r-mass", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-vgam/package.py b/var/spack/repos/builtin/packages/r-vgam/package.py index 1a51917d721f39..74191bc257e5d9 100644 --- a/var/spack/repos/builtin/packages/r-vgam/package.py +++ b/var/spack/repos/builtin/packages/r-vgam/package.py @@ -28,6 +28,7 @@ class RVgam(RPackage): cran = "VGAM" + version("1.1-11", sha256="de9d909bd2bcfccf55d24f96999e0780ca45ec29030e227a722eb24e378b33a5") version("1.1-8", sha256="d4c0f1d4e356d88ab6f39c05076ff97ebef6d20b7fbf1b0fa31d40c73d0ad1cc") version("1.1-7", sha256="a4c52d392332477eac557c84b732f3c03dd48f75db3884e23c71cf99d991757e") version("1.1-6", sha256="446a61bac5dd4794e05d20c2f3901eec54afac52c6e23ce2787c5575170dd417") diff --git a/var/spack/repos/builtin/packages/r-vioplot/package.py b/var/spack/repos/builtin/packages/r-vioplot/package.py index 8cf9bf66acbe59..59eab53e5da084 100644 --- a/var/spack/repos/builtin/packages/r-vioplot/package.py +++ b/var/spack/repos/builtin/packages/r-vioplot/package.py @@ -16,6 +16,7 @@ class RVioplot(RPackage): license("BSD-3-Clause") + version("0.5.0", sha256="b04e91ccb810573d13a2ac1136bc6e4747c4c663fa53ff1ce7327c1a13530965") version("0.4.0", sha256="5729b483e3a4f7c81d2cc22c8bc5211b64e289734e9da5b5696c4974067867b5") version("0.3.7", sha256="06475d9a47644245ec91598e9aaef7db1c393802d9fc314420ac5139ae56adb6") version("0.3.5", sha256="1b64833c1bd6851036cf1c400c7d0036a047e71def94a399c897263b4b303e2a") diff --git a/var/spack/repos/builtin/packages/r-vipor/package.py b/var/spack/repos/builtin/packages/r-vipor/package.py index aa0b4a3273a223..3151ccbb1ec14a 100644 --- a/var/spack/repos/builtin/packages/r-vipor/package.py +++ b/var/spack/repos/builtin/packages/r-vipor/package.py @@ -17,7 +17,9 @@ class RVipor(RPackage): license("GPL-2.0-or-later") + version("0.4.7", sha256="baad41e9ddaa13b5a1db1abab34253b27d5b99e5a6a649b2036aaf1483370b9e") version("0.4.5", sha256="7d19251ac37639d6a0fed2d30f1af4e578785677df5e53dcdb2a22771a604f84") version("0.4.4", sha256="5abfd7869dae42ae2e4f52206c23433a43b485b1220685e445877ee5864a3f5c") depends_on("r@3.0.0:", type=("build", "run")) + depends_on("r@3.5.0:", type=("build", "run"), when="@0.4.7:") diff --git a/var/spack/repos/builtin/packages/r-viridis/package.py b/var/spack/repos/builtin/packages/r-viridis/package.py index 8807a1a30115ca..4de67f1f7c012c 100644 --- a/var/spack/repos/builtin/packages/r-viridis/package.py +++ b/var/spack/repos/builtin/packages/r-viridis/package.py @@ -21,6 +21,7 @@ class RViridis(RPackage): license("MIT") + version("0.6.5", sha256="862b5cb6be115deea0207cdd3c8bb33de28552cfdc29900777512fd488d0005c") version("0.6.2", sha256="69b58cd1d992710a08b0b227fd0a9590430eea3ed4858099412f910617e41311") version("0.5.1", sha256="ddf267515838c6eb092938133035cee62ab6a78760413bfc28b8256165701918") version("0.5.0", sha256="fea477172c1e11be40554545260b36d6ddff3fe6bc3bbed87813ffb77c5546cd") diff --git a/var/spack/repos/builtin/packages/r-viridislite/package.py b/var/spack/repos/builtin/packages/r-viridislite/package.py index 4b6a08da391eb3..d9b31c46c7cf82 100644 --- a/var/spack/repos/builtin/packages/r-viridislite/package.py +++ b/var/spack/repos/builtin/packages/r-viridislite/package.py @@ -19,6 +19,7 @@ class RViridislite(RPackage): cran = "viridisLite" + version("0.4.2", sha256="893f111d31deccd2cc959bc9db7ba2ce9020a2dd1b9c1c009587e449c4cce1a1") version("0.4.1", sha256="a896db1ccae5fc1a8b3764d02f24cef74ef7a8341cf9f3401c4efe799870ea97") version("0.4.0", sha256="849955dc8ad9bc52bdc50ed4867fd92a510696fc8294e6971efa018437c83c6a") version("0.3.0", sha256="780ea12e7c4024d5ba9029f3a107321c74b8d6d9165262f6e64b79e00aa0c2af") diff --git a/var/spack/repos/builtin/packages/r-vroom/package.py b/var/spack/repos/builtin/packages/r-vroom/package.py index 9843483ddf7515..99af883c81db73 100644 --- a/var/spack/repos/builtin/packages/r-vroom/package.py +++ b/var/spack/repos/builtin/packages/r-vroom/package.py @@ -19,6 +19,7 @@ class RVroom(RPackage): license("MIT") + version("1.6.5", sha256="7bdca21e58c9c5049d7445d182f59fd399193cb2f4318d083de0a559ec9b5761") version("1.6.1", sha256="eb0e33d53212f9c7e8b38d632c98bd5015365cc13f55dadb15ff0d404b31807c") version("1.6.0", sha256="a718ccdf916442693af5392944774d8aec5ce48f417871f9de84dd1089d26ca6") version("1.5.7", sha256="d087cb148f71c222fc89199d03df2502689149873414a6d89c2f006d3a109fde") @@ -26,6 +27,7 @@ class RVroom(RPackage): depends_on("r@3.1:", type=("build", "run")) depends_on("r@3.4:", type=("build", "run"), when="@1.6.0:") + depends_on("r@3.6:", type=("build", "run"), when="@1.6.4:") depends_on("r-bit64", type=("build", "run")) depends_on("r-crayon", type=("build", "run")) depends_on("r-cli", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-waldo/package.py b/var/spack/repos/builtin/packages/r-waldo/package.py index 69b70bcd053bea..77ba7a5e26d182 100644 --- a/var/spack/repos/builtin/packages/r-waldo/package.py +++ b/var/spack/repos/builtin/packages/r-waldo/package.py @@ -17,10 +17,12 @@ class RWaldo(RPackage): license("MIT") + version("0.5.2", sha256="82cdae1ab2c5e7e5dbf5c6bdf832020b46e152732053fb45de7c9a81afdf2e05") version("0.4.0", sha256="57ee89eec9bcbba58cf8fa29c8e097f038768c30833eaf812682826333127eaa") version("0.3.1", sha256="ec2c8c1afbc413f8db8b6b0c6970194a875f616ad18e1e72a004bc4497ec019b") version("0.2.3", sha256="1fbab22fe9be6ca8caa3df7306c763d7025d81ab6f17b85daaf8bdc8c9455c53") + depends_on("r@3.6:", type=("build", "run"), when="@0.5.2:") depends_on("r-cli", type=("build", "run")) depends_on("r-diffobj", type=("build", "run")) depends_on("r-diffobj@0.3.4:", type=("build", "run"), when="@0.3.1:") diff --git a/var/spack/repos/builtin/packages/r-webshot/package.py b/var/spack/repos/builtin/packages/r-webshot/package.py index 044732bf6b8417..9f63294f240824 100644 --- a/var/spack/repos/builtin/packages/r-webshot/package.py +++ b/var/spack/repos/builtin/packages/r-webshot/package.py @@ -16,6 +16,7 @@ class RWebshot(RPackage): license("GPL-2.0-only") + version("0.5.5", sha256="d675913ccac80e0af8ee396f95a24124eae6c42d80aed9f47f7a88218ecbb913") version("0.5.4", sha256="3dc2b9baef7855e1deea060276b9ccc6375eee36b7100987cbb1f8e5cd7a8f24") version("0.5.3", sha256="b7c4f2be61c8c4730202a9c3604072478e30cb85b423b7497cd703cc3f49dbc0") version("0.5.2", sha256="f183dc970157075b51ac543550a7a48fa3428b9c6838abb72fe987c21982043f") diff --git a/var/spack/repos/builtin/packages/r-wgcna/package.py b/var/spack/repos/builtin/packages/r-wgcna/package.py index b11908f1052e60..55ffd8739e1aa8 100644 --- a/var/spack/repos/builtin/packages/r-wgcna/package.py +++ b/var/spack/repos/builtin/packages/r-wgcna/package.py @@ -20,6 +20,7 @@ class RWgcna(RPackage): cran = "WGCNA" + version("1.72-5", sha256="03439143ff235c17f0dbca7dd6362afa8ddb5a72594f5c2df1c6df1caca2e79d") version("1.72-1", sha256="1dbf82761ef3e76464b18fc9f698ad0f971aafecabf66ca937b950930bd57fdc") version("1.71", sha256="21f5349e888ea76241912600ee5c35a0d2fd50180568b9b08b2b597f099bf708") version("1.70-3", sha256="b9843b839728183af6b746f239e9519d438b294613362b556002acdb8522cbd4") diff --git a/var/spack/repos/builtin/packages/r-withr/package.py b/var/spack/repos/builtin/packages/r-withr/package.py index b678ee0b112e91..b0ec21dda4a1ec 100644 --- a/var/spack/repos/builtin/packages/r-withr/package.py +++ b/var/spack/repos/builtin/packages/r-withr/package.py @@ -18,6 +18,7 @@ class RWithr(RPackage): license("MIT") + version("3.0.1", sha256="d573f1ac2f733c7dd89669feb495d68f1f15d7a9774473c2e46a9848945a3841") version("2.5.0", sha256="37317b3ed790a08407072993a05ab255f6305f95a12a16e0e28aa6aa80fc8bc0") version("2.4.3", sha256="9bdac7459ccc6c2d599ecfd132a7f0aa68d958942d9fe7dbb0442c9eda129d4c") version("2.4.2", sha256="48f96a4cb780cf6fd5fbbea1f1eb04ea3102d7a4a644cae1ed1e91139dcbbac8") @@ -29,3 +30,4 @@ class RWithr(RPackage): depends_on("r@3.0.2:", type=("build", "run")) depends_on("r@3.2.0:", type=("build", "run"), when="@2.2:") + depends_on("r@3.6.0:", type=("build", "run"), when="@3.0.1:") diff --git a/var/spack/repos/builtin/packages/r-wk/package.py b/var/spack/repos/builtin/packages/r-wk/package.py index 4b3497b89d7649..d445018ee36207 100644 --- a/var/spack/repos/builtin/packages/r-wk/package.py +++ b/var/spack/repos/builtin/packages/r-wk/package.py @@ -20,6 +20,7 @@ class RWk(RPackage): license("MIT") + version("0.9.2", sha256="33675edd9baedb09bf69a3a55fec3190e2bf57a5f4f63f94bc06861b5e83e5f8") version("0.7.2", sha256="6f8b72f54e2efea62fda8bc897124b43a39b81cffa9569103d06d95f946eab2f") version("0.7.0", sha256="e24327d38f2ff2d502c67c60eba3b4e44079a64ed8b805df64f231dc4712a2de") version("0.6.0", sha256="af2c2837056a6dcc9f64d5ace29601d6d668c95769f855ca0329648d7326eaf5") diff --git a/var/spack/repos/builtin/packages/r-writexl/package.py b/var/spack/repos/builtin/packages/r-writexl/package.py new file mode 100644 index 00000000000000..84f8d76b47700a --- /dev/null +++ b/var/spack/repos/builtin/packages/r-writexl/package.py @@ -0,0 +1,20 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class RWritexl(RPackage): + """Zero-dependency data frame to xlsx exporter based on 'libxlsxwriter'. + Fast and no Java or Excel required.""" + + homepage = "https://docs.ropensci.org/writexl/" + cran = "writexl" + + license("BSD-2-Clause", checked_by="wdconinc") + + version("1.5.0", sha256="e253dc58f00abf51e9b727ae132e8b301e359fb23df0afc40c3ebec3fb096dce") + + depends_on("zlib-api", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-wru/package.py b/var/spack/repos/builtin/packages/r-wru/package.py index ef07ef21b40d83..a945fa30b920e1 100644 --- a/var/spack/repos/builtin/packages/r-wru/package.py +++ b/var/spack/repos/builtin/packages/r-wru/package.py @@ -25,6 +25,7 @@ class RWru(RPackage): license("GPL-3.0-or-later") + version("3.0.3", sha256="8430fc83609cda110eb340d104d408d362110d15d23208e7f5213cfeeb4a13b5") version("1.0.1", sha256="80b3f54cb2de77ea005755a2de3acfb923a1d380c0dbd52bc4d3e3fcb1d6f1fc") version("1.0.0", sha256="4eae65644981d0b99d3610adf40340b3606f40e6cd578e76a745524ba927e417") version("0.1-12", sha256="896ef4718109ab9fee686f050a3269cbab1589ef2aff7a45fc11a67f7bb35a29") @@ -45,6 +46,7 @@ class RWru(RPackage): depends_on("r@3.2.0:", type=("build", "run"), when="@0.0-1:") depends_on("r@3.5.0:", type=("build", "run"), when="@0.0-10:") depends_on("r@4.1.0:", type=("build", "run"), when="@1.0.0:") + depends_on("r-cli", type=("build", "run"), when="@3.0.0:") depends_on("r-devtools", type=("build", "run"), when="@0.0-2:0.1-12") depends_on("r-devtools@1.10.0:", type=("build", "run"), when="@0.1-1:0.1-12") depends_on("r-dplyr", type=("build", "run"), when="@1.0.0:") @@ -53,6 +55,8 @@ class RWru(RPackage): depends_on("r-purrr", type=("build", "run"), when="@1.0.0:") depends_on("r-rcpp", type=("build", "run"), when="@1.0.0:") depends_on("r-rcpparmadillo", type=("build", "run"), when="@1.0.0:") + depends_on("r-rlang", type=("build", "run"), when="@3.0.0:") depends_on("r-piggyback", type=("build", "run"), when="@1.0.0:") depends_on("r-piggyback@0.1.4:", type=("build", "run"), when="@1.0.0:") depends_on("r-pl94171", type=("build", "run"), when="@1.0.0:") + depends_on("r-tidyr", type=("build", "run"), when="@3.0.0:") diff --git a/var/spack/repos/builtin/packages/r-xfun/package.py b/var/spack/repos/builtin/packages/r-xfun/package.py index 57f44f4912a49b..84cc89d0684349 100644 --- a/var/spack/repos/builtin/packages/r-xfun/package.py +++ b/var/spack/repos/builtin/packages/r-xfun/package.py @@ -16,6 +16,7 @@ class RXfun(RPackage): license("MIT") + version("0.47", sha256="999874fdbf4df2e686a3cb134bfef782c0d3eb0141006191ca1eda94ce232c4b") version("0.39", sha256="d0ecaabb243dd3496da6029932fcdd4772914843de7ffd0b78a172efde1356c9") version("0.34", sha256="50e76c1febb988c044e44fb78e1abc1ba681173c9ff3c336f4c0ad71e6a2853d") version("0.33", sha256="45fbc2d252867b69bbde64d4a4e3d2e049ad1d3a84984e9cfb242d8d1f41ee6c") @@ -24,3 +25,5 @@ class RXfun(RPackage): version("0.24", sha256="e3e39a95202f6db4f6de3a8b9a344074a4944a3a8a522d44971390c905e2b583") version("0.20", sha256="284239d12a3d5ea7d1ef8b1382fb0a7a4661af54c85510501279681871da7c10") version("0.8", sha256="c2f8ecf8b57ddec02f9be7f417d9e22fc1ae2c7db8d70aa703fc62bf4a5c5416") + + depends_on("r@3.2.0:", when="@0.47:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-xgboost/package.py b/var/spack/repos/builtin/packages/r-xgboost/package.py index 9abb3f87a86dd4..317c910a4d8461 100644 --- a/var/spack/repos/builtin/packages/r-xgboost/package.py +++ b/var/spack/repos/builtin/packages/r-xgboost/package.py @@ -23,6 +23,7 @@ class RXgboost(RPackage): license("Apache-2.0 OR custom") + version("1.7.8.1", sha256="394d6fd00b2fe97549c7a7e6598df86448cdfbd7c0af45b0c17f7b9e81bc1be9") version("1.7.5.1", sha256="4ec0833f206f84e5983e9f373ea64903bec488f751fba6f75a6f4702b1c965bc") version("1.6.0.1", sha256="9ae99a20997e1b02ffd21cabada2a55e53f5754746238ee900de5eb6cd964ebd") version("1.5.0.2", sha256="4750b9a289d8cb685291939eed7c493bb42c5cc154ef98e13100abb1727eab13") @@ -40,9 +41,6 @@ class RXgboost(RPackage): depends_on("r-jsonlite@1.0:", type=("build", "run"), when="@1.5.0.2:") depends_on("gmake", type="build") - # This is not listed as required, but installation fails without it - # ERROR: dependency 'stringr' is not available for package 'xgboost' - depends_on("r-stringr", type=("build", "run")) - + depends_on("r-stringr", type=("build", "run"), when="@:0.7") depends_on("r-stringi@0.5.2:", type=("build", "run"), when="@:0.90.0.2") depends_on("r-magrittr@1.5:", type=("build", "run"), when="@:1.3.2.1") diff --git a/var/spack/repos/builtin/packages/r-xlconnect/package.py b/var/spack/repos/builtin/packages/r-xlconnect/package.py index a91a83c1bd823e..841cea86d5ac3f 100644 --- a/var/spack/repos/builtin/packages/r-xlconnect/package.py +++ b/var/spack/repos/builtin/packages/r-xlconnect/package.py @@ -14,6 +14,7 @@ class RXlconnect(RPackage): cran = "XLConnect" + version("1.0.10", sha256="e3c267cb1e6a6fb3a9fb132e60649182ee7a28e4e9188c72786fb843aad6e2b4") version("1.0.7", sha256="821dba231c3c3147455e7525119b51e5dc001984c638b7ce519d0974b32de677") version("1.0.6", sha256="b233b9f74d1464b78d5dd28bd8a1fa46ca6254518da2d3bda3c978a3f4aaa4f9") version("1.0.5", sha256="975c2ef57f28ccfac79ae5d285b7e82e60791fb121052616c10bc52e2bca16ad") diff --git a/var/spack/repos/builtin/packages/r-xml/package.py b/var/spack/repos/builtin/packages/r-xml/package.py index 7c69fe12e6ec30..a66775fda7d58a 100644 --- a/var/spack/repos/builtin/packages/r-xml/package.py +++ b/var/spack/repos/builtin/packages/r-xml/package.py @@ -15,6 +15,7 @@ class RXml(RPackage): cran = "XML" + version("3.99-0.17", sha256="6e233265ff69ff2f59f56fe4abc5af70e2cfa6d99aec6ad2afd2bf2c0d98a2d8") version("3.99-0.14", sha256="2cb6a61a4d8d89e311994f47df09913d4ce5281317d42c78af4aafd75a31f1f9") version("3.99-0.12", sha256="cb209425c886bf405dc03fda8854e819bd9b2d4e4b031c71c5120b7302a36d14") version("3.99-0.11", sha256="c523bd8e6419d44a477038396e9c3b3ec70a67ed85a0c9bfa8b9445f91647fc8") diff --git a/var/spack/repos/builtin/packages/r-xml2/package.py b/var/spack/repos/builtin/packages/r-xml2/package.py index 33165efa43f8e6..306c5aa0c3643c 100644 --- a/var/spack/repos/builtin/packages/r-xml2/package.py +++ b/var/spack/repos/builtin/packages/r-xml2/package.py @@ -16,6 +16,7 @@ class RXml2(RPackage): license("MIT") + version("1.3.6", sha256="e81991ff99bff3616dde8683c1327194e3ea64fa3b8062f52d8ce32673dd308f") version("1.3.3", sha256="cb4e9c0d31618ed67d2bfa4c7b5e52680e11612ed356a8164b541d44163c1c8d") version("1.3.2", sha256="df22f9e7e3189d8c9b8804eaf0105324fdac983cffe743552f6d76613600a4cf") version("1.2.2", sha256="3050f147c4335be2925a576557bbda36bd52a5bba3110d47b740a2dd811a78f4") @@ -23,7 +24,10 @@ class RXml2(RPackage): version("1.1.1", sha256="00f3e3b66b76760c19da5f6dddc98e6f30de36a96b211e59e1a3f4ff58763116") depends_on("r@3.1.0:", type=("build", "run")) + depends_on("r@3.6.0:", type=("build", "run"), when="@1.3.6:") depends_on("libxml2") - depends_on("r-rcpp@0.12.12:", type=("build", "run"), when="@:1.2") depends_on("r-bh", type=("build", "run"), when="@:1.1.1") + depends_on("r-cli", type=("build", "run"), when="@1.3.6:") + depends_on("r-rcpp@0.12.12:", type=("build", "run"), when="@:1.2") + depends_on("r-rlang@1.1.0:", type=("build", "run"), when="@1.3.6:") diff --git a/var/spack/repos/builtin/packages/r-xopen/package.py b/var/spack/repos/builtin/packages/r-xopen/package.py index e2086426414906..577246068b259c 100644 --- a/var/spack/repos/builtin/packages/r-xopen/package.py +++ b/var/spack/repos/builtin/packages/r-xopen/package.py @@ -16,6 +16,7 @@ class RXopen(RPackage): license("MIT") + version("1.0.1", sha256="e3b278b8c324a1aa2650141dd89d01253eea5c2555007422c797915689b29aec") version("1.0.0", sha256="e207603844d69c226142be95281ba2f4a056b9d8cbfae7791ba60535637b3bef") depends_on("r@3.1:", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-xts/package.py b/var/spack/repos/builtin/packages/r-xts/package.py index af45b05ae06b5d..468a19f8f9fa72 100644 --- a/var/spack/repos/builtin/packages/r-xts/package.py +++ b/var/spack/repos/builtin/packages/r-xts/package.py @@ -18,6 +18,7 @@ class RXts(RPackage): license("GPL-2.0-or-later") + version("0.14.0", sha256="d28b16eefa9876a815bad3fc204779c197e3a0d7796b8dae8856fe153f5fcfd9") version("0.13.1", sha256="2c3907c6d0162e48d1898647105bbb32cfe0cb005788481a64ee675a941d825d") version("0.13.0", sha256="188e4d1d8c3ec56a544dfb9da002e8aac80b9303d0a5a1f62ff0e960aeef9674") version("0.12.2", sha256="9c287ceaeb758ff4c9596be6a688db5683d50b45e7610e6d068891ca10dca743") diff --git a/var/spack/repos/builtin/packages/r-yaimpute/package.py b/var/spack/repos/builtin/packages/r-yaimpute/package.py index bee3635d39d8d5..6fda7d1e8c3886 100644 --- a/var/spack/repos/builtin/packages/r-yaimpute/package.py +++ b/var/spack/repos/builtin/packages/r-yaimpute/package.py @@ -22,6 +22,7 @@ class RYaimpute(RPackage): cran = "yaImpute" + version("1.0-34", sha256="b4c898c95fca784480bbbc239c78c85dc9f45a96c34c563ea7e81248ef8a8a73") version("1.0-33", sha256="58595262eb1bc9ffeeadca78664c418ea24b4e894744890c00252c5ebd02512c") version("1.0-32", sha256="08eee5d851b80aad9c7c80f9531aadd50d60e4b16b3a80657a50212269cd73ff") diff --git a/var/spack/repos/builtin/packages/r-yaml/package.py b/var/spack/repos/builtin/packages/r-yaml/package.py index f8cb214c859267..d9ada94424604a 100644 --- a/var/spack/repos/builtin/packages/r-yaml/package.py +++ b/var/spack/repos/builtin/packages/r-yaml/package.py @@ -16,6 +16,7 @@ class RYaml(RPackage): license("BSD-3-Clause") + version("2.3.10", sha256="e236d42d366e361d4855aa4f520260debd53a31e4786442b94770b045da02a6d") version("2.3.7", sha256="d20cb219e0f9c48aba02f132f81cfa9ecda5e22c925e36726840218ed56680ab") version("2.3.6", sha256="5dd19d8d6654ef2e4ccd6216ce8e96ca5185ae6143f95194955f6908a6e1ba26") version("2.3.5", sha256="3edf6c0554a0e184a25e8bec5721a2e66b4ab0dceb3737428e22705e52eb5140") diff --git a/var/spack/repos/builtin/packages/r-yulab-utils/package.py b/var/spack/repos/builtin/packages/r-yulab-utils/package.py index 30137e8782079b..a5de07b5736869 100644 --- a/var/spack/repos/builtin/packages/r-yulab-utils/package.py +++ b/var/spack/repos/builtin/packages/r-yulab-utils/package.py @@ -13,6 +13,15 @@ class RYulabUtils(RPackage): cran = "yulab.utils" + version("0.1.6", sha256="589be7ad1425f7d84dc3748f352fc432e494edb725209c05e28ca2a44f34beec") version("0.0.6", sha256="973a51b8d1284060aec34e94849eea6783439dbcbf85083dd4f1a5df4f927b25") version("0.0.5", sha256="6ecd4dc5dae40e86b7a462fdac3ab8c0b276dcae5a284eb43390a05b01e3056b") version("0.0.4", sha256="38850663de53a9166b8e85deb85be1ccf1a5b310bbe4355f3b8bc823ed1b49ae") + + depends_on("r-cli", when="@0.1.0:", type=("build", "run")) + depends_on("r-digest", when="@0.1.0:", type=("build", "run")) + depends_on("r-fs", when="@0.1.0:", type=("build", "run")) + depends_on("r-httr2", when="@0.1.6:", type=("build", "run")) + depends_on("r-rlang", when="@0.0.7:", type=("build", "run")) + + depends_on("r-memoise", when="@0.0.7:0.1.5", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/r-zcompositions/package.py b/var/spack/repos/builtin/packages/r-zcompositions/package.py index 110f4a120ed891..67ce6f10be70f0 100644 --- a/var/spack/repos/builtin/packages/r-zcompositions/package.py +++ b/var/spack/repos/builtin/packages/r-zcompositions/package.py @@ -16,6 +16,7 @@ class RZcompositions(RPackage): cran = "zCompositions" + version("1.5.0-4", sha256="73188e1e065a042723ed7a48df04e22317b204222d40744b83e8c392aae16aaf") version("1.4.0-1", sha256="33ee11f635cb87cc9c0617e1cfc91f1ac41c6cfe2b70fc441e226015939230e7") version("1.4.0", sha256="a00d7d0ba861988b1836e947fd521d58137a4def04a5d7aa73a099314b7e530c") version("1.3.4", sha256="ae22c86fe92368a26265933f42eecc518b9b69e7d9b698bc31bfaabfc3c48e95") diff --git a/var/spack/repos/builtin/packages/r-zip/package.py b/var/spack/repos/builtin/packages/r-zip/package.py index 8f17fba4579a3d..4d0dfe08deafaa 100644 --- a/var/spack/repos/builtin/packages/r-zip/package.py +++ b/var/spack/repos/builtin/packages/r-zip/package.py @@ -17,6 +17,7 @@ class RZip(RPackage): license("MIT") + version("2.3.1", sha256="83754408781c525917f36535865d28214893de0778b5f337e050cb543cacc28f") version("2.3.0", sha256="33eba844922af9981732ee6ec1582d46cf04c562344f09a0f0f14a22c6f74543") version("2.2.2", sha256="e16cde23bb283efbe9b6bce19575c716c371d09033b42514471ccb444c0a8ea4") version("2.2.1", sha256="14873d0874813139411c120d8b209af71e4e087871eeb963f235411eb1061422") diff --git a/var/spack/repos/builtin/packages/rankstr/package.py b/var/spack/repos/builtin/packages/rankstr/package.py index f9df699bcf1700..1fe8a9cf3ee0ca 100644 --- a/var/spack/repos/builtin/packages/rankstr/package.py +++ b/var/spack/repos/builtin/packages/rankstr/package.py @@ -19,6 +19,7 @@ class Rankstr(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="f33c920aa67b867d0fa2001d98f6762e90f59a41b2f66c27a63cff6bd6afeb1b") version("0.3.0", sha256="5e6378a8fe155b4c6c5cf45db8aaf0562d88e93471d0e12c1e922252ffcce5e6") version("0.2.0", sha256="a3f7fd8015156c1b600946af759a03e099e05c83e7b2da6bac394fe7c0d4efae") version("0.1.0", sha256="b68239d67b2359ecc067cc354f86ccfbc8f02071e60d28ae0a2449f2e7f88001") diff --git a/var/spack/repos/builtin/packages/redset/package.py b/var/spack/repos/builtin/packages/redset/package.py index 6ef28e138e6f17..b38e4b2f14fbfd 100644 --- a/var/spack/repos/builtin/packages/redset/package.py +++ b/var/spack/repos/builtin/packages/redset/package.py @@ -6,7 +6,7 @@ from spack.package import * -class Redset(CMakePackage): +class Redset(CMakePackage, CudaPackage): """Create MPI communicators for disparate redundancy sets""" homepage = "https://github.com/ecp-veloc/redset" @@ -19,6 +19,7 @@ class Redset(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="d278a5d3c1323915c379e2077dbfab1248044c86a04fc56faee6681c66380451") version("0.3.0", sha256="007ca5e7e5f4400e22ad7bca82e366cd51c73f28067c955cc16d7d0ff0c06a1b") version("0.2.0", sha256="0438b0ba56dafcd5694a8fceeb5a932901307353e056ab29817d30b8387f787f") version("0.1.0", sha256="baa75de0d0d6de64ade50cff3d38ee89fd136ce69869182bdaefccf5be5d286d") @@ -38,7 +39,11 @@ class Redset(CMakePackage): depends_on("rankstr@:0.2.0", when="@:0.2.0") depends_on("rankstr@0.3.0:", when="@0.3.0:") - variant("shared", default=True, description="Build with shared libraries") + variant("cuda", default=False, description="Enable CUDA support", when="@0.4:") + variant("openmp", default=False, description="Enable OpenMP support", when="@0.4:") + variant("pthreads", default=False, description="Enable Pthread support", when="@0.4:") + + variant("shared", default=True, description="Build with shared libraries", when="@0.1:") depends_on("kvtree+shared", when="@0.1: +shared") depends_on("kvtree~shared", when="@0.1: ~shared") depends_on("rankstr+shared", when="@0.1: +shared") @@ -51,7 +56,9 @@ def cmake_args(self): args.append(self.define("WITH_KVTREE_PREFIX", spec["kvtree"].prefix)) args.append(self.define("WITH_RANKSTR_PREFIX", spec["rankstr"].prefix)) - if spec.satisfies("@0.1.0:"): - args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) + args.append(self.define_from_variant("ENABLE_CUDA", "cuda")) + args.append(self.define_from_variant("ENABLE_OPENMP", "openmp")) + args.append(self.define_from_variant("ENABLE_PTHREADS", "pthreads")) return args diff --git a/var/spack/repos/builtin/packages/restic/package.py b/var/spack/repos/builtin/packages/restic/package.py index e6144806699c50..2c3489e98e3049 100644 --- a/var/spack/repos/builtin/packages/restic/package.py +++ b/var/spack/repos/builtin/packages/restic/package.py @@ -16,6 +16,7 @@ class Restic(GoPackage): license("BSD-2-Clause") + version("0.17.3", sha256="bf0dd73edfae531c24070e2e7833938613f7b179ed165e6b681098edfdf286c8") version("0.17.1", sha256="cba3a5759690d11dae4b5620c44f56be17a5688e32c9856776db8a9a93d6d59a") version("0.16.4", sha256="d736a57972bb7ee3398cf6b45f30e5455d51266f5305987534b45a4ef505f965") version("0.16.3", sha256="a94d6c1feb0034fcff3e8b4f2d65c0678f906fc21a1cf2d435341f69e7e7af52") diff --git a/var/spack/repos/builtin/packages/rivet/package.py b/var/spack/repos/builtin/packages/rivet/package.py index 00ae0783dca58e..573888d0c47c22 100644 --- a/var/spack/repos/builtin/packages/rivet/package.py +++ b/var/spack/repos/builtin/packages/rivet/package.py @@ -19,6 +19,11 @@ class Rivet(AutotoolsPackage): license("GPL-3.0-or-later") + version("4.0.2", sha256="65a3b36f42bff782ed2767930e669e09b140899605d7972fc8f77785b4a882c0") + version("4.0.1", sha256="4e8692d6e8a53961c77983eb6ba4893c3765cf23f705789e4d865be4892eff79") + version("4.0.0", sha256="d3c42d9b83ede3e7f4b534535345c2e06e6dafb851454c2b0a5d2331ab0f04d0") + version("3.1.10", sha256="458b8e0df1de738e9972d24b260eaa087df12c99d4fe9dee5377d47ea6a49919") + version("3.1.9", sha256="f6532045da61eeb2adc20a9abc4166b4b2d41ab2c1ca5b500cd616bb1b92e7b1") version("3.1.8", sha256="75b3f3d419ca6388d1fd2ec0eda7e1f90f324b996ccf0591f48a5d2e28dccc13") version("3.1.7", sha256="27c7dbbcb5fd7ee81caf136daf4e960bca0ec255d9fa1abe602f4d430861b27a") version("3.1.6", sha256="1cf6ebb6a79d181c441d1d0c7c6d623c423817c61093f36f21adaae23e679090") @@ -34,7 +39,12 @@ class Rivet(AutotoolsPackage): depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated - variant("hepmc", default="2", values=("2", "3"), description="HepMC version to link against") + variant( + "hepmc", + default="2", + values=(conditional("2", when="@:3"), "3"), + description="HepMC version to link against", + ) # According to A. Buckley (main Rivet developer): # "typically a given Rivet version will work with @@ -48,8 +58,13 @@ class Rivet(AutotoolsPackage): depends_on("yoda@1.8.2", when="@3.1.1") depends_on("yoda@1.8.3", when="@3.1.2") depends_on("yoda@1.8.5:", when="@3.1.3:") - depends_on("yoda@1.9.5:", when="@3.1.6:") + depends_on("yoda@1.9.6:", when="@3.1.6:") depends_on("yoda@1.9.7:", when="@3.1.7:") + depends_on("yoda@1.9.8:", when="@3.1.8:") + depends_on("yoda@1.9.9:", when="@3.1.9:") + depends_on("yoda@1.9.10:", when="@3.1.10:") + depends_on("yoda@:1", when="@:3") + depends_on("yoda@2.0.1:", when="@4.0.0:") # The following versions were not a part of LCG stack # and thus the exact version of YODA is unknown @@ -57,9 +72,13 @@ class Rivet(AutotoolsPackage): depends_on("hepmc", when="hepmc=2") depends_on("hepmc3", when="hepmc=3") + conflicts( + "hepmc@3.3.0", when="@:4.0.0 hepmc=3", msg="patch-level zero requires at least 4.0.1" + ) depends_on("fastjet plugins=cxx") depends_on("fastjet@3.4.0:", when="@3.1.7:") depends_on("fjcontrib") + depends_on("highfive", when="@4:") depends_on("python", type=("build", "run")) depends_on("py-cython@0.24.0:", type="build") depends_on("swig", type="build") @@ -104,12 +123,16 @@ def configure_args(self): args += ["--with-hepmc=" + self.spec["hepmc"].prefix] else: args += ["--with-hepmc3=" + self.spec["hepmc3"].prefix] + args += ["--with-hepmc3-libpath=" + self.spec["hepmc3"].libs.directories[0]] args += ["--with-fastjet=" + self.spec["fastjet"].prefix] args += ["--with-yoda=" + self.spec["yoda"].prefix] args += ["--with-fjcontrib=" + self.spec["fjcontrib"].prefix] + if self.spec.satisfies("^highfive"): + args += ["--with-highfive=" + self.spec["highfive"].prefix] + args += ["--disable-pdfmanual"] return args diff --git a/var/spack/repos/builtin/packages/rocal/package.py b/var/spack/repos/builtin/packages/rocal/package.py index 84e45834935154..c9196dd562f61c 100644 --- a/var/spack/repos/builtin/packages/rocal/package.py +++ b/var/spack/repos/builtin/packages/rocal/package.py @@ -20,7 +20,8 @@ class Rocal(CMakePackage): version("6.2.1", sha256="77d3e63e02afaee6f1ee1d877d88b48c6ea66a0afca96a1313d0f1c4f8e86b2a") version("6.2.0", sha256="c7c265375a40d4478a628258378726c252caac424f974456d488fce43890e157") - depends_on("libjpeg-turbo@2.0.6+partial_decoder") + depends_on("libjpeg-turbo@2.0.6+partial_decoder", when="@6.2.0") + depends_on("libjpeg-turbo@3.0.2:", when="@6.2.1:") depends_on("rapidjson") depends_on("ffmpeg@4.4:") diff --git a/var/spack/repos/builtin/packages/rocdecode/package.py b/var/spack/repos/builtin/packages/rocdecode/package.py index 1f284de531949f..bac7679a15b5b4 100644 --- a/var/spack/repos/builtin/packages/rocdecode/package.py +++ b/var/spack/repos/builtin/packages/rocdecode/package.py @@ -33,6 +33,8 @@ class Rocdecode(CMakePackage): sticky=True, ) + depends_on("libva", type="build", when="@6.2:") + for ver in ["6.1.0", "6.1.1", "6.1.2", "6.2.0", "6.2.1"]: depends_on(f"hip@{ver}", when=f"@{ver}") diff --git a/var/spack/repos/builtin/packages/rocketmq/package.py b/var/spack/repos/builtin/packages/rocketmq/package.py index 33d73d444cbdc4..95925f2465d791 100644 --- a/var/spack/repos/builtin/packages/rocketmq/package.py +++ b/var/spack/repos/builtin/packages/rocketmq/package.py @@ -16,16 +16,23 @@ class Rocketmq(Package): homepage = "https://rocketmq.apache.org/" url = "https://archive.apache.org/dist/rocketmq/4.5.2/rocketmq-all-4.5.2-bin-release.zip" - license("Apache-2.0") - - version("4.6.0", sha256="584910d50639297808dd0b86fcdfaf431efd9607009a44c6258d9a0e227748fe") - version("4.5.2", sha256="f7711ef9c203d7133e70e0e1e887025d7dd80d29f6d5283ca6022b12576b8aba") - version("4.5.1", sha256="0c46e4b652b007d07e9c456eb2e275126b9210c27cd56bee518809f33c8ed437") - version("4.5.0", sha256="d75dc26291b47413f7c565bc65499501e3499f01beb713246586f72844e31042") - version("4.4.0", sha256="8a948e240e8d2ebbf4c40c180105d088a937f82a594cd1f2ae527b20349f1d34") - version("4.3.2", sha256="e31210a86266ee218eb6ff4f8ca6e211439895459c3bdad162067b573d9e3415") + license("Apache-2.0", checked_by="wdconinc") + + version("5.3.1", sha256="251d7261fa26d35eaffef6a2fce30880054af7a5883d578dd31574bf908a8b97") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-37582 + version("4.6.0", sha256="584910d50639297808dd0b86fcdfaf431efd9607009a44c6258d9a0e227748fe") + version("4.5.2", sha256="f7711ef9c203d7133e70e0e1e887025d7dd80d29f6d5283ca6022b12576b8aba") + version("4.5.1", sha256="0c46e4b652b007d07e9c456eb2e275126b9210c27cd56bee518809f33c8ed437") + version("4.5.0", sha256="d75dc26291b47413f7c565bc65499501e3499f01beb713246586f72844e31042") + version("4.4.0", sha256="8a948e240e8d2ebbf4c40c180105d088a937f82a594cd1f2ae527b20349f1d34") + version("4.3.2", sha256="e31210a86266ee218eb6ff4f8ca6e211439895459c3bdad162067b573d9e3415") depends_on("java@8:", type="run") + # UseBiasedLocking deprecated in java@15:, removed in java@21: + # https://openjdk.org/jeps/374, https://github.com/apache/rocketmq/pull/8809 + depends_on("java@:20", type="run") + def install(self, spec, prefix): install_tree(".", prefix) diff --git a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py index 3586bef851b6e8..471b662d4b207e 100644 --- a/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py +++ b/var/spack/repos/builtin/packages/rocm-openmp-extras/package.py @@ -155,7 +155,7 @@ class RocmOpenmpExtras(Package): license("Apache-2.0") - maintainers("srekolam", "renjithravindrankannath", "estewart08") + maintainers("srekolam", "renjithravindrankannath", "estewart08", "afzpatel") version("6.2.1", sha256=versions_dict["6.2.1"]["aomp"]) version("6.2.0", sha256=versions_dict["6.2.0"]["aomp"]) version("6.1.2", sha256=versions_dict["6.1.2"]["aomp"]) @@ -189,6 +189,7 @@ class RocmOpenmpExtras(Package): depends_on("libffi", type=("build", "link")) depends_on("libdrm", when="@5.7:6.0") depends_on("numactl", when="@5.7:6.0") + depends_on("zlib", when="@6.2:") for ver in [ "5.5.0", @@ -489,6 +490,7 @@ def install(self, spec, prefix): ffi_inc = spec["libffi"].prefix.include if self.spec.satisfies("@6.2:"): ncurses_lib_dir = self.spec["ncurses"].prefix.lib + zlib_lib_dir = self.spec["zlib"].prefix.lib # flang1 and flang2 symlink needed for build of flang-runtime # libdevice symlink to rocm-openmp-extras for runtime @@ -638,11 +640,12 @@ def install(self, spec, prefix): flang_legacy_flags.append("-D_GLIBCXX_USE_CXX11_ABI=0") if self.spec.satisfies("@6.2:"): flang_legacy_flags.append("-L{0}".format(ncurses_lib_dir)) + flang_legacy_flags.append("-L{0}".format(zlib_lib_dir)) components["flang-legacy-llvm"] += [ - "-DCMAKE_CXX_FLAGS={0}".format(",".join(flang_legacy_flags)) + "-DCMAKE_CXX_FLAGS={0}".format(" ".join(flang_legacy_flags)) ] components["flang-legacy"] += [ - "-DCMAKE_CXX_FLAGS={0}".format(",".join(flang_legacy_flags)) + "-DCMAKE_CXX_FLAGS={0}".format(" ".join(flang_legacy_flags)) ] components["flang"] = [ diff --git a/var/spack/repos/builtin/packages/rocm-validation-suite/009-replacing-rocm-path-with-package-path-6.2.1.patch b/var/spack/repos/builtin/packages/rocm-validation-suite/009-replacing-rocm-path-with-package-path-6.2.1.patch new file mode 100644 index 00000000000000..5283f5a25627fc --- /dev/null +++ b/var/spack/repos/builtin/packages/rocm-validation-suite/009-replacing-rocm-path-with-package-path-6.2.1.patch @@ -0,0 +1,686 @@ +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 7867e3a..7268387 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -74,14 +74,18 @@ endif(rocblas_FOUND) + # Making ROCM_PATH, CMAKE_INSTALL_PREFIX, CPACK_PACKAGING_INSTALL_PREFIX as CACHE + # variables since we will pass them as cmake params appropriately, and + # all find_packages relevant to this build will be in ROCM path hence appending it to CMAKE_PREFIX_PATH +-set(ROCM_PATH "/opt/rocm" CACHE PATH "ROCM install path") +-set(CMAKE_INSTALL_PREFIX "/opt/rocm" CACHE PATH "CMAKE installation directory") +-set(CPACK_PACKAGING_INSTALL_PREFIX "/opt/rocm" CACHE PATH "Prefix used in built packages") ++set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/${CMAKE_INSTALL_LIBDIR}") ++set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE) ++set(CPACK_PACKAGING_INSTALL_PREFIX "${CMAKE_INSTALL_PREFIX}") + list(APPEND CMAKE_PREFIX_PATH "${ROCM_PATH}") +-set(ROCR_INC_DIR "${ROCM_PATH}/include" CACHE PATH "Contains header files exported by ROC Runtime" FORCE) +-set(ROCR_LIB_DIR "${ROCM_PATH}/lib" CACHE PATH "Contains library files exported by ROC Runtime" FORCE) +-set(HIP_INC_DIR "${ROCM_PATH}" CACHE PATH "Contains header files exported by ROC Runtime") +-set(ROCT_INC_DIR "${ROCM_PATH}/include" CACHE PATH "Contains header files exported by ROC Trunk" FORCE) ++set(ROCR_INC_DIR "${HSA_PATH}/include" CACHE PATH "Contains header files exported by ROC Runtime") ++set(ROCR_LIB_DIR "${HSA_PATH}/lib" CACHE PATH "Contains library files exported by ROC Runtime") ++set(HIP_INC_DIR "${HIP_PATH}" CACHE PATH "Contains header files exported by ROC Runtime") ++set(ROCT_INC_DIR "${ROCM_PATH}/include" CACHE PATH "Contains header files exported by ROC Trunk") ++set(HIPRAND_INC_DIR "${HIPRAND_DIR}/include" CACHE PATH "Contains header files exported by ROC Trunk") ++set(HIPRAND_LIB_DIR "${HIPRAND_DIR}/lib" CACHE PATH "Contains header files exported by ROC Trunk") ++set(ROCRAND_INC_DIR "${ROCRAND_DIR}/include" CACHE PATH "Contains header files exported by ROC Trunk") ++set(ROCRAND_LIB_DIR "${ROCRAND_DIR}/lib" CACHE PATH "Contains header files exported by ROC Trunk") + + add_definitions(-DROCM_PATH="${ROCM_PATH}") + if(FETCH_ROCMPATH_FROM_ROCMCORE) +@@ -443,15 +447,18 @@ add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/rvs_smi-build/librocm_smi64.so + + endif() # if (RVS_ROCMSMI EQUAL 1) + +-set(HIPRAND_INC_DIR "${ROCM_PATH}/include") +-set(HIPRAND_LIB_DIR "${ROCM_PATH}/lib") ++set(HIPRAND_INC_DIR "${HIPRAND_DIR}/include") ++set(HIPRAND_LIB_DIR "${HIPRAND_DIR}/lib") ++ ++set(ROCRAND_INC_DIR "${ROCRAND_DIR}/include") ++set(ROCRAND_LIB_DIR "${ROCRAND_DIR}/lib") + + if (RVS_ROCBLAS EQUAL 1) + set(ROCBLAS_INC_DIR "${CMAKE_BINARY_DIR}/rvs_rblas-src/build/release/rocblas-install") + set(ROCBLAS_LIB_DIR "${CMAKE_BINARY_DIR}/rvs_rblas-src/build/release/rocblas-install/lib/") + else() +- set(ROCBLAS_INC_DIR "${ROCM_PATH}/include") +- set(ROCBLAS_LIB_DIR "${ROCM_PATH}/lib") ++ set(ROCBLAS_INC_DIR "${ROCBLAS_DIR}/include") ++ set(ROCBLAS_LIB_DIR "${ROCBLAS_DIR}/lib") + endif() + + if (RVS_ROCMSMI EQUAL 1) +@@ -466,8 +473,8 @@ else() + set(ROCM_SMI_LIB_DIR "${ROCM_PATH}/rocm_smi/lib") + else() + message( STATUS "ROCBLAS REORG Enabled Version: ${RVS_ROCBLAS_VERSION_FLAT}" ) +- set(ROCM_SMI_INC_DIR "${ROCM_PATH}/include") +- set(ROCM_SMI_LIB_DIR "${ROCM_PATH}/lib") ++ set(ROCM_SMI_INC_DIR "${ROCM_SMI_DIR}/include") ++ set(ROCM_SMI_LIB_DIR "${ROCM_SMI_DIR}/lib") + endif() + endif() + set(ROCM_SMI_LIB "rocm_smi64" CACHE STRING "rocm_smi library name") +diff --git a/babel.so/CMakeLists.txt b/babel.so/CMakeLists.txt +index 54a0e3a..c9ddeaa 100644 +--- a/babel.so/CMakeLists.txt ++++ b/babel.so/CMakeLists.txt +@@ -109,13 +109,13 @@ set(HIP_HCC_LIB "amdhip64") + add_compile_options(-DRVS_ROCBLAS_VERSION_FLAT=${RVS_ROCBLAS_VERSION_FLAT}) + + # Determine Roc Runtime header files are accessible +-if(NOT EXISTS ${HIP_INC_DIR}/include/hip/hip_runtime.h) +- message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_INC_DIR path. Current value is : " ${HIP_INC_DIR}) ++if(NOT EXISTS ${HIP_PATH}/include/hip/hip_runtime.h) ++ message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_PATH path. Current value is : " ${HIP_PATH}) + RETURN() + endif() + +-if(NOT EXISTS ${HIP_INC_DIR}/include/hip/hip_runtime_api.h) +- message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_INC_DIR path. Current value is : " ${HIP_INC_DIR}) ++if(NOT EXISTS ${HIP_PATH}/include/hip/hip_runtime_api.h) ++ message("ERROR: ROC Runtime headers can't be found under specified path. Please set HIP_PATH path. Current value is : " ${HIP_PATH}) + RETURN() + endif() + +@@ -135,16 +135,16 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") +- message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) ++if(NOT EXISTS "${HIP_PATH}/lib/lib${HIP_HCC_LIB}.so") ++ message("ERROR: ROC Runtime libraries can't be found under specified path. Please set HIP_PATH path. Current value is : " ${HIP_PATH}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${HIP_PATH}) + + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${HIP_PATH}/lib/ ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries + set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) + +@@ -156,7 +156,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB} ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/cmake_modules/tests_unit.cmake b/cmake_modules/tests_unit.cmake +index 9760b72..d585f8b 100644 +--- a/cmake_modules/tests_unit.cmake ++++ b/cmake_modules/tests_unit.cmake +@@ -27,7 +27,7 @@ + ## define additional unit testing include directories + include_directories(${UT_INC}) + ## define additional unit testing lib directories +-link_directories(${UT_LIB} ${RVS_LIB_DIR}) ++link_directories(${UT_LIB} ${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + file(GLOB TESTSOURCES RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} test/test*.cpp ) + #message ( "TESTSOURCES: ${TESTSOURCES}" ) +@@ -46,6 +46,7 @@ FOREACH(SINGLE_TEST ${TESTSOURCES}) + add_dependencies(${TEST_NAME} rvs_gtest_target) + target_link_libraries(${TEST_NAME} + ${UT_LINK_LIBS} rvslibut rvslib gtest_main gtest pthread pci ++ ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so + ) + target_compile_definitions(${TEST_NAME} PUBLIC RVS_UNIT_TEST) + if(DEFINED tcd.${TEST_NAME}) +diff --git a/edp.so/CMakeLists.txt b/edp.so/CMakeLists.txt +index 7dd34ea..41c8493 100644 +--- a/edp.so/CMakeLists.txt ++++ b/edp.so/CMakeLists.txt +@@ -128,17 +128,17 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpciaccess.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpciaccess.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set (SOURCES src/rvs_module.cpp src/action.cpp src/edp_worker.cpp ) +@@ -148,7 +148,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB} ${HIPRAND_LIB} ${ROCRAND_LIB}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/gm.so/CMakeLists.txt b/gm.so/CMakeLists.txt +index d3caa84..94a06be 100644 +--- a/gm.so/CMakeLists.txt ++++ b/gm.so/CMakeLists.txt +@@ -118,11 +118,11 @@ if(DEFINED RVS_ROCMSMI) + endif() + + ## define include directories +-include_directories(./ ../ ${ROCM_SMI_INC_DIR}) ++include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so librocm_smi64.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/worker.cpp) +@@ -133,7 +133,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${ROCM_SMI_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +@@ -149,7 +149,7 @@ install(FILES "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lib${RVS}.so" + + # TEST SECTION + if (RVS_BUILD_TESTS) +- add_custom_command(TARGET ${RVS_TARGET} POST_BUILD ++ B_add_custom_command(TARGET ${RVS_TARGET} POST_BUILD + COMMAND ln -fs ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/lib${RVS}.so.${VERSION_MAJOR} ${RVS_BINTEST_FOLDER}/lib${RVS}.so WORKING_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} + ) + include(${CMAKE_CURRENT_SOURCE_DIR}/tests.cmake) +diff --git a/gm.so/tests.cmake b/gm.so/tests.cmake +index b360065..172e97c 100644 +--- a/gm.so/tests.cmake ++++ b/gm.so/tests.cmake +@@ -30,11 +30,11 @@ set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libpci.so libm.so libdl.so "lib${ROCM_SMI_LIB}.so" +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} "lib${HIPRAND_LIB}.so" "lib${ROCRAND_LIB}.so" + ) + + # Add directories to look for library files to link +-link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR}) ++link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + set (UT_SOURCES src/action.cpp src/worker.cpp + ) +diff --git a/gpup.so/CMakeLists.txt b/gpup.so/CMakeLists.txt +index 43d337a..c92d8ba 100644 +--- a/gpup.so/CMakeLists.txt ++++ b/gpup.so/CMakeLists.txt +@@ -109,11 +109,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../ include ../include) ++include_directories(./ ../ include ../include ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp) +diff --git a/gpup.so/tests.cmake b/gpup.so/tests.cmake +index 9a1f7ed..3649ae4 100644 +--- a/gpup.so/tests.cmake ++++ b/gpup.so/tests.cmake +@@ -25,12 +25,13 @@ + + set(ROCBLAS_LIB "rocblas") + set(HIPRAND_LIB "hiprand") ++set(ROCRAND_LIB "rocrand") + set(ROC_THUNK_NAME "hsakmt") + set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libm.so libdl.so ${ROCM_SMI_LIB} +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB}) ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ${ROCRAND_LIB}) + + # Add directories to look for library files to link + link_directories(${RVS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR}) +diff --git a/gst.so/CMakeLists.txt b/gst.so/CMakeLists.txt +index fd346ce..7e17a68 100644 +--- a/gst.so/CMakeLists.txt ++++ b/gst.so/CMakeLists.txt +@@ -137,17 +137,17 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HIP_INC_DIR}/lib/ ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_DIR} ${ROCRAND_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/gst_worker.cpp) +diff --git a/iet.so/CMakeLists.txt b/iet.so/CMakeLists.txt +index 002c03c..604b86b 100644 +--- a/iet.so/CMakeLists.txt ++++ b/iet.so/CMakeLists.txt +@@ -145,7 +145,7 @@ if(DEFINED RVS_ROCMSMI) + endif() + endif() + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() +@@ -160,11 +160,11 @@ if(DEFINED RVS_ROCMSMI) + endif() + + ## define include directories +-include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so librocm_smi64.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so ) + + set(SOURCES src/rvs_module.cpp src/action.cpp src/iet_worker.cpp ) + +@@ -173,7 +173,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB} ${ROCM_SMI_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_INC_DIR}/lib/ ${HIP_HCC_LIB} ${ROCBLAS_LIB}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/mem.so/CMakeLists.txt b/mem.so/CMakeLists.txt +index 5133337..3ba941f 100644 +--- a/mem.so/CMakeLists.txt ++++ b/mem.so/CMakeLists.txt +@@ -134,18 +134,18 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HIP_INC_DIR}/lib ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/rvs_memtest.cpp src/rvs_memworker.cpp) +diff --git a/pbqt.so/CMakeLists.txt b/pbqt.so/CMakeLists.txt +index 5ae675a..873a1e8 100644 +--- a/pbqt.so/CMakeLists.txt ++++ b/pbqt.so/CMakeLists.txt +@@ -136,11 +136,11 @@ if(NOT EXISTS ${ROCR_LIB_DIR}/${CORE_RUNTIME_LIBRARY}.so) + endif() + + ## define include directories +-include_directories(./ ../ pci ${ROCR_INC_DIR}) ++include_directories(./ ../ pci ${ROCR_INC_DIR} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HSAKMT_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/action_run.cpp +diff --git a/pebb.so/CMakeLists.txt b/pebb.so/CMakeLists.txt +index c4e2964..41a45f5 100644 +--- a/pebb.so/CMakeLists.txt ++++ b/pebb.so/CMakeLists.txt +@@ -137,11 +137,11 @@ if(NOT EXISTS ${ROCR_LIB_DIR}/${CORE_RUNTIME_LIBRARY}.so) + endif() + + ## define include directories +-include_directories(./ ../ pci ${ROCR_INC_DIR}) ++include_directories(./ ../ pci ${ROCR_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HSAKMT_LIB_DIR} ${ROCT_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR}/.. ${ROCRAND_LIB_DIR}/..) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/action_run.cpp +diff --git a/peqt.so/CMakeLists.txt b/peqt.so/CMakeLists.txt +index ead507d..d83c9e5 100644 +--- a/peqt.so/CMakeLists.txt ++++ b/peqt.so/CMakeLists.txt +@@ -107,11 +107,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../) ++include_directories(./ ../ ${HSA_PATH}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${HSA_PATH}/lib/ ${HSAKMT_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpci.so libm.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp) +@@ -121,7 +121,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/perf.so/CMakeLists.txt b/perf.so/CMakeLists.txt +index 518dac9..dfe05f5 100644 +--- a/perf.so/CMakeLists.txt ++++ b/perf.so/CMakeLists.txt +@@ -137,17 +137,17 @@ if(DEFINED RVS_ROCMSMI) + endif() + + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() + + ## define include directories +-include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${HIP_INC_DIR}/lib ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/perf_worker.cpp) +@@ -157,7 +157,7 @@ add_library( ${RVS_TARGET} SHARED ${SOURCES}) + set_target_properties(${RVS_TARGET} PROPERTIES + SUFFIX .so.${LIB_VERSION_STRING} + LIBRARY_OUTPUT_DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) +-target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS} ${HIP_HCC_LIB} ${ROCBLAS_LIB}) ++target_link_libraries(${RVS_TARGET} ${PROJECT_LINK_LIBS}) + add_dependencies(${RVS_TARGET} rvslib) + + add_custom_command(TARGET ${RVS_TARGET} POST_BUILD +diff --git a/pesm.so/CMakeLists.txt b/pesm.so/CMakeLists.txt +index 1f27f34..502c1c8 100644 +--- a/pesm.so/CMakeLists.txt ++++ b/pesm.so/CMakeLists.txt +@@ -107,11 +107,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../ pci) ++include_directories(./ ../ pci ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR} ${HIPRAND_DIR} ${ROCRAND_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so ${PROJECT_LINK_LIBS} ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp src/worker.cpp) +diff --git a/pesm.so/tests.cmake b/pesm.so/tests.cmake +index 2c72658..c6acbf4 100644 +--- a/pesm.so/tests.cmake ++++ b/pesm.so/tests.cmake +@@ -30,11 +30,11 @@ set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libpci.so libm.so libdl.so "lib${ROCM_SMI_LIB}.so" +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} "lib${HIPRAND_LIB}.so" "lib${ROCRAND_LIB}.so" + ) + + # Add directories to look for library files to link +-link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR}) ++link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + set (UT_SOURCES test/unitactionbase.cpp + ) +diff --git a/rcqt.so/CMakeLists.txt b/rcqt.so/CMakeLists.txt +index c0099ab..fcc82f3 100644 +--- a/rcqt.so/CMakeLists.txt ++++ b/rcqt.so/CMakeLists.txt +@@ -108,11 +108,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../) ++include_directories(./ ../ ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH} ${ASAN_LIB_PATH} ${HSAKMT_LIB_DIR} ${ROCM_SMI_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib) ++set (PROJECT_LINK_LIBS rvslib ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES +diff --git a/rvs/CMakeLists.txt b/rvs/CMakeLists.txt +index fc0118e..04c9abf 100644 +--- a/rvs/CMakeLists.txt ++++ b/rvs/CMakeLists.txt +@@ -34,6 +34,7 @@ set ( RVS "rvs" ) + set ( RVS_PACKAGE "rvs-roct" ) + set ( RVS_COMPONENT "lib${RVS}" ) + set ( RVS_TARGET "${RVS}" ) ++set ( YAML_CPP_LIBRARIES "${YAML_CPP_LIB_PATH}") + + project ( ${RVS_TARGET} ) + +@@ -115,20 +116,22 @@ endif() + ## define include directories + include_directories(./ ../ ${YAML_CPP_INCLUDE_DIRS}) + ## define lib directories +-link_directories(${CMAKE_CURRENT_BINARY_DIR} ${RVS_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_PATH}) ++link_directories(${CMAKE_CURRENT_BINARY_DIR} ${RVS_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR} ${RVS_LIB_DIR}/.. ${YAML_CPP_LIBRARIES}) + + ## additional libraries +-set(ROCBLAS_LIB "rocblas") +-set(ROC_THUNK_NAME "hsakmt") +-set(CORE_RUNTIME_NAME "hsa-runtime") +-set(HIPRAND_LIB "hiprand") +-set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") +-set(PROJECT_LINK_LIBS libdl.so libpthread.so libpci.so ${YAML_CPP_LIBRARIES}) ++set(ROCBLAS_LIB "${ROCBLAS_LIB_DIR}/librocblas.so") ++set(ROC_THUNK_NAME "${HSAKMT_LIB_DIR}/libhsakmt.a") ++set(CORE_RUNTIME_NAME "${HSA_PATH}/lib/libhsa-runtime64.so") ++set(YAML_CPP_LIB "${YAML_CPP_LIBRARIES}/libyaml-cpp.a") ++set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}") ++set(PROJECT_LINK_LIBS libdl.so libpthread.so libpci.so) ++set(HIPRAND_LIB "${HIPRAND_LIB_DIR}/libhiprand.so") ++set(ROCRAND_LIB "${ROCRAND_LIB_DIR}/librocrand.so") + + ## define target + add_executable(${RVS_TARGET} src/rvs.cpp) + target_link_libraries(${RVS_TARGET} rvslib +- ${ROCBLAS_LIB} ${ROCM_SMI_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${PROJECT_LINK_LIBS} ${HIPRAND_LIB}) ++ ${ROCBLAS_LIB} ${ROCM_SMI_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${PROJECT_LINK_LIBS} ${HIPRAND_LIB} ${YAML_CPP_LIB} ${ROCRAND_LIB}) + add_dependencies(${RVS_TARGET} rvslib) + + install(TARGETS ${RVS_TARGET} +diff --git a/rvs/tests.cmake b/rvs/tests.cmake +index c519482..64a4ad0 100644 +--- a/rvs/tests.cmake ++++ b/rvs/tests.cmake +@@ -32,17 +32,18 @@ + + set(ROCBLAS_LIB "rocblas") + set(HIPRAND_LIB "hiprand") ++set(ROCRAND_LIB "rocrand") + set(ROC_THUNK_NAME "hsakmt") + set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + ## define lib directories +-link_directories(${RVS_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${HIPRAND_LIB_DIR}) ++link_directories(${RVS_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + ## define target for "test-to-fail" + add_executable(${RVS_TARGET}fail src/rvs.cpp) + target_link_libraries(${RVS_TARGET}fail rvslib rvslibut ${PROJECT_LINK_LIBS} +- ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${ROCM_CORE} ${CORE_RUNTIME_TARGET} ${HIPRAND_LIB}) ++ ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${ROCM_CORE} ${CORE_RUNTIME_TARGET} ${HIPRAND_LIB} ${ROCRAND_LIB}) + + target_compile_definitions(${RVS_TARGET}fail PRIVATE RVS_INVERT_RETURN_STATUS) + set_target_properties(${RVS_TARGET}fail PROPERTIES +@@ -211,7 +212,7 @@ FOREACH(SINGLE_TEST ${TESTSOURCES}) + ${PROJECT_LINK_LIBS} + ${PROJECT_TEST_LINK_LIBS} + rvslib rvslibut gtest_main gtest pthread +- ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${HIPRAND_LIB} ++ ${ROCM_SMI_LIB} ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${HIPRAND_LIB} ${ROCRAND_LIB} + ) + add_dependencies(${TEST_NAME} rvs_gtest_target) + +diff --git a/rvslib/CMakeLists.txt b/rvslib/CMakeLists.txt +index 8d29590..18eb9f4 100644 +--- a/rvslib/CMakeLists.txt ++++ b/rvslib/CMakeLists.txt +@@ -116,7 +116,7 @@ endif() + + ## define include directories + include_directories(./ ../ ../rvs +- ${ROCM_SMI_INC_DIR} ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_INC_DIR}) ++ ${ROCM_SMI_INC_DIR} ${ROCR_INC_DIR} ${ROCBLAS_INC_DIR} ${HIP_PATH} ${YAML_CPP_INCLUDE_DIRS} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + + link_directories(${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR}) + +diff --git a/smqt.so/CMakeLists.txt b/smqt.so/CMakeLists.txt +index 042586f..285cb17 100644 +--- a/smqt.so/CMakeLists.txt ++++ b/smqt.so/CMakeLists.txt +@@ -106,11 +106,11 @@ else() + endif() + + ## define include directories +-include_directories(./ ../ pci) ++include_directories(./ ../ pci ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + ## define source files + set(SOURCES src/rvs_module.cpp src/action.cpp) +diff --git a/smqt.so/tests.cmake b/smqt.so/tests.cmake +index 76766de..804441a 100644 +--- a/smqt.so/tests.cmake ++++ b/smqt.so/tests.cmake +@@ -30,11 +30,11 @@ set(CORE_RUNTIME_NAME "hsa-runtime") + set(CORE_RUNTIME_TARGET "${CORE_RUNTIME_NAME}64") + + set(UT_LINK_LIBS libpthread.so libpci.so libm.so libdl.so "lib${ROCM_SMI_LIB}.so" +- ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} ${HIPRAND_LIB} ++ ${ROCBLAS_LIB} ${ROC_THUNK_NAME} ${CORE_RUNTIME_TARGET} ${ROCM_CORE} ${YAML_CPP_LIBRARIES} "lib${HIPRAND_LIB}.so" "lib${HIPRAND_LIB}.so" + ) + + # Add directories to look for library files to link +-link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR}) ++link_directories(${ROCM_SMI_LIB_DIR} ${ROCT_LIB_DIR} ${ROCBLAS_LIB_DIR} ${HIPRAND_LIB_DIR} ${ROCRAND_LIB_DIR}) + + set (UT_SOURCES src/action.cpp test/unitsmqt.cpp + ) +diff --git a/testif.so/CMakeLists.txt b/testif.so/CMakeLists.txt +index 4cba0f9..691534a 100644 +--- a/testif.so/CMakeLists.txt ++++ b/testif.so/CMakeLists.txt +@@ -108,11 +108,11 @@ endif() + + + ## define include directories +-include_directories(./ ../ pci) ++include_directories(./ ../ pci ${YAML_CPP_INCLUDE_DIRS}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ASAN_LIB_PATH} ${ROCM_SMI_LIB_DIR}) + ## additional libraries +-set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS libpthread.so libpci.so libm.so ${ROCBLAS_LIB_DIR}/librocblas.so ${HSAKMT_LIB_DIR}/libhsakmt.a ${HSA_PATH}/lib/libhsa-runtime64.so) + + ## define source files + ## set(SOURCES src/rvs_module.cpp src/action.cpp src/worker.cpp) +diff --git a/tst.so/CMakeLists.txt b/tst.so/CMakeLists.txt +index 1a1a8b0..c6e46da 100644 +--- a/tst.so/CMakeLists.txt ++++ b/tst.so/CMakeLists.txt +@@ -140,7 +140,7 @@ if(DEFINED RVS_ROCMSMI) + endif() + endif() + +-if(NOT EXISTS "${ROCR_LIB_DIR}/lib${HIP_HCC_LIB}.so") ++if(NOT EXISTS "${HIP_INC_DIR}/lib/lib${HIP_HCC_LIB}.so") + message("ERROR: ROC Runtime libraries can't be found under specified path. Please set ROCR_LIB_DIR path. Current value is : " ${ROCR_LIB_DIR}) + RETURN() + endif() +@@ -155,11 +155,11 @@ if(DEFINED RVS_ROCMSMI) + endif() + + ## define include directories +-include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR}) ++include_directories(./ ../ ${ROCM_SMI_INC_DIR} ${ROCBLAS_INC_DIR} ${ROCR_INC_DIR} ${HIP_INC_DIR} ${HIPRAND_INC_DIR} ${ROCRAND_INC_DIR}) + # Add directories to look for library files to link +-link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH}) ++link_directories(${RVS_LIB_DIR} ${ROCR_LIB_DIR} ${ROCBLAS_LIB_DIR} ${ROCM_SMI_LIB_DIR} ${ASAN_LIB_PATH} ${HIPRAND_LIB_DIR}/.. ${ROCRAND_LIB_DIR}/..) + ## additional libraries +-set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so) ++set (PROJECT_LINK_LIBS rvslib libpthread.so libpci.so libm.so ${HIPRAND_LIB_DIR}/libhiprand.so ${ROCRAND_LIB_DIR}/librocrand.so) + + set(SOURCES src/rvs_module.cpp src/action.cpp src/tst_worker.cpp ) + diff --git a/var/spack/repos/builtin/packages/rocm-validation-suite/package.py b/var/spack/repos/builtin/packages/rocm-validation-suite/package.py index f3b06fefcd19b8..7cdce00f34af96 100644 --- a/var/spack/repos/builtin/packages/rocm-validation-suite/package.py +++ b/var/spack/repos/builtin/packages/rocm-validation-suite/package.py @@ -58,7 +58,8 @@ class RocmValidationSuite(CMakePackage): # It expects rocm components headers and libraries in /opt/rocm # It doesn't find package to include the library and include path without this patch. patch("009-replacing-rocm-path-with-package-path.patch", when="@6.0") - patch("009-replacing-rocm-path-with-package-path-6.1.patch", when="@6.1") + patch("009-replacing-rocm-path-with-package-path-6.1.patch", when="@6.1:6.2.0") + patch("009-replacing-rocm-path-with-package-path-6.2.1.patch", when="@6.2.1") depends_on("cmake@3.5:", type="build") depends_on("zlib-api", type="link") depends_on("yaml-cpp~shared") @@ -94,6 +95,9 @@ def setup_build_environment(self, build_env): depends_on(f"rocm-smi-lib@{ver}", when=f"@{ver}") depends_on(f"hsa-rocr-dev@{ver}", when=f"@{ver}") depends_on(f"hsakmt-roct@{ver}", when=f"@{ver}") + for ver in ["6.2.1"]: + depends_on(f"hiprand@{ver}", when=f"@{ver}") + depends_on(f"rocrand@{ver}", when=f"@{ver}") def patch(self): if self.spec.satisfies("@5.2:5.4"): @@ -104,7 +108,7 @@ def patch(self): filter_file( r"@ROCM_PATH@/rvs", self.spec.prefix.rvs, "rvs/conf/deviceid.sh.in", string=True ) - elif self.spec.satisfies("@6.0:"): + elif self.spec.satisfies("@6.0:6.1"): filter_file( "@ROCM_PATH@/rvs", self.spec.prefix.bin, "rvs/conf/deviceid.sh.in", string=True ) @@ -119,6 +123,9 @@ def cmake_args(self): self.define("YAML_CPP_INCLUDE_DIRS", self.spec["yaml-cpp"].prefix.include), self.define("UT_INC", self.spec["googletest"].prefix.include), ] + if self.spec.satisfies("@6.2.1:"): + args.append(self.define("HIPRAND_DIR", self.spec["hiprand"].prefix)), + args.append(self.define("ROCRAND_DIR", self.spec["rocrand"].prefix)), libloc = self.spec["googletest"].prefix.lib64 if not os.path.isdir(libloc): libloc = self.spec["googletest"].prefix.lib @@ -131,20 +138,5 @@ def cmake_args(self): if not os.path.isdir(libloc): libloc = self.spec["yaml-cpp"].prefix.lib args.append(self.define("YAML_CPP_LIB_PATH", libloc)) - if self.spec.satisfies("@6.2:"): - args.append( - self.define( - "CMAKE_CXX_FLAGS", - f"-I{self.spec['rocm-smi-lib'].prefix.include} " - f"-I{self.spec['rocblas'].prefix.include} " - f"-I{self.spec['yaml-cpp'].prefix.include} " - f"-L{self.spec['hip'].prefix.lib} " - f"-L{self.spec['hsa-rocr-dev'].prefix.lib} " - f"-L{self.spec['hsakmt-roct'].prefix.lib} " - f"-L{self.spec['rocm-smi-lib'].prefix.lib} " - f"-L{self.spec['rocblas'].prefix.lib} " - f"{libloc}/libyaml-cpp.a ", - ) - ) - args.append(self.define("CPACK_PACKAGING_INSTALL_PREFIX", self.spec.prefix)) + return args diff --git a/var/spack/repos/builtin/packages/root/package.py b/var/spack/repos/builtin/packages/root/package.py index 8ad46328de1adb..1ad7e2c3a8f9f0 100644 --- a/var/spack/repos/builtin/packages/root/package.py +++ b/var/spack/repos/builtin/packages/root/package.py @@ -437,6 +437,8 @@ class Root(CMakePackage): # Incompatible variants if sys.platform == "darwin": conflicts("+opengl", when="~x ~aqua", msg="root+opengl requires X or Aqua") + # https://github.com/root-project/root/issues/7160 + conflicts("+aqua", when="~opengl", msg="+aqua requires OpenGL to be enabled") else: conflicts("+opengl", when="~x", msg="root+opengl requires X") conflicts("+math", when="~gsl", msg="root+math requires GSL") @@ -546,21 +548,26 @@ def _add_variant(variants, features, featurename, variantname): _add_variant(v, f, "gviz", "+graphviz") _add_variant(v, f, "http", "+http") _add_variant(v, f, ("imt", "tbb"), "+tbb") - _add_variant(v, f, "jemalloc", "+jemalloc") - _add_variant(v, f, "memstat", "+memstat") + if Version(version_str) <= Version("6.28"): + _add_variant(v, f, "jemalloc", "+jemalloc") + if Version(version_str) <= Version("6.17"): + _add_variant(v, f, "memstat", "+memstat") _add_variant(v, f, ("minuit", "minuit2"), "+minuit") _add_variant(v, f, "mlp", "+mlp") _add_variant(v, f, "mysql", "+mysql") - _add_variant(v, f, "oracle", "+oracle") + if Version(version_str) <= Version("6.30"): + _add_variant(v, f, "oracle", "+oracle") _add_variant(v, f, "pgsql", "+postgres") - _add_variant(v, f, "pythia6", "+pythia6") + if Version(version_str) <= Version("6.30"): + _add_variant(v, f, "pythia6", "+pythia6") _add_variant(v, f, "pythia8", "+pythia8") _add_variant(v, f, "pyroot", "+python") - _add_variant(v, f, ("qt", "qtgsi"), "+qt4") + if Version(version_str) <= Version("6.17"): + _add_variant(v, f, ("qt", "qtgsi"), "+qt4") _add_variant(v, f, "r", "+r") _add_variant(v, f, "roofit", "+roofit") # webui feature renamed to webgui in 6.18 - if Version(version_str).satisfies("@6.18:"): + if Version(version_str) >= Version("6.18"): _add_variant(v, f, ("root7", "webgui"), "+webgui") else: _add_variant(v, f, ("root7", "webui"), "+webgui") @@ -569,7 +576,8 @@ def _add_variant(variants, features, featurename, variantname): _add_variant(v, f, "spectrum", "+spectrum") _add_variant(v, f, "sqlite", "+sqlite") _add_variant(v, f, "ssl", "+ssl") - _add_variant(v, f, "table", "+table") + if Version(version_str) <= Version("6.17"): + _add_variant(v, f, "table", "+table") _add_variant(v, f, "thread", "+threads") _add_variant(v, f, "tmva", "+tmva") _add_variant(v, f, "tmva-cpu", "+tmva-cpu") @@ -580,7 +588,8 @@ def _add_variant(variants, features, featurename, variantname): _add_variant(v, f, "vc", "+vc") _add_variant(v, f, "vdt", "+vdt") _add_variant(v, f, "veccore", "+veccore") - _add_variant(v, f, "vmc", "+vmc") + if Version(version_str) <= Version("6.25"): + _add_variant(v, f, "vmc", "+vmc") _add_variant(v, f, ("x11", "xft"), "+x") _add_variant(v, f, "xml", "+xml") _add_variant(v, f, "xrootd", "+xrootd") @@ -633,7 +642,7 @@ def cmake_args(self): define("builtin_freetype", False), define("builtin_ftgl", False), define("builtin_gl2ps", False), - define("builtin_glew", self.spec.satisfies("platform=darwin")), + define("builtin_glew", False), define("builtin_gsl", False), define("builtin_llvm", True), define("builtin_lz4", self.spec.satisfies("@6.12.02:6.12")), diff --git a/var/spack/repos/builtin/packages/rpm/package.py b/var/spack/repos/builtin/packages/rpm/package.py index 18d373f299e9ec..39d2d44af4d848 100644 --- a/var/spack/repos/builtin/packages/rpm/package.py +++ b/var/spack/repos/builtin/packages/rpm/package.py @@ -60,8 +60,8 @@ class Rpm(AutotoolsPackage): # Always required depends_on("popt") - # Without this file patch, we don't detect lua - depends_on("lua+pcfile@5.3.5:", when="+lua") + # support for embedded Lua interpreter + depends_on("lua@5.3.5:", when="+lua") # Enable POSIX.1e draft 15 file capabilities support depends_on("libcap", when="+posix") diff --git a/var/spack/repos/builtin/packages/rstudio/package.py b/var/spack/repos/builtin/packages/rstudio/package.py index 569e9909e2b6e3..09fa89332c7404 100644 --- a/var/spack/repos/builtin/packages/rstudio/package.py +++ b/var/spack/repos/builtin/packages/rstudio/package.py @@ -11,7 +11,7 @@ class Rstudio(CMakePackage): """RStudio is an integrated development environment (IDE) for R.""" - homepage = "www.rstudio.com/products/rstudio/" + homepage = "https://www.rstudio.com/products/rstudio/" url = "https://github.com/rstudio/rstudio/archive/refs/tags/v1.4.1717.tar.gz" version("1.4.1717", sha256="3af234180fd7cef451aef40faac2c7b52860f14a322244c1c7aede029814d261") diff --git a/var/spack/repos/builtin/packages/rsyslog/package.py b/var/spack/repos/builtin/packages/rsyslog/package.py index 6de8baf1116cd6..eafa2d9c1bab16 100644 --- a/var/spack/repos/builtin/packages/rsyslog/package.py +++ b/var/spack/repos/builtin/packages/rsyslog/package.py @@ -10,13 +10,22 @@ class Rsyslog(AutotoolsPackage): """The rocket-fast Syslog Server.""" homepage = "https://www.rsyslog.com/" - url = "https://github.com/rsyslog/rsyslog/archive/v8.2006.0.tar.gz" + url = "https://github.com/rsyslog/rsyslog/archive/refs/tags/v8.2006.0.tar.gz" license("Apache-2.0 AND GPL-3.0-or-later AND LGPL-3.0-or-later", checked_by="tgamblin") - version("8.2006.0", sha256="dc30a2ec02d5fac91d3a4f15a00641e0987941313483ced46592ab0b0d68f324") - version("8.2004.0", sha256="b56b985fec076a22160471d389b7ff271909dfd86513dad31e401a775a6dfdc2") - version("8.2002.0", sha256="b31d56311532335212ef2ea7be4501508224cb21f1bef9d262c6d78e21959ea1") + version("8.2410.0", sha256="0e4e6fcb1d72a1cb65438d85dd2bbf37a8f82115d7e271788535d1e7fbcf6838") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-24903 + version( + "8.2006.0", sha256="dc30a2ec02d5fac91d3a4f15a00641e0987941313483ced46592ab0b0d68f324" + ) + version( + "8.2004.0", sha256="b56b985fec076a22160471d389b7ff271909dfd86513dad31e401a775a6dfdc2" + ) + version( + "8.2002.0", sha256="b31d56311532335212ef2ea7be4501508224cb21f1bef9d262c6d78e21959ea1" + ) depends_on("c", type="build") # generated @@ -24,6 +33,7 @@ class Rsyslog(AutotoolsPackage): depends_on("automake", type="build") depends_on("libtool", type="build") depends_on("m4", type="build") + depends_on("pkgconfig", type="build") depends_on("libestr") depends_on("libfastjson") depends_on("zlib-api") @@ -36,6 +46,9 @@ class Rsyslog(AutotoolsPackage): def setup_run_environment(self, env): env.prepend_path("PATH", self.prefix.sbin) + def autoreconf(self, spec, prefix): + Executable("./autogen.sh")() + def configure_args(self): args = ["--with-systemdsystemunitdir=" + self.spec["rsyslog"].prefix.lib.systemd.system] return args diff --git a/var/spack/repos/builtin/packages/salome-configuration/package.py b/var/spack/repos/builtin/packages/salome-configuration/package.py index 13f15926ac27dc..9abb0fe942b3ff 100644 --- a/var/spack/repos/builtin/packages/salome-configuration/package.py +++ b/var/spack/repos/builtin/packages/salome-configuration/package.py @@ -18,6 +18,12 @@ class SalomeConfiguration(Package): homepage = "https://www.salome-platform.org" git = "https://git.salome-platform.org/gitpub/tools/configuration.git" + version("9.13.0", tag="V9_13_0", commit="1c9b00436fc0e8264742460ebc102ae7d1970e97") + version("9.12.0", tag="V9_12_0", commit="61ed79521f31363ba4aeedcd59812a4838c076aa") + version("9.11.0", tag="V9_11_0", commit="33fc859a523e9f84cabaae2c55fdc64d1be11ec0") + version("9.10.0", tag="V9_10_0", commit="25f724f7a6c0000330a40c3851dcd8bc2493e1fa") + version("9.9.0", tag="V9_9_0", commit="5e61c7330cb2e0ff39e0bf4ba7b65d1d26c824ac") + version("9.8.0", tag="V9_8_0", commit="f1b2929d32953ac4d2056d564dab62e2e8d7c2a5") version("9.7.0", tag="V9_7_0", commit="b1430e72bc252867289b45de9a94041841fade06") version("9.6.0", tag="V9_6_0", commit="02e621fc9e24b4eab20f82ef921859013bf024b4") version("9.5.0", tag="V9_5_0", commit="96ecd4927604943dc80ead4aaf732a9d0215b70c") @@ -25,7 +31,7 @@ class SalomeConfiguration(Package): version("9.3.0", tag="V9_3_0", commit="de7bac0ee58007a9501fffa7c1488de029b19cdc") patch("SalomeMacros.patch", working_dir="./cmake") - patch("FindSalomeHDF5.patch", working_dir="./cmake") + patch("FindSalomeHDF5.patch", working_dir="./cmake", when="@:9.7.0") def setup_dependent_build_environment(self, env, dependent_spec): env.set("CONFIGURATION_ROOT_DIR", self.prefix) diff --git a/var/spack/repos/builtin/packages/salome-med/package.py b/var/spack/repos/builtin/packages/salome-med/package.py index 08a7762cadbbb8..a96950b500bd47 100644 --- a/var/spack/repos/builtin/packages/salome-med/package.py +++ b/var/spack/repos/builtin/packages/salome-med/package.py @@ -20,6 +20,12 @@ class SalomeMed(CMakePackage): license("LGPL-3.0-only") + version( + "5.0.0", + sha256="267e76d0c67ec51c10e3199484ec1508baa8d5ed845c628adf660529dce7a3d4", + url="ftp://ftp.cea.fr/pub/salome/prerequisites/med-5.0.0.tar.bz2", + ) + version("4.1.1", sha256="a082b705d1aafe95d3a231d12c57f0b71df554c253e190acca8d26fc775fb1e6") version("4.1.0", sha256="847db5d6fbc9ce6924cb4aea86362812c9a5ef6b9684377e4dd6879627651fce") version("4.0.0", sha256="a474e90b5882ce69c5e9f66f6359c53b8b73eb448c5f631fa96e8cd2c14df004") version("3.3.1", sha256="856e9c4bb75eb0cceac3d5a5c65b1ce52fb3c46b9182920e1c9f34ae69bd2d5f") @@ -32,20 +38,14 @@ class SalomeMed(CMakePackage): variant("mpi", default=False, description="Enable MPI") variant("static", default=False, description="Enable static library build") variant("fortran", default=False, description="Enable Fortran") + variant("int64", default=False, description="Use 64-bit integers as indices.") depends_on("mpi", when="+mpi") - depends_on("hdf5@1.10.3+mpi", when="@4.1.0+mpi") - depends_on("hdf5@1.10.3~mpi", when="@4.1.0~mpi") - - depends_on("hdf5@1.10.3+mpi", when="@4.0.0+mpi") - depends_on("hdf5@1.10.3~mpi", when="@4.0.0~mpi") - - depends_on("hdf5@1.8.14+mpi", when="@3.3.1+mpi") - depends_on("hdf5@1.8.14~mpi", when="@3.3.1~mpi") - - depends_on("hdf5@1.8.14+mpi", when="@3.2.0+mpi") - depends_on("hdf5@1.8.14~mpi", when="@3.2.0~mpi") + for _mpi_variant in ("~mpi", "+mpi"): + depends_on(f"hdf5@1.12{_mpi_variant}", when=f"@5:{_mpi_variant}") + depends_on(f"hdf5@1.10{_mpi_variant}", when=f"@4{_mpi_variant}") + depends_on(f"hdf5@1.8{_mpi_variant}", when=f"@3{_mpi_variant}") patch("MAJ_400_410_champs.patch", when="@4.1.0+static", working_dir="./tools/medimport/4.0.0") @@ -85,6 +85,11 @@ def cmake_args(self): else: options.extend(["-DCMAKE_Fortran_COMPILER="]) + if "+int64" in spec: + options.append("-DMED_MEDINT_TYPE=long") + else: + options.append("-DMED_MEDINT_TYPE=int") + options.extend( [ "-DMEDFILE_BUILD_PYTHON=OFF", diff --git a/var/spack/repos/builtin/packages/salome-medcoupling/package.py b/var/spack/repos/builtin/packages/salome-medcoupling/package.py index 89f681b200a5c9..2c24579706a2e2 100644 --- a/var/spack/repos/builtin/packages/salome-medcoupling/package.py +++ b/var/spack/repos/builtin/packages/salome-medcoupling/package.py @@ -20,6 +20,12 @@ class SalomeMedcoupling(CMakePackage): license("LGPL-2.1-or-later") + version("9.13.0", tag="V9_13_0", commit="8bea530c92cd907ae859ef11fd95b2db54b2894a") + version("9.12.0", tag="V9_12_0", commit="28e485bde1c26dc835ec7acf449b1d519997ddce") + version("9.11.0", tag="V9_11_0", commit="1b5fb5650409b0ad3a61da3215496f2adf2dae02") + version("9.10.0", tag="V9_10_0", commit="fe2e38d301902c626f644907e00e499552bb2fa5") + version("9.9.0", tag="V9_9_0", commit="5b2a9cc1cc18fffd5674a589aacf368008983b45") + version("9.8.0", tag="V9_8_0", commit="8a82259c9a9228c54efeddd52d4afe6c0e397c30") version("9.7.0", tag="V9_7_0", commit="773434a7f2a5cbacc2f50e93ea6d6a48a157acd9") version("9.6.0", tag="V9_6_0", commit="2c14a65b40252770b3503945405f5bdb2f29f8e2") version("9.5.0", tag="V9_5_0", commit="dd75474d950baf8ff862b03cb1685f2a2d562846") @@ -31,7 +37,7 @@ class SalomeMedcoupling(CMakePackage): variant("static", default=False, description="Enable static library build") variant("mpi", default=False, description="Enable MPI") - variant("in64", default=False, description="Enable 64 bits indexes") + variant("int64", default=False, description="Use 64 bits indices") variant("partitioner", default=False, description="Enable partitioner") variant("metis", default=False, description="Enable Metis") variant("scotch", default=False, description="Enable Scotch") @@ -49,35 +55,25 @@ class SalomeMedcoupling(CMakePackage): depends_on("scotch@6.0.4:", when="+scotch") depends_on("mpi", when="+mpi") - depends_on("salome-configuration@9.7.0", when="@9.7.0") - depends_on("salome-med@4.1.0+mpi+static", when="@9.7.0+mpi+static") - depends_on("salome-med@4.1.0+mpi", when="@9.7.0+mpi") - depends_on("salome-med@4.1.0+static", when="@9.7.0~mpi+static") - depends_on("salome-med@4.1.0", when="@9.7.0~mpi") - - depends_on("salome-configuration@9.6.0", when="@9.6.0") - depends_on("salome-med@4.1.0+mpi+static", when="@9.6.0+mpi+static") - depends_on("salome-med@4.1.0+mpi", when="@9.6.0+mpi") - depends_on("salome-med@4.1.0+static", when="@9.6.0~mpi+static") - depends_on("salome-med@4.1.0", when="@9.6.0~mpi") - - depends_on("salome-configuration@9.5.0", when="@9.5.0") - depends_on("salome-med@4.1.0+mpi+static", when="@9.5.0+mpi+static") - depends_on("salome-med@4.1.0+mpi", when="@9.5.0+mpi") - depends_on("salome-med@4.1.0+static", when="@9.5.0~mpi+static") - depends_on("salome-med@4.1.0", when="@9.5.0~mpi") - - depends_on("salome-configuration@9.4.0", when="@9.4.0") - depends_on("salome-med@4.0.0+mpi+static", when="@9.4.0+mpi+static") - depends_on("salome-med@4.0.0+mpi", when="@9.4.0+mpi") - depends_on("salome-med@4.0.0+static", when="@9.4.0~mpi+static") - depends_on("salome-med@4.0.0", when="@9.4.0~mpi") - - depends_on("salome-configuration@9.3.0", when="@9.3.0") - depends_on("salome-med@4.0.0+mpi+static", when="@9.3.0+mpi+static") - depends_on("salome-med@4.0.0+mpi", when="@9.3.0+mpi") - depends_on("salome-med@4.0.0+static", when="@9.3.0~mpi+static") - depends_on("salome-med@4.0.0", when="@9.3.0~mpi") + for _min_ver in range(3, 14): + _ver = f"9.{_min_ver}.0" + depends_on(f"salome-configuration@{_ver}", when=f"@{_ver}") + + for _mpi_variant in ("~mpi", "+mpi"): + for _static_variant in ("~static", "+static"): + for _int64_variant in ("~int64", "+int64"): + depends_on( + f"salome-med@4.1.1{_mpi_variant}{_static_variant}{_int64_variant}", + when=f"@9.11.0:{_mpi_variant}{_static_variant}{_int64_variant}", + ) + depends_on( + f"salome-med@4.1.0{_mpi_variant}{_static_variant}{_int64_variant}", + when=f"@9.5.0:9.10.0{_mpi_variant}{_static_variant}{_int64_variant}", + ) + depends_on( + f"salome-med@4.0.0{_mpi_variant}{_static_variant}{_int64_variant}", + when=f"@9.3.0:9.4.0{_mpi_variant}{_static_variant}{_int64_variant}", + ) def check(self): pass @@ -90,13 +86,9 @@ def setup_build_environment(self, env): env.set("SCOTCH_ROOT_DIR", self.spec["scotch"].prefix) def setup_run_environment(self, env): + python_ver = self.spec["python"].version.up_to(2) env.prepend_path( - "PYTHONPATH", - join_path( - self.prefix.lib, - "python{0}".format(self.spec["python"].version.up_to(2)), - "site-packages", - ), + "PYTHONPATH", join_path(self.prefix.lib, f"python{python_ver}", "site-packages") ) def cmake_args(self): @@ -113,7 +105,7 @@ def cmake_args(self): else: options.extend(["-DMEDCOUPLING_USE_MPI=OFF", "-DSALOME_USE_MPI=OFF"]) - if "+in64" in spec: + if "+int64" in spec: options.extend(["-DMEDCOUPLING_USE_64BIT_IDS=ON"]) else: options.extend(["-DMEDCOUPLING_USE_64BIT_IDS=OFF"]) diff --git a/var/spack/repos/builtin/packages/sccache/package.py b/var/spack/repos/builtin/packages/sccache/package.py new file mode 100644 index 00000000000000..23fbfe8b770776 --- /dev/null +++ b/var/spack/repos/builtin/packages/sccache/package.py @@ -0,0 +1,65 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import os +import re + +import spack.build_systems +from spack.package import * + + +class Sccache(CargoPackage): + """Sccache is a ccache-like tool. It is used as a compiler wrapper and avoids + compilation when possible. Sccache has the capability to utilize caching in + remote storage environments, including various cloud storage options, or + alternatively, in local storage.""" + + homepage = "https://github.com/mozilla/sccache" + url = "https://github.com/mozilla/sccache/archive/refs/tags/v0.8.2.tar.gz" + + tags = ["build-tools"] + + executables = [r"^sccache$", r"^sscache-dist$"] + + license("Apache-2.0", checked_by="pranav-sivaraman") + + version("0.8.2", sha256="2b3e0ef8902fe7bcdcfccf393e29f4ccaafc0194cbb93681eaac238cdc9b94f8") + + depends_on("rust@1.75:", when="@0.8.2:") + depends_on("rust@1.70:", when="@0.7.7:") + depends_on("rust@1.67.1:") # for 0.6/0.7.1 and newer, but may work for even older versions. + depends_on("pkgconfig", type="build", when="platform=linux") + + depends_on("openssl", when="platform=linux") + + variant( + "dist-server", + default=False, + description="Enables the sccache-dist binary", + when="platform=linux", + ) + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + match = re.match(r"sccache (\S+)", output) + return match.group(1) if match else None + + @classmethod + def determine_variants(cls, exes, version_str): + if any(os.path.basename(path) == "sccache-dist" for path in exes): + return "+dist-server" + else: + return "~dist-server" + + +class CargoBuilder(spack.build_systems.cargo.CargoBuilder): + + @property + def build_args(self): + if self.spec.satisfies("+dist-server"): + return ["--features=dist-server"] + + return [] diff --git a/var/spack/repos/builtin/packages/scitokens-cpp/package.py b/var/spack/repos/builtin/packages/scitokens-cpp/package.py index 1426828700f0eb..6c193e4bd274db 100644 --- a/var/spack/repos/builtin/packages/scitokens-cpp/package.py +++ b/var/spack/repos/builtin/packages/scitokens-cpp/package.py @@ -17,6 +17,7 @@ class ScitokensCpp(CMakePackage): license("Apache-2.0") + version("1.1.2", sha256="07d33cb51a3ccd8460f2acebb15b35393aeccfc70e3554a73c9e5cffed6edb39") version("1.1.1", sha256="a9091b888fc778282caf2a6808c86f685d2411557673152d58fe53932a6c7212") version("1.1.0", sha256="9c4afd6638e94855ede52ecfc3d4f05082f2bdf151a9ab8dafcc2bb7cd4d9039") version("1.0.2", sha256="cdc1e80e0cba9ca0e16de2efa10ec5e38765792bf5107024bfb66ddad5a16a85") diff --git a/var/spack/repos/builtin/packages/scr/package.py b/var/spack/repos/builtin/packages/scr/package.py index 9737365255d905..7ec48f4ac77223 100644 --- a/var/spack/repos/builtin/packages/scr/package.py +++ b/var/spack/repos/builtin/packages/scr/package.py @@ -12,6 +12,8 @@ def detect_scheduler(): if which("aprun"): return "APRUN" + if which("flux"): + return "FLUX" if which("jsrun"): return "LSF" return "SLURM" @@ -33,21 +35,12 @@ class Scr(CMakePackage): version("legacy", branch="legacy") version( - "3.0.1", - sha256="ba8f9e676aec8176ecc46c31a4f470ac95047101654de8cc88e01a1f9d95665a", + "3.1.0", + sha256="ca1f37c84e0ff7a307e68f213c8cc868974d7fb30f16826853a711c7c3a55ffa", preferred=True, ) - version("3.0", sha256="e204d3e99a49efac50b4bedc7ac05f55a05f1a65429500d919900c82490532cc") - version( - "3.0rc2", - sha256="4b2a718af56b3683e428d25a2269c038e9452db734221d370e3023a491477fad", - deprecated=True, - ) - version( - "3.0rc1", - sha256="bd31548a986f050024429d8ee3644eb135f047f98a3d503a40c5bd4a85291308", - deprecated=True, - ) + version("3.0.1", sha256="ba8f9e676aec8176ecc46c31a4f470ac95047101654de8cc88e01a1f9d95665a") + version("3.0.0", sha256="e204d3e99a49efac50b4bedc7ac05f55a05f1a65429500d919900c82490532cc") version("2.0.0", sha256="471978ae0afb56a20847d3989b994fbd680d1dea21e77a5a46a964b6e3deed6b") version( "1.2.2", @@ -79,39 +72,31 @@ class Scr(CMakePackage): # SCR legacy is anything 2.x.x or earlier # SCR components is anything 3.x.x or later - depends_on("axl@0.7.1", when="@3.0.1") - depends_on("er@0.2.0", when="@3.0.1") - depends_on("kvtree@1.3.0", when="@3.0.1") - depends_on("rankstr@0.1.0", when="@3.0.1") - depends_on("redset@0.2.0", when="@3.0.1") - depends_on("shuffile@0.2.0", when="@3.0.1") - depends_on("spath@0.2.0 +mpi", when="@3.0.1") - depends_on("dtcmp@1.1.4", when="@3.0.1") - - depends_on("axl@0.6.0", when="@3.0.0") - depends_on("er@0.2.0", when="@3.0.0") - depends_on("kvtree@1.3.0", when="@3.0.0") - depends_on("rankstr@0.1.0", when="@3.0.0") - depends_on("redset@0.2.0", when="@3.0.0") - depends_on("shuffile@0.2.0", when="@3.0.0") - depends_on("spath@0.2.0", when="@3.0.0") - depends_on("dtcmp@1.1.4", when="@3.0.0") - - depends_on("axl@0.5.0:", when="@3.0rc2") - depends_on("er@0.1.0:", when="@3.0rc2") - depends_on("kvtree@1.2.0:", when="@3.0rc2") - depends_on("rankstr@0.1.0:", when="@3.0rc2") - depends_on("redset@0.1.0:", when="@3.0rc2") - depends_on("shuffile@0.1.0:", when="@3.0rc2") - depends_on("spath@0.1.0:", when="@3.0rc2") - - depends_on("axl@0.4.0", when="@3.0rc1") - depends_on("er@0.0.4", when="@3.0rc1") - depends_on("kvtree@1.1.1", when="@3.0rc1") - depends_on("rankstr@0.0.3", when="@3.0rc1") - depends_on("redset@0.0.5", when="@3.0rc1") - depends_on("shuffile@0.0.4", when="@3.0rc1") - depends_on("spath@0.0.2", when="@3.0rc1") + with when("@3.1.0"): + depends_on("axl@0.8.0: +mpi") + depends_on("er@0.5.0") + depends_on("kvtree@1.4.0:") + depends_on("rankstr@0.3.0:") + depends_on("redset@0.4.0") + depends_on("shuffile@0.3.0:") + depends_on("spath@0.3.0: +mpi") + depends_on("dtcmp@1.1.5") + + with when("@3.0.1"): + depends_on("axl@0.7.1 +mpi") + depends_on("er@0.3.0") + + with when("@3.0.0"): + depends_on("axl@0.6.0") + depends_on("er@0.2.0") + + with when("@3.0.0:3.0.1"): + depends_on("kvtree@1.3.0") + depends_on("rankstr@0.2.0") + depends_on("redset@0.2.0") + depends_on("shuffile@0.2.0") + depends_on("spath@0.2.0 +mpi") + depends_on("dtcmp@1.1.4:") # DTCMP is an optional dependency up until 3.x, required thereafter variant( @@ -127,14 +112,15 @@ class Scr(CMakePackage): "libyogrt", default=True, description="Build SCR with libyogrt for get_time_remaining." ) depends_on("libyogrt scheduler=slurm", when="+libyogrt resource_manager=SLURM") + depends_on("libyogrt scheduler=flux", when="+libyogrt resource_manager=FLUX") depends_on("libyogrt scheduler=lsf", when="+libyogrt resource_manager=LSF") depends_on("libyogrt", when="+libyogrt") # PDSH required up to 3.0rc1, optional thereafter # TODO spack currently assumes 3.0.0 = 3.0 = 3 < 3.0rc1 < 3.0rc2 - variant("pdsh", default=True, when="@3.0.0,3.0rc2:", description="Enable use of PDSH") + variant("pdsh", default=True, when="@3:", description="Enable use of PDSH") depends_on("pdsh+static_modules", type=("build", "run"), when="+pdsh") - depends_on("pdsh+static_modules", type=("build", "run"), when="@:2,3.0rc1") + depends_on("pdsh+static_modules", type=("build", "run"), when="@:2") variant( "scr_config", @@ -154,7 +140,7 @@ class Scr(CMakePackage): variant( "resource_manager", default=detect_scheduler(), - values=("SLURM", "APRUN", "LSF", "NONE"), + values=("SLURM", "APRUN", "FLUX", "LSF", "NONE"), multi=False, description="Resource manager for which to configure SCR.", ) @@ -169,32 +155,27 @@ class Scr(CMakePackage): description="Asynchronous data transfer API to use with SCR.", ) - variant("bbapi", default=True, when="@3.0rc2:", description="Enable IBM BBAPI support") + variant("pthreads", default=True, when="@3:", description="Enable Pthread support") + depends_on("axl+pthreads", when="+pthreads") + + variant("bbapi", default=False, when="@3:", description="Enable IBM BBAPI support") depends_on("axl+bbapi", when="+bbapi") depends_on("axl~bbapi", when="~bbapi") variant( "bbapi_fallback", default=False, - when="@3:", + when="@3: +bbapi", description="Using BBAPI, if source or destination don't support \ file extents then fallback to pthreads", ) - depends_on("axl+bbapi_fallback", when="+bbapi_fallback") - variant( - "bbapi_fallback", - default=False, - when="@3.0rc2: +bbapi", - description="Using BBAPI, if source or destination don't support \ - file extents then fallback to pthreads", - ) - depends_on("axl+bbapi+bbapi_fallback", when="@3.0rc2: +bbapi_fallback") + depends_on("axl+bbapi+bbapi_fallback", when="@3: +bbapi_fallback") - variant("dw", default=False, when="@3.0rc2:", description="Enable Cray DataWarp support") + variant("dw", default=False, when="@3:", description="Enable Cray DataWarp support") depends_on("axl+dw", when="+dw") depends_on("axl~dw", when="~dw") - variant("examples", default=True, when="@3.0rc2:", description="Build SCR example programs") + variant("examples", default=True, when="@3:", description="Build SCR example programs") variant( "file_lock", @@ -213,7 +194,7 @@ class Scr(CMakePackage): # capturing SCR and syslog messages in a database') # depends_on('mysql', when='+mysql') - variant("shared", default=True, when="@3.0rc2:", description="Build with shared libraries") + variant("shared", default=True, when="@3:", description="Build with shared libraries") depends_on("libyogrt+static", when="~shared") for comp in cmpnts: depends_on(comp + "+shared", when="+shared") @@ -223,7 +204,7 @@ class Scr(CMakePackage): # TODO: Expose `tests` and `resource_manager` variants in components and # then propogate their setting through components. - variant("tests", default=True, when="@3.0rc2:", description="Build with CTest included") + variant("tests", default=True, when="@3:", description="Build with CTest included") # The default cache and control directories should be placed in tmpfs if available. # On Linux, /dev/shm is a common tmpfs location. Other platforms, like macOS, @@ -259,7 +240,17 @@ def cmake_args(self): spec = self.spec args = [] + args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) args.append(self.define_from_variant("ENABLE_FORTRAN", "fortran")) + args.append(self.define_from_variant("ENABLE_IBM_BBAPI", "bbapi")) + args.append(self.define_from_variant("ENABLE_CRAY_DW", "dw")) + args.append(self.define_from_variant("ENABLE_EXAMPLES", "examples")) + args.append(self.define_from_variant("ENABLE_YOGRT", "libyogrt")) + # args.append(self.define_from_variant('ENABLE_MYSQL', 'mysql')) + args.append(self.define_from_variant("ENABLE_PDSH", "pdsh")) + args.append(self.define_from_variant("ENABLE_PTHREADS", "pthreads")) + args.append(self.define_from_variant("ENABLE_TESTS", "tests")) + args.append(self.define_from_variant("SCR_ASYNC_API", "async_api")) args.append(self.define_from_variant("SCR_FILE_LOCK", "file_lock")) args.append(self.define_from_variant("SCR_CACHE_BASE", "cache_base")) args.append(self.define_from_variant("SCR_CNTL_BASE", "cntl_base")) @@ -281,28 +272,15 @@ def cmake_args(self): cmpnts = ["axl", "dtcmp", "er", "kvtree", "rankstr", "redset", "shuffile", "spath"] for comp in cmpnts: args.append(self.define("WITH_" + comp.upper() + "_PREFIX", spec[comp].prefix)) - else: - # dtcmp optional before this point - if "+dtcmp" in spec: - args.append(self.define("WITH_DTCMP_PREFIX", spec["dtcmp"].prefix)) - - # Only used prior to version 3 - args.append(self.define_from_variant("SCR_ASYNC_API", "async_api")) - - if spec.satisfies("@3.0rc2:"): - args.append(self.define_from_variant("ENABLE_IBM_BBAPI", "bbapi")) - args.append(self.define_from_variant("ENABLE_CRAY_DW", "dw")) - args.append(self.define_from_variant("ENABLE_EXAMPLES", "examples")) - args.append(self.define_from_variant("ENABLE_YOGRT", "libyogrt")) - # args.append(self.define_from_variant('ENABLE_MYSQL', 'mysql')) - args.append(self.define_from_variant("ENABLE_PDSH", "pdsh")) - args.append(self.define_from_variant("BUILD_SHARED_LIBS", "shared")) - args.append(self.define_from_variant("ENABLE_TESTS", "tests")) # PDSH optional from this point on if "+pdsh" in spec: args.append(self.define("WITH_PDSH_PREFIX", spec["pdsh"].prefix)) else: + # dtcmp optional before this point + if "+dtcmp" in spec: + args.append(self.define("WITH_DTCMP_PREFIX", spec["dtcmp"].prefix)) + # PDSH required before this point args.append(self.define("WITH_PDSH_PREFIX", spec["pdsh"].prefix)) diff --git a/var/spack/repos/builtin/packages/seissol/package.py b/var/spack/repos/builtin/packages/seissol/package.py new file mode 100644 index 00000000000000..1cd4f787fcf82a --- /dev/null +++ b/var/spack/repos/builtin/packages/seissol/package.py @@ -0,0 +1,351 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + + +from spack.package import * + + +class Seissol(CMakePackage, CudaPackage, ROCmPackage): + """Seissol - A scientific software for the numerical simulation + of seismic wave phenomena and earthquake dynamics. + """ + + homepage = "http://www.seissol.org" + git = "https://github.com/SeisSol/SeisSol.git" + version("master", branch="master", submodules=True) + # we cannot use the tar.gz file because it does not contains submodules + version( + "1.2.0", tag="v1.2.0", commit="2057e6e81965e0789128c6d177592800bcf956e1", submodules=True + ) + version( + "1.1.4", tag="v1.1.4", commit="6d301757378ad8446173e0a12c095a695a708aaf", submodules=True + ) + version( + "1.1.3", tag="v1.1.3", commit="01ae1b127fcc6f766b819d2e797df6a3547d730a", submodules=True + ) + version( + "1.1.2", tag="v1.1.2", commit="71002c1c1498ebd6f50a954731da68fa4f9d436b", submodules=True + ) + + maintainers("Thomas-Ulrich", "davschneller", "vikaskurapati") + + variant("asagi", default=True, description="Use ASAGI for material input") + variant( + "convergence_order", + default="4", + description="polynomial degree plus one", + values=(str(v) for v in range(2, 9)), + multi=False, + ) + variant( + "precision", + default="double", + description="float numerical precision", + values=("single", "double"), + multi=False, + ) + variant( + "dr_quad_rule", + default="stroud", + description="dynamic rupture quadrature rule", + values=("stroud", "dunavant"), + multi=False, + ) + variant( + "plasticity_method", + default="nb", + description="Plasticity method", + values=("nb", "ib"), + multi=False, + ) + variant( + "equations", + default="elastic", + description="equation set used", + values=("elastic", "anisotropic", "viscoelastic2", "poroelastic"), + multi=False, + ) + variant( + "number_of_mechanisms", default="3", description="number of mechanisms for viscoelasticity" + ) + variant("netcdf", default=True, description="Enable Netcdf") + variant( + "graph_partitioning_libs", + default="parmetis", + description="graph partitioning library for mesh partitioning", + values=("none", "parmetis", "ptscotch", "parhip"), + multi=True, + ) + + # GPU options + variant("intel_gpu", default=False, description="Compile for Intel GPUs") + variant( + "intel_gpu_arch", + default="none", + values=("none", "bdw", "skl", "pvc"), + description="The Intel GPU to compile for", + when="+intel_gpu", + ) + + forwarded_variants = ["cuda", "intel_gpu", "rocm"] + for v in forwarded_variants: + variant( + "sycl_backend", + default="acpp", + description="SYCL backend to use for DR and point sources", + values=("acpp", "oneapi"), + when=f"+{v}", + ) + variant( + "sycl_gemm", + default=False, + description="Use SYCL also for the wave propagation part (default for Intel GPUs)", + when=f"+{v}", + ) + + requires( + "-cuda -rocm -intel_gpu", + "+cuda", + "+rocm", + "+intel_gpu", + policy="one_of", + msg="You may either compile for one GPU backend, or for CPU.", + ) + + requires("%oneapi", when="sycl_backend=oneapi") + + depends_on("hipsycl@0.9.3: +cuda", when="+cuda sycl_backend=acpp") + + # TODO: this one needs to be +rocm as well--but that's not implemented yet + depends_on("hipsycl@develop", when="+rocm sycl_backend=acpp") + + # TODO: extend as soon as level zero is available + depends_on("hipsycl@develop", when="+intel_gpu sycl_backend=acpp") + + # TODO: once adaptivecpp supports NVHPC, forward that (SYCL_USE_NVHPC) + + # GPU architecture requirements + conflicts( + "cuda_arch=none", + when="+cuda", + msg="A value for cuda_arch must be specified. Add cuda_arch=XX", + ) + + conflicts( + "amdgpu_target=none", + when="+rocm", + msg="A value for amdgpu_arch must be specified. Add amdgpu_arch=XX", + ) + + conflicts( + "intel_gpu_arch=none", + when="+intel_gpu", + msg="A value for intel_gpu_arch must be specified. Add intel_gpu_arch=XX", + ) + + variant( + "gemm_tools_list", + default="LIBXSMM,PSpaMM", + description="gemm toolkit(s) for the (CPU) code generator", + values=("LIBXSMM", "MKL", "OpenBLAS", "BLIS", "PSpaMM", "Eigen", "LIBXSMM_JIT"), + multi=True, + ) + + variant("memkind", default=True, description="Use memkind library for hbw memory support") + + depends_on("mpi") + + with when("+cuda"): + for var in ["openmpi", "mpich", "mvapich", "mvapich2", "mvapich2-gdr"]: + depends_on(f"{var} +cuda", when=f"^[virtuals=mpi] {var}") + + with when("+rocm"): + for var in ["mpich", "mvapich2-gdr"]: + depends_on(f"{var} +rocm", when=f"^[virtuals=mpi] {var}") + + # with cuda 12 and llvm 14:15, we have the issue: "error: no template named 'texture" + # https://github.com/llvm/llvm-project/issues/61340 + conflicts("cuda@12", when="+cuda ^llvm@14:15") + depends_on("cuda@11:", when="+cuda") + depends_on("hip", when="+rocm") + + # graph partitioning + with when("graph_partitioning_libs=parmetis"): + depends_on("parmetis +int64 +shared") + depends_on("metis +int64 +shared") + + depends_on( + "scotch +mpi +mpi_thread +shared +threads +int64", when="graph_partitioning_libs=ptscotch" + ) + depends_on("kahip", when="graph_partitioning_libs=parhip") + + depends_on("hdf5 +shared +threadsafe +hl +mpi") + + depends_on("netcdf-c@4.6: +shared +mpi", when="+netcdf") + + depends_on("asagi +mpi +mpi3", when="+asagi") + + depends_on("easi ~asagi jit=impalajit,lua", when="~asagi") + depends_on("easi +asagi jit=impalajit,lua", when="+asagi") + + depends_on("intel-mkl threads=none", when="gemm_tools_list=MKL") + depends_on("blis threads=none", when="gemm_tools_list=BLIS") + depends_on("openblas threads=none", when="gemm_tools_list=OpenBLAS") + depends_on("libxsmm@main", when="gemm_tools_list=LIBXSMM_JIT") + + conflicts("gemm_tools_list=LIBXSMM", when="gemm_tools_list=LIBXSMM_JIT") + + depends_on("memkind", when="+memkind target=x86_64:") + + depends_on("yaml-cpp@0.6.2") + depends_on("eigen@3.4.0") + + # build dependencies (code generation) + with default_args(type="build"): + # https://seissol.readthedocs.io/en/latest/installing-dependencies.html + depends_on("cmake@3.20:") + depends_on("python@3.9:") + depends_on("py-setuptools") + depends_on("py-numpy@1.12:") + depends_on("py-scipy") + depends_on("py-matplotlib") + depends_on("py-pspamm", when="gemm_tools_list=PSpaMM") + + forwarded_variants = ["cuda", "intel_gpu", "rocm"] + for v in forwarded_variants: + depends_on("py-gemmforge", when=f"+{v}") + depends_on("py-chainforgecodegen", when=f"+{v}") + + depends_on("libxsmm@=1.17 +generator", when="gemm_tools_list=LIBXSMM target=x86_64:") + + def cmake_args(self): + args = [ + "-DMPI=ON", + self.define_from_variant("ASAGI", "asagi"), + self.define_from_variant("PRECISION", "precision"), + self.define_from_variant("PLASTICITY_METHOD", "plasticity_method"), + self.define_from_variant("DR_QUAD_RULE", "dr_quad_rule"), + self.define_from_variant("ORDER", "convergence_order"), + self.define_from_variant("EQUATIONS", "equations"), + self.define_from_variant("NETCDF", "netcdf"), + ] + + gemm_tools_list = ",".join(self.spec.variants["gemm_tools_list"].value) + args.append(f"-DGEMM_TOOLS_LIST={gemm_tools_list}") + + graph_partitioning_libs = ",".join(self.spec.variants["graph_partitioning_libs"].value) + args.append(f"-DGRAPH_PARTITIONING_LIBS={graph_partitioning_libs}") + + if self.spec.variants["equations"].value != "viscoelastic2": + args.append("-DNUMBER_OF_MECHANISMS=0") + else: + args.append(self.define_from_variant("NUMBER_OF_MECHANISMS", "number_of_mechanisms")) + + with_gpu = ( + self.spec.satisfies("+cuda") + or self.spec.satisfies("+rocm") + or self.spec.satisfies("+intel_gpu") + ) + + if with_gpu: + # Nvidia GPUs + if self.spec.satisfies("+cuda"): + cuda_arch = self.spec.variants["cuda_arch"].value[0] + args.append(f"-DDEVICE_ARCH=sm_{cuda_arch}") + args.append("-DUSE_GRAPH_CAPTURING=ON -DENABLE_PROFILING_MARKERS=ON") + if self.spec.satisfies("~sycl_gemm"): + args.append("-DDEVICE_BACKEND=cuda") + + # ROCm/AMD GPUs + if self.spec.satisfies("+rocm"): + amdgpu_target = self.spec.variants["amdgpu_target"].value[0] + args.append(f"-DDEVICE_ARCH={amdgpu_target}") + args.append("-DENABLE_PROFILING_MARKERS=ON") + + if self.spec.satisfies("+rocm@:5.6"): + args.append("-DUSE_GRAPH_CAPTURING=OFF") + else: + args.append("-DUSE_GRAPH_CAPTURING=ON") + + if self.spec.satisfies("~sycl_gemm"): + args.append("-DDEVICE_BACKEND=hip") + + # Intel GPUs + if self.spec.satisfies("+intel_gpu"): + assert self.spec.variants["intel_gpu_arch"].value != "none" + intel_gpu_arch = self.spec.variants["intel_gpu_arch"].value + if self.spec.satisfies("@:1.1.3"): + args.append("-DUSE_GRAPH_CAPTURING=OFF") + else: + args.append("-DUSE_GRAPH_CAPTURING=ON") + args.append(f"-DDEVICE_ARCH={intel_gpu_arch}") + + # SYCL + sycl_backends = {"acpp": "hipsycl", "oneapi": "oneapi"} + syclcc_backends = {"acpp": "hipsycl", "oneapi": "dpcpp"} + + sycl_backend = self.spec.variants["sycl_backend"].value + args.append(f"-DSYCLCC={syclcc_backends[sycl_backend]}") + if self.spec.satisfies("+sycl_gemm"): + args.append(f"-DDEVICE_BACKEND={sycl_backends[sycl_backend]}") + + # CPU arch + + # cf. https://spack.readthedocs.io/en/latest/basic_usage.html#support-for-specific-microarchitectures + + # basic family matching + hostarch = "noarch" + if str(self.spec.target) == "aarch64": + hostarch = "neon" + if str(self.spec.target) == "x86_64": + # pure x86_64v1 doesn't support anything above SSE3 + hostarch = "noarch" + if str(self.spec.target) == "x86_64_v2": + # AVX is only required for x86_64v3 and upwards + hostarch = "wsm" + if str(self.spec.target) == "x86_64_v3": + hostarch = "hsw" + if str(self.spec.target) == "x86_64_v4": + hostarch = "skx" + + # specific architecture matching + if self.spec.target >= "westmere": + hostarch = "wsm" + if self.spec.target >= "sandybridge": + hostarch = "snb" + if self.spec.target >= "haswell": + hostarch = "hsw" + if self.spec.target >= "mic_knl": + hostarch = "knl" + if self.spec.target >= "skylake_avx512": + hostarch = "skx" + if self.spec.target >= "zen": + hostarch = "naples" + if self.spec.target >= "zen2": + hostarch = "rome" + if self.spec.target >= "zen3": + hostarch = "milan" + if self.spec.target >= "zen4": + hostarch = "bergamo" + if self.spec.target >= "thunderx2": + hostarch = "thunderx2t99" + if self.spec.target >= "power9": + hostarch = "power9" + if self.spec.target >= "m1": + hostarch = "apple-m1" + if self.spec.target >= "m2": + hostarch = "apple-m2" + if self.spec.target >= "a64fx": + hostarch = "a64fx" + + args.append(f"-DHOST_ARCH={hostarch}") + + args.append(self.define("PYTHON_EXECUTABLE", self.spec["python"].command.path)) + + return args + + def setup_run_environment(self, env): + # for seissol-launch + env.prepend_path("PATH", self.prefix.share) diff --git a/var/spack/repos/builtin/packages/seqfu/package.py b/var/spack/repos/builtin/packages/seqfu/package.py index 53de9fd0a2528f..895d5386c2155c 100644 --- a/var/spack/repos/builtin/packages/seqfu/package.py +++ b/var/spack/repos/builtin/packages/seqfu/package.py @@ -13,7 +13,9 @@ class Seqfu(Package): url = "https://github.com/telatin/seqfu2/archive/refs/tags/v1.20.3.tar.gz" license("GPL-3.0", checked_by="dialvarezs") + maintainers("dialvarezs") + version("1.22.3", sha256="65c1090cafe0e760e68d15d450bccfd57c0a03d553fdabca26e2191f566fef62") version("1.20.3", sha256="1b287b99f3f1ac7045f4d551e781d6780ce168ba8e0a7bfaa0f5490f32e15938") depends_on("c", type="build") # generated @@ -22,7 +24,7 @@ class Seqfu(Package): depends_on("nim@2", type="build") depends_on("zlib", type="build") - patch("wno_incompatible_pointer_types.patch", when="%gcc@14:") + patch("wno_incompatible_pointer_types.patch", when="@:1.21%gcc@14:") def setup_build_environment(self, env): env.set("NIMBLE_DIR", ".nimble") diff --git a/var/spack/repos/builtin/packages/sgpp/package.py b/var/spack/repos/builtin/packages/sgpp/package.py index caae561d41b8a9..367547e8b932b4 100644 --- a/var/spack/repos/builtin/packages/sgpp/package.py +++ b/var/spack/repos/builtin/packages/sgpp/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * from spack.pkg.builtin.boost import Boost @@ -190,5 +191,4 @@ def install_args(self, spec, prefix): @run_after("install") def python_install(self): if "+python" in self.spec: - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/shengbte/package.py b/var/spack/repos/builtin/packages/shengbte/package.py index c56dac10cd14ea..2e67bfca1be3bd 100644 --- a/var/spack/repos/builtin/packages/shengbte/package.py +++ b/var/spack/repos/builtin/packages/shengbte/package.py @@ -9,8 +9,8 @@ class Shengbte(MakefilePackage): """ShengBTE is a software package for solving the Boltzmann Transport Equation for phonons.""" - homepage = "www.shengbte.org" - url = "www.shengbte.org/downloads/ShengBTE-v1.1.1-8a63749.tar.bz2" + homepage = "https://www.shengbte.org" + url = "https://www.shengbte.org/downloads/ShengBTE-v1.1.1-8a63749.tar.bz2" license("GPL-3.0-only") diff --git a/var/spack/repos/builtin/packages/sherpa/package.py b/var/spack/repos/builtin/packages/sherpa/package.py index f8d0ffa7933196..7d0010a7c2284a 100644 --- a/var/spack/repos/builtin/packages/sherpa/package.py +++ b/var/spack/repos/builtin/packages/sherpa/package.py @@ -22,6 +22,7 @@ class Sherpa(CMakePackage, AutotoolsPackage): license("GPL-3.0-only") + version("3.0.1", sha256="ff5f43e79a9a10919391242307a771eca0c57b0462c11bfb99ee4a0fe8c48c58") version("3.0.0", sha256="e460d8798b323c4ef663293a2c918b1463e9641b35703a54d70d25c852c67d36") version("2.2.15", sha256="0300fd719bf6a089b7dc5441f720e669ac1cb030045d87034a4733bee98e7bbc") version("2.2.14", sha256="f17d88d7f3bc4234a9db3872e8a3c1f3ef99e1e2dc881ada5ddf848715dc82da") diff --git a/var/spack/repos/builtin/packages/shuffile/package.py b/var/spack/repos/builtin/packages/shuffile/package.py index 116254b1faaab1..eab7201a424b0e 100644 --- a/var/spack/repos/builtin/packages/shuffile/package.py +++ b/var/spack/repos/builtin/packages/shuffile/package.py @@ -19,6 +19,7 @@ class Shuffile(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="fc7116d8eaa1ab79480e6e3f04064750e517d2a8aeccbff90c73a2590f726378") version("0.3.0", sha256="3463ad4a23fd31aa9a3426346ada04399fb9369dd1f40d22df9f19f9c0c1f8ae") version("0.2.0", sha256="467ffef72214c109b69f09d03e42be5e9254f13751b09c71168c14fa99117521") version("0.1.0", sha256="9e730cc8b7937517a9cffb08c031d9f5772306341c49d17b87b7f349d55a6d5e") diff --git a/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch b/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch index ae741450810e25..023f0bbe662a3e 100644 --- a/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch +++ b/var/spack/repos/builtin/packages/silo/H5EPR_SEMI_COLON.patch @@ -1,50 +1,38 @@ diff --git a/src/hdf5_drv/H5FDsilo.c b/src/hdf5_drv/H5FDsilo.c +index 840dfd0..0153e18 100644 --- a/src/hdf5_drv/H5FDsilo.c +++ b/src/hdf5_drv/H5FDsilo.c -@@ -243,6 +243,12 @@ - return tmp; - } - -+#if HDF5_VERSION_GE(1,10,8) -+#define H5EPR_SEMI_COLON ; -+#else -+#define H5EPR_SEMI_COLON -+#endif -+ - - #ifdef H5_HAVE_SNPRINTF - #define H5E_PUSH_HELPER(Func,Cls,Maj,Min,Msg,Ret,Errno) \ -@@ -252,13 +258,13 @@ +@@ -255,13 +255,13 @@ static const char *flavors(H5F_mem_t m) snprintf(msg, sizeof(msg), Msg "(errno=%d, \"%s\")", \ Errno, strerror(Errno)); \ ret_value = Ret; \ - H5Epush_ret(Func, Cls, Maj, Min, msg, Ret) \ -+ H5Epush_ret(Func, Cls, Maj, Min, msg, Ret) H5EPR_SEMI_COLON \ ++ H5Epush_ret(Func, Cls, Maj, Min, msg, Ret) ; \ } #else #define H5E_PUSH_HELPER(Func,Cls,Maj,Min,Msg,Ret,Errno) \ { \ ret_value = Ret; \ - H5Epush_ret(Func, Cls, Maj, Min, Msg, Ret) \ -+ H5Epush_ret(Func, Cls, Maj, Min, Msg, Ret) H5EPR_SEMI_COLON \ ++ H5Epush_ret(Func, Cls, Maj, Min, Msg, Ret) ; \ } #endif -@@ -1355,7 +1368,7 @@ +@@ -1308,7 +1308,7 @@ H5FD_silo_sb_encode(H5FD_t *_file, char *name/*out*/, assert(sizeof(hsize_t)<=8); memcpy(p, &file->block_size, sizeof(hsize_t)); if (H5Tconvert(H5T_NATIVE_HSIZE, H5T_STD_U64LE, 1, buf+8, NULL, H5P_DEFAULT)<0) - H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) -+ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) H5EPR_SEMI_COLON ++ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) ; return 0; } -@@ -1383,14 +1396,14 @@ +@@ -1336,14 +1336,14 @@ H5FD_silo_sb_decode(H5FD_t *_file, const char *name, const unsigned char *buf) /* Make sure the name/version number is correct */ if (strcmp(name, "LLNLsilo")) - H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_BADVALUE, "invalid silo superblock", -1) -+ H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_BADVALUE, "invalid silo superblock", -1) H5EPR_SEMI_COLON ++ H5Epush_ret(func, H5E_ERR_CLS, H5E_FILE, H5E_BADVALUE, "invalid silo superblock", -1) ; buf += 8; /* Decode block size */ @@ -52,7 +40,7 @@ diff --git a/src/hdf5_drv/H5FDsilo.c b/src/hdf5_drv/H5FDsilo.c memcpy(x, buf, 8); if (H5Tconvert(H5T_STD_U64LE, H5T_NATIVE_HSIZE, 1, x, NULL, H5P_DEFAULT)<0) - H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) -+ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) H5EPR_SEMI_COLON ++ H5Epush_ret(func, H5E_ERR_CLS, H5E_DATATYPE, H5E_CANTCONVERT, "can't convert superblock info", -1) ; ap = (hsize_t*)x; /*file->block_size = *ap; ignore stored value for now */ diff --git a/var/spack/repos/builtin/packages/silo/package.py b/var/spack/repos/builtin/packages/silo/package.py index 993c0c7ff8370c..3416a5c6108a23 100644 --- a/var/spack/repos/builtin/packages/silo/package.py +++ b/var/spack/repos/builtin/packages/silo/package.py @@ -142,12 +142,18 @@ def flag_handler(self, name, flags): # presented with an HDF5 API consistent with the HDF5 version. # Use the latest even-numbered API version, i.e. v1.13.1 uses # API v1.12 - maj_ver = int(spec["hdf5"].version[0]) - min_ver = int(spec["hdf5"].version[1]) + + # hdf5 support branches have a `develop` prefix + if "develop" in str(spec["hdf5"].version): + maj_ver = int(spec["hdf5"].version[1]) + min_ver = int(spec["hdf5"].version[2]) + else: + maj_ver = int(spec["hdf5"].version[0]) + min_ver = int(spec["hdf5"].version[1]) min_apiver = int(min_ver / 2) * 2 flags.append("-DH5_USE_{0}{1}_API".format(maj_ver, min_apiver)) - if spec.compiler.name in ["clang", "apple-clang"]: + if spec.satisfies("%clang") or spec.satisfies("%apple-clang"): flags.append("-Wno-implicit-function-declaration") return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/slate/package.py b/var/spack/repos/builtin/packages/slate/package.py index 9a89c50bcc0ecc..879c773603fe07 100644 --- a/var/spack/repos/builtin/packages/slate/package.py +++ b/var/spack/repos/builtin/packages/slate/package.py @@ -26,6 +26,9 @@ class Slate(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause") version("master", branch="master") + version( + "2024.10.29", sha256="e729fad51f44b1340c0f64ac0f862026121183a3c8d731874f0a11a3b5053223" + ) version( "2024.05.31", sha256="9c5d4d6779d8935b6fe41031b46e11ab92102f13c5f684022287c8616661b775" ) @@ -89,6 +92,7 @@ class Slate(CMakePackage, CudaPackage, ROCmPackage): for val in ROCmPackage.amdgpu_targets: depends_on("blaspp +rocm amdgpu_target=%s" % val, when="amdgpu_target=%s" % val) depends_on("lapackpp +rocm amdgpu_target=%s" % val, when="amdgpu_target=%s" % val) + depends_on("lapackpp@2024.10.26:", when="@2024.10.29:") depends_on("lapackpp@2024.05.31:", when="@2024.05.31:") depends_on("lapackpp@2023.11.05:", when="@2023.11.05:") depends_on("lapackpp@2023.08.25:", when="@2023.08.25:") @@ -123,6 +127,12 @@ class Slate(CMakePackage, CudaPackage, ROCmPackage): conflicts("+sycl", when="@:2022.07.00", msg="SYCL support requires SLATE version 2023.08.25") conflicts("^hip@5.6.0:", when="@:2023.08.25", msg="Incompatible version of HIP/ROCm") + def flag_handler(self, name, flags): + if name == "cxxflags": + if self.spec.satisfies("%oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") + return (flags, None, None) + def cmake_args(self): spec = self.spec backend_config = "-Duse_cuda=%s" % ("+cuda" in spec) diff --git a/var/spack/repos/builtin/packages/slepc/package.py b/var/spack/repos/builtin/packages/slepc/package.py index 92f7c93da8b2a9..019f676696b96a 100644 --- a/var/spack/repos/builtin/packages/slepc/package.py +++ b/var/spack/repos/builtin/packages/slepc/package.py @@ -22,6 +22,7 @@ class Slepc(Package, CudaPackage, ROCmPackage): test_requires_compiler = True version("main", branch="main") + version("3.22.1", sha256="badb5cb038d09dbf1cc8f34d194673ab011c69cc46888101955c786d21c8d8c9") version("3.22.0", sha256="45eb4d085875b50108c91fd9168ed17bc9158cc3b1e530ac843b26d9981c3db0") version("3.21.2", sha256="306fa649750509b3957b9f9311bff5dc1d20be5c5d494dd6472584c439b931f6") version("3.21.1", sha256="beb33f0a15c3ce81744b15ad09ddf84dae70dbf3475c5ef032b8549ab87d6d8a") diff --git a/var/spack/repos/builtin/packages/solr/package.py b/var/spack/repos/builtin/packages/solr/package.py index 0a14f666a3dc28..532b5dfc65ae66 100644 --- a/var/spack/repos/builtin/packages/solr/package.py +++ b/var/spack/repos/builtin/packages/solr/package.py @@ -12,23 +12,37 @@ class Solr(Package): recovery,centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites.""" - homepage = "https://lucene.apache.org/" - url = "https://archive.apache.org/dist/lucene/solr/7.7.3/solr-7.7.3.tgz" - list_url = "https://archive.apache.org/dist/lucene/solr" + homepage = "https://solr.apache.org/" + url = "https://archive.apache.org/dist/solr/solr/7.7.3/solr-7.7.3.tgz" + list_url = "https://archive.apache.org/dist/solr/solr" list_depth = 1 - depends_on("java", type="run") + license("Apache-2.0", checked_by="wdconinc") + + version("9.7.0", sha256="38548b86fa4e3c87883875952da124bf7d742cb8f7b25d37a1176833588e8552") + version("8.11.4", sha256="163fbdf246bbd78910bc36c3257ad50cdf31ccc3329a5ef885c23c9ef69e0ebe") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2024-45216 + version( + "8.11.3", sha256="178300ae095094c2060a1060cf475aa935f1202addfb5bacb38e8712ccb56455" + ) + version( + "8.11.2", sha256="54d6ebd392942f0798a60d50a910e26794b2c344ee97c2d9b50e678a7066d3a6" + ) + version("8.6.0", sha256="4519ccdb531619df770f1065db6adcedc052c7aa94b42806d541966550956aa5") + version("8.5.2", sha256="c457d6c7243241cad141e1df34c6f669d58a6c60e537f4217d032616dd066dcf") + version("8.5.1", sha256="47b68073b37bbcc0517a355ef722f20827c3f1416537ebbccf5239dda8064a0b") + version("8.5.0", sha256="9e54711ad0aa60e9723d2cdeb20cf0d21ee2ab9fa0048ec59dcb5f9d94dc61dd") + version("8.4.1", sha256="ec39e1e024b2e37405149de41e39e875a39bf11a53f506d07d96b47b8d2a4301") + version("7.7.3", sha256="3ec67fa430afa5b5eb43bb1cd4a659e56ee9f8541e0116d6080c0d783870baee") - license("CC-BY-2.5") + depends_on("java", type="run") - version("8.11.3", sha256="178300ae095094c2060a1060cf475aa935f1202addfb5bacb38e8712ccb56455") - version("8.11.2", sha256="54d6ebd392942f0798a60d50a910e26794b2c344ee97c2d9b50e678a7066d3a6") - version("8.6.0", sha256="4519ccdb531619df770f1065db6adcedc052c7aa94b42806d541966550956aa5") - version("8.5.2", sha256="c457d6c7243241cad141e1df34c6f669d58a6c60e537f4217d032616dd066dcf") - version("8.5.1", sha256="47b68073b37bbcc0517a355ef722f20827c3f1416537ebbccf5239dda8064a0b") - version("8.5.0", sha256="9e54711ad0aa60e9723d2cdeb20cf0d21ee2ab9fa0048ec59dcb5f9d94dc61dd") - version("8.4.1", sha256="ec39e1e024b2e37405149de41e39e875a39bf11a53f506d07d96b47b8d2a4301") - version("7.7.3", sha256="3ec67fa430afa5b5eb43bb1cd4a659e56ee9f8541e0116d6080c0d783870baee") + def url_for_version(self, version): + if self.spec.satisfies("@9:"): + return f"https://archive.apache.org/dist/solr/solr/{version}/solr-{version}.tgz" + else: + return f"https://archive.apache.org/dist/lucene/solr/{version}/solr-{version}.tgz" def install(self, spec, prefix): install_tree(".", prefix) diff --git a/var/spack/repos/builtin/packages/soqt/package.py b/var/spack/repos/builtin/packages/soqt/package.py new file mode 100644 index 00000000000000..bceeb5bc46dd9d --- /dev/null +++ b/var/spack/repos/builtin/packages/soqt/package.py @@ -0,0 +1,56 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Soqt(CMakePackage): + """Old Coin GUI binding for Qt, replaced by Quarter""" + + homepage = "https://github.com/coin3d/soqt/" + url = "https://github.com/coin3d/soqt/releases/download/v1.6.3/soqt-1.6.3-src.tar.gz" + git = "https://github.com/coin3d/soqt/" + + depends_on("cxx", type="build") + depends_on("cmake@3:", type="build") + + license("BSD-3-Clause", checked_by="paulgessinger") + + version("1.6.3", sha256="79342e89290783457c075fb6a60088aad4a48ea072ede06fdf01985075ef46bd") + version("1.6.2", sha256="fb483b20015ab827ba46eb090bd7be5bc2f3d0349c2f947c3089af2b7003869c") + version("1.6.1", sha256="80289d9bd49ffe709ab85778c952573f43f1c725ea958c6d5969b2e9c77bb3ba") + + depends_on("coin3d") + depends_on("opengl") + + variant( + "static_defaults", + default=True, + description="Enable statically linked in default materials", + ) + variant("spacenav", default=True, description="Enable Space Navigator support") + variant("tests", default=False, description="Build small test programs.") + variant("iv", default=True, description="Enable extra Open Inventor extensions") + + depends_on("qmake") + with when("^[virtuals=qmake] qt"): + depends_on("qt@5 +gui +opengl") + with when("^[virtuals=qmake] qt-base"): + depends_on("qt-base@6 +gui +opengl +widgets") + + def cmake_args(self): + args = [ + self.define_from_variant("COIN_IV_EXTENSIONS", "iv"), + self.define_from_variant("WITH_STATIC_DEFAULTS", "static_defaults"), + self.define_from_variant("HAVE_SPACENAV_SUPPORT", "spacenav"), + self.define_from_variant("SOQT_BUILD_TESTS", "tests"), + ] + if self.spec.satisfies("^[virtuals=qmake] qt"): + args.append(self.define("SOQT_USE_QT5", True)) + args.append(self.define("SOQT_USE_QT6", False)) + if self.spec.satisfies("^[virtuals=qmake] qt-base"): + args.append(self.define("SOQT_USE_QT5", False)) + args.append(self.define("SOQT_USE_QT6", True)) + return args diff --git a/var/spack/repos/builtin/packages/sourmash/package.py b/var/spack/repos/builtin/packages/sourmash/package.py index 102fc499ee5aaa..abcf9f60c37eaf 100644 --- a/var/spack/repos/builtin/packages/sourmash/package.py +++ b/var/spack/repos/builtin/packages/sourmash/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -35,8 +36,7 @@ def install(self, spec, prefix): cargo = Executable("cargo") cargo("build", "--release") # install python package - args = std_pip_args + ["--prefix=" + prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", ".") # move sourmash.so into expected place site_packages = join_path(python_platlib, "sourmash") lib_ext = "dylib" if spec.platform == "Darwin" else "so" diff --git a/var/spack/repos/builtin/packages/sox/package.py b/var/spack/repos/builtin/packages/sox/package.py index d830fb27d6c71c..f21c34222cc03d 100644 --- a/var/spack/repos/builtin/packages/sox/package.py +++ b/var/spack/repos/builtin/packages/sox/package.py @@ -14,7 +14,7 @@ class Sox(AutotoolsPackage): version("14.4.2", sha256="81a6956d4330e75b5827316e44ae381e6f1e8928003c6aa45896da9041ea149c") - depends_on("c", type="build") # generated + depends_on("c", type="build") variant("mp3", default=False, description="Build with mp3 support") @@ -24,3 +24,10 @@ class Sox(AutotoolsPackage): depends_on("opus") depends_on("lame", when="+mp3") depends_on("libmad", when="+mp3") + + def flag_handler(self, name, flags): + # https://github.com/Homebrew/homebrew-core/blob/master/Formula/s/sox.rb + if name == "cflags": + if self.spec.satisfies("%apple-clang@15:"): + flags.append("-Wno-incompatible-function-pointer-types") + return (flags, None, None) diff --git a/var/spack/repos/builtin/packages/spath/package.py b/var/spack/repos/builtin/packages/spath/package.py index 037dfff2bc6f1c..c25b74b58ec82c 100644 --- a/var/spack/repos/builtin/packages/spath/package.py +++ b/var/spack/repos/builtin/packages/spath/package.py @@ -19,6 +19,7 @@ class Spath(CMakePackage): license("MIT") version("main", branch="main") + version("0.4.0", sha256="469c9d36f9244826c6ec264a779eed870a772f467d6964030d336e509d3c9374") version("0.3.0", sha256="cb155a31cebde8b7bf397123de3be290fd99d3863509b4ba9b0252caba660082") version("0.2.0", sha256="2de8a25547b53ef064664d79b543141bc3020219f40ff0e1076f676e13a9e77a") version("0.1.0", sha256="2cfc635b2384d3f92973c7aea173dabe47da112d308f5098e6636e4b2f4a704c") diff --git a/var/spack/repos/builtin/packages/spectre/package.py b/var/spack/repos/builtin/packages/spectre/package.py index 40282f7d5a4308..3d56114c420044 100644 --- a/var/spack/repos/builtin/packages/spectre/package.py +++ b/var/spack/repos/builtin/packages/spectre/package.py @@ -31,6 +31,9 @@ class Spectre(CMakePackage): license("MIT") version("develop", branch="develop") + version( + "2024.03.19", sha256="42a25c8827b56268d9826239cde521491be19318d83785b35cd0265a9f6a1f7c" + ) version( "2024.09.29", sha256="b5e84b4564ad7cd2e069a24c6c472aab342753fe8393242eceba378b52226acb" ) diff --git a/var/spack/repos/builtin/packages/spglib/package.py b/var/spack/repos/builtin/packages/spglib/package.py index 7420d3ad75855e..b918fab2d0c073 100644 --- a/var/spack/repos/builtin/packages/spglib/package.py +++ b/var/spack/repos/builtin/packages/spglib/package.py @@ -20,6 +20,7 @@ class Spglib(CMakePackage): license("BSD-3-Clause") + version("2.5.0", sha256="b6026f5e85106c0c9ee57e54b9399890d0f29982e20e96ede0428b3efbe6b914") version("2.4.0", sha256="e33694b189c6864f719a59c31e2af55301a524fb68ba9fb65f08e95af471847d") version("2.3.1", sha256="c295dbea7d2fc9e50639aa14331fef277878c35f00ef0766e688bfbb7b17d44c") version("2.3.0", sha256="c05eb869018efe2efe5dcb2654cda19c5dd4c07434874205fa542f7766f7548e") diff --git a/var/spack/repos/builtin/packages/spiral-software/package.py b/var/spack/repos/builtin/packages/spiral-software/package.py index 9d7892fd22a0d2..7bcaa1a69f6837 100644 --- a/var/spack/repos/builtin/packages/spiral-software/package.py +++ b/var/spack/repos/builtin/packages/spiral-software/package.py @@ -73,6 +73,11 @@ def spiral_package_install(self, spec, prefix, pkg): src = join_path(pkg_prefix, "namespaces", "packages", pkg) install_tree(src, dest) + def flag_handler(self, name, flags): + if name == "cflags" and self.spec.satisfies("%oneapi"): + flags.append("-Wno-error=implicit-function-declaration") + return (flags, None, None) + def install(self, spec, prefix): with working_dir(self.stage.source_path): files = ("LICENSE", "README.md", "ReleaseNotes.md", "Contributing.md") diff --git a/var/spack/repos/builtin/packages/sst-core/package.py b/var/spack/repos/builtin/packages/sst-core/package.py index 7d0176c4524728..a9fa676e16b9ce 100644 --- a/var/spack/repos/builtin/packages/sst-core/package.py +++ b/var/spack/repos/builtin/packages/sst-core/package.py @@ -14,12 +14,14 @@ class SstCore(AutotoolsPackage): homepage = "https://github.com/sstsimulator" git = "https://github.com/sstsimulator/sst-core.git" - url = "https://github.com/sstsimulator/sst-core/releases/download/v13.1.0_Final/sstcore-13.1.0.tar.gz" + url = "https://github.com/sstsimulator/sst-core/releases/download/v14.1.0_Final/sstcore-14.1.0.tar.gz" maintainers("berquist", "naromero77") license("BSD-3-Clause") + version("14.1.0", sha256="9d17c37d1ebdff8d8eb10ab0084eb901c78a7c5a76db15189e3d7fc318fd6f9d") + version("14.0.0", sha256="fadc7ee99472ff3ac5d4b3f3e507123e32bd9fb89c4c6b48fbd2dca8aeb8b8d6") version("13.1.0", sha256="0a44c62ee0b18a20a3cb089f4e0d43e293dc5adc6c3fa7639d40986cf5b9854c") version("13.0.0", sha256="c9d868dcdd75d59bef7c73146709a3b2a52a78f0df5ec2c3dc9f21434c51d935") version("12.1.0", sha256="f7530226643439678e2f4183ec4dbadf7750411bdaa44d9443887f81feb97574") diff --git a/var/spack/repos/builtin/packages/sst-dumpi/package.py b/var/spack/repos/builtin/packages/sst-dumpi/package.py index fd4cee80038bfc..f796e33e3e6fd5 100644 --- a/var/spack/repos/builtin/packages/sst-dumpi/package.py +++ b/var/spack/repos/builtin/packages/sst-dumpi/package.py @@ -14,7 +14,7 @@ class SstDumpi(AutotoolsPackage): information, and PAPI counters. """ - homepage = "http://sst.sandia.gov/about_dumpi.html" + homepage = "https://github.com/sstsimulator/sst-dumpi" url = "https://github.com/sstsimulator/sst-dumpi/archive/refs/tags/v13.0.0_Final.tar.gz" git = "https://github.com/sstsimulator/sst-dumpi.git" diff --git a/var/spack/repos/builtin/packages/sst-elements/package.py b/var/spack/repos/builtin/packages/sst-elements/package.py index 1cbeca76aaf812..35eaa739f172d5 100644 --- a/var/spack/repos/builtin/packages/sst-elements/package.py +++ b/var/spack/repos/builtin/packages/sst-elements/package.py @@ -14,12 +14,14 @@ class SstElements(AutotoolsPackage): homepage = "https://github.com/sstsimulator" git = "https://github.com/sstsimulator/sst-elements.git" - url = "https://github.com/sstsimulator/sst-elements/releases/download/v13.1.0_Final/sstelements-13.1.0.tar.gz" + url = "https://github.com/sstsimulator/sst-elements/releases/download/v14.1.0_Final/sstelements-14.1.0.tar.gz" maintainers("berquist", "naromero77") license("BSD-3-Clause") + version("14.1.0", sha256="433994065810d3afee4e355173e781cd76171043cce8835bbc40887672a33350") + version("14.0.0", sha256="68eab77febdd0138a497249d854e1cb0c3a67b1c56c4d51f1fe35df12dcd1b9c") version("13.1.0", sha256="ebda6ee5af858192dff8a7faf3125010001d5c439beec22afe5b9828a74adf1a") version("13.0.0", sha256="1f6f6b403a8c1b22a27cdf2943c9e505825ee14866891e7bc944d4471b7b0321") version("12.1.0", sha256="77948cf8e1f8bf8d238d475cea111c9a72b307cbf403cb429ef0426d0cf708a4") diff --git a/var/spack/repos/builtin/packages/sst-macro/package.py b/var/spack/repos/builtin/packages/sst-macro/package.py index 1319fc4eafb84f..f5e57db7c00814 100644 --- a/var/spack/repos/builtin/packages/sst-macro/package.py +++ b/var/spack/repos/builtin/packages/sst-macro/package.py @@ -17,10 +17,12 @@ class SstMacro(AutotoolsPackage): homepage = "https://github.com/sstsimulator" git = "https://github.com/sstsimulator/sst-macro.git" - url = "https://github.com/sstsimulator/sst-macro/releases/download/v13.1.0_Final/sstmacro-13.1.0.tar.gz" + url = "https://github.com/sstsimulator/sst-macro/releases/download/v14.1.0_Final/sstmacro-14.1.0.tar.gz" maintainers("berquist") + version("14.1.0", sha256="241f42f5c460b0e7462592a7f412bda9c9de19ad7a4b62c22f35be4093b57014") + version("14.0.0", sha256="3962942268dd9fe6ebd4462e2d6d305ab757f3f510487e84687146a8d461be13") version("13.1.0", sha256="022e39daae1067b56c0011dbe87e3234fee4587049fd53671e1ed6b23233f70e") version("13.0.0", sha256="410dad4ac0c7a4c0e16c54da308b6c6b631112af18ae2c37585c8a14472987d4") version("12.1.0", sha256="ee57e08acfd4b6429a0500d981d468ee6ded2638ec5abec7b47f172388b267f1") diff --git a/var/spack/repos/builtin/packages/strumpack/package.py b/var/spack/repos/builtin/packages/strumpack/package.py index cb1428dcff8a0b..fc600ac42e634b 100644 --- a/var/spack/repos/builtin/packages/strumpack/package.py +++ b/var/spack/repos/builtin/packages/strumpack/package.py @@ -36,6 +36,7 @@ class Strumpack(CMakePackage, CudaPackage, ROCmPackage): license("BSD-3-Clause-LBNL") version("master", branch="master") + version("8.0.0", sha256="11cc8645d622a16510b39a20efc64f34862b41976152d17f9fbf3e91f899766c") version("7.2.0", sha256="6988c00c3213f13e53d75fb474102358f4fecf07a4b4304b7123d86fdc784639") version("7.1.3", sha256="c951f38ee7af20da3ff46429e38fcebd57fb6f12619b2c56040d6da5096abcb0") version("7.1.2", sha256="262a0193fa1682d0eaa90363f739e0be7a778d5deeb80e4d4ae12446082a39cc") @@ -86,9 +87,11 @@ class Strumpack(CMakePackage, CudaPackage, ROCmPackage): depends_on("parmetis", when="+parmetis") depends_on("scotch~metis", when="+scotch") depends_on("scotch~metis+mpi", when="+scotch+mpi") + depends_on("scotch@7.0.4:", when="@8.0.0: +scotch") depends_on("butterflypack@1.1.0", when="@3.3.0:3.9 +butterflypack+mpi") depends_on("butterflypack@1.2.0:", when="@4.0.0: +butterflypack+mpi") depends_on("butterflypack@2.1.0:", when="@6.3.0: +butterflypack+mpi") + depends_on("butterflypack@3.2.0:", when="@8.0.0: +butterflypack+mpi") depends_on("cuda", when="@4.0.0: +cuda") depends_on("zfp@0.5.5", when="@:7.0.1 +zfp") depends_on("zfp", when="@7.0.2: +zfp") diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index 8b72df6f2dbeb3..a6c8fbaed82b91 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -249,6 +249,7 @@ def install(self, spec, prefix): # Mongoose directory finds libsuitesparseconfig.so in system # directories like /usr/lib. cmake_args = [ + "-DCMAKE_INSTALL_RPATH_USE_LINK_PATH=ON", f"-DCMAKE_INSTALL_PREFIX={prefix}", f"-DCMAKE_LIBRARY_PATH={prefix.lib}", f"-DBLAS_ROOT={spec['blas'].prefix}", diff --git a/var/spack/repos/builtin/packages/superlu-dist/package.py b/var/spack/repos/builtin/packages/superlu-dist/package.py index 1440da388a4b66..0e3844bcc3a9f5 100644 --- a/var/spack/repos/builtin/packages/superlu-dist/package.py +++ b/var/spack/repos/builtin/packages/superlu-dist/package.py @@ -16,10 +16,12 @@ class SuperluDist(CMakePackage, CudaPackage, ROCmPackage): tags = ["e4s"] - maintainers("xiaoye", "gchavez2", "balay", "pghysels", "liuyangzhuan") + maintainers("xiaoyeli", "gchavez2", "balay", "pghysels", "liuyangzhuan") version("develop", branch="master") version("amd", branch="amd") + version("9.1.0", sha256="1cb2c6dc7e8231b2ec30c1266e55e440ffca9f55527771d8df28f900dd179f9d") + version("9.0.0", sha256="aa43d33d4b1b0f5f7b5ad7685e9a6bc25088832c6c74d2ab8f75a2c9f4e9e955") version("8.2.1", sha256="b77d065cafa6bc1a1dcc15bf23fd854f54b05762b165badcffc195835ad2bddf") version("8.2.0", sha256="d53573e5a399b2b4ab1fcc36e8421c1b6fab36345c0af14f8fa20326e3365f1f") version("8.1.2", sha256="7b16c442bb01ea8b298c0aab9a2584aa4615d09786aac968cb2f3118c058206b") diff --git a/var/spack/repos/builtin/packages/supermagic/package.py b/var/spack/repos/builtin/packages/supermagic/package.py new file mode 100644 index 00000000000000..23baff3c02b579 --- /dev/null +++ b/var/spack/repos/builtin/packages/supermagic/package.py @@ -0,0 +1,34 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Supermagic(AutotoolsPackage): + """Supermagic is a very simple MPI sanity code. Nothing more, nothing less.""" + + homepage = "https://hpc.github.io/supermagic" + url = "https://hpc.github.io/supermagic/dists/supermagic-1.2.tar.gz" + git = "https://github.com/hpc/supermagic.git" + + maintainers("marcodelapierre") + + version("master", branch="master") + version("1.2", sha256="f8f6e0f74a58400d8d3c6b95c4b943aa8608e15a318fcfe12fc9abb008aed734") + + depends_on("mpi") + + depends_on("autoconf", when="@master", type="build") + depends_on("automake", when="@master", type="build") + depends_on("libtool", when="@master", type="build") + + @when("@master") + def autoreconf(self, spec, prefix): + bash = which("bash") + bash("./autogen") + + def configure_args(self): + config_args = ["CC={0}".format(self.spec["mpi"].mpicc)] + return config_args diff --git a/var/spack/repos/builtin/packages/sw4/package.py b/var/spack/repos/builtin/packages/sw4/package.py index a4e250f9af61f2..32515f119966be 100644 --- a/var/spack/repos/builtin/packages/sw4/package.py +++ b/var/spack/repos/builtin/packages/sw4/package.py @@ -63,7 +63,7 @@ def edit(self, spec, prefix): os.environ["EXTRA_LINK_FLAGS"] += spec["llvm-openmp"].libs.ld_flags + " " # From spack/trilinos - if spec.compiler.name in ["clang", "apple-clang", "gcc"]: + if spec.satisfies("%gcc") or spec.satisfies("%clang") or spec.satisfies("%apple-clang"): fc = Executable(self.compiler.fc) libgfortran = fc("--print-file-name", "libgfortran." + dso_suffix, output=str).strip() if libgfortran == "libgfortran." + dso_suffix: diff --git a/var/spack/repos/builtin/packages/sz/package.py b/var/spack/repos/builtin/packages/sz/package.py index b73cad5aa2397c..092768669e9315 100644 --- a/var/spack/repos/builtin/packages/sz/package.py +++ b/var/spack/repos/builtin/packages/sz/package.py @@ -87,6 +87,9 @@ class Sz(CMakePackage, AutotoolsPackage): patch("ctags-only-if-requested.patch", when="@2.1.8.1:2.1.8.3") + # Windows requires numerous commits that only exist on master at the moment + conflicts("platform=windows", when="@:2.1.12.5") + def flag_handler(self, name, flags): if name == "cflags": if self.spec.satisfies("%oneapi"): diff --git a/var/spack/repos/builtin/packages/tamaas/package.py b/var/spack/repos/builtin/packages/tamaas/package.py index 57ce90a4717181..8e742a2a99171a 100644 --- a/var/spack/repos/builtin/packages/tamaas/package.py +++ b/var/spack/repos/builtin/packages/tamaas/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -101,5 +102,4 @@ def install(self, spec, prefix): scons("install-lib", *args) if spec.satisfies("+python"): - args = ["-m", "pip"] + std_pip_args + ["--prefix=" + prefix, "build-release/python"] - python(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={prefix}", "build-release/python") diff --git a/var/spack/repos/builtin/packages/tasmanian/package.py b/var/spack/repos/builtin/packages/tasmanian/package.py index c858c6713e436e..2d3ebc5fbc972d 100644 --- a/var/spack/repos/builtin/packages/tasmanian/package.py +++ b/var/spack/repos/builtin/packages/tasmanian/package.py @@ -12,7 +12,7 @@ class Tasmanian(CMakePackage, CudaPackage, ROCmPackage): interpolation as well as parameter calibration.""" homepage = "https://ornl.github.io/TASMANIAN/stable/" - url = "https://github.com/ORNL/TASMANIAN/archive/v8.0.tar.gz" + url = "https://github.com/ORNL/TASMANIAN/archive/v8.1.tar.gz" git = "https://github.com/ORNL/TASMANIAN.git" tags = ["e4s"] @@ -22,15 +22,15 @@ class Tasmanian(CMakePackage, CudaPackage, ROCmPackage): version("develop", branch="master") + version("8.1", sha256="e870d26ebe9e5038a8bb75710e47a66f3040c5ad34d03c2fc993b984240d247b") version("8.0", sha256="248c941346150bf6cfb386ba86b69bd4697f4fc93bff0e8d5f57e555614fd534") version("7.9", sha256="decba62e6bbccf1bc26c6e773a8d4fd51d7f3e3e534ddd386ec41300694ce5cc") version("7.7", sha256="85fb3a7b302ea21a3b700712767a59a623d9ab93da03308fa47d4413654c3878") - version("7.5", sha256="d621bd36dced4db86ef638693ba89b336762e7a3d7fedb3b5bcefb03390712b3") - # Tasmanian is backwards compatible, no need to use 7.3 from back in 2020 + # when adding a new version, deprecate an old one, this gives us 3 - 4 years of support version( - "7.3", - sha256="5bd1dd89cc5c84506f6900b6569b17e50becd73eb31ec85cfa11d6f1f912c4fa", + "7.5", + sha256="d621bd36dced4db86ef638693ba89b336762e7a3d7fedb3b5bcefb03390712b3", deprecated=True, ) diff --git a/var/spack/repos/builtin/packages/tau/package.py b/var/spack/repos/builtin/packages/tau/package.py index 94d939c03fd6f5..9081b5965ad6fd 100644 --- a/var/spack/repos/builtin/packages/tau/package.py +++ b/var/spack/repos/builtin/packages/tau/package.py @@ -28,6 +28,7 @@ class Tau(Package): license("MIT") version("master", branch="master") + version("2.34", sha256="229ab425e0532e635a0be76d60b8aa613adf7596d15a9ced0b87e7f243bb2132") version("2.33.2", sha256="8ee81fe75507612379f70033183bed2a90e1245554b2a78196b6c5145da44f27") version("2.33.1", sha256="13cc5138e110932f34f02ddf548db91d8219ccb7ff9a84187f0790e40a502403") version("2.33", sha256="04d9d67adb495bc1ea56561f33c5ce5ba44f51cc7f64996f65bd446fac5483d9") @@ -427,8 +428,14 @@ def install(self, spec, prefix): # Link arch-specific directories into prefix since there is # only one arch per prefix the way spack installs. self.link_tau_arch_dirs() - # TAU may capture Spack's internal compiler wrapper. Replace - # it with the correct compiler. + # TAU may capture Spack's internal compiler wrapper. Fixed + # by filter_compiler_wrappers. Switch back the environment + # variables the filter uses. + if "+mpi" in spec: + env["CC"] = spack_cc + env["CXX"] = spack_cxx + env["FC"] = spack_fc + env["F77"] = spack_f77 def link_tau_arch_dirs(self): for subdir in os.listdir(self.prefix): diff --git a/var/spack/repos/builtin/packages/tcsh/package.py b/var/spack/repos/builtin/packages/tcsh/package.py index 2b8a1d9a6c8de4..24215b5d9ff204 100644 --- a/var/spack/repos/builtin/packages/tcsh/package.py +++ b/var/spack/repos/builtin/packages/tcsh/package.py @@ -108,6 +108,7 @@ class Tcsh(AutotoolsPackage): ) depends_on("ncurses+termlib") + depends_on("libxcrypt", when="platform=linux") @run_after("install") def link_csh(self): diff --git a/var/spack/repos/builtin/packages/thrift/package.py b/var/spack/repos/builtin/packages/thrift/package.py index 14631e80bfa387..764b57b370dd77 100644 --- a/var/spack/repos/builtin/packages/thrift/package.py +++ b/var/spack/repos/builtin/packages/thrift/package.py @@ -65,6 +65,7 @@ class Thrift(Package): depends_on("ant", when="+java") extends("python", when="+python") + depends_on("python@:3.11.9", when="+python") depends_on("py-setuptools", type=("build", "run"), when="+python") depends_on("py-six@1.7.2:", type=("build", "run"), when="@0.10.0:+python") depends_on("py-tornado", type=("build", "run"), when="+python") diff --git a/var/spack/repos/builtin/packages/tioga/package.py b/var/spack/repos/builtin/packages/tioga/package.py index 79684d2cbcb66a..62e3234ab11d9f 100644 --- a/var/spack/repos/builtin/packages/tioga/package.py +++ b/var/spack/repos/builtin/packages/tioga/package.py @@ -17,15 +17,15 @@ class Tioga(CMakePackage): license("LGPL-3.0-only") - # The original TIOGA repo has possibly been abandoned, + # The original TIOGA repo has been abandoned, # so work on TIOGA has continued in the Exawind project version("develop", git="https://github.com/Exawind/tioga.git", branch="exawind") + version("1.2.0", git="https://github.com/Exawind/tioga.git", tag="v1.2.0") version("1.1.0", git="https://github.com/Exawind/tioga.git", tag="v1.1.0") version("1.0.0", git="https://github.com/Exawind/tioga.git", tag="v1.0.0") version("master", branch="master") - depends_on("cxx", type="build") # generated - depends_on("fortran", type="build") # generated + depends_on("cxx", type="build") variant("shared", default=sys.platform != "darwin", description="Build shared libraries") variant("pic", default=True, description="Position independent code") diff --git a/var/spack/repos/builtin/packages/totalview/package.py b/var/spack/repos/builtin/packages/totalview/package.py index fa209ce916be34..6f44e97085da26 100644 --- a/var/spack/repos/builtin/packages/totalview/package.py +++ b/var/spack/repos/builtin/packages/totalview/package.py @@ -23,6 +23,24 @@ class Totalview(Package): # will be the documentation. The architecture-specific tarballs are added # as resources dependent on the specific architecture used. + version( + "2024.3-x86-64", + sha256="fb47c5a5abc6ad0e3e7cff1a346037387fa471c3a5cb46b6cdbe7f8a10aff2a7", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.3/totalview_2024.3.10_linux_x86-64.tar", + ) + + version( + "2024.3-powerle", + sha256="a064d3c9b12108ec228e2ff203549442172e282682786ff20d02ea9bf40109b2", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.3/totalview_2024.3.10_linux_powerle.tar", + ) + + version( + "2024.3-linux-arm64", + sha256="91701e3460cad8bba8810c5ece4720f0156ccba7526d407801a7d0b0e09fb054", + url="https://dslwuu69twiif.cloudfront.net/totalview/2024.3/totalview_2024.3.10_linux_arm64.tar", + ) + version( "2024.2-x86-64", sha256="b6d9cfd804ff1f6641fbd92f9730b34f62062ead9b1324eaf44f34ea78c69ef1", diff --git a/var/spack/repos/builtin/packages/treelite/package.py b/var/spack/repos/builtin/packages/treelite/package.py index a7bf2c853fb799..d1ca6ccec376ef 100644 --- a/var/spack/repos/builtin/packages/treelite/package.py +++ b/var/spack/repos/builtin/packages/treelite/package.py @@ -3,6 +3,7 @@ # # SPDX-License-Identifier: (Apache-2.0 OR MIT) +from spack.build_systems.python import PythonPipBuilder from spack.package import * @@ -50,5 +51,4 @@ def cmake_args(self): def python_install(self): if "+python" in self.spec: with working_dir("python"): - args = std_pip_args + ["--prefix=" + self.prefix, "."] - pip(*args) + pip(*PythonPipBuilder.std_args(self), f"--prefix={self.prefix}", ".") diff --git a/var/spack/repos/builtin/packages/treesub/package.py b/var/spack/repos/builtin/packages/treesub/package.py index ac5e699057bf0b..c82ffcc120a376 100644 --- a/var/spack/repos/builtin/packages/treesub/package.py +++ b/var/spack/repos/builtin/packages/treesub/package.py @@ -15,7 +15,7 @@ class Treesub(Package): occurred on a given branch. Originally written for colleagues at the MRC NIMR.""" - homepage = "https:/github.com/tamuri/treesub" + homepage = "https://github.com/tamuri/treesub" url = "https://github.com/tamuri/treesub/archive/v0.2.tar.gz" version("0.2", sha256="58b0d2638cf9ae1ad8705df26a57c32b52a69f50e7954debbd678c82772fdc56") diff --git a/var/spack/repos/builtin/packages/trilinos/package.py b/var/spack/repos/builtin/packages/trilinos/package.py index b186834b8af17d..0669adff63415a 100644 --- a/var/spack/repos/builtin/packages/trilinos/package.py +++ b/var/spack/repos/builtin/packages/trilinos/package.py @@ -553,7 +553,11 @@ def flag_handler(self, name, flags): flags.append("-Wl,-undefined,dynamic_lookup") # Fortran lib (assumes clang is built with gfortran!) - if "+fortran" in spec and spec.compiler.name in ["gcc", "clang", "apple-clang"]: + if spec.satisfies("+fortran") and ( + spec.satisfies("%gcc") + or spec.satisfies("%clang") + or spec.satisfies("%apple-clang") + ): fc = Executable(self.compiler.fc) libgfortran = fc( "--print-file-name", "libgfortran." + dso_suffix, output=str diff --git a/var/spack/repos/builtin/packages/typst/package.py b/var/spack/repos/builtin/packages/typst/package.py new file mode 100644 index 00000000000000..b495b89482c258 --- /dev/null +++ b/var/spack/repos/builtin/packages/typst/package.py @@ -0,0 +1,37 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +import re + +from spack.package import * + + +class Typst(CargoPackage): + """Typst is a new markup-based typesetting system for the sciences.""" + + homepage = "https://typst.app" + git = "https://github.com/typst/typst" + executables = ["^typst$"] + + maintainers("upsj") + + license("Apache-2.0", checked_by="upsj") + + version("0.12.0", commit="737895d769188f6fc154523e67a9102bc24c872e", tag="v0.12.0") + + depends_on("rust@1.81.0:") + depends_on("openssl") + depends_on("pkgconf", type="build") + + @classmethod + def determine_version(cls, exe): + output = Executable(exe)("--version", output=str, error=str) + match = re.search(r"typst ([0-9.]+)", output) + return match.group(1) if match else None + + def build(self, spec, prefix): + # The cargopackage installer doesn't allow for an option to install from a subdir + # see: https://github.com/rust-lang/cargo/issues/7599 + cargo("install", "--root", "out", "--path", "crates/typst-cli") diff --git a/var/spack/repos/builtin/packages/unrar/package.py b/var/spack/repos/builtin/packages/unrar/package.py index 22c77232adac88..1c73ebd572c588 100644 --- a/var/spack/repos/builtin/packages/unrar/package.py +++ b/var/spack/repos/builtin/packages/unrar/package.py @@ -13,9 +13,12 @@ class Unrar(MakefilePackage): homepage = "https://www.rarlab.com" url = "https://www.rarlab.com/rar/unrarsrc-5.9.4.tar.gz" - version("5.9.4", sha256="3d010d14223e0c7a385ed740e8f046edcbe885e5c22c5ad5733d009596865300") - version("5.8.2", sha256="33386623fd3fb153b56292df4a6a69b457e69e1803b6d07b614e5fd22fb33dda") - version("5.8.1", sha256="035f1f436f0dc2aea09aec146b9cc3e47ca2442f2c62b4ad9374c7c9cc20e632") + version("7.0.9", sha256="505c13f9e4c54c01546f2e29b2fcc2d7fabc856a060b81e5cdfe6012a9198326") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-48579 + version("5.9.4", sha256="3d010d14223e0c7a385ed740e8f046edcbe885e5c22c5ad5733d009596865300") + version("5.8.2", sha256="33386623fd3fb153b56292df4a6a69b457e69e1803b6d07b614e5fd22fb33dda") + version("5.8.1", sha256="035f1f436f0dc2aea09aec146b9cc3e47ca2442f2c62b4ad9374c7c9cc20e632") depends_on("cxx", type="build") # generated diff --git a/var/spack/repos/builtin/packages/unzip/package.py b/var/spack/repos/builtin/packages/unzip/package.py index 8616b3630d0ced..f04dee4f8cdc48 100644 --- a/var/spack/repos/builtin/packages/unzip/package.py +++ b/var/spack/repos/builtin/packages/unzip/package.py @@ -28,8 +28,9 @@ def get_make_args(self): make_args = ["-f", join_path("unix", "Makefile")] cflags = [] - cflags.append("-Wno-error=implicit-function-declaration") - cflags.append("-Wno-error=implicit-int") + if not self.spec.satisfies("%nvhpc"): + cflags.append("-Wno-error=implicit-function-declaration") + cflags.append("-Wno-error=implicit-int") cflags.append("-DLARGE_FILE_SUPPORT") make_args.append(f"LOC={' '.join(cflags)}") diff --git a/var/spack/repos/builtin/packages/ut/package.py b/var/spack/repos/builtin/packages/ut/package.py index fc4add539ccfc8..2cdd96dc99eca6 100644 --- a/var/spack/repos/builtin/packages/ut/package.py +++ b/var/spack/repos/builtin/packages/ut/package.py @@ -18,6 +18,8 @@ class Ut(CMakePackage): license("BSL-1.0") version("master", branch="master") + version("2.1.1", sha256="016ac5ece1808cd1100be72f90da4fa59ea41de487587a3283c6c981381cc216") + version("2.1.0", sha256="1c9c35c039ad3a9795a278447db6da0a4ec1a1d223bf7d64687ad28f673b7ae8") version("2.0.1", sha256="1e43be17045a881c95cedc843d72fe9c1e53239b02ed179c1e39e041ebcd7dad") version("2.0.0", sha256="8b5b11197d1308dfc1fe20efd6a656e0c833dbec2807e2292967f6e2f7c0420f") version("1.1.9", sha256="1a666513157905aa0e53a13fac602b5673dcafb04a869100a85cd3f000c2ed0d") diff --git a/var/spack/repos/builtin/packages/varnish-cache/package.py b/var/spack/repos/builtin/packages/varnish-cache/package.py index 2950922511ee9c..b6ffd4e571142e 100644 --- a/var/spack/repos/builtin/packages/varnish-cache/package.py +++ b/var/spack/repos/builtin/packages/varnish-cache/package.py @@ -10,15 +10,18 @@ class VarnishCache(AutotoolsPackage): """This is Varnish Cache, the high-performance HTTP accelerator.""" homepage = "https://www.varnish-cache.org/" - url = "https://github.com/varnishcache/varnish-cache/archive/varnish-6.4.0.tar.gz" + url = "https://github.com/varnishcache/varnish-cache/archive/refs/tags/varnish-6.4.0.tar.gz" license("BSD-2-Clause") - version("6.4.0", sha256="d9702c2c689c5d4ecd911886f769ddf22f46ac0722e275bee4033928cab09243") - version("6.3.2", sha256="e50f3dd4e26d5669c5b73657cdb0d5ddac7dcc3cfa1761a983afa24b659f3785") - version("6.3.1", sha256="8cc57360c1db36e8c77fc51304a935803a06247f6d6120fa47e8345efadf17a9") - version("6.3.0", sha256="c7170d4bc57f1d2454da046fc5e43e2d19a804448d2dd839fa5c33f76bd677bb") - version("6.2.3", sha256="64cd273aa155c78c21e74def53622be5920c8a7d952fee74f0663e57a01c9a9d") + version("7.6.1", sha256="6cfa30d761fa5edf33322048564cda3ee99de93ee57732c10f720d98d12f1899") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2022-23959 + version("6.4.0", sha256="d9702c2c689c5d4ecd911886f769ddf22f46ac0722e275bee4033928cab09243") + version("6.3.2", sha256="e50f3dd4e26d5669c5b73657cdb0d5ddac7dcc3cfa1761a983afa24b659f3785") + version("6.3.1", sha256="8cc57360c1db36e8c77fc51304a935803a06247f6d6120fa47e8345efadf17a9") + version("6.3.0", sha256="c7170d4bc57f1d2454da046fc5e43e2d19a804448d2dd839fa5c33f76bd677bb") + version("6.2.3", sha256="64cd273aa155c78c21e74def53622be5920c8a7d952fee74f0663e57a01c9a9d") depends_on("c", type="build") # generated @@ -26,7 +29,9 @@ class VarnishCache(AutotoolsPackage): depends_on("automake", type="build") depends_on("libtool", type="build") depends_on("m4", type="build") - depends_on("pcre") + depends_on("pkgconfig", type="build") + depends_on("pcre2", when="@7:") + depends_on("pcre", when="@:6") depends_on("readline") depends_on("python", type=("build", "run")) depends_on("py-sphinx", type=("build", "run")) diff --git a/var/spack/repos/builtin/packages/vbfnlo/package.py b/var/spack/repos/builtin/packages/vbfnlo/package.py index 77648aef6148a0..42abc3245cfcd4 100644 --- a/var/spack/repos/builtin/packages/vbfnlo/package.py +++ b/var/spack/repos/builtin/packages/vbfnlo/package.py @@ -20,6 +20,7 @@ class Vbfnlo(AutotoolsPackage): license("GPL-2.0-only") # The commented out versions exist, but are not tested + version("3.0", sha256="b9df02603e4f801f866360c720191a29afdb958d0bd4369ea7d810e761503e51") version( "3.0.0beta5", sha256="777a3dedb365ea9abc38848a60f30d325da3799cbad69fa308664b94a8c31a90" ) @@ -41,7 +42,6 @@ class Vbfnlo(AutotoolsPackage): depends_on("cxx", type="build") # generated depends_on("fortran", type="build") # generated - # version('2.7.0', sha256='0e96c0912599e3000fffec5305700b947b604a7b06c7975851503f445311e4ef') # Documentation is broken on some systems: # See https://github.com/vbfnlo/vbfnlo/issues/2 @@ -55,6 +55,8 @@ class Vbfnlo(AutotoolsPackage): depends_on("autoconf", type="build") depends_on("m4", type="build") depends_on("libtool", type="build") + # needed as tcsh is hardcoded in m4/vbfnlo.m4, could be patched out in the future + depends_on("tcsh", type="build") @when("@2.7.1") def setup_build_environment(self, env): diff --git a/var/spack/repos/builtin/packages/vecgeom/package.py b/var/spack/repos/builtin/packages/vecgeom/package.py index 34695cf6b431f1..ff0fdd145dc7da 100644 --- a/var/spack/repos/builtin/packages/vecgeom/package.py +++ b/var/spack/repos/builtin/packages/vecgeom/package.py @@ -5,7 +5,7 @@ from spack.package import * -from spack.variant import _ConditionalVariantValues +from spack.variant import ConditionalVariantValues class Vecgeom(CMakePackage, CudaPackage): @@ -21,6 +21,11 @@ class Vecgeom(CMakePackage, CudaPackage): maintainers("drbenmorgan", "sethrj") version("master", branch="master") + version( + "1.2.9", + url="https://gitlab.cern.ch/-/project/981/uploads/55a89cafbf48a418bec68be42867d4bf/VecGeom-v1.2.9.tar.gz", + sha256="93ee9ce6f7b2d704e9b9db22fad68f81b8eaf17453452969fc47e93dba4bfaf4", + ) version( "1.2.8", url="https://gitlab.cern.ch/VecGeom/VecGeom/uploads/db11697eb81d6f369e9ded1078de946b/VecGeom-v1.2.8.tar.gz", @@ -191,7 +196,7 @@ class Vecgeom(CMakePackage, CudaPackage): def std_when(values): for v in values: - if isinstance(v, _ConditionalVariantValues): + if isinstance(v, ConditionalVariantValues): for c in v: yield (c.value, c.when) else: diff --git a/var/spack/repos/builtin/packages/vecmem/package.py b/var/spack/repos/builtin/packages/vecmem/package.py index 3372b8e2692410..c647e396759059 100644 --- a/var/spack/repos/builtin/packages/vecmem/package.py +++ b/var/spack/repos/builtin/packages/vecmem/package.py @@ -17,6 +17,7 @@ class Vecmem(CMakePackage, CudaPackage): license("MPL-2.0-no-copyleft-exception") + version("1.11.0", sha256="8f4ef9b50da45ea245291e2a4fef86025245150df4a4654ecb708a20adec5c42") version("1.10.0", sha256="1fbdc599a65ad7b2cd1176844c7578da38911bc747fbe51a71e00d20e6105330") version("1.9.0", sha256="c1ddc43ff0d742306cbee71afd80efd348b6b0b1ba9e4210ca7f8b607f03bd70") version("1.8.0", sha256="d04f1bfcd08837f85c794a69da9f248e163985214a302c22381037feb5b3a7a9") diff --git a/var/spack/repos/builtin/packages/vep-cache/package.py b/var/spack/repos/builtin/packages/vep-cache/package.py new file mode 100644 index 00000000000000..6e84426a52a12e --- /dev/null +++ b/var/spack/repos/builtin/packages/vep-cache/package.py @@ -0,0 +1,151 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class VepCache(Package): + """Separate installation and management for the Ensembl Variant Effect Predictor (vep)""" + + homepage = "https://useast.ensembl.org/info/docs/tools/vep/index.html" + maintainers("teaguesterling") + # This is a dummy value to get spack to resolve resources, which are not downloaded + # when has_code = False + has_code = False + + license("Apache-2.0", checked_by="teaguesterling") + + vep_versions = ["112", "111", "110"] + depends_on("vep", type="build") + for major in vep_versions: + version(major) + depends_on(f"vep@{major}", type="build", when=f"@{major}+match_vep_version") + + vep_assembly_sources = ["ensembl", "refseq", "merged"] + + # This is an incomplete list + vep_species = { + "bos_taurus": ["UMD3.1"], + "danio_rerio": ["GRCz11"], + "homo_sapiens": ["GRCh38", "GRCh37"], + "mus_musculus": ["GRCm38"], + "rattus_norvegicus": ["Rnor_6.0"], + } + + variant("match_vep_version", default=True, description="Match cache and software version") + variant("env", default=True, description="Setup VEP environment variables for this cache") + + # Cache configuration options + variant("fasta", default=True, description="Add FASTA files to the cache") + variant("indexed", default=True, description="Use indexed cache") + + variant( + "assembly_source", + values=vep_assembly_sources, + default="ensembl", + description="What reference genome source", + ) + variant( + "species", + values=vep_species.keys(), + default="homo_sapiens", + description="Which species to download the cache for (only one at a time)", + ) + variant( + "assembly", + values=["latest"] + + [ + conditional(*assemblies, when=f"species={species}") + for species, assemblies in vep_species.items() + ], + default="latest", + multi=False, + description="Which assembly of genome to use (only needed for homo sapiens)", + ) + + def cache_from_spec(self, spec): + variants = spec.variants + indexed = spec.satisfies("+indexed") + cache_type = variants["assembly_source"].value + species = variants["species"].value + assembly = variants["assembly"].value + assembly = self.vep_species[species][0] if assembly == "latest" else assembly + return indexed, cache_type, species, assembly + + def vep_cache_config(self, base): + spec = self.spec + cache_version = spec.version.up_to(1) + indexed, cache_type, species, assembly = self.cache_from_spec(spec) + user_root = join_path(base, "share", "vep") + root = user_root # Should this be VEP install dir? + + suffix = "" if cache_type == "ensembl" else f"_{cache_type}" + species_cache = f"{species}{suffix}" + + if species == "homo_sapiens": + cache_dir = join_path(species, f"{cache_version}_{assembly}") + else: + cache_dir = join_path(species, f"{cache_version}") + + return { + "root": root, + "user_root": user_root, + "version": f"{cache_version}", + "type": f"{cache_type}", + "species": species, + "cache_species": species_cache, + "assembly": f"{assembly}", + "indexed": indexed, + "dir": cache_dir, + "full_path": join_path(root, cache_dir), + } + + def setup_run_environment(self, env): + if self.spec.satisfies("+env"): + cache = self.vep_cache_config(self.home) + env.set("VEP_OFFLINE", "1") + env.set("VEP_CACHE", "1") + env.set("VEP_DIR", cache["user_root"]) + env.set("VEP_SPECIES", cache["species"]) + env.set("VEP_CACHE_VERSION", cache["version"]) + if cache["assembly"] is not None: + env.set("VEP_ASSEMBLY", cache["assembly"]) + if cache["type"] == "refseq": + env.set("VEP_REFSEQ", "1") + if cache["type"] == "merged": + env.set("VEP_MERGED", "1") + if self.spec.satisfies("+fasta"): + pass + + def cache_installer_args(self): + cache = self.vep_cache_config(self.prefix) + args = [ + "--CACHEDIR", + cache["full_path"], + "--CACHE_VERSION", + cache["version"], + "--SPECIES", + cache["cache_species"], + ] + if cache["species"] == "homo_sapiens": + args += ["--ASSEMBLY", cache["assembly"]] + + return args + + def installer_args(self): + auto = "cf" if self.spec.satisfies("+fasta") else "c" + args = ["--AUTO", auto, "--NO_UPDATE", "--NO_TEST"] + args += self.cache_installer_args() + return args + + def install_with_installer(self): + vep = self.spec["vep"].package + installer = which(vep.vep_installer_path) + installer(*self.installer_args()) + + def install(self, spec, prefix): + cache = self.vep_cache_config(self.prefix) + mkdirp(cache["full_path"]) + self.install_with_installer() diff --git a/var/spack/repos/builtin/packages/verdict/package.py b/var/spack/repos/builtin/packages/verdict/package.py new file mode 100644 index 00000000000000..0834497886c148 --- /dev/null +++ b/var/spack/repos/builtin/packages/verdict/package.py @@ -0,0 +1,41 @@ +# Copyright 2013-2024 Lawrence Livermore National Security, LLC and other +# Spack Project Developers. See the top-level COPYRIGHT file for details. +# +# SPDX-License-Identifier: (Apache-2.0 OR MIT) + +from spack.package import * + + +class Verdict(CMakePackage): + """Verdict mesh quality library for evaluating the geometric qualities of regions of space.""" + + homepage = "https://github.com/sandialabs/verdict" + url = "https://github.com/sandialabs/verdict/archive/refs/tags/1.4.2.tar.gz" + git = "https://github.com/sandialabs/verdict.git" + + maintainers("rblake-llnl") + + license("BSD-3-Clause", checked_by="rblake-llnl") + + version("1.4.2", sha256="225c8c5318f4b02e7215cefa61b5dc3f99e05147ad3fefe6ee5a3ee5b828964b") + version("1.4.1", sha256="26fa583265cb2ced2e9b30ed26260f6c9f89c3296221d96ccd5e7bfeec219de7") + + variant("doc", default=False, description="install documentation with library") + variant( + "mangle", + default=False, + description="Mangle verdict names for inclusion in a larger library", + ) + variant("test", default=False, description="enable testing from cmake") + + depends_on("cxx", type="build") + + depends_on("googletest", type="test", when="+test") + + def cmake_args(self): + args = [ + self.define_from_variant("VERDICT_BUILD_DOCS", "doc"), + self.define_from_variant("VERDICT_MANGLE", "mangle"), + self.define_from_variant("VERDICT_ENABLE_TESTING", "test"), + ] + return args diff --git a/var/spack/repos/builtin/packages/verible/package.py b/var/spack/repos/builtin/packages/verible/package.py index fbcc5b5503f1d4..e7109855f27c1f 100644 --- a/var/spack/repos/builtin/packages/verible/package.py +++ b/var/spack/repos/builtin/packages/verible/package.py @@ -34,6 +34,11 @@ class Verible(Package): version("master", branch="master") + version( + "0.0.3836", + sha256="946625a1527d0a97772ea031ab7358af29e61258c189a2ab0d9533b43e71f35b", + url="https://github.com/chipsalliance/verible/archive/refs/tags/v0.0-3836-g86ee9bab.tar.gz", + ) version( "0.0.3671", sha256="9f492cdc64b047f4e91aece8aa01fd2b846d9695510360dde34980daf5dbe0dd", diff --git a/var/spack/repos/builtin/packages/verilator/fix_compile_gch.patch b/var/spack/repos/builtin/packages/verilator/fix_compile_gch.patch new file mode 100644 index 00000000000000..761eeb9fa7b059 --- /dev/null +++ b/var/spack/repos/builtin/packages/verilator/fix_compile_gch.patch @@ -0,0 +1,13 @@ +diff --git a/src/Makefile_obj.in b/src/Makefile_obj.in +index 18947923a..d29baa840 100644 +--- a/src/Makefile_obj.in ++++ b/src/Makefile_obj.in +@@ -363,7 +363,7 @@ $(TGT): $(PREDEP_H) $(OBJS) + .SECONDARY: + + %.gch: % +- $(OBJCACHE) ${CXX} ${CXXFLAGS} ${CPPFLAGSWALL} ${CFG_CXXFLAGS_PCH} $< -o $@ ++ $(OBJCACHE) ${CXX} ${CXXFLAGS} ${CPPFLAGSWALL} ${CFG_CXXFLAGS_PCH} -c $< -o $@ + %.o: %.cpp + $(OBJCACHE) ${CXX} ${CXXFLAGS} ${CPPFLAGSWALL} -c $< -o $@ + %.o: %.c diff --git a/var/spack/repos/builtin/packages/verilator/package.py b/var/spack/repos/builtin/packages/verilator/package.py index 7500e252d93163..1422c28f1701f1 100644 --- a/var/spack/repos/builtin/packages/verilator/package.py +++ b/var/spack/repos/builtin/packages/verilator/package.py @@ -42,6 +42,8 @@ class Verilator(AutotoolsPackage): version("master", branch="master") + version("5.030", sha256="b9e7e97257ca3825fcc75acbed792b03c3ec411d6808ad209d20917705407eac") + version("5.028", sha256="02d4b6f34754b46a97cfd70f5fcbc9b730bd1f0a24c3fc37223397778fcb142c") version("5.026", sha256="87fdecf3967007d9ee8c30191ff2476f2a33635d0e0c6e3dbf345cc2f0c50b78") version("5.024", sha256="88b04c953e7165c670d6a700f202cef99c746a0867b4e2efe1d7ea789dee35f3") version("5.022", sha256="3c2f5338f4b6ce7e2f47a142401acdd18cbf4c5da06092618d6d036c0afef12d") @@ -86,6 +88,8 @@ class Verilator(AutotoolsPackage): conflicts("%gcc@:6", msg="C++14 support required") + patch("fix_compile_gch.patch", level=1, when="@5.018:5.028") + # we need to fix the CXX and LINK paths, as they point to the spack # wrapper scripts which aren't usable without spack filter_compiler_wrappers("verilated.mk", relative_root="include") diff --git a/var/spack/repos/builtin/packages/voropp/package.py b/var/spack/repos/builtin/packages/voropp/package.py index 683cf8acaeb392..49a1aa078ed249 100644 --- a/var/spack/repos/builtin/packages/voropp/package.py +++ b/var/spack/repos/builtin/packages/voropp/package.py @@ -6,28 +6,27 @@ from spack.package import * -class Voropp(MakefilePackage): +class Voropp(CMakePackage): """Voro++ is a open source software library for the computation of the Voronoi diagram, a widely-used tessellation that has applications in many scientific fields.""" homepage = "https://math.lbl.gov/voro++/about.html" url = "https://math.lbl.gov/voro++/download/dir/voro++-0.4.6.tar.gz" + git = "https://github.com/chr1shr/voro" - variant("pic", default=True, description="Position independent code") + variant("shared", default=True, description="Build shared libraries") license("BSD-3-Clause-LBNL") + version("master", branch="master") version("0.4.6", sha256="ef7970071ee2ce3800daa8723649ca069dc4c71cc25f0f7d22552387f3ea437e") depends_on("cxx", type="build") # generated - def edit(self, spec, prefix): - filter_file(r"CC=g\+\+", "CC={0}".format(self.compiler.cxx), "config.mk") - filter_file(r"PREFIX=/usr/local", "PREFIX={0}".format(self.prefix), "config.mk") - # We can safely replace the default CFLAGS which are: - # CFLAGS=-Wall -ansi -pedantic -O3 - cflags = "" - if "+pic" in spec: - cflags += self.compiler.cc_pic_flag - filter_file(r"CFLAGS=.*", "CFLAGS={0}".format(cflags), "config.mk") + patch("voro++-0.4.6-cmake.patch", when="@0.4.6") + + def cmake_args(self): + args = [self.define_from_variant("BUILD_SHARED_LIBS", "shared")] + + return args diff --git a/var/spack/repos/builtin/packages/voropp/voro++-0.4.6-cmake.patch b/var/spack/repos/builtin/packages/voropp/voro++-0.4.6-cmake.patch new file mode 100644 index 00000000000000..48f2ab9a6938be --- /dev/null +++ b/var/spack/repos/builtin/packages/voropp/voro++-0.4.6-cmake.patch @@ -0,0 +1,33 @@ +diff -Naur voro++-0.4.6.orig/CMakeLists.txt voro++-0.4.6/CMakeLists.txt +--- voro++-0.4.6.orig/CMakeLists.txt 1969-12-31 17:00:00.000000000 -0700 ++++ voro++-0.4.6/CMakeLists.txt 2024-10-16 21:14:06.755336366 -0600 +@@ -0,0 +1,3 @@ ++# Set the minimum required version of cmake for a project. ++cmake_minimum_required(VERSION 2.6) ++add_subdirectory(src) +diff -Naur voro++-0.4.6.orig/src/CMakeLists.txt voro++-0.4.6/src/CMakeLists.txt +--- voro++-0.4.6.orig/src/CMakeLists.txt 1969-12-31 17:00:00.000000000 -0700 ++++ voro++-0.4.6/src/CMakeLists.txt 2024-10-16 21:14:07.639351723 -0600 +@@ -0,0 +1,22 @@ ++add_library(voro++ SHARED ++ cell.cc ++ common.cc ++ container.cc ++ unitcell.cc ++ v_compute.cc ++ c_loops.cc ++ v_base.cc wall.cc ++ pre_container.cc ++ container_prd.cc ++) ++set_target_properties(voro++ PROPERTIES VERSION 0.0.0 SOVERSION 0) ++ ++add_executable(voro++-bin cmd_line.cc) ++set_target_properties(voro++-bin PROPERTIES OUTPUT_NAME voro++) ++target_link_libraries(voro++-bin voro++) ++ ++file(GLOB_RECURSE HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.hh) ++ ++install(TARGETS voro++ LIBRARY DESTINATION lib${LIB_SUFFIX}) ++install(FILES ${HDR} DESTINATION include) ++install(TARGETS voro++-bin DESTINATION bin) diff --git a/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch b/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch new file mode 100644 index 00000000000000..c8943aea9f7e1d --- /dev/null +++ b/var/spack/repos/builtin/packages/vtk-m/mr3271-contourtree-print-error.patch @@ -0,0 +1,38 @@ +From 48e385af319543800398656645327243a29babfb Mon Sep 17 00:00:00 2001 +From: Kenneth Moreland +Date: Tue, 15 Oct 2024 12:01:34 -0400 +Subject: [PATCH] Fix compile error for contour tree print + +A print for one of the contour tree objects was referencing members of +itself that don't seem to exist. This causes the Intel compiler to fail +to compile it. I'm at a loss about how any other compiler does not error +out, but at any rate this should be correct. +--- + .../worklet/contourtree_distributed/HierarchicalContourTree.h | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h b/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h +index a996d4292..e40d5f4f1 100644 +--- a/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h ++++ b/vtkm/filter/scalar_topology/worklet/contourtree_distributed/HierarchicalContourTree.h +@@ -663,7 +663,7 @@ std::string HierarchicalContourTree::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::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"; +-- +2.46.2 + diff --git a/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch b/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch new file mode 100644 index 00000000000000..cf3987079b88b8 --- /dev/null +++ b/var/spack/repos/builtin/packages/vtk-m/mr3272-bad-mir-table-method.patch @@ -0,0 +1,35 @@ +From c805a6039ea500cb96158cfc11271987c9f67aa4 Mon Sep 17 00:00:00 2001 +From: Kenneth Moreland +Date: Tue, 15 Oct 2024 13:06:36 -0400 +Subject: [PATCH] Remove unused method from MIR tables + +The implementation of this method was incorrect as it referenced a class +member that does not exist. Many compilers allowed it in a templated +class when the method was never used, but other compilers attempt to +compile the inlined method regardless. + +Since the method clearly is not needed, the easy solution is to remove +it. +--- + vtkm/filter/contour/worklet/mir/MIRTables.h | 5 ----- + 1 file changed, 5 deletions(-) + +diff --git a/vtkm/filter/contour/worklet/mir/MIRTables.h b/vtkm/filter/contour/worklet/mir/MIRTables.h +index 3dff3329e..a6f4d4f1f 100644 +--- a/vtkm/filter/contour/worklet/mir/MIRTables.h ++++ b/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::ReadPortalType MIRTablesDataPortal; + typename vtkm::cont::ArrayHandle::ReadPortalType MIRTablesIndicesPortal; +-- +2.46.2 + diff --git a/var/spack/repos/builtin/packages/vtk-m/package.py b/var/spack/repos/builtin/packages/vtk-m/package.py index 737ee3a3a7002a..c5cef49c5856f2 100644 --- a/var/spack/repos/builtin/packages/vtk-m/package.py +++ b/var/spack/repos/builtin/packages/vtk-m/package.py @@ -85,6 +85,7 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): description="build openmp support", ) variant("tbb", default=(sys.platform == "darwin"), description="build TBB support") + variant("sycl", default=False, description="Build with SYCL backend") depends_on("cmake@3.12:", type="build") # CMake >= 3.12 depends_on("cmake@3.18:", when="+rocm", type="build") # CMake >= 3.18 @@ -132,6 +133,13 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): conflicts("+rocm", when="~kokkos", msg="VTK-m does not support HIP without Kokkos") conflicts("+rocm", when="+virtuals", msg="VTK-m does not support virtual functions with ROCm") + # VTK-m uses the Kokkos SYCL backend. + # If Kokkos provides multiple backends, the SYCL backend may or + # may not be used for VTK-m depending on the default selected by Kokkos + depends_on("kokkos +sycl", when="+kokkos +sycl") + + conflicts("+sycl", when="~kokkos", msg="VTK-m does not support SYCL without Kokkos") + # Can build +shared+cuda after @1.7: conflicts("+shared", when="@:1.6 +cuda_native") conflicts("+cuda~cuda_native~kokkos", msg="Cannot have +cuda without a cuda device") @@ -162,6 +170,14 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3259 patch("mr3259-thrust-is_arithmetic-fix.patch", when="@2.0.0:2.2.0 +cuda ^cuda@12.6:") + # VTK-m PR#3271 + # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3271 + patch("mr3271-contourtree-print-error.patch", when="@2.0:2.2") + + # VTK-m PR#3272 + # https://gitlab.kitware.com/vtk/vtk-m/-/merge_requests/3272 + patch("mr3272-bad-mir-table-method.patch", when="@2.0:2.2") + # Disable Thrust patch that is no longer needed in modern Thrust patch( "https://github.com/Kitware/VTK-m/commit/4a4466e7c8cd44d2be2bd3fe6f359faa8e9547aa.patch?full_index=1", @@ -169,6 +185,12 @@ class VtkM(CMakePackage, CudaPackage, ROCmPackage): when="@1.6.0:2.1 +cuda ^cuda@12.5:", ) + def flag_handler(self, name, flags): + if name == "cxxflags": + if self.spec.satisfies("@:2.2.0 %oneapi@2025:"): + flags.append("-Wno-error=missing-template-arg-list-after-template-kw") + return (flags, None, None) + def cmake_args(self): spec = self.spec options = [] diff --git a/var/spack/repos/builtin/packages/vtk/package.py b/var/spack/repos/builtin/packages/vtk/package.py index d2da1fe43e3bea..10e941e8dc07cb 100644 --- a/var/spack/repos/builtin/packages/vtk/package.py +++ b/var/spack/repos/builtin/packages/vtk/package.py @@ -54,8 +54,9 @@ class Vtk(CMakePackage): version("6.3.0", sha256="92a493354c5fa66bea73b5fc014154af5d9f3f6cee8d20a826f4cd5d4b0e8a5e") version("6.1.0", sha256="bd7df10a479606d529a8b71f466c44a2bdd11fd534c62ce0aa44fad91883fa34") - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") + depends_on("pkgconfig", type="build", when="platform=linux") # VTK7 defaults to OpenGL2 rendering backend variant("opengl2", default=True, description="Enable OpenGL2 backend") diff --git a/var/spack/repos/builtin/packages/w3m/package.py b/var/spack/repos/builtin/packages/w3m/package.py index 5478c2348159e9..d4d693afbc46e3 100644 --- a/var/spack/repos/builtin/packages/w3m/package.py +++ b/var/spack/repos/builtin/packages/w3m/package.py @@ -68,7 +68,7 @@ class W3m(AutotoolsPackage): values=("gdk-pixbuf", "imlib2"), multi=False, ) - depends_on("gdk-pixbuf@2:+x11", when="imagelib=gdk-pixbuf +image") + depends_on("gdk-pixbuf@2:", when="imagelib=gdk-pixbuf +image") depends_on("imlib2@1.0.5:", when="imagelib=imlib2 +image") # fix for modern libraries diff --git a/var/spack/repos/builtin/packages/wgrib2/package.py b/var/spack/repos/builtin/packages/wgrib2/package.py index 1cc9c824d92b5e..ba1b1bcd610d99 100644 --- a/var/spack/repos/builtin/packages/wgrib2/package.py +++ b/var/spack/repos/builtin/packages/wgrib2/package.py @@ -116,13 +116,14 @@ class Wgrib2(MakefilePackage): # Use Spack compiler wrapper flags def inject_flags(self, name, flags): + spec = self.spec if name == "cflags": - if self.spec.compiler.name == "apple-clang": + if spec.satisfies("%apple-clang"): flags.append("-Wno-error=implicit-function-declaration") # When mixing Clang/gfortran need to link to -lgfortran # Find this by searching for gfortran/../lib - if self.spec.compiler.name in ["apple-clang", "clang"]: + if spec.satisfies("%apple-clang") or spec.satisfies("%clang"): if "gfortran" in self.compiler.fc: output = Executable(self.compiler.fc)("-###", output=str, error=str) libdir = re.search("--libdir=(.+?) ", output).group(1) @@ -153,9 +154,10 @@ def edit(self, spec, prefix): makefile.filter(r"^%s=.*" % makefile_option, "{}={}".format(makefile_option, value)) def setup_build_environment(self, env): - if self.spec.compiler.name in ["oneapi", "intel"]: + spec = self.spec + if spec.satisfies("%oneapi") or spec.satisfies("%intel"): comp_sys = "intel_linux" - elif self.spec.compiler.name in ["gcc", "clang", "apple-clang"]: + elif spec.satisfies("%gcc") or spec.satisfies("%clang") or spec.satisfies("%apple-clang"): comp_sys = "gnu_linux" env.set("COMP_SYS", comp_sys) diff --git a/var/spack/repos/builtin/packages/whizard/package.py b/var/spack/repos/builtin/packages/whizard/package.py index 03f8da53068950..c6481fa5713b5a 100644 --- a/var/spack/repos/builtin/packages/whizard/package.py +++ b/var/spack/repos/builtin/packages/whizard/package.py @@ -13,7 +13,7 @@ class Whizard(AutotoolsPackage): of multi-particle scattering cross sections and simulated event samples.""" - homepage = "whizard.hepforge.org" + homepage = "https://whizard.hepforge.org" urls = [ "https://launchpad.net/whizard/3.1.x/3.1.2/+download/whizard-3.1.2.tar.gz", "https://whizard.hepforge.org/downloads/?f=whizard-2.8.3.tar.gz", diff --git a/var/spack/repos/builtin/packages/wrf/package.py b/var/spack/repos/builtin/packages/wrf/package.py index bbc5aabd0b6e30..e7187645c77b85 100644 --- a/var/spack/repos/builtin/packages/wrf/package.py +++ b/var/spack/repos/builtin/packages/wrf/package.py @@ -70,6 +70,16 @@ class Wrf(Package): maintainers("MichaelLaufer", "ptooley") tags = ["windows"] + version( + "4.6.1", + sha256="b8ec11b240a3cf1274b2bd609700191c6ec84628e4c991d3ab562ce9dc50b5f2", + url="https://github.com/wrf-model/WRF/releases/download/v4.6.1/v4.6.1.tar.gz", + ) + version( + "4.6.0", + sha256="1bb010f9e20b40d33d9df55a602ea9eb54c5444a7316c00a95e1cc44b209021e", + url="https://github.com/wrf-model/WRF/releases/download/v4.6.0/v4.6.0.tar.gz", + ) version( "4.5.2", sha256="408ba6aa60d9cd51d6bad2fa075a3d37000eb581b5d124162885b049c892bbdc", @@ -260,6 +270,16 @@ class Wrf(Package): depends_on("libtool", type="build") depends_on("adios2", when="@4.5: +adios2") + requires( + "%gcc", + "%intel", + "%arm", + "%aocc", + "%fj", + "%oneapi", + policy="one_of", + msg="WRF supports only the GCC, Intel, AMD of Fujitsu compilers", + ) conflicts( "%oneapi", when="@:4.3", msg="Intel oneapi compiler patch only added for version 4.4" ) @@ -418,11 +438,6 @@ def configure(self, spec, prefix): # Remove broken default options... self.do_configure_fixup() - if self.spec.compiler.name not in ["intel", "gcc", "arm", "aocc", "fj", "oneapi"]: - raise InstallError( - "Compiler %s not currently supported for WRF build." % self.spec.compiler.name - ) - p = Popen("./configure", stdin=PIPE, stdout=PIPE, stderr=PIPE) if sys.platform != "win32": setNonBlocking(p.stdout) diff --git a/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch b/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch index 06ab5cff2b701d..3acd8be485e248 100644 --- a/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch +++ b/var/spack/repos/builtin/packages/wrf/patches/4.4/ifx.patch @@ -26,7 +26,7 @@ index 6aa210d7..a3224d34 100644 +PROMOTION = -real-size `expr 8 \* $(RWORDSIZE)` -i4 +ARCH_LOCAL = -DNONSTANDARD_SYSTEM_FUNC -DRPC_TYPES=2 -DXEON_SIMD +CFLAGS_LOCAL = -w -flto -O3 -Wno-implicit-function-declaration -Wno-implicit-int -+LDFLAGS_LOCAL = -flto -fuse-ld=lld ++LDFLAGS_LOCAL = -flto -fuse-ld=lld -i_use-path +CPLUSPLUSLIB = +ESMF_LDFLAG = $(CPLUSPLUSLIB) +FCOPTIM = -O3 @@ -38,7 +38,7 @@ index 6aa210d7..a3224d34 100644 +FCSUFFIX = +BYTESWAPIO = -convert big_endian +RECORDLENGTH = -assume byterecl -+FCBASEOPTS_NO_G = -O3 -flto -w -ftz -align array64byte -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) -fp-model fast=2 -fimf-use-svml=true -vec-threshold0 -xCORE-AVX512 ++FCBASEOPTS_NO_G = -O3 -flto -w -ftz -align array64byte -fno-alias $(FORMAT_FREE) $(BYTESWAPIO) -fp-model fast=2 -fimf-use-svml=true -vec-threshold0 +FCBASEOPTS = $(FCBASEOPTS_NO_G) $(FCDEBUG) +MODULE_SRCH_FLAG = +TRADFLAG = -traditional-cpp diff --git a/var/spack/repos/builtin/packages/xerces-c/package.py b/var/spack/repos/builtin/packages/xerces-c/package.py index a62f25746e37fc..ac10c1e068d079 100644 --- a/var/spack/repos/builtin/packages/xerces-c/package.py +++ b/var/spack/repos/builtin/packages/xerces-c/package.py @@ -20,13 +20,16 @@ class XercesC(AutotoolsPackage): license("Apache-2.0") + version("3.3.0", sha256="ef752578587e26013a933f16d76305c9b43ca32f869e3d3426986e03efb01d64") version("3.2.5", sha256="1db4028c9b7f1f778efbf4a9462d65e13f9938f2c22f9e9994e12c49ba97e252") - version("3.2.4", sha256="74aa626fc71e729ee227602870dd29a5a01cd8c9c1c7330837a51da2eb5722cc") - version("3.2.3", sha256="45c2329e684405f2b8854ecbddfb8d5b055cdf0fe4d35736cc352c504989bbb6") - version("3.2.2", sha256="1f2a4d1dbd0086ce0f52b718ac0fa4af3dc1ce7a7ff73a581a05fbe78a82bce0") - version("3.2.1", sha256="a36b6e162913ec218cfb84772d2535d43c3365355a601d45d4b8ce11f0ece0da") - version("3.1.4", sha256="9408f12c1628ecf80730bedbe8b2caad810edd01bb4c66f77b60c873e8cc6891") - version("3.1.3", sha256="fc5e5e0247b108b8d64d75aeb124cabdee9b7fcd725a89fe2242b4637b25c1fa") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2018-1311 + version("3.2.4", sha256="74aa626fc71e729ee227602870dd29a5a01cd8c9c1c7330837a51da2eb5722cc") + version("3.2.3", sha256="45c2329e684405f2b8854ecbddfb8d5b055cdf0fe4d35736cc352c504989bbb6") + version("3.2.2", sha256="1f2a4d1dbd0086ce0f52b718ac0fa4af3dc1ce7a7ff73a581a05fbe78a82bce0") + version("3.2.1", sha256="a36b6e162913ec218cfb84772d2535d43c3365355a601d45d4b8ce11f0ece0da") + version("3.1.4", sha256="9408f12c1628ecf80730bedbe8b2caad810edd01bb4c66f77b60c873e8cc6891") + version("3.1.3", sha256="fc5e5e0247b108b8d64d75aeb124cabdee9b7fcd725a89fe2242b4637b25c1fa") depends_on("c", type="build") # generated depends_on("cxx", type="build") # generated diff --git a/var/spack/repos/builtin/packages/xfsprogs/package.py b/var/spack/repos/builtin/packages/xfsprogs/package.py index 2cc15a88613b0f..c25a95ed4c5c95 100644 --- a/var/spack/repos/builtin/packages/xfsprogs/package.py +++ b/var/spack/repos/builtin/packages/xfsprogs/package.py @@ -14,6 +14,7 @@ class Xfsprogs(AutotoolsPackage): license("LGPL-2.1-or-later") + version("6.11.0", sha256="dae3bb432196f7b183b2e6bd5dc44bf33edbd7d0e85bd37d25c235df81b8100a") version("5.11.0", sha256="0e9c390fcdbb8a79e1b8f5e6e25fd529fc9f9c2ef8f2d5e647b3556b82d1b353") version("5.8.0", sha256="8ef46ed9e6bb927f407f541dc4324857c908ddf1374265edc910d23724048c6b") version("5.7.0", sha256="8f2348a68a686a3f4491dda5d62dd32d885fbc52d32875edd41e2c296e7b4f35") @@ -25,6 +26,7 @@ class Xfsprogs(AutotoolsPackage): depends_on("libinih") depends_on("gettext") + depends_on("gettext@:0.21.1", when="@:6.3") depends_on("uuid") depends_on("util-linux") @@ -32,7 +34,7 @@ def flag_handler(self, name, flags): if name == "cflags": if self.spec.satisfies("@:5.4.0 %gcc@10:"): flags.append("-fcommon") - elif name == "ldlibs": + elif name == "ldlibs" or name == "ldflags": if "intl" in self.spec["gettext"].libs.names: flags.append("-lintl") return build_system_flags(name, flags) diff --git a/var/spack/repos/builtin/packages/xsdk/package.py b/var/spack/repos/builtin/packages/xsdk/package.py index 85bf27ae2b092b..29cfc1cec8ceca 100644 --- a/var/spack/repos/builtin/packages/xsdk/package.py +++ b/var/spack/repos/builtin/packages/xsdk/package.py @@ -216,7 +216,7 @@ class Xsdk(BundlePackage, CudaPackage, ROCmPackage): xsdk_depends_on("omega-h +trilinos", when="+trilinos +omega-h") xsdk_depends_on("omega-h ~trilinos", when="~trilinos +omega-h") - xsdk_depends_on("omega-h@scorec.10.6.0", when="@1.0.0 +omega-h") + xsdk_depends_on("omega-h@10.6.0", when="@1.0.0 +omega-h") xsdk_depends_on("omega-h@9.34.13", when="@0.8.0 +omega-h") xsdk_depends_on("strumpack ~cuda", when="~cuda +strumpack") diff --git a/var/spack/repos/builtin/packages/xtrans/package.py b/var/spack/repos/builtin/packages/xtrans/package.py index 92a5c73d87dea3..aeadc39d7f547f 100644 --- a/var/spack/repos/builtin/packages/xtrans/package.py +++ b/var/spack/repos/builtin/packages/xtrans/package.py @@ -19,6 +19,7 @@ class Xtrans(AutotoolsPackage, XorgPackage): maintainers("wdconinc") + version("1.5.2", sha256="23031301f10fef5eaa55b438610fbd29294a70d2fa189355343bf0186bff8374") version("1.5.0", sha256="a806f8a92f879dcd0146f3f1153fdffe845f2fc0df9b1a26c19312b7b0a29c86") version("1.4.0", sha256="48ed850ce772fef1b44ca23639b0a57e38884045ed2cbb18ab137ef33ec713f9") version("1.3.5", sha256="b7a577c1b6c75030145e53b4793db9c88f9359ac49e7d771d4385d21b3e5945d") diff --git a/var/spack/repos/builtin/packages/xyce/package.py b/var/spack/repos/builtin/packages/xyce/package.py index 7d1631975c8683..94b6fbeffcb696 100644 --- a/var/spack/repos/builtin/packages/xyce/package.py +++ b/var/spack/repos/builtin/packages/xyce/package.py @@ -227,7 +227,11 @@ def flag_handler(self, name, flags): flags.append("-DXyce_INTRUSIVE_PCE -Wreorder") elif name == "ldflags": # Fortran lib (assumes clang is built with gfortran!) - if spec.compiler.name in ["gcc", "clang", "apple-clang"]: + if ( + spec.satisfies("%gcc") + or spec.satisfies("%clang") + or spec.satisfies("%apple-clang") + ): fc = Executable(self.compiler.fc) libgfortran = fc( "--print-file-name", "libgfortran." + dso_suffix, output=str diff --git a/var/spack/repos/builtin/packages/yoda/package.py b/var/spack/repos/builtin/packages/yoda/package.py index a545be413a6d75..34bcda42d3c7fd 100644 --- a/var/spack/repos/builtin/packages/yoda/package.py +++ b/var/spack/repos/builtin/packages/yoda/package.py @@ -17,12 +17,10 @@ class Yoda(AutotoolsPackage): license("GPL-3.0-or-later") + version("2.0.2", sha256="31a41413641189814ff3c6bbb96ac5d17d2b68734fe327d06794cdbd3a540399") + version("2.0.1", sha256="ae5a78eaae5574a5159d4058839d0983c9923558bfc88fbce21d251fd925d260") version("2.0.0", sha256="680f43dabebb3167ce1c5dee72d1c2c285c3190751245aa51e3260a005a99575") - version( - "1.9.10", - sha256="0a708ee9d704945d3387cc437b15ffddf382c70fe5bab39ed2bdbf83c2c28c6f", - preferred=True, - ) + version("1.9.10", sha256="0a708ee9d704945d3387cc437b15ffddf382c70fe5bab39ed2bdbf83c2c28c6f") version("1.9.9", sha256="ebcad55369a1cedcee3a2de059407c851652ba44495113f5c09d8c2e57f516aa") version("1.9.8", sha256="7bc3062468abba50aff3ecb8b22ce677196036009890688ef4533aaa7f92e6e4") version("1.9.7", sha256="8d07bb04dcb79364858718a18203452d8d9fa00029fa94239eafa8529032b8ff") diff --git a/var/spack/repos/builtin/packages/yosys/package.py b/var/spack/repos/builtin/packages/yosys/package.py index 9678f16528d8e3..2da4aa007a11d4 100644 --- a/var/spack/repos/builtin/packages/yosys/package.py +++ b/var/spack/repos/builtin/packages/yosys/package.py @@ -20,7 +20,7 @@ class Yosys(MakefilePackage): """ homepage = "https://yosyshq.net/yosys" - url = "https://github.com/YosysHQ/yosys/archive/refs/tags/yosys-0.42.tar.gz" + url = "https://github.com/YosysHQ/yosys/archive/refs/tags/yosys-0.46.tar.gz" git = "https://github.com/YosysHQ/yosys.git" maintainers("davekeeshan") @@ -29,6 +29,11 @@ class Yosys(MakefilePackage): version("master", branch="master") + version("0.47", commit="647d61dd9212365a3cd44db219660b8f90b95cbd", submodules=True) + version("0.46", commit="e97731b9dda91fa5fa53ed87df7c34163ba59a41", submodules=True) + version("0.45", commit="9ed031ddd588442f22be13ce608547a5809b62f0", submodules=True) + version("0.44", commit="80ba43d26264738c93900129dc0aab7fab36c53f", submodules=True) + version("0.43", commit="ead4718e567aed2e552dcfe46294b132aa04c158", submodules=True) version("0.42", commit="9b6afcf3f83fea413b57c3790c25ba43b9914ce2", submodules=True) version("0.41", sha256="b0037d0a5864550a07a72ba81346e52a7d5f76b3027ef1d7c71b975d2c8bd2b2") version("0.40", sha256="c1d42ad90d587b587210b40cf3c5584e41e20f656e8630c33b6583322e8b764e") diff --git a/var/spack/repos/builtin/packages/zabbix/package.py b/var/spack/repos/builtin/packages/zabbix/package.py index aeb8bfd1d11037..a84097c1c7ee46 100644 --- a/var/spack/repos/builtin/packages/zabbix/package.py +++ b/var/spack/repos/builtin/packages/zabbix/package.py @@ -11,35 +11,59 @@ class Zabbix(AutotoolsPackage): such as networks, servers, VMs, applications and the cloud.""" homepage = "https://www.zabbix.com" - url = "https://github.com/zabbix/zabbix/archive/5.0.3.tar.gz" + url = "https://github.com/zabbix/zabbix/archive/refs/tags/5.0.3.tar.gz" - license("GPL-2.0-or-later") + license("AGPL-3.0-only", when="@7:", checked_by="wdconinc") + license("GPL-2.0-or-later", when="@:6", checked_by="wdconinc") - version("5.0.3", sha256="d579c5fa4e9065e8041396ace24d7132521ef5054ce30dfd9d151cbb7f0694ec") - version("4.0.24", sha256="c7e4962d745277d67797d90e124555ce27d198822a7e65c55d86aee45d3e93fc") - version("4.0.23", sha256="652143614f52411cad47db64e93bf3ba1cd547d6ca9591296223b5f0528b3b61") + version("7.0.4", sha256="73aa6b47bd4078587589b30f09671fb30c7743f5b57e81ea8e9bd5a7c5f221c7") + version("6.0.34", sha256="e60558911230d27ffad98850e414b46e318c9d41591a6ff65a255c0810cfcb8b") + version("5.0.44", sha256="f8ee86fd21f0f57e7fad68387271b995c1e5cc402d517cd7df5d5221fd6129fd") + with default_args(deprecated=True): + # https://nvd.nist.gov/vuln/detail/CVE-2023-32724 + version("5.0.3", sha256="d579c5fa4e9065e8041396ace24d7132521ef5054ce30dfd9d151cbb7f0694ec") + # https://nvd.nist.gov/vuln/detail/CVE-2019-17382 + version( + "4.0.24", sha256="c7e4962d745277d67797d90e124555ce27d198822a7e65c55d86aee45d3e93fc" + ) + version( + "4.0.23", sha256="652143614f52411cad47db64e93bf3ba1cd547d6ca9591296223b5f0528b3b61" + ) - depends_on("c", type="build") # generated - depends_on("cxx", type="build") # generated + depends_on("c", type="build") + depends_on("cxx", type="build") depends_on("autoconf", type="build") + depends_on("autoconf-archive", type="build") depends_on("automake", type="build") depends_on("libtool", type="build") depends_on("m4", type="build") - depends_on("mysql") + depends_on("pkgconfig", type="build") + depends_on("mysql-client") + # Older versions of mysql use openssl-1.x, causing build issues: + depends_on("mysql@8.0.35:", when="^[virtuals=mysql-client] mysql") depends_on("libevent") depends_on("pcre") depends_on("go") + def autoreconf(self, spec, prefix): + Executable("./bootstrap.sh")() + def configure_args(self): + mysql_prefix = self.spec["mysql-client"].prefix + if self.spec.satisfies("^[virtuals=mysql-client] mysql"): + mysql_config = mysql_prefix.bin.mysql_config + else: + mysql_config = mysql_prefix.bin.mariadb_config + args = [ "--enable-server", "--enable-proxy", "--enable-agent", "--enable-agent2", - "--with-mysql", - "--with-libevent=%s" % self.spec["libevent"].prefix, - "--with-libpcre=%s" % self.spec["pcre"].prefix, + f"--with-mysql={mysql_config}", + f"--with-libevent={self.spec['libevent'].prefix}", + f"--with-libpcre={self.spec['pcre'].prefix}", ] return args diff --git a/var/spack/repos/builtin/packages/zlib-ng/package.py b/var/spack/repos/builtin/packages/zlib-ng/package.py index 2daba38d7a9bf9..40de58f4e0be81 100644 --- a/var/spack/repos/builtin/packages/zlib-ng/package.py +++ b/var/spack/repos/builtin/packages/zlib-ng/package.py @@ -79,7 +79,7 @@ class AutotoolsBuilder(autotools.AutotoolsBuilder): def pretend_gcc(self): # All nice things (PIC flags, symbol versioning) that happen to the compilers that are # recognized as gcc (%gcc, %clang, %intel, %oneapi) we want for some other compilers too: - if self.spec.compiler.name in ["nvhpc"]: + if self.spec.satisfies("%nvhpc"): filter_file(r"^gcc=0$", "gcc=1", join_path(self.configure_directory, "configure")) def configure_args(self): diff --git a/var/spack/repos/builtin/packages/zlib/package.py b/var/spack/repos/builtin/packages/zlib/package.py index 32a40fb31dfd68..c579a8381300ac 100644 --- a/var/spack/repos/builtin/packages/zlib/package.py +++ b/var/spack/repos/builtin/packages/zlib/package.py @@ -115,7 +115,7 @@ def edit(self, pkg, spec, prefix): # script but patch the makefile for all the aforementioned compilers, given the # importance of the package, we try to be conservative for now and do the patching only # for compilers that will not produce a correct shared library otherwise. - if self.spec.compiler.name in ["nvhpc"]: + if self.spec.satisfies("%nvhpc"): if "~pic" in self.spec: # In this case, we should build the static library without PIC, therefore we # don't append the respective compiler flag to CFLAGS in the build environment.